The present disclosure relates generally to computing, and in particular, to flexible static random access memory (SRAM) pre-charge systems and methods.
SRAM memories typically pre-charge their bit lines to a high-voltage state before a read or write access can take place. When an SRAM's bit lines are in a pre-charged state, the SRAM will typically exhibit more leakage power than in the non-pre-charged state. In addition, multiple large drivers within an SRAM, such as word line drivers, contribute a large amount of the overall SRAM leakage power. To improve power consumption in designs using SRAMs, it is desirable to minimize the time SRAMs are in the high leakage state.
Described herein are techniques for pre-charging an SRAM. In the following description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of some embodiments. Various embodiments as defined by the claims may include some or all of the features in these examples alone or in combination with other features described below and may further include modifications and equivalents of the features and concepts described herein.
Features and advantages of the present disclosure include a mechanism to use an dynamic explicit pre-charge scheme on an SRAM while allowing the system to initiate a pre-charge request to the SRAM while a previous access is in progress on a current within the SRAM. This leads to a reduction in leakage power without adding additional latency to the SRAM access. The techniques described herein may be used with or without grouping SRAMs into “banks” to achieve parallelism as described below.
In some embodiments, an SRAM includes circuitry to (1) pipeline the pre-charge/SRAM access cycles and (2) determine whether to put the SRAM in the low leakage state after a current access or to keep the SRAM in pre-charge state ready for the next access. A pre-charge request can be provided to the SRAM one or more cycles before an SRAM access. However, during an SRAM access, a new pre-charge request for the next access can be provided to the SRAM (e.g., a pipelined pre-charge feature). In some embodiments, the SRAM may further determine whether to keep a header/footer voltage on and pre-charge the bit lines after the current access, or to turn off the header/footer voltage and not to pre-charge the bit lines after the current access in order to put the SRAM in a low leakage state. These techniques provide a flexible solution since the SRAM can dynamically either always keep the pre-charge input asserted or explicitly pre-charge on demand, but without the additional performance penalty to pre-charge.
Additionally, in some embodiments, the SRAM allows for dynamic pre-charging of select memory sub-banks of an SRAM for more granular pre-charging. Further, a pre-charge-reset input (e.g., pre-charge-reset-all) may be provided in the SRAM, which clears the pre-charged SRAM bit lines for all sub-banks, and in some embodiments, the pipelined pre-charge requests inside the SRAM, for example.
Accordingly, an SRAM circuit may include pre-charge request inputs (Pre-chg IN”) that receive the pre-charge signal. The pre-charge signal may be a digital signal, and in various embodiments may comprise one bit or a plurality of bits, for example. Using the pre-charge signal, the SRAM may assert a pre-charge request when an SRAM access (e.g., read or write) is already in progress, for example.
For instance, SRAM access control circuit 110 may receive and store a pre-charge signal 112 to implement any of the following scenarios. When the SRAM access control circuit is not accessing stored bits of data in the SRAM memory bank on the current cycle, the pre-charge signal may cause the plurality of bit lines to pre-charge. Similarly, when the SRAM access control circuit is accessing stored bits of data in the SRAM memory bank on the current cycle, the pre-charge signal may be stored in the SRAM access control circuit to automatically pre-charge the plurality of bit lines when the current memory access is completed. Alternatively, when the pre-charge signal indicates there is no pre-charge for the subsequent cycle, then the SRAM access control circuit does not pre-charge the bit lines when the current memory access is completed. Further, when the pre-charge signal indicates there is no pre-charge for the subsequent cycle, then the SRAM access control circuit may further turn off one or more head switches providing power to a plurality of word lines when the current memory access is completed. An example of a head switch is illustrated further below.
This example illustrates 2 bit lines 450-451 coupled to a plurality of bit cells 460a-x. A bit cell 460a comprises cross coupled inverters 410-411 coupled to bit lines 450-451 through NMOS transistors 412-413, which are controlled by word line inputs, wL0-x, for example. Inverters each may include 2 transistors. Accordingly, the bit cell in
In the example in
Referring to
Advantageously, in this illustrative example, the timing of the pre-charge signal, here “precharge_set_bank<3>”, controls the timing that the pre-charge voltage is applied to bit lines in the bank, which illustrates the flexibility of the techniques presented herein. During the time period labeled 801, clk rising edge occurs with addr A1 asserted and precharge_set_bank<3> stays asserted for two clock cycles. Therefore, the bit line voltage, int_pch_en_rslat_bank<3>, stays asserted until clk rising with addr B1 is asserted. Accordingly, the first clock cycle of precharge_set_bank<3> is associated with access A1, while the second clock cycle of precharge_set_bank<3> is associated with access B1. Time period 801 is an example of how the second clock cycle of precharge_set_bank<3>, associated with access B1, occurs simultaneously with the mem_en for in-progress access A1.
During the time period labeled 802, clk rising edge with addr A2 asserted, since precharge_set_bank<3> is not asserted, therefore, int_pch_en_rslat_bank<3> is de-asserted when word line (A2) is asserted. However, during clk rising edge with precharge_set_bank<3> asserted (in between addr A2 and B2), int_pch_en_rslat_bank<3> gets asserted, and the bit lines are pre-charged to get ready for B2 memory access. Accordingly, the first clock cycle of precharge_set_bank<3> is associated with access A2, while the second clock cycle of precharge_set_bank<3> is associated with access B2. Time period 802 is an example of how the second clock cycle of precharge_set_bank<3>, associated with access B2, occurs simultaneously with the SRAM bit cell access for in-progress access A2.
During the time period labeled 803, precharge_set_bank<3> input is asserted for 3 clock cycles. However, int_pch_en_rslat_bank<3> has the same behavior. Time period 803 illustrates a combination of 801 and 802. The first clock cycle of precharge_set_bank<3> is associated with access A3, while the second and third clock cycles of precharge_set_bank<3> are associated with access B3. Time period 803 further illustrates the pipelining of 801 and 802 (B3's precharge is asserted during A3's mem_en cycle and A3's sram bitcell access cycle), but also illustrates how the present techniques may keep the precharge input active for multiple cycles for a given request (B3 in this case), if needed.
Each of the following non-limiting features in the following examples may stand on its own or may be combined in various permutations or combinations with one or more of the other features in the examples below. In various embodiments, the present disclosure may be implemented as a processor or method.
Embodiments of the present disclosure include a static random access memory (SRAM) circuit comprising: an SRAM memory bank configured to store bits of data, the SRAM memory bank comprising a plurality of bit lines; and an SRAM access control circuit coupled to the plurality of bit lines of the SRAM memory bank, the SRAM access control circuit configured to pre-charge the plurality of bit lines to access the stored bits of data, wherein the SRAM access control circuit receives and stores a pre-charge signal for a subsequent cycle when the SRAM access control circuit is accessing stored bits of data in the SRAM memory bank on a current cycle.
In another embodiment, the present disclosure includes a method of pre-charging an SRAM circuit comprising: storing bits of data in an SRAM memory bank, the SRAM memory bank comprising a plurality of bit lines; receiving and storing, by an SRAM access control circuit, a pre-charge signal for a subsequent cycle when the SRAM access control circuit is accessing stored bits of data in the SRAM memory bank on a current cycle; and pre-charging, by the SRAM access control circuit, the plurality of bit lines based on the pre-charge signal to access the stored bits of data of the SRAM memory bank.
In one embodiment, when the SRAM access control circuit is not accessing stored bits of data in the SRAM memory bank on the current cycle, the pre-charge signal causes the plurality of bit lines to pre-charge.
In one embodiment, when the SRAM access control circuit is accessing stored bits of data in the SRAM memory bank on the current cycle, the pre-charge signal is stored in the SRAM access control circuit to automatically pre-charge the plurality of bit lines when the current memory access is completed.
In one embodiment, when the pre-charge signal indicates there is no pre-charge for the subsequent cycle, then the SRAM access control circuit does not pre-charge the bit lines when the current memory access is completed.
In one embodiment, when the pre-charge signal indicates there is no pre-charge for the subsequent cycle, then the SRAM access control circuit further turns off one or more head switches providing power to a plurality of word lines when the current memory access is completed.
In one embodiment, the pre-charge signal comprises one or more bits.
In one embodiment, the SRAM memory bank comprises a plurality of memory sub-banks and the pre-charge signal comprises a corresponding number of bits to independently pre-charge the plurality of memory sub-banks.
In one embodiment, the number of bits is equal to a number of the plurality of memory sub-banks.
In one embodiment, the SRAM access control circuit comprises a plurality of pre-charge signal inputs equal to a number of the plurality of memory sub-banks.
In one embodiment, the SRAM access control circuit comprises a plurality of flip flops for storing the plurality of pre-charge signal inputs equal to the number of the plurality of memory sub-banks.
In one embodiment, the SRAM access control circuit comprises a pre-charge-reset input to clear the pre-charge on the plurality of bit lines.
In one embodiment, the pre-charge-reset input further clears pre-charge signals stored in the SRAM access control circuit.
In one embodiment, the pre-charge-reset input further turns off one or more head switches providing power to a plurality of word lines.
The above description illustrates various embodiments along with examples of how aspects of some embodiments may be implemented. The above examples and embodiments should not be deemed to be the only embodiments, and are presented to illustrate the flexibility and advantages of some embodiments as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations and equivalents may be employed without departing from the scope hereof as defined by the claims.