throbber
(19) United States
`(12) Patent Application Publication (10) Pub. No.: US 2007/0043965 A1
`Mandelblat et al.
`(43) Pub. Date:
`Feb. 22, 2007
`
`US 2007.0043965A1
`
`(54) DYNAMIC MEMORY SZING FOR POWER
`REDUCTION
`
`(75) Inventors: Julius Mandelblat, Haifa (IL); Moty
`Mehalel, Haifa (IL); Avi Mendelson,
`Haifa (IL); Alon Naveh, Ramet
`Hasharon (IL)
`Correspondence Address:
`INTEL CORPORATION
`C/O INTELLEVATE, LLC
`P.O. BOX S2OSO
`MINNEAPOLIS, MN 55402 (US)
`(73) Assignee: INTEL CORPORATION
`(21) Appl. No.:
`11/208,935
`
`(22) Filed:
`
`Aug. 22, 2005
`
`Publication Classification
`
`(51) Int. Cl.
`(2006.01)
`G06F L/26
`(52) U.S. Cl. .............................................................. 713/324
`
`(57)
`
`ABSTRACT
`
`Systems and methods of dynamic memory for power reduc
`tion are described with respect to a memory with a coupled
`sleep device. In one embodiment, the operating require
`ments can reflect amount of memory required to perform
`commensurate operations. Memory power management
`logic is used to coordinate memory requirements with
`operating requirements. The sleep device is able to enable or
`disable the memory based on the requirements to reduce
`power consumption.
`
`
`
`
`
`
`
`
`
`
`
`instantiate (1100)
`
`Monitor at least one core of one or more processors, and at
`least one memory with more than one way (1102)
`
`Determine a required number of ways (1104)
`
`While the required number is less than an enabled number
`of ways, disable one or more ways such that the enabled
`number is equivalent to the required number (1106)
`
`While the required number is more than the enabled
`number, enable one or more ways such that the enabled
`number is equivalent to the required number (1108)
`
`(Optional) Prior to the disabling, scan the one or more
`ways for data to be at least written to at least one of a RAM
`or a storage (1110)
`
`Complete (1112)
`
`Qualcomm, Exhibit 1003, Page 1
`
`

`

`Patent Application Publication Feb. 22, 2007 Sheet 1 of 7
`
`US 2007/0043965 A1
`
`100
`
`102n
`
`102b
`
`102a
`
`Way-n
`
`Way-1
`
`Way-0
`
`En-n
`
`En-1 H
`
`En-O
`
`N7
`
`104n
`
`Q
`
`N
`
`104b.
`
`104a
`
`20
`
`
`
`204
`
`FG. 2
`
`Qualcomm, Exhibit 1003, Page 2
`
`

`

`Patent Application Publication Feb. 22, 2007 Sheet 2 of 7
`
`US 2007/0043965 A1
`
`
`
`Qualcomm, Exhibit 1003, Page 3
`
`

`

`Patent Application Publication Feb. 22, 2007 Sheet 3 of 7
`
`US 2007/0043965 A1
`
`600
`
`602
`
`606b
`
`606a
`
`
`
`En
`
`800
`
`802
`
`En L
`
`806b
`
`W
`
`806a
`
`W
`
`704
`
`804
`
`Qualcomm, Exhibit 1003, Page 4
`
`

`

`Patent Application Publication Feb. 22, 2007 Sheet 4 of 7
`
`US 2007/0043965 A1
`
`
`
`
`
`
`
`
`
`
`
`Memory 912
`
`Power Management Logic
`(PML) 906
`
`Memory PML 907
`
`
`
`
`
`One or More Processor(s) 901
`Micro-
`Dynamically
`code 926
`Sizable Memory
`905
`
`Core 1
`902
`
`COre 2
`904
`
`Graphical
`Interface
`920
`
`Chipset 916
`
`FIG. 9
`
`One or
`More Clock
`Sources
`908
`
`
`
`RAM 91.8a
`Storage 918b
`OS 924
`
`NetWork
`Interface
`922
`
`Qualcomm, Exhibit 1003, Page 5
`
`

`

`Patent Application Publication Feb. 22, 2007 Sheet 5 of 7
`
`US 2007/0043965 A1
`
`Instantiate (1000)
`
`
`
`Monitor a processor and a memory (1002)
`
`Determine the processor requirements and the memory
`requirements (1004)
`
`Determine a plurality of requirements from the processor
`requirements and the memory requirements (1006)
`
`Determine when one or more of the plurality of
`requirements are satisfied (1008)
`
`Adjust the memory based on at least one of the plurality of
`requirements being satisfied (1010)
`
`Complete (1012)
`
`F.G. 10
`
`Qualcomm, Exhibit 1003, Page 6
`
`

`

`Patent Application Publication Feb. 22, 2007 Sheet 6 of 7
`
`US 2007/0043965 A1
`
`
`
`Instantiate (1100)
`
`
`
`Monitor at least one core of one or more processors, and at
`least one memory with more than one way (1102)
`
`Determine a required number of ways (1104)
`
`While the required number is less than an enabled number
`of ways, disable one or more ways such that the enabled
`number is equivalent to the required number (1106)
`
`While the required number is more than the enabled
`number, enable one or more ways such that the enabled
`number is equivalent to the required number (1108)
`
`(Optional) Prior to the disabling, scan the one or more
`ways for data to be at least written to at least one of a RAM
`or a storage (1110)
`
`Complete (1112)
`
`F.G. 11
`
`Qualcomm, Exhibit 1003, Page 7
`
`

`

`Patent Application Publication Feb. 22, 2007 Sheet 7 of 7
`
`US 2007/0043965 A1
`
`
`
`
`
`ALL BUT 1 CORE IN LOW
`POWER STATE & #EXPAND
`
`STOP
`SHRINK
`1215
`
`
`
`
`
`
`
`EXPAND
`
`SHRINK & EXPAND
`
`RESET
`
`SHRINK & EXPAND
`
`FIG. 12
`
`Qualcomm, Exhibit 1003, Page 8
`
`

`

`US 2007/0043965 A1
`
`Feb. 22, 2007
`
`DYNAMIC MEMORY SZING FOR POWER
`REDUCTION
`
`BACKGROUND
`0001) 1. Technical Field
`0002 One or more embodiments of the present invention
`generally relate to integrated circuits and/or computing
`systems. In particular, certain embodiments relate to power
`management of memory circuits.
`0003 2. Discussion
`0004 As the trend toward advanced processors with
`more transistors and higher frequencies continues to grow,
`computer designers and manufacturers are often faced with
`corresponding increases in power consumption. Further
`more, manufacturing technologies that provide faster and
`Smaller components can at the same time result in increased
`leakage power. Particularly in mobile computing environ
`ments, these increases can lead to overheating, which may
`negatively affect performance, and can significantly reduce
`battery life.
`0005 With the focus on performance and small form
`factors, in a microprocessor, for example, cache memory
`sizes are increasing to achieve the best performance for a
`given silicon area. These recent trends toward even larger
`memory sizes have increased the portion of power consump
`tion associated with memories. As a result, the leakage
`power that is dissipated by the memory is quite significant
`relative to the total power of the central processing unit
`(CPU).
`BRIEF DESCRIPTION OF THE DRAWINGS
`0006 Various advantages of embodiments of the present
`invention will become apparent to one skilled in the art by
`reading the following specification and appended claims,
`and by referencing the following drawings, in which:
`0007 FIG. 1 is a block diagram of an example of a
`memory architecture to implement dynamic sizing accord
`ing to one embodiment of the invention;
`0008 FIG. 2 is a diagram of another example of a
`memory architecture to implement dynamic sizing accord
`ing to one embodiment of the invention;
`0009 FIG. 3 is a diagram of a cell-level example of a
`memory architecture to implement dynamic sizing accord
`ing to one embodiment of the invention;
`0010 FIG. 4 is a diagram of a cell-level example of a
`memory architecture to implement dynamic sizing accord
`ing to one embodiment of the invention;
`0011
`FIG. 5 is a diagram of another cell-level example of
`a memory architecture to implement dynamic sizing accord
`ing to one embodiment of the invention;
`0012 FIGS. 6-8 are diagrams of various examples of
`sleep devices according to embodiments of the invention;
`0013 FIG. 9 is a system-level block diagram of an
`example computer system according to embodiments of the
`invention;
`0014 FIG. 10 is a flowchart of an example of a method
`of managing dynamic memory sizing according to one
`embodiment of the invention;
`
`FIG. 11 is a flowchart of another example of a
`0.015
`method of managing dynamic memory sizing according to
`one embodiment of the invention; and
`0016 FIG. 12 is a state diagram of an example of a
`dynamic memory management machine according to one
`embodiment of the invention.
`
`DETAILED DESCRIPTION
`0017. The amount of memory that may actually be
`required by a computer system and/or associated Software
`often varies with respect to time. For typical applications,
`for example, only a small portion of the memory may be
`needed at any given time. According to one or more embodi
`ments, a memory, Such as the memory of FIG. 1, may be
`dynamically sized to reduce the power requirements of a
`memory circuit and the system in which it is used. Specifi
`cally, as is described herein, embodiments of the invention
`may provide a reduction in power consumption without
`Substantially affecting performance by disabling one or more
`Sub-sections of a memory when those sub-sections are not
`needed and/or are unselected.
`0018 FIG. 1 shows a representation of a dynamically
`sizable memory 100 according to one embodiment. The
`dynamically sizable memory of the example embodiment of
`FIG. 1 is an n-way associative cache memory that may be
`implemented, for example, using static random access
`memory (SRAM). The dynamically sizable memory 100
`includes a plurality of sub-sections 102a, 102b-102n (each
`of which are ways in this particular example), each sepa
`rately coupled to a plurality of sleep devices 104a, 104b
`104n, respectively, as shown, such that each of the sub
`sections or ways 102 may be selectively enabled/disabled.
`The sleep devices 104, according to one or more embodi
`ments of the invention, may include a sleep transistor that is
`used to selectively couple? decouple an associated Sub-sec
`tion of a memory to a power source.
`0019 FIG. 3 illustrates an example sub-section or way
`300 of such an implementation at the transistor level. The
`way 300 includes cells 302a, 302b-302m coupled to a sleep
`device 304. The power supply of the way 300 may be
`coupled to global power lines of the host integrated circuit
`through a serial transistor 304, which may be referred to
`herein as a sleep device or sleep transistor. FIG. 4 shows a
`single cell 402 that may correspond to one of the cells 302
`of FIG. 3. More specifically, as shown in FIGS. 3 and 4, the
`input port of the sleep devices 304 and 404 is coupled to the
`power Supply (VSS in this example) and the output port is
`coupled to the array supply, which may be referred to as the
`virtual power supply of the array or VVss.
`0020 While the example embodiments of FIGS. 3 and 4
`show a sleep device coupled between a sub-section of the
`memory and Vss, for alternative embodiments, the sleep
`device may be instead be coupled between the sub-section of
`the memory and Vcc as shown for the cell 502 in FIG. 5, or
`a sleep circuit may be coupled between each of Vcc and Vss
`and the associated Sub-section.
`0021. In accordance with one or more embodiments, the
`sleep device may be on as long as the associated way is
`active and may be turned off if it is determined that the
`associated way is to be deactivated. As a result of turning off
`a sleep device and disabling an associated Sub-section of
`
`Qualcomm, Exhibit 1003, Page 9
`
`

`

`US 2007/0043965 A1
`
`Feb. 22, 2007
`
`memory, the rail-to-rail Voltage of the virtual power Supply
`is reduced. The leakage power of the associated memory
`array may therefore be reduced since the leakage is depen
`dent on the voltage (See Equation 1 below).
`(Eq. 1)
`Ilkg=k V"
`is Leakage current; V is Rail-to-rail
`0022) Where I
`Voltage; k may be a constant; and n may be, but is not
`required to be, greater than 3.
`0023 FIGS. 6-7 show alternative embodiments of the
`sleep device, according to embodiments of the invention.
`FIG. 6 shows a sleep device 604 with two sleep transistors,
`606a and 606b. The advantages of this configuration
`include, but are not limited to, cases where sleep transistor
`606a has a different resistance value than 606b. In embodi
`ments, by reducing the size of the sleep transistor 606a, the
`voltage at the gate of the sleep transistor 606a may be higher
`than GROUND and therefore doesn't require as much
`voltage to disable a way or cell 602.
`0024. Similarly, other advantages are provided by the
`sleep device 704 shown in FIG. 7, and sleep device 804
`shown in FIG. 8. The sleep device 704 may provide for a
`gradual reduction in the power provided to a way or cell 702.
`The sleep device 804 may provide for a limited reduction in
`power provided to a way or cell 802. The alternative sleep
`devices of FIGS. 6-8 provide alternative embodiments
`which are illustrative of the types of sleep devices which
`may be employed by one of ordinary skill in the art, based
`at least on the teachings provided herein, according to
`embodiments of the invention and are not intended to limit
`the scope of the invention. Moreover, as may be apparent to
`one of ordinary skill, these various embodiments of sleep
`devices may have applications which are more specialized
`than others and may be more advantageous, therefore, for
`certain dynamically sizable memory.
`0.025
`For other embodiments, various circuit and/or
`other techniques may be used to implement alternative sleep
`logic and/or to provide functionality similar to the sleep
`devices using a different approach. In one embodiment of
`the invention, for example, different sub-sections of a
`memory may be implemented on different power planes
`such that sub-sections of the memory may be enabled/
`disabled through power plane control. Other approaches are
`within the scope of various embodiments.
`0026. While a plurality of individual pairs of ways and
`associated sleep devices are shown here, embodiments of
`the invention may readily be implemented in various
`arrangements without departing from the spirit and scope of
`the embodiments of the invention. FIG. 2, for example,
`shows a dynamic memory 200 according to an alternative
`embodiment of the invention that includes a plurality of
`ways 202a, 202b-202n, where n may be a number greater
`than one, coupled to a single sleep device 204. The ways and
`sleep devices may be similar in function and design to those
`described in FIG. 1 except, in this embodiment, the sleep
`device 204 may be deactivated to disable all of the ways
`associated with it.
`0027) Further, while an n-way associative cache memory
`implemented on a microprocessor is described herein for
`purposes of illustration, it will be appreciated that embodi
`ments of the invention may be applied to other types of
`
`memory, including cache memories having a different archi
`tecture and/or memories implemented on another type of
`integrated circuit device.
`0028. For other embodiments, for example, other parti
`tions, Sub-sections or portions of memory, including cache
`memories of various levels, may be selectively enabled
`and/or disabled using one or more of the approaches
`described herein. The illustrated ways may therefore provide
`a convenient grouping of cells, such as an array, but use of
`the term “ways is not intended to limit the spirit or scope of
`the invention.
`0029 Referring back to FIG. 1, as described above, sleep
`device 104a may be deactivated to disable way 102a when
`way 102a is not needed, thus providing a leakage power
`savings or activated to enable way 102a. It is noted that the
`use of the term enable with respect to the memory refers to
`the powering, at any active level, of the memory; while the
`use of the term disable refers to the removal or blocking of
`power to the memory. From a logical standpoint, according
`to embodiments of the invention described herein, enabled
`memory may be accessed for READ/WRITE operations,
`while disabled memory may not.
`0030. According to one or more embodiments, to enable
`and/or disable associated Sub-sections of the dynamically
`sizable memory 100, the sleep devices 104a-104m may be
`controlled by memory power management logic or other
`logic (not shown), which may be implemented in a host
`integrated circuit, a computer system or in software. An
`example of Such an implementation is described below in
`reference to FIG. 9.
`0031 FIG.9 is a block diagram of a computer system 900
`having a dynamically sizable memory 905 according to an
`example embodiment of the invention. The computer system
`900 may be a personal computer system such as, for
`example, a laptop, notebook or desktop computer system.
`The computer system 900 may include one or more proces
`sors 901, which may include sub-blocks such as, but not
`limited to, one or more cores, illustrated by core 902 and
`core 904, the dynamically sizable cache memory 905, which
`may, for example, be an L2 cache memory, and power
`management logic 906, which may include memory power
`management logic 907. One or more of the processor(s) 901
`may be an Intel(R) Architecture microprocessor. For other
`embodiments, the processor(s) may be a different type of
`processor Such as, for example, a graphics processor, a
`digital signal processor, an embedded processor, etc. and/or
`may implement a different architecture.
`0032. The one or more processors 901 may be operated
`with one or more clock sources 908 and provided with
`power from one or more voltage sources 910. The one or
`more processors 901 may also communicate with other
`levels of memory, such as memory 912. Higher memory
`hierarchy levels such as system memory (RAM) 918a and
`storage 918b, Such as a mass storage device which may be
`included within the system or accessible by the system, may
`be accessed via host bus 914 and a chip set 916.
`0033. In addition, other functional units such as a graph
`ics interface 920 and a network interface 922, to name just
`a few, may communicate with the one or more processors
`901 via appropriate busses or ports. For example, the
`memory 912, the RAM 918a, and/or the storage 918b may
`
`Qualcomm, Exhibit 1003, Page 10
`
`

`

`US 2007/0043965 A1
`
`Feb. 22, 2007
`
`include Sub-sections that provide for dynamic sizing of the
`memory according to embodiments of the invention. Fur
`thermore, one of ordinary skill would recognize that some or
`all of the components shown may be implemented using a
`different partitioning and/or integration approach, in varia
`tion to what is shown in FIG. 9, without departing from the
`spirit or scope of the embodiment as described.
`0034) For one embodiment, the storage 918b may store
`Software such as, for example an operating system 924. For
`one embodiment, the operating system is a Windows.(R)
`operating system, available from Microsoft Corporation of
`Redmond, Washington, that includes features and function
`ality according to the Advanced Configuration and Power
`Interface (ACPI) Standard (for example, ACPI Specifica
`tion, Rev. 3.0, Sep. 2, 2004: Rev. 2.0c, Aug. 25, 2003: Rev.
`2.0, Jul. 27, 2000, etc.) and/or that provides for Operating
`System-directed Power Management (OSPM). For other
`embodiments, the operating system may be a different type
`of operating system such as, for example, a Linux operating
`system.
`0035) While the system 900 is a mobile personal com
`puting system, other types. of systems such as, for example,
`other types of computers (e.g., handhelds, servers, tablets,
`web appliances, routers, etc.), wireless communications
`devices (e.g., cellular phones, cordless phones, pagers, per
`Sonal digital assistants, etc.), computer-related peripherals
`(e.g., printers, Scanners, monitors, etc.), entertainment
`devices (e.g., televisions, radios, Stereos, tape and compact
`disc players, video cassette recorders, camcorders, digital
`cameras, MP3 (Motion Picture Experts Group, Audio Layer
`3) players, video games, watches, etc.), and the like are also
`within the scope of various embodiments. The memory
`circuits represented by the various foregoing figures may
`also be of any type and may be implemented in any of the
`above-described systems.
`0036) The memory power management module 907 of
`one embodiment may be implemented as a finite state
`machine (FSM). A state diagram corresponding to the opera
`tion of the memory power management module 907 of one
`example embodiment is shown in FIG. 12.
`0037. The memory power management module 907 may
`operate in cooperation with other features and functions of
`the processor(s) 901 Such as the power management module
`906. In particular, the power management module of one
`embodiment may control power management of the proces
`sor(s) 901 and/or of the individual core(s) 902 and 904,
`including transitions between various power states. Where
`the operating system 924 supports ACPI, for example, the
`power management module 907 may control and track the
`c-states of the various core(s) and/or the p-states. The power
`management module may also store or otherwise have
`access to other information to be used in managing the
`dynamic memory sizing approach of one or more embodi
`ments such as, for example, the operating Voltage/frequency
`of the processor and/or one or more cores, a minimum cache
`memory size, timer information, and/or other information
`stored in registers or other data stores.
`0038. With continuing reference to FIGS. 9 and 12, the
`memory power management module transitions between
`three high-level states (intermediate states may be included
`for various embodiments): Full Cache size 1205, Minimum
`Cache Size 1210, and Stop Shrink 1215. The transitions
`
`between these states may be managed in cooperation with a
`microcode (pcode) or other module 926 coupled to the
`memory 905. For the Full Cache Size state 1205, the
`microcode 926 is requested to return the cache back to its
`full size. This is the default (reset) state. For the Minimum
`Cache Size state 1210, the microcode 926 is requested to
`shrink the cache memory down to its minimum size. For
`Some embodiments, the minimum size is programmable
`(e.g. via microcode) and may be determined by various
`design considerations such as, but not limited to, typical
`Software profiles, acceptable delays in reducing cache size,
`a minimum size below which the memory is inoperable
`and/or other factors. It is noted that any minimum size for
`the memory may be dependent upon the state of the system,
`and therefore may not be constant over time, as one of
`ordinary skill in the art would appreciate. For the Stop
`Shrink state 1215, the microcode is requested to stop the
`cache shrink sequence. The ways or other Sub-sections that
`have been disabled or shut down remain disabled, but the
`effective cache size is not reduced any further.
`0039 Transitions between these states may be managed
`according to certain variables which may be stored, for
`example, in a register or other data store (not shown). For
`one embodiment, for example, these variables may include,
`but are not limited to 1) all but one core in low power state,
`2) ratio<=shrink threshold, 3) a c-state timer output, 4) at
`least one core in low power state, 5) ratio>shrink threshold,
`6) expand and/or 7) shrink.
`0040. For the processor 901 of FIG. 9 including 2 cores
`and operating according to the ACPI specification, the
`variable “all but one core in low power state' may be set for
`one embodiment in response to determining that one core is
`already in a C4 state while the other, which may continue to
`execute during the dynamic memory sizing operations, is
`still in an active state (CO). For one embodiment, this
`variable should not be set if any of the cores have a break
`event pending. If two (or more) cores are present on the
`processor 901, but one (or more) of the cores is disabled or
`removed, then that core may be disregarded during the
`decision-making process.
`0041) The “ratio<=shrink threshold” variable may be set
`in response to the processor 901 or one of its cores, for one
`embodiment, being programmed to operate at a lower/equal
`frequency than a predetermined frequency set as the shrink
`threshold. The shrink threshold may be programmed for
`Some embodiments and may be equal to Zero.
`0042. One or more timer outputs may also be considered
`in determining whether to transition between states. For one
`embodiment, for example, a timer, Such as an 8-bit down
`counter, for example, may be used to count the contiguous
`time that the processor (or a core) spends in the active or CO
`state and may indicate when that time exceeds a pre
`programmed threshold. For this example, a variable “CO
`timer over threshold’ may be used.
`0043. The variable “at least one core in a low power
`state.” for the example processor and system shown in FIG.
`9, may be set when one of the cores has entered a stable C1,
`C2 or C3 State and not the C4 or WFS State.
`0044) The “ratio>shrink threshold variable may be set
`when the processor or one of its cores is programmed to
`operate at a higher frequency than the shrink threshold. For
`
`Qualcomm, Exhibit 1003, Page 11
`
`

`

`US 2007/0043965 A1
`
`Feb. 22, 2007
`
`some embodiments, if the shrink threshold equals 0, this
`ratio need not be taken into account when determining
`whether to expand the memory.
`0045. The “expand variable may be set or dynamic
`memory expansion may be otherwise enabled for one
`embodiment if the ratio>shrink threshold, at least one core
`in low power state and/or the C0 timer-threshold. For other
`embodiments and/or implementations, the expand variable
`may be set under different conditions or in response to
`different inputs.
`0046) The “shrink” variable may be set or dynamic
`memory size reduction may be otherwise enabled for one
`embodiment if the ratio<=shrink threshold is set and all but
`1 core in low power state is set.
`0047. With continuing reference to FIGS. 9 and 12, a
`transition from the Full Cache Size state 1205 to the Mini
`mum Cache Size state 1210 may be undertaken for one
`embodiment for a multi-core processor in response to deter
`mining that one core is already in the C4 (or other low
`power) state, and when the processor 901 is operating below
`the shrink threshold p-state. It may be assumed then that the
`effective cache reduction will not substantially affect per
`formance and therefore can be initiated. Concurrently, it
`may be confirmed that an effective memory expansion is not
`needed, e.g. that the C0 timer has not timed out indicating
`a possible rise in the activity factor.
`0.048. Once microcode has entered the C4 flow on the
`core that is in the C4 state, the microcode may detect the
`request to reduce the effective size of the memory to the
`Minimum Cache Size and begin disabling ways or other
`sub-sections of the memory. For one embodiment, in the
`minimum cache size state 1210, ways or other sub-sections
`may be disabled one at a time. Other approaches may be
`used for other embodiments.
`0049. During the dynamic memory size reduction pro
`cess, microcode may stop the shrink process after program
`mable chunks or other intervals to determine whether the
`shrink variable is still asserted. If it is not, the shrink process
`will be frozen. Further, if a pending interrupt occurs, the
`shrink process will be interrupted.
`0050. Once the pre-defined number of ways or other
`Sub-sections has been shut down, the remaining core(s) may
`indicate a C4 state causing the entire processor 901 to enter
`into a C4 state. For some embodiments, this sequence may
`be repeated for every C4 entry of the last core until the cache
`memory has reached the pre-defined minimum size. From
`that point, a shrink request may be disregarded.
`0051) While in the Minimum Cache Size state 1210, if
`one core has exited the C4 state and the conditions for an
`expand operation (or setting of an expand variable) have not
`been met or a pending break request exists for any core, the
`shrink variable may be negated and shrink process may be
`halted (i.e., the Stop Shrink State 1215 may be entered). This
`may be leave the memory 905 in an intermediate effective
`size until either the conditions to continue the shrink occur
`or conditions for an expand operation occur. If the effective
`memory 905 size is below a given number of ways or other
`Sub-sections, such as a minimum number of ways below
`which the memory 905 will not operate properly and has
`either not reached “O'” or a minimum size has been pro
`grammed at a given level, e.g. “re-open to 2', the microcode
`
`may need to re-open the memory so that at least a given
`number of ways or other Sub-sections are operational.
`0.052 From either the Minimum Cache Size state 1210 or
`the Stop Shrink State 1215, an indication to effectively
`expand the memory 905 may occur. Expanding the memory
`905 may be based on one or more indicators that an activity
`factor has increased. For one embodiment, indicators may
`include a transition to a higher p-state than the shrink
`threshold, one of the core(s) transitioning to a different
`power state, e.g. C1/2/3 instead of aiming for C4 and/or the
`C0 timer exceeding its threshold. Such occurrences may
`indicate that a program is in one of its longer activity
`stretches. If any of the above occur, the expand variable may
`be asserted or effective expansion of the memory 905 may
`be otherwise initiated.
`0053 For one embodiment, effective memory expansion
`may occur Substantially instantaneously, i.e. not over mul
`tiple cycles apart from some delay to prevent current spikes.
`After expansion, the microcode will disregard an expand
`request. In addition to the above, upon every core C4 exit for
`Some embodiments, microcode may check the shrink vari
`able (or shrink control field), microcode may expand the
`memory back to a minimum number of ways before pro
`ceeding with a break to a higher power state.
`0054 For the shrink process, some additional consider
`ations may apply to one or more embodiments. For example,
`for Some embodiments, microcode may need to control the
`memory shrink segment entry with a semaphore so that only
`a single core may access the memory interface at one time.
`(It is assumed that the other core is in a core C4 state for the
`example embodiment described above, but this may not be
`guaranteed during an expand segment or process. In any
`case, event timing may cause a break before an atomic
`segment of the shrink flow is completed. The semaphore
`may ensure that the second core will not access the memory
`interface until the shrink/expand process is completed).
`0055) Further, to prevent memory 905 issues microcode
`may need to ensure that a second (or other) core is blocked
`into core C4 state when the shrink/reduction process occurs.
`For some embodiments, the may happen in hardware based
`on the same semaphore but microcode may need to account
`for the delay factor by rechecking the shrink indication
`before starting the actual atomic shrink flow.
`0056. Due to the potentially long shrink flow, microcode
`may need to periodically detect and ensure that there are no
`breaks pending and that a request to halt the shrink flow has
`not occurred. This may be done periodically after every
`"chunk” by testing if the shrink variable is still asserted. If
`microcode detects that the shrink conditions have ended, it
`should release the semaphore to ensure other core(s) can
`respond to break events and proceed with other flows. The
`shrink request/variable may be negated if any pending break
`events are detected and therefore, no interrupt window may
`need to be opened in the middle of the flow.
`0057 For some embodiments, as mentioned above, there
`may be a minimum effective size below which the memory
`905 may not operate. For example, if the minimum size for
`the memory 905 is 2 ways (i.e. it may not function properly
`with only 1 way enabled), the shrink process may proceed
`directly from 2 ways to 0 ways enabled even if it is
`programmed to shrink 1 way or other Sub-section at a time.
`
`Qualcomm, Exhibit 1003, Page 12
`
`

`

`US 2007/0043965 A1
`
`Feb. 22, 2007
`
`For a “normal expand flow for one embodiment,
`0.058
`microcode may try to capture the semaphore on every core
`C4 exit (unwind) regardless of whether an expand is
`required. Thus, the sleeping or low power core (for a
`multi-core processor) may not be able to begin execution
`during a shrink flow preventing possible contention with the
`shrink process. Memory expansion may be performed dur
`ing an interrupt microcode handling routine. For some
`embodiments, as mentioned above, where the memory is
`inoperable below a minimum operable size, it may be
`expanded directly to the minimum operable size under
`certain conditions. For example, in an embodiment of the
`invention, in the case where a processor may implement an
`MWAIT state, an auto-expansion may be implemented on
`every MWAIT exit and the memory may proceed directly to
`the minimum operable effective size.
`0059) Machine Check Architecture (MCA) exceptions
`may occur either on a core exiting the shrink flow (e.g. a
`parity error on the memory 905) or on the other core(s), if
`its clock(s) have restarted and/or it has initiated a core C4
`exit. In both cases, the memory 905 may have been reduced
`below the minimum operable size and may not have reached
`Zero effective size. Since this is not a legal operational size
`and since it may be assumed that C4 may not be entered
`again Soon, m

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket