Method and apparatus for intelligent memory interface

文档序号:1568623 发布日期:2020-01-24 浏览:10次 中文

阅读说明:本技术 用于智能存储器接口的方法和设备 (Method and apparatus for intelligent memory interface ) 是由 C.H.郑 于 2017-05-26 设计创作,主要内容包括:本发明涉及用于智能存储器接口的方法和设备。一个实施例涉及一种存储器结构,包括存储体组和端口仿真电路模块。所述存储体组包括多个存储器存储体,每个存储器存储体具有一个读取端口和一个写入端口。所述端口仿真电路模块为所述存储体组提供组读取/写入端口和组读取端口。另一实施例涉及一种端口仿真电路模块。所述端口仿真电路模块包括:端口仿真控制电路,所述端口仿真控制电路接收包括针对组读取/写入端口的第一地址和针对组读取端口的第二地址的控制信号;针对所述组读取/写入端口的第一数据路径电路;以及针对所述组读取端口的第二数据路径电路,其中所述第二数据路径电路输出第二读取数据。也公开了其他实施例和特征。(The invention relates to a method and apparatus for an intelligent memory interface. One embodiment relates to a memory architecture including a bank group and a port emulation circuit module. The bank group includes a plurality of memory banks, each memory bank having a read port and a write port. The port emulation circuit module provides a group read/write port and a group read port for the bank group. Another embodiment relates to a port emulation circuit module. The port emulation circuit module includes: a port emulation control circuit that receives a control signal including a first address for a group read/write port and a second address for a group read port; a first data path circuit for the set of read/write ports; and a second data path circuit for the set of read ports, wherein the second data path circuit outputs second read data. Other embodiments and features are also disclosed.)

1. A field programmable gate array system, comprising:

a field programmable gate array logic circuit configurable to implement a user logic design;

a memory comprising a plurality of memory channels,

wherein the field programmable gate array logic circuit is a separate chip from the memory; and

a channel steering circuit coupled between the field programmable gate array logic circuit and the memory,

wherein the channel directing circuitry flexibly routes memory transactions between one of the plurality of portions of the field programmable gate array logic circuitry and one of the plurality of memory channels based on the address.

2. The field programmable gate array system of claim 1, wherein the memory transaction is associated with a memory read.

3. The field programmable gate array system of claim 2, wherein the channel steering circuit routes memory transactions between different ones of a plurality of memory channels coupled to any one of a plurality of portions of the field programmable gate array logic circuit.

4. The field programmable gate array system of claim 3, wherein the channel steering circuit routes read data generated in response to the memory transaction, and wherein the channel steering circuit is operable to:

connecting a first portion of a field programmable gate array logic circuit to a first portion of a memory via a first channel of a plurality of memory channels;

connecting a first portion of a field programmable gate array logic circuit to a second portion of a memory via a second channel of a plurality of memory channels;

connecting a second portion of the field programmable gate array logic circuit to the first portion of the memory via a first channel; and

a second portion of the field programmable gate array logic circuit is connected to a second portion of the memory via a second channel.

5. The field programmable gate array system of claim 1, wherein the memory and the field programmable gate array logic circuitry are co-located on a single board.

6. The field programmable gate array system of claim 5, wherein the channel steering circuitry is disposed between the memory and the field programmable gate array logic circuitry on the single board such that memory transactions are sent through the channel steering circuitry.

7. The field programmable gate array system of claim 1, wherein the field programmable gate array logic circuit is configurable to use data read from at least one of the plurality of memory channels and sent to any of a plurality of portions of the field programmable gate array logic circuit.

8. The field programmable gate array system of claim 1, wherein the channel steering circuit comprises hardened logic.

9. The field programmable gate array system of claim 1, wherein the channel directing circuitry is coupled to read circuitry separate from write circuitry.

10. A method, comprising:

receiving a command from a first portion of a field programmable gate array logic circuit configured to implement a user logic design;

determining, based at least in part on the command, to access a first portion of memory from a plurality of portions of memory; and

accessing a first portion of a memory via a first data path of a switching network comprising a plurality of data paths, wherein the first data path sends data through a multiplexer, and wherein the plurality of data paths facilitate access between any of a plurality of ports of the field programmable gate array logic circuit and any of a plurality of ports of a memory.

11. The method of claim 10, wherein the switching network includes a cross-route that directs information from a first port associated with the first portion of the field programmable gate array logic circuit to a non-adjacent second port associated with the first portion of the memory via a channel.

12. The method of claim 10, comprising:

operating a multiplexer to switch to allow memory access without memory access restrictions prior to accessing a first portion of memory via the first data path, wherein the first portion of the field programmable gate array logic circuit and the first portion of memory are provided separately.

13. The method of claim 10, wherein the plurality of data paths selectively couple respective portions of the field programmable gate array logic circuitry with memory during an access.

14. The method of claim 10, comprising:

commands are received from a host application as part of the operation of the host application as defined via a user logic design implemented in a field programmable gate array logic circuit.

15. The method of claim 10, comprising:

generating parity data associated with the command; and

writing the parity data to the memory.

16. A tangible, non-transitory, machine-readable medium comprising machine-readable instructions stored thereon that, when executed by a processor, cause the processor to:

configuring a device to implement a circuit design in a first portion of a field programmable gate array logic circuit to:

generating a command;

sending a command to logic circuitry coupled between the field programmable gate array logic circuitry and the second portion of the memory to access the second portion of the memory based on the command; and

communicating information with the second portion of the memory via logic circuitry, wherein the logic circuitry facilitates memory access between any of the plurality of portions of the field programmable gate array logic circuitry and any of the plurality of portions of the memory.

17. The machine-readable instructions of claim 16, comprising instructions to cause the processor to:

routing data associated with the command between the field programmable gate array logic circuit and the memory via a switch without memory access restrictions, wherein the logic circuit is disposed separately from the field programmable gate array logic circuit.

18. The machine-readable instructions of claim 16, comprising instructions to cause the processor to:

data associated with the command is routed between the programmable logic and the memory via a logic circuit comprising hardened logic.

19. The machine-readable instructions of claim 16, comprising instructions to cause the processor to:

in response to the switching operation, data associated with the command is routed via the multiplexed data path.

20. The machine-readable instructions of claim 16, comprising instructions to cause the processor to:

data associated with the command is routed to a memory comprising a plurality of memory channels.

Technical Field

The application has the following application numbers: 201710384433.5, title of the invention: divisional applications of methods and apparatus for intelligent memory interfaces. The present disclosure relates generally to the field of interface architectures for communicating with memory devices.

Background

Static Random Access Memory (SRAM) is commonly used in integrated circuits. SRAM cells have the advantageous feature of retaining data without the need for refreshing. SRAM cells may include different numbers of transistors, and are often referred to accordingly by the number of transistors (e.g., six transistor (6T) SRAM, eight transistor (8T) SRAM, etc.). The transistors typically form a data latch for storing bits. Additional transistors may be added to control access to the transistors. SRAM cells are typically arranged in an array having rows and columns. Typically, each row of SRAM cells is connected to a word line that determines whether the current SRAM cell is selected. Each column of SRAM cells is connected to a bit line that is used to store bits into or read bits from the SRAM cells.

Disclosure of Invention

One embodiment relates to a memory structure that includes a bank (bank) group and a port emulation circuit block. The bank group includes a plurality of memory banks, each memory bank having a read port and a write port. The port emulation circuit module provides a group read/write port and a group read port for the bank group.

Another embodiment relates to a port emulation circuit module. The port emulation circuit module includes: a port emulation control circuit that receives a control signal including a first address for a group read/write port and a second address for a group read port; a first data path circuit for the set of read/write ports; and a second data path circuit for the set of read ports, wherein the second data path circuit outputs second read data.

Another embodiment relates to a method of reading data from a set of memory banks. A data read is received from a read/write port of the set of memory banks requesting data at a read address in a specified memory bank. A determination is made that the designated memory bank has a conflicting data read from a read port of the set of memory banks. Reading data from the read address in all other memory banks in the set of memory banks. Reconstructing the data at the read address in the designated memory bank using data read from the read address in all other memory banks.

Another embodiment relates to a method of writing data to a set of memory banks. Receiving a data write requesting new data to be written to a write address in a designated memory bank of the set of memory banks. Reading previous data at the write address in the designated memory bank. An updated parity is calculated and the updated parity is written to the write address in a parity memory bank of the group of memory banks. The new data is written to the write address in the designated memory bank.

Other embodiments and features are also disclosed.

Drawings

FIG. 1 depicts an exemplary memory architecture organized into a plurality of memory channels, each memory channel including a plurality of bank groups, and each bank group including a plurality of SRAM banks, in accordance with embodiments of the present invention.

FIG. 2 depicts further details of an exemplary bank group, in accordance with an embodiment of the present invention.

FIG. 3 is an exemplary timing diagram of signals of the bank group depicted in FIG. 2, in accordance with an embodiment of the present invention.

FIG. 4 depicts details of an exemplary port emulation control circuit in accordance with an embodiment of the present invention.

FIG. 5 depicts details of port A write and read data path circuitry in accordance with an embodiment of the present invention.

FIG. 6 is a flow diagram of a method for data reads from an entry in a conflicting memory bank of an emulated 1RW port, in accordance with an embodiment of the present invention.

FIG. 7 is a flow diagram of a method for data writing from an entry in a bank of an emulated 1RW port, in accordance with an embodiment of the invention.

FIG. 8 is a simplified partial block diagram of a Field Programmable Gate Array (FPGA) that can incorporate aspects of the present invention.

FIG. 9 is a block diagram of an exemplary digital system that may employ the techniques of the present invention.

Detailed Description

The present disclosure provides circuit structures and methods of operation for smart memory interfaces. The smart memory interface is capable of performing smart memory functions and can provide emulated 1R +1RW (one read port and one read/write port) SRAM lanes from a collection of 1R +1W (one read port and one write port) SRAM banks without memory access restrictions. The smart memory interface may also be configured such that a collection of 1R +1W SRAM banks are used as large 1R +1W SRAMs without the desire to emulate a 1R +1RW SRAM lane. The configuration implemented may depend on the application mapped to the core logic of the integrated circuit.

"intelligence" is provided to the 1RW port via atomic operation functionality. The atomic operation functionality allows applications to perform smart memory operations on the SRAM memory itself without impacting raw memory bandwidth and with low power.

The smart memory interface may advantageously reduce the application power and transaction bandwidth required for common read-modify-write operations. This is done by removing the need to physically transfer read data from the SRAM back to the core logic of the integrated circuit (such as, for example, the core structure of a field programmable gate array) to get modified and transferring write data back to be written to the same SRAM location.

The smart memory interface may also advantageously allow for the exchange of temporary data storage content for storing and forwarding memory applications. This reduces the memory capacity, power and bandwidth requirements of the application.

FIG. 1 depicts an exemplary memory architecture organized into a plurality of memory channels, each memory channel including a plurality of bank groups, and each bank group including a plurality of SRAM banks, in accordance with embodiments of the present invention. As depicted, channel steering (steering) logic may be used to interface with L memory channels (memory channel 0, memory channel 1, memory channel 2,..., memory channel L-2, and memory channel L-1), and the channel steering logic may interface with core logic of an integrated circuit (such as a programmable structure of an FPGA).

The channel steering logic operates to steer accesses (read/write commands and read/write data) to and from the respective memory channels from a plurality of inputs from the core logic. There may be multiple memory channel access ports from the core logic and, in that case, the channel steering logic directs accesses from a particular access port to the correct memory channel. In some embodiments, the channel steering logic may be replaced with UIB-lite, which is a simplified version of the universal interface bus.

An expanded view is shown for the internal structure of memory channel 0, and the same internal structure will also exist in the other L-1 memory channels. As shown, each memory channel includes M bank groups (bank group 0, bank group 1, bank group 2.

An expanded view is shown for the internal structure of bank group 0, and the same internal structure will also exist in the other M-1 bank groups. As shown, each bank group includes N SRAM banks (bank 0, bank 1, bank 2. As indicated, memory bank N-1 may be a parity memory bank in an exemplary embodiment of a bank group. Each bank group uses channel logic to interface with channel steering logic. The channel logic interfaces with each bank group in the memory channel using decoding read/write commands to the respective bank group and using port a and port B as provided by the port emulation circuit block. Port a is a group read/write port and port B is a group read port. FIG. 2 depicts further details of an exemplary bank group, in accordance with an embodiment of the present invention. As depicted, N1R +1W SRAM banks (bank 0, bank 1.

One of the 1R +1W SRAM banks in the bank group is a parity bank. In an exemplary embodiment, memory bank N-1 is a parity memory bank. Each 1R +1W SRAM bank has one read port (B) and one write port (a). More particularly, each SRAM bank n has a control (MEA/MEB) port, an address a (adra) port, an address b (adrb) port, a data read (QB) port, and a data write (QA) port.

The port emulation circuit block includes a port emulation control circuit, a port A write and read data path circuit, and a port B read data path circuit.

The port emulation control circuit has initialization (INIT) and request Command (CMD) control signal inputs, port a control and address (MEA and ADRA) inputs, port B control and address (MEB and ADRB) inputs. The port emulation control circuit uses these inputs to generate various control and address signals.

Note that the term "atomic" operation may refer to an operation that is performed in parallel or concurrently with other operations on the same memory location. Many systems avoid requests for atomic operations due to the possible creation of erroneous data.

In an exemplary embodiment, the request Command (CMD) for a 1RW port (port a) includes an encoding for a desired atomic operation that is mapped to a read access (for operations requiring only memory reads) or a write access (for operations requiring a read-modify-write sequence). Example encodings include: binary addition; boolean operations (and, nand, nor, or, xor); data exchange; and arithmetic comparisons (equal to, greater than, less than).

The port simulation control circuit generates N MEA/MEB control signals (MEA [0]/MEB [0], MEA [1]/MEB [1], MEA [2]/MEB [2],. the MEA [ N-1]/MEB [ N-2], MEA [ N-1]/MEB [ N-1 ]). MEA [0]/MEB [0] control is provided to SRAM bank 0. MEA [1]/MEB [1] control is provided to SRAM bank 1. MEA [2]/MEB [2] control is provided to SRAM bank 2. And so on.

The port emulation control circuit also generates a write address A (ADRA)WRITE) Read address A (ADRA)READ) And read Address B (ADRB)READ) And N choices (ASEL [0]]、ASEL[1]、...、ASEL[N-2]、ASEL[N-1]) A signal. ADRAREADAnd ADRBREADThe signal is provided as an input to N selectors (S [0]]、S[1]、...、S[N-2]、S[N-1]). Selector S [0]]By ASEL [0]]To control. Selector S [1]]By ASEL [1]]To control. Selector S2]By ASEL [2]]To control. And so on. When ASEL [ n ]]When 0, then the selector S [ n ]]ADRA is prepared byREADOutput to the ADRB input of SRAM bank n. On the other hand, when ASEL [ n ]]When 1, then the selector S [ n ]]ADRBREADOutput to the ADRB input of SRAM bank n.

Port A write and read data path circuitry receives N read data outputs (QB) from N SRAM banks0、QB1、…、QBN-2、QBN-1) And receives a data write (DA) signal from the channel logic. Port A write and read data path circuitry also receives CMR _ R, RDA _ EN [ N-1: 0] from port emulation control circuitry]RFW _ EN and RDA _ FWD _ EN control signals. Note that the CMR _ R control signal encodes transport rules and atomic commands based on the request command.

Using various input signals, the Port A write and read data path circuitry generates a first data write (DA)RAW) Signal and second data write signal (DA)N-1). First data write (DA)RAW) Signals are output to the QA ports of SRAM banks 0-N-2 and to the port B read data path circuit, and a second data write signal (DA)N-1) Is output to the QA port of SRAM bank N-1. Port a write and read data path circuits also generate response interface (RESP) signals and data read (QA) signals that are output to channel logic.

Note that in the exemplary embodiment, port a write and read data path circuitry includes hardware circuitry for the desired atomic operation between read and write data for parity computation of the write sequence. Hardware circuits may be pipelined on demand for timing closure for operations that take multiple pipeline stages.

It is further noted that in an exemplary embodiment, response interface (RESP) signals output from the port a write and read data path circuitry may convey the results of the atomic operation to the channel logic. For example, the RESP signal may provide the result of an arithmetic comparison operation (i.e., equal to, greater than, or less than).

The port B read data path circuit receives N data read signals (QB) from the data read (QB) ports of the N SRAM banks0、QB1、…、QBN-2、QBN-1). The port B read data path circuit also receives a first data write (DA) from the port A write and read data path circuitsRAW) A signal. Using various input signals, the port B read data path circuit selects the data read (QB) signal to the channel logic.

FIG. 3 is an exemplary timing diagram of signals of the bank group depicted in FIG. 2, in accordance with an embodiment of the present invention. The timing diagram assumes N =5, such that there are five SRAM banks in the bank group.

The CLK signal shows clock cycles labeled 0 through 7. Signals between bank groups and channel logic include MEA, WEA, ADRA, DA, QA, MEB, ADRB, and QB signals. Signals within a bank group include MEA [4:0]]、MEB[4:0]、ASEL[4:0]、ADRAWRITE、ADRAREAD、ADRBREAD、RDA_EN[4:0]、RFW_EN、RDA_FWD_EN、DARAW、DAN-1、RDB_EN[4:0]And the RDB _ FWD _ EN signal.

In the example shown, at clock cycle 1, the MEA and MEB signals transition to logic 1, the Port A Write Enable (WEA) signal is a logic zero (indicating a read operation), the read address A0_ BK1 is received on the ADRA (indicating address A0 in Bank 1), and the read address B0_ BK0 is received on the ADRB (indicating address B0 in Bank 0). At clock cycle 2, upon satisfaction of the read request of the previous clock cycle, the data read QA signal outputs data QA0_ BK1 (indicating data read from address a0 in bank 1), and the data read QB signal outputs data QB0_ BK0 (indicating data read from address B0 in bank 0).

Similarly, at clock cycle 2, read address A1_ BK0 (indicating address A1 in bank 0) is received on ADRA, and read address B1_ BK0 (indicating address B1 in bank 0) is received on ADRB. At clock cycle 3, the data read QA signal outputs data QA1_ BK0 (indicating data read from address A1 in bank 0) when the read request of the previous clock cycle is satisfied. Further, since ASEL [4:0] is set to logic one, the data read QB signal outputs data QB1_ BK0 (indicating data read from address B1 in bank 0).

Note that data QA1_ BK0 output in clock cycle 3 cannot be read directly from bank 0. This is because there is an access conflict at bank 0 because both read addresses are in bank 0. Thus, in accordance with an embodiment of the present disclosure, data QA1_ BK0 is reconstructed using method 600 described below with respect to fig. 6. In this case, the rebuild requires data from banks 1 through 4 (instead of bank 0), so RDA _ EN [4:0] = 11110 in clock cycle 3.

At clock cycle 3, port A Write Enable (WEA) becomes a logical one to indicate a write operation, write data DA2_ BK0 is received on the DA port, write address A2_ BK0 is received on the ADRA (indicating address A2 in bank 0), and read address B2_ BK3 is received on the ADRB (indicating address B2 in bank 3). In clock cycle 4, as a result of the write command on port A in the previous cycle, the previous data of the target entry is read directly from address A2 in bank 0 and the clock parity for address A2 in bank 4 is updated (so RDA _ EN [4:0] in clock cycle 4]= 10001,ADAWRITE= A2, and DAN-1= DA4= DA2 (P)). Further, the data read QB signal outputs data QB2_ BK3 (indicating data read from address B2 in bank 3) when a read command on port B in the previous clock cycle is satisfied.

At clock cycle 4, the write data DA3_ BK2 is received on the DA port, and is connected on the ADRAA write address A3_ BK2 (indicating address A3 in bank 2) is received, and a read address B3_ BK2 (indicating address B3 in bank 2) is received on the ADRB. In clock cycle 5, as a result of the write command on port A in the previous cycle, the previous data of the target entry is reconstructed for address A3 in bank 2 (due to the read conflict at bank 2), and the clock parity for address A3 in bank 4 is updated (so RDA _ EN [4:0] in clock cycle 5]= 11011,ADAWRITE= A3, and DAN-1=DA4= DA3 (P)). Further, the data read QB signal outputs data QB3_ BK2 (indicating data read from address B3 in bank 2) when the read request of the previous clock cycle is satisfied.

At clock cycle 5, port A Write Enable (WEA) becomes a logic zero to indicate a read operation, receives read address A4_ BK1 on ADRA (indicating address A4 in bank 1), and receives read address B4_ BK1 on ADRB (indicating address B4 in bank 1). At clock cycle 6, upon satisfaction of the read request of the previous clock cycle, the data read QA signal outputs data QA4_ BK1 (indicating data read from address a4 in bank 1), and the data read QB signal outputs data QB4_ BK1 (indicating data read from address B4 in bank 1).

Note that the data QA4_ BK1 output in clock cycle 6 cannot be read directly from bank 1. This is because there is an access conflict at bank 1 because both read addresses are in bank 1. Thus, in accordance with an embodiment of the present disclosure, data QA4_ BK1 is reconstructed using method 600 described below with respect to fig. 6. In this case, the rebuild requires data from banks 0, 2, 3, and 4 (instead of bank 1), so RDA _ EN [4:0] = 11101 in clock cycle 6.

In addition the MEA and MEB signals become logic zero at clock cycle 6. Thus, no read or write request is received during this clock cycle.

FIG. 4 depicts details of an exemplary port emulation control circuit in accordance with an embodiment of the present invention. As depicted, the port emulation control circuit has initialization (INIT) and Command (CMD) inputs, port A control and address (MEA and ADRA) inputs, port B control and address (MEB and ADRB) inputs.

The INIT input is used to initialize the SRAM array with known contents (e.g., all zeros). When INIT is asserted (asserted), user logic cycles through all address bits from port A to write all contents in all banks to zero. In an exemplary embodiment, such initialization to all zeros is required before using the smart memory.

The port emulation control circuit generates various control and address signals. In particular, the port emulation control circuit generates N MEA/MEB control signals (MEA [0]]/MEB[0]、MEA[1]/MEB[1]、MEA[2]/MEB[2]、...、MEA[N-1]/MEB[N-2]、MEA[N-1]/MEB[N-1]). The port emulation control circuit also generates a write address A (ADRA)WRITE) Read address A (ADRA)READ) And read Address B (ADRB)READ) And N choices (ASEL [0]]、ASEL[1]、...、ASEL[N-2]、ASEL[N-1]) A signal. Finally, the port emulation control circuit generates control CMR _ R, RDA _ EN [ N-1: 0]]RFW _ EN and RDA _ FWD _ EN control signals.

Two configuration bits are shown for the port emulation control circuit. The first configuration bit is a data reconstruction enable bit. When the data reconstruct enable bit is logic one, then read reconstruct is enabled. When the data reconstruct enable bit is a logic zero, then the read reconstruct is disabled. In an exemplary embodiment, the data reconstruction enables the contents of an entire bank to be reconstructed by reusing the same port emulation mechanisms. For example, if multiple bits in bank 0 are corrupted due to a Single Event Upset (SEU) or other error, user logic may enable data reconstruction and read and write back to bank 0 from port a. This causes data to be reconstructed from memory banks 1, 2,.., N-1 (without reading from memory bank 0) and then written back to memory bank 0. This corrects errors in bank 0.

The second configuration bit is the port a read enable bit. When the port A read enable bit is a logical one, then the port A read operation is enabled. When the port A read enable bit is a logic zero, then the port A read operation is disabled.

Note that as shown in FIG. 4, the port emulation control circuit includes commandsAnd decoding the path. The command decode path operation is to decode an atomic operation. In addition, a pipelined command (CMD _ R) is provided to port A write and read data path circuitry. The pipelined command may be used to identify an atomic operation to be performed by port a write and read data path circuitry on one or more operands. In particular, the operands may include data that may be transferred from QB0To QBN-1Operand 1, obtained or reconstructed, and optional operand 2, which may be provided by DA.

FIG. 5 depicts details of port A write and read data path circuitry in accordance with an embodiment of the present invention. As shown, port A write and read data path circuitry receives N read data outputs (QB) from N SRAM banks0、QB1、...、QBN-2、QBN-1) And receives a data write (DA) signal from the channel logic. Port A write and read data path circuitry also receives CMR _ R, RDA _ EN [ N-1: 0] from port emulation control circuitry]RFW _ EN and RDA _ FWD _ EN control signals.

Using various input signals, the Port A write and read data path circuitry generates a first data write (DA)RAW) Signal and second data write signal (DA)N-1). The port a write and read data path circuits also generate a Response (RESP) signal and a data read (QA) signal that are output to the channel logic.

As shown in FIG. 5, atomic operation hardware circuitry may be included in port A write and read data path circuitry. The atomic operation hardware circuit may include binary adder logic (ADD), boolean operation logic (BOOL) (such as and, nand, or, nor and xor logic), and comparison logic (CMP). In addition, control circuitry may be included to allow read data return for data exchange operations (SWAP). A Multiplexer (MUX) may be used to select the write data (modified or original write data) to be written back and used for the final parity calculation. The original read data may be returned via an emulated read data path (QA), and a response interface (RESP) may be used to convey the results of the arithmetic comparison operations performed by the comparison logic (CMP).

FIG. 6 is a flow diagram of a method 600 for data reads of entries in a conflicting bank from a 1RW port of a bank group, in accordance with an embodiment of the present invention. The method 600 may be implemented using the exemplary circuits described above with respect to fig. 1-5.

A data read command is received from the 1RW port of the bank group, per step 602. In the exemplary circuit described above, port a is a 1RW port of a bank group, and a data read command is received at the 1RW port by enabling the MEA and disabling the WEA and receiving the read address and bank number in the ADRA.

Pursuant to step 604, it is determined that the data read is to a bank having a conflicting data read from the 1R port of the bank group. In the exemplary circuit described above, port B is the 1R port of the bank group, and the data read command is received at the 1R port by having MEB enabled and receiving the read address and bank number in ADRB. An example of a conflicting data read from a 1RW and 1R port is discussed above with respect to the timing diagram of FIG. 3. Note that if there is no conflict at the bank, the data read may proceed directly without reconstruction, as discussed above with respect to the timing diagram of FIG. 3.

Pursuant to step 606, to satisfy the data read from the 1RW port, the data is read from the same address in all other banks in the bank group. All other memory banks include all non-conflicting data banks and parity banks. For example, if N =5, such that the bank number is changed from 0 to 4, and the bank number where the collision occurs is 3, data is read from the same address in banks 0, 1, 2, and 4, where bank 4 may be a parity bank.

The data for satisfying the data read from the 1RW port is reconstructed, per step 608. Consider an example where N =5, the number of colliding banks is 3, and where the parity bank (bank 4) holds an even parity bit. In this example, if the corresponding bits in banks 0, 1, 2, and 4 sum to an odd number, the corresponding bit in bank 3 may be reconstructed to a logical 1. On the other hand, if the corresponding bits in banks 0, 1, 2, and 4 sum to an even number, the corresponding bit in bank 3 may be reconstructed to a logical 0. In this way, the data for satisfying the data read from the 1RW port can be reconstructed bit by bit.

The reconstructed data is output via the 1RW port of the bank group, per step 610. In the exemplary circuit described above, port a is a 1RW port of the bank group, and the reconstructed data is output from the 1RW port in data QA.

FIG. 7 is a flow diagram of a method 700 for data writing from an entry in a bank of an emulated 1RW port of a bank group, in accordance with an embodiment of the invention. The method 700 may be implemented using the exemplary circuits described above with respect to fig. 1-5.

A data write command is received from the 1RW port of the bank group, per step 702. In the exemplary circuit described above, port a is a 1RW port of the bank group, and a data write command is received at the 1RW port by enabling both the MEA and the WEA and receiving the write address and the bank number in the ADRA.

The previous data stored at the written target entry (i.e., the data at the write address and bank number received in the ADRA) is read, per step 704. As discussed above with respect to the timing diagram of FIG. 3, the previous data may be read directly in the absence of a read bank conflict or may be reconstructed in the presence of a read bank conflict.

The updated parity data (for the write address in the parity bank) is computed per step 706. As indicated in the timing diagram of FIG. 3, the updated parity data is output to the DAN-1A data signal.

The new data is written into the target entry and the updated parity data is written into the parity memory bank, per step 708. As indicated in the timing diagram of FIG. 3, DARAWData signal supply is written to the MEA [ N-2: 0]]New data in the indicated memory bank. As further indicated in the timing diagram of FIG. 3, DAN-1The signal supply is controlled by ADRAWRITEThe updated parity data written into bank N-1 at the indicated address.

Note that the write sequence described above with respect to fig. 7 is a read-modify-write (RMW) sequence. The "modify" step of the RMW sequence is an operation that computes a new parity value to be written into the parity memory bank.

FIG. 8 is a simplified partial block diagram of a Field Programmable Gate Array (FPGA) 10 that can incorporate aspects of the present invention. It should be understood that embodiments of the invention may be used in many types of integrated circuits such as Field Programmable Gate Arrays (FPGAs), Programmable Logic Devices (PLDs), Complex Programmable Logic Devices (CPLDs), Programmable Logic Arrays (PLAs), Digital Signal Processors (DSPs) and Application Specific Integrated Circuits (ASICs).

The FPGA 10 includes, within its "core", a two-dimensional array of programmable logic array blocks (or LABs) 12 interconnected by a network of column and row interconnection conductors of varying length and speed. LABs 12 include multiple (e.g., ten) logic elements (or LEs).

An LE is a programmable logic block that provides an efficient implementation of user-defined logic functions. FPGAs have many logic elements that can be configured to implement various combinatorial and sequential functions. The logic element has access to the programmable interconnect structure. The programmable interconnect structure can be programmed to interconnect logic elements in almost any desired configuration.

The FPGA 10 may also include a distributed memory structure that includes Random Access Memory (RAM) blocks of varying sizes provided throughout the array. The RAM blocks include, for example, block 14, block 16, and block 18. These memory blocks may also include shift registers and FIFO buffers.

The FPGA 10 may also include Digital Signal Processing (DSP) blocks 20 that may implement, for example, multipliers with add or subtract features. Input/output elements (IOEs) 22, located near the periphery of the chip in this example, support many single-ended and differential input/output standards. Each IOE 22 is coupled to an external terminal (i.e., pin) of the FPGA 10. An array of transceiver (TX/RX) channels can be arranged as shown, e.g., with each TX/RX channel circuit 30 coupled to several LABs.

It should be understood that the FPGA 10 is described herein for illustrative purposes only and that the present invention can be implemented in many different types of PLDs, FPGAs, and ASICs.

Fig. 9 illustrates a block diagram of an exemplary digital system 50 that may embody techniques of the present invention. The system 50 may be a programmed digital computer system, digital signal processing system, dedicated digital switching network, or other processing system. Moreover, such systems may be designed for a wide variety of applications such as telecommunications systems, automotive systems, control systems, consumer electronics, personal computers, internet communications and networking, and so forth. Further, the system 50 may be provided on a single board, on multiple boards, or within multiple enclosures.

System 50 includes a processing unit 52, a memory unit 54, and an input/output (I/O) unit 56 interconnected together by one or more buses. According to this exemplary embodiment, FPGA58 is embodied in processing unit 52. FPGA58 may serve many different purposes within system 50. FPGA58 may be, for example, a logical component of processing unit 52 that supports its internal and external operations. FPGA58 is programmed to implement the logic functions necessary to participate in its particular role in system operation. FPGA58 may be specifically coupled to memory 54 by connection 60 and to I/O unit 56 by connection 62.

Processing unit 52 may direct data to the appropriate system components for processing or storage, execute programs stored in memory 54, receive and transmit data via I/O units, or other similar functions. The processing unit 52 may be a Central Processing Unit (CPU), microprocessor, floating point coprocessor, graphics coprocessor, hardware controller, microcontroller, field programmable gate array programmed to function as a controller, network controller, or any type of processor or controller. Furthermore, in many embodiments, a CPU is often not required.

For example, instead of a CPU, one or more FPGAs 58 may control the logical operation of the system. As another example, FPGA58 functions as a reconfigurable processor that can be reprogrammed as needed to handle a particular computing task. Alternatively, the FPGA58 may itself comprise an embedded microprocessor. Memory unit 54 may be Random Access Memory (RAM), Read Only Memory (ROM), hard or floppy disk media, flash memory, magnetic tape, or any other storage device, or any combination of such storage devices.

Conclusion

In the previous description, numerous specific details were set forth to provide a thorough understanding of embodiments of the invention. However, the foregoing description of illustrated embodiments of the invention is not intended to be exhaustive or to limit the invention to the precise form disclosed. One skilled in the relevant art will recognize that the invention can be practiced without one or more of the specific details, or with other methods, components, etc.

In other instances, well-known structures or operations are not shown or described in detail to avoid obscuring aspects of the invention. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. These modifications can be made to the invention in light of the above detailed description.

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:包括分布式写入驱动布置的半导体器件及其操作方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!