1. Technical Field
This disclosure relates to electronic circuits, and more particularly, to circuits used to implement register files.
2. Description of the Related Art
Many integrated circuits (IC's) utilize register files for temporary storage of data. For example, processors utilize register files to store operands for performing operations and for storing results of those operations. The number of registers used may vary from one type of processor to another. Typically, registers may be at the top of a memory hierarchy and thus the closest memory to an execution unit of a processor.
A register file may be implemented using a number of bit cells. Each register may include a certain number of bit cells, and a typical register file may include a number of registers. The type of circuitry used to implement bit cells for a register file may vary with the application. Factors that can affect the type of circuits chosen for bit cells may include speed, power consumption, area consumption, and so forth.
A register file cell structure to enable lower voltage writes is disclosed. In one embodiment, a register file bit cell includes a state element made up of two cross-coupled inverters. Each of the inverters includes a p-channel metal oxide semiconductor (PMOS) transistor having a source terminal coupled to a virtual voltage node. One or more PMOS transistors are coupled in series between the virtual voltage node and a global voltage node. Each of the one or more PMOS transistors includes a gate terminal that is hardwired to a ground node, and thus these devices remain active when power is applied to the global voltage node. The presence of the one or more PMOS devices coupled between the virtual and global voltage nodes results in the ability to overwrite contents stored in the state element at lower voltages than otherwise attainable without the one or more PMOS devices.
In one embodiment, a register filed includes M bit cells subdivided into groups (or subset) of N bit cells. Each of the N bit cells in a given group includes a plurality of cross-coupled inverters each coupled to receive power from a virtual voltage node. Each of the groups of bit cells includes a virtual voltage node that is exclusive to that particular group. Each of the groups of bit cells also includes one or more PMOS transistors coupled in series between its respective virtual voltage node and a global voltage node that is coupled to all of the groups. The PMOS transistors coupled between the virtual voltage node of each group and the global voltage node are configured to remain active whenever power is applied to the global voltage node.
Other aspects of the disclosure will become apparent upon reading the following detailed description and upon reference to the accompanying drawings in which:
While the subject matter disclosed herein is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and description thereto are not intended to be limiting to the particular form disclosed, but, on the contrary, is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present disclosure as defined by the appended claims.
Turning now to
In the embodiment shown, IC 10 is a processor including execution unit 21 and register file 20. Although not shown here, IC 10 may also include other agents, such as one or more cache memories, a load/store unit, branch prediction/determination mechanisms, re-ordering buffers, a retirement unit, and other agents used to support processor operation. Execution unit 12 in the embodiment shown is configured to execute instructions of a software program. Operands used in the execution of instructions may be provided from register file 20. The operands may be received from another unit in IC 10, such as a load/store unit. Results from the execution of instructions may be received by register file 20 from execution unit 12. These results may be committed and written back to memory by a load/store unit, and may also be written to one or more cache memories.
Register file 20 in the embodiment shown includes a number of registers. Among the included registers may be those defined by the architecture of the processor implemented on IC 10. Copies of the architected registers may also be provided to store speculative states resulting from the speculative execution of instructions. Similarly, copies of the architected registers may be provided to store operands to be used in the speculative execution of instructions. In some embodiments, register renaming may be used to determine specific ones of the registers are considered to be architected registers, and which are considered to be extra registers during a given operational cycle.
It is noted that while the various circuit embodiments described below are in the context of registers, and more particularly, in the context of architected registers, such disclosure is exemplary and is not intended to be limiting. The circuitry described below may be used with any type of memory having a dedicated write port, a dedicated read port, or both.
Turning now to
In the embodiment shown, each of the subsets 22 is associated with a transistor stack 25. Furthermore, each of the subsets 22 is coupled to virtual voltage node 26. The virtual voltage node 26 for each of the subsets is coupled to receive voltage from a global voltage node 27. As defined herein, a virtual voltage node is a voltage node that is coupled to bitcells 21 of a particular subset 22, exclusive of bitcells 21 of any other subset 22. Thus, a given instance of a virtual voltage node as defined herein may provide an operating voltage to selected ones of bitcells 21 (in this case, within a corresponding subset 22), but is not coupled to provide an operating voltage to all bitcells 21 of register file 20. A virtual voltage node may further be defined herein as a voltage node that receives its voltage through one or more transistors coupled to another voltage node. A global voltage node as defined herein is a voltage node that is coupled, through transistors, to the virtual voltage node 26 of each of the subsets 22 of register file 20. It is further noted that a global voltage node as defined herein may be coupled to other circuitry external to register file 20, although this is not necessarily the case for all embodiments. A global voltage node as defined herein may be coupled directly to a power supply, a voltage regulator, or other portion of a power distribution system on an IC upon which register file 20 is implemented.
Each transistor stack 25 in the embodiment shown may include one or more transistors coupled in series between global voltage node 27 and its corresponding virtual voltage node 26. In one embodiment, a transistor stack 25 may include at least one p-channel metal oxide semiconductor (PMOS) transistor, and in some embodiments, more than one PMOS transistor may be included. The one or more PMOS transistors may be configured to remain active during operation, e.g., whenever the specified operating voltage is applied to the global voltage node.
Each bitcell 21 also includes a pair of passgate transistors to couple the storage nodes to local bit lines. For example, Bitcell 0 includes a first passgate transistor (N1) configured to couple the first storage node, SN—0, to a first local bit line, LBL—0. Bitcell 0 also includes a second passgate transistors, N2, configured to couple the second storage node, SN_L—0, to a second local bit line, LBL_L—0. Transistors N1 and N2 may be activated responsive to activation of a word line, WL—0, coupled to each of their respective gate terminals. Writes to each bit cell 21 may be accomplished by activating the passgate transistors to convey data from respectively coupled local bit lines to the storage nodes. In some embodiments, reads may also be accomplished by activating passgate transistors of the bitcells to be read and allowing the states of the storage nodes to propagate to the local bit lines. However, embodiments are possible and contemplated wherein additional circuitry (not shown here) is provided to read the bitcells without activation of the illustrated pass-gates.
Power may be received by the inverters of each bitcell 21 through source terminals of their respective PMOS transistors. For example, in Bitcell 0, the source terminals of P1 and P2 are coupled to virtual voltage node 26 (which is exclusive to the illustrated instance of subset 22). Power may be provided to virtual voltage node 26 from global voltage node 27 via transistor stack 25. In this embodiment, transistor stack 25 includes two PMOS transistors, P98 and P99, coupled in series between virtual voltage node 26 and global voltage node 27. Respective gate terminals of P98 and P99 are hardwired to a ground (or reference) node in the illustrated embodiment. Thus, transistors P98 and P99 may remain active when the power is applied as specified (e.g., as the specified voltage) to global voltage node 27.
It is noted that while the illustrated embodiment includes two transistors coupled in series between virtual voltage node, the number of transistors in a transistor stack 25 may vary from one embodiment to the next. A transistor stack may be implemented with only a single transistor in some embodiments, while more than two transistors per transistor stack may be provided in other embodiments.
The utilization of transistor stack 25 as shown in
Each of the PMOS transistors in transistor stack 25 in the embodiment shown are configured to operate similar to a linear resistor when their respective gate terminals are tied to a reference node (e.g., Vss or ground). More particularly, each of the transistors in transistor stack 25 may operate in the linear region. By adding more effective resistance between global voltage node 27 and the PMOS devices of the inverters in each bitcell (e.g., P1 and P2 in bitcell 0), these PMOS devices become weaker. By weakening the pull-up strength of the PMOS devices of the inverters, it becomes easier for a logic 0 resulting from an NMOS device to pull down against a corresponding PMOS device. Thus, a logic 0 may be written into a bitcell easier, at a lower voltage, and faster in comparison to bitcells where transistor stack 25 is not present.
Turning next to
The peripherals 454 may include any desired circuitry, depending on the type of system 450. For example, in one embodiment, the system 450 may be a mobile device (e.g. personal digital assistant (PDA), smart phone, etc.) and the peripherals 454 may include devices for various types of wireless communication, such as WiFi, Bluetooth, cellular, global positioning system, etc. The peripherals 454 may also include additional storage, including RAM storage, solid state storage, or disk storage. The peripherals 454 may include user interface devices such as a display screen, including touch display screens or multitouch display screens, keyboard or other input devices, microphones, speakers, etc. In other embodiments, the system 450 may be any type of computing system (e.g. desktop personal computer, laptop, workstation, net top etc.).
Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.