US20170168934A1 - Memory controller with interleaving and arbitration scheme - Google Patents
Memory controller with interleaving and arbitration scheme Download PDFInfo
- Publication number
- US20170168934A1 US20170168934A1 US14/963,248 US201514963248A US2017168934A1 US 20170168934 A1 US20170168934 A1 US 20170168934A1 US 201514963248 A US201514963248 A US 201514963248A US 2017168934 A1 US2017168934 A1 US 2017168934A1
- Authority
- US
- United States
- Prior art keywords
- access
- memory
- access request
- output
- access requests
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
Definitions
- the present invention generally relates to integrated circuits, and, more particularly, to a memory controller.
- Integrated circuits often include multiple cores for processing data packets and a shared memory for storing the data packets.
- ICs also include a memory controller that manages communication between the cores and the shared memory.
- a core issues an access request that includes a memory address.
- the memory controller grants access to the core only after an on-going transaction of a former core with the memory is completed.
- This waiting period is referred to as the dynamic latency of the core.
- a known technique to reduce dynamic latency involves interleaving of memory addresses, which requires the shared memory to be divided into multiple memory banks. Each memory bank is accessible, independent of other memory banks. Interleaving of addresses involves mapping contiguous addresses to memory locations in separate memory banks. The interleaving scheme may depend on the size of a contiguous address block mapped to each memory bank, for instance, interleaving based on a page size, a cache-line, and an address boundary.
- the cores generate access requests that include addresses mapped to memory locations present in separate memory banks due to interleaving of the addresses.
- address interleaving permits a core to sequentially access separate memory banks. Address interleaving also permits different cores to simultaneously access separate memory banks, leading to a reduction in dynamic latency. However, as only one core can access a memory bank in one access cycle, a memory access conflict arises when multiple cores try to simultaneously access the same memory bank.
- a known technique to resolve memory access conflicts involves including an arbiter in the memory controller.
- the memory controller assigns a priority level to each core based on factors such as the core type and the access request type, and then provides the cores access to the memory based priority levels (i.e., the sequence of access for the cores).
- the arbiter can modify the access sequence using arbitration techniques such as rotating priority, round robin, and least recently accessed core.
- arbitration techniques do not allow a user to dynamically determine the access sequence, and hence, a select logic circuit is included in the arbiter to allow a user to configure the access sequence.
- select logic requires redesigning the existing arbiter, which increases the complexity of the circuit and the circuit area.
- FIG. 1 is a schematic block diagram of an integrated circuit (IC) including a memory controller in accordance with an embodiment of the present invention
- FIG. 2 is a schematic block diagram of an arbiter of the memory controller of FIG. 1 in accordance with an embodiment of the present invention.
- a memory controller is provided.
- the memory controller is connected to a plurality of cores that include first and second cores and a first memory segment that includes first and second memory banks.
- the memory controller receives first and second access requests from the first core and a third access request from the second core.
- the second access request is consecutive to the first access request.
- the first through third access requests include first through third sets of address least significant bits (LSBs), respectively.
- the memory controller includes a first address decoder, a first system bus, a first arbiter, and a second arbiter.
- the first address decoder is connected to the plurality of cores including the first and second cores to receive the first through third access requests.
- the first address decoder selects the first memory bank based on the first and third sets of address LSBs and the second memory bank based on the second set of address LSBs.
- the first system bus is connected to the first address decoder to receive the first through third access requests and routes the first and third access requests to the first memory bank in a first sequence and the second access request to the second memory bank.
- the first sequence indicates an order of predetermined priority levels of the first and third access requests.
- the first arbiter includes first and second multiplexers, and a first priority encoder. The first arbiter is connected to the first system bus and the first memory bank and receives the first and third access requests in the first sequence.
- the first multiplexer has first and second input terminals to receive the first and third access requests, respectively, a select terminal to receive a first select signal, and an output terminal to output a first output access request signal.
- the second multiplexer has first and second input terminals to receive the third and first access requests, respectively, a select terminal to receive the first select signal, and an output terminal to output a second output access request signal.
- the first and second multiplexers output the first and third access requests as the first and second output access request signals, respectively, when the first select signal is at a first logic state.
- the first and second multiplexers determine a second sequence of the first and third access requests.
- the first priority encoder is connected to the output terminals of the first and second multiplexers to receive the first and second output access request signals, respectively.
- the priority encoder When the first select signal is at the first logic state, the priority encoder outputs the first and third access requests in the second sequence.
- the first arbiter provides at least one of the first and second cores access to the first memory bank in a first access cycle.
- the second arbiter is connected to the corresponding second memory bank and receives the second access request in a second access cycle that is consecutive to the first access cycle. The second arbiter then provides the first core access to the second memory bank.
- an integrated circuit in another embodiment, is provided.
- the IC includes a plurality of cores including first through fourth cores, a first memory segment, and a memory controller.
- the first core generates first and second access requests, and the second through fourth cores generate third through fifth access requests, respectively.
- the second access request is consecutive to the first access request.
- the first through fifth access requests include first through fifth sets of address LSBs, respectively.
- the first memory segment includes first and second memory banks.
- the memory controller receives the first through fifth access requests from the first through fourth cores.
- the memory controller is connected to the first memory segment and includes a first address decoder, a first system bus, and first and second arbiters.
- the first address decoder is connected to the plurality of cores including the first through fourth cores and receives the first through fifth access requests.
- the first address decoder selects the first memory bank based on the first and third through fifth sets of address LSBs and the second memory bank based on the second set of address LSBs.
- the first system bus is connected to the first address decoder and receives the first through fifth access requests.
- the first system bus routes the first and third through fifth access requests to the first memory bank in a first sequence and the second access request to the second memory bank.
- the first sequence indicates an order of predetermined priority levels of the first through fourth cores.
- the first arbiter is connected to the first memory bank and includes first and second sets of multiplexers, and a priority encoder.
- the first set of multiplexers is connected to the first system bus to receive the first and third through fifth access requests in the first sequence.
- the first set of multiplexers include first through fourth multiplexers that determine a second sequence of the first and third through fifth access requests.
- the first multiplexer has first and second input terminals that receive the first and fourth access requests, respectively, a select terminal that receives a first select signal, and an output terminal that outputs a first output access request signal.
- the second multiplexer has first and second input terminals that receive the third and fifth access requests, respectively, a select terminal that receives the first select signal, and an output terminal that outputs a second output access request signal.
- the third multiplexer has first and second input terminals that receive the fourth and first access requests, respectively, a select terminal that receives the first select signal, and an output terminal that outputs a third output access request signal.
- the fourth multiplexer has first and second input terminals that receive the fifth and third access requests, respectively, a select terminal that receives the first select signal, and an output terminal that outputs a fourth output access request signal.
- the first through fourth multiplexers output the first and third through fifth access requests as the first through fourth output access request signals, respectively, when the first select signal is at a first logic state.
- the second set of multiplexers is connected to the first set of multiplexers to receive the first and third through fifth access requests.
- the second set of multiplexers includes fifth through eighth multiplexers that determine a third sequence of the first and third through fifth access requests.
- the fifth multiplexer has first and second input terminals connected to the output terminals of the first and second multiplexers to receive the first and third access requests, respectively, a select terminal that receives a second select signal, and an output terminal that outputs a fifth output access request signal.
- the sixth multiplexer has first and second input terminals connected to the output terminals of the second and first multiplexers to receive the third and first access requests, respectively, a select terminal that receives the second select signal, and an output terminal that outputs a sixth output access request signal.
- the seventh multiplexer has first and second terminals connected to the output terminals of the third and fourth multiplexers to receive the fourth and fifth access requests, respectively, a select terminal that receives the second select signal, and an output terminal that outputs a seventh output access request signal.
- the eighth multiplexer has first and second input terminals connected to the output terminals of the fourth and third multiplexers to receive the fifth and fourth access requests, respectively, a select terminal that receives the second select signal, and an output terminal that outputs an eighth output access request signal.
- the fifth through eighth multiplexers output the first through fourth access requests as the fifth through eighth output access request signals, respectively, when the second select signal is at a first logic state.
- the priority encoder is connected to the fifth through eighth multiplexers to receive the fifth through eighth output access request signals.
- the priority encoder When the first and second select signals are at the first logic states, the priority encoder outputs the first and the third through fifth access requests in the third sequence.
- the first arbiter provides at least one of the first through fourth cores access to the first memory bank according to the third sequence in a first access cycle.
- the second arbiter receives the second access request in a second access cycle that is consecutive to the first access cycle. The second arbiter then provides the first core access to the second memory bank.
- Various embodiments of the present invention provide a memory controller.
- the memory controller receives multiple access requests from multiple cores, respectively.
- An address decoder of the memory controller selects a memory bank within a memory segment based on a set of address LSBs in the access requests. Hence, a core requiring sequential access to the memory is routed to consecutive memory banks for consecutive access requests.
- an arbiter of the memory controller decides a sequence of access for the cores. The access sequence is decided based on the predetermined priority levels of the cores.
- the arbiter is configured to modify the access sequence to avoid the starvation of cores with lower predetermined priority levels.
- the address decoder determines whether an access request is a wide access request and selects consecutive addresses from two memory banks for the wide access request.
- the IC 100 includes a plurality of cores 102 including first through sixth cores 102 a - 102 f, a memory controller 104 , and a memory 106 .
- the memory 106 includes a plurality of memory segments 108 including first and second memory segments 108 a and 108 b.
- Each memory segment 108 includes a plurality of memory banks 110 .
- the first memory segment 108 a includes first and second memory banks 110 a and 110 b
- the second memory segment 108 b includes third and fourth memory banks 110 c and 110 d.
- the memory banks 110 include static random-access memories (SRAMs).
- the memory banks 110 may even include other types of memories such as, but are not limited to, dynamic random-access memories (DRAMs) and flash memories.
- the memory controller 104 For each memory segment 108 , the memory controller 104 includes an address decoder 112 , a system bus 114 , an arbiter 116 corresponding to each memory bank 110 in the memory segment 108 .
- the memory controller 104 includes first and second address decoders 112 a and 112 b, first and second system buses 114 a and 114 b, and first through fourth arbiters 116 a - 116 d.
- the first address decoder 112 a and the first system bus 114 a correspond to the first memory segment 108 a
- the second address decoder 112 b and the second system bus 114 b correspond to the second memory segment 108 b.
- the first through fourth arbiters 116 a - 116 d are connected to the corresponding first through fourth memory banks 110 a - 110 d, respectively, by way of an interface 118 .
- the first through sixth cores 102 a - 102 f generate first through sixth access requests (AR 1 -AR 6 ), respectively.
- the first through sixth access requests (AR 1 -AR 6 ) include first through sixth sets of address least significant bits (LSBs), respectively.
- the first and second address decoders 112 a and 112 b are connected to the first through sixth cores 102 a - 102 f to receive the first through sixth access requests (AR 1 -AR 6 ).
- the first address decoder 112 a identifies each of the first and second memory banks 110 a and 110 b in the first memory segment 108 a based on the first through sixth sets of address LSBs.
- the second address decoder 112 b identifies each of the third and fourth memory banks 110 c and 110 d in the second memory segment 108 b based on the first through sixth sets of address LSBs.
- the first and second system buses 114 a and 114 b are connected to the first and second address decoders 112 a and 112 b, respectively, to receive at least one of the first through sixth access requests (AR 1 -AR 6 ).
- Each of the first and second system buses 114 a and 114 b routes the first through sixth access requests (AR 1 -AR 6 ) to the corresponding memory banks 110 when the corresponding memory banks 110 are available for a memory access.
- Each of the first and second system buses 114 a and 114 b stalls the first through sixth access requests (AR 1 -AR 6 ) to the corresponding memory banks 110 when the corresponding memory banks 110 are unavailable for a memory access.
- Each of the first and second system buses 114 a and 114 b routes more than one access requests of the first though sixth access requests (AR 1 -AR 6 ) to a single memory bank 110 in a sequence. This sequence indicates an order of predetermined priority levels of the cores 102 corresponding to the access requests.
- Each of the first and second system buses 114 a and 114 b is a matrix that stores and routes the access requests according to the corresponding memory banks 110 .
- the matrix is an N*M matrix that stores and routes N access requests by N cores 102 corresponding to M memory banks 110 .
- the first arbiter 116 a is connected to the first system bus 114 a and is configured to modify the access sequence to avoid starvation of the cores 102 .
- the first arbiter 116 a provides at least one of the first through sixth cores 102 a - 102 f access to the first memory bank 110 a in an access cycle.
- the second arbiter 116 b is connected to the first system bus 114 a, and the third and fourth arbiters 116 c and 116 d are connected to the second system bus 114 b.
- the first arbiter 116 a includes first and second sets of muxes 202 a and 202 b, and a priority encoder 204 .
- the first set of muxes 202 a includes first through fourth muxes 206 a - 206 d
- the second set of muxes 202 b includes fifth through eighth muxes 206 e - 206 h.
- the first through eighth muxes 206 a - 206 h are 2:1 muxes.
- the first arbiter 116 a also includes a grant generator 208 .
- the first arbiter 116 a receives first through fourth access requests (AR 1 -AR 4 ) from the first system bus 114 a.
- the number of sets of muxes 202 and the number of muxes 206 in each set of muxes 202 depends on the number of cores 102 handled by an arbiter 116 .
- the second through fourth arbiters 116 b - 116 d are structurally and functionally similar to the first arbiter 116 a.
- the first mux 206 a has first and second input terminals connected to the first system bus 114 a to receive the first and third access requests (AR 1 and AR 3 ), respectively.
- the first mux 206 a also has a select terminal that receives a first select signal (SEL 1 ) and an output terminal that outputs a first output access request signal (AR_OUT 1 ).
- the second mux 206 b has first and second input terminals connected to the first system bus 114 a to receive the second and fourth access requests (AR 2 and AR 4 ), respectively.
- the second mux 206 b also has a select terminal that receives the first select signal (SEL 1 ) and an output terminal that outputs a second output access request signal (AR_OUT 2 ).
- the third mux 206 c has first and second input terminals connected to the first system bus 114 a to receive the third and first access requests (AR 3 and AR 1 ), respectively.
- the third mux 206 c also has a select terminal that receives the first select signal (SEL 1 ) and an output terminal that outputs a third output access request signal (AR_OUT 3 ).
- the fourth mux 206 d has first and second input terminals connected to the first system bus 114 a to receive the fourth and second access requests (AR 4 and AR 2 ), respectively.
- the fourth mux 206 d also has a select terminal that receives the first select signal (SEL 1 ) and an output terminal that outputs a fourth output access request signal (AR_OUT 4 ).
- the first select signal (SEL 1 ) provided to the first through fourth muxes 206 a - 206 d configures the first arbiter 116 a to rearrange first and second sets of access requests, including the first and second access requests (AR 1 and AR 2 ), and the third and fourth access requests (AR 3 and AR 4 ), respectively.
- the fifth mux 206 e has first and second input terminals connected to the output terminals of the first and second muxes 206 a and 206 b to receive the first and second output access request signals (AR_OUT 1 and AR_OUT 2 ), respectively.
- the fifth mux 206 e also has a select terminal that receives a second select signal (SEL 2 ) and an output terminal that outputs a fifth output access request signal (AR_OUT 5 ).
- the sixth mux 206 f has first and second input terminals connected to the output terminals of the second and first muxes 206 b and 206 a to receive the second and first output access request signals (AR_OUT 2 and AR_OUT 1 ), respectively.
- the sixth mux 206 f also has a select terminal that receives the second select signal (SEL 2 ) and an output terminal that outputs a sixth output access request signal (AR_OUT 6 ).
- the seventh mux 206 g has first and second input terminals connected to the output terminals of the third and fourth muxes 206 c and 206 d to receive the third and fourth output access request signals (AR_OUT 3 and AR_OUT 4 ), respectively.
- the seventh mux 206 g also has a select terminal that receives the second select signal (SEL 2 ) and an output terminal that outputs a seventh output access request signal (AR_OUT 7 ).
- the eighth mux 206 h has first and second input terminals connected to the output terminals of the fourth and third muxes 206 d and 206 c to receive the fourth and third output access request signals (AR_OUT 4 and AR_OUT 3 ), respectively.
- the eighth mux 206 h also has a select terminal that receives the second select signal (SEL 2 ) and an output terminal that outputs an eighth output access request signal (AR_OUT 8 ).
- the first through fourth output access request signals (AR_OUT 1 -AR_OUT 4 ) represent the first through fourth access requests (AR 1 -AR 4 ) in a modified sequence.
- the second select signal (SEL 2 ) provided to the fifth through eighth muxes 206 e - 206 h configures the first arbiter 116 a to rearrange the first and second access requests (AR 1 and AR 2 ) of the first set of access requests, and the third and fourth access requests (AR 3 and AR 4 ) of the second set of access requests.
- the first and the second select signals (SEL 1 AND SEL 2 ) are provided by the user.
- the first and second sets of muxes 202 a and 202 b modify the access sequence for the first through fourth cores 102 a - 102 d, based on the first and second select signals (SEL 1 and SEL 2 ), respectively.
- the fifth through eighth output access request signals (AR_OUT 5 -AR_OUT 8 ) correspond to a modified access sequence for the first through fourth cores 102 a - 102 d.
- the first priority encoder 206 has first through fourth input terminals connected to the output terminals of the fifth through eighth muxes 206 e - 206 h to receive the fifth through eighth output access request signals (AR_OUT 5 -AR_OUT 8 ), respectively. Since the fifth output access request signal (AR_OUT 5 ) is received at the first input terminal, the fifth output access request signal (AR_OUT 5 ) has the highest modified priority, and hence, the priority encoder 206 outputs the fifth output access request signal (AR_OUT 5 ) at its output terminal. Thus, priority encoder 206 provides at least one of the first through fourth cores 102 a - 102 d access to the first memory bank 110 a.
- the grant generator 208 is connected to the output terminal of the first priority encoder 206 and receives one of the first through fourth access requests (AR 1 -AR 4 ).
- the grant generator 208 generates a grant signal (GS) at a first logic state when the first memory bank 110 a is available for memory access and at a second logic state when the first memory bank 110 a is unavailable for memory access.
- the first memory bank 110 a is unavailable for memory access in an access cycle when the first arbiter 116 a provides one of the first through fourth cores 102 a - 102 d access to the first memory bank 110 a in the access cycle.
- the first address decoder 112 a receives the grant signal (GS) and determines whether the first memory bank 110 a is available for memory access.
- the first and second address decoders 112 a and 112 b receive the first though sixth access requests (AR 1 -AR 6 ).
- the first and second address decoders 112 a and 112 b also receive a seventh access request (AR 7 ) from the first core 102 a.
- the seventh access request (AR 7 ) includes a seventh set of address LSBs.
- the first address decoder 112 a selects the first memory bank 110 a, based on the first through fourth sets of address LSBs and the second memory bank 110 b, based on the fifth and seventh sets of address LSBs.
- the second address decoder 112 b selects the third memory bank 110 c, based on the sixth set of address LSBs.
- the first address decoder 112 a determines that the first and second memory banks 110 a and 110 b are available for memory access in a first access cycle when the first and second grant signals (GS 1 and GS 2 ) corresponding to the first and second banks 110 a and 110 b, respectively, are at the first logic state.
- the second address decoder 112 b determines that the third memory bank 110 c is available for memory access in the first access cycle when the third grant signal (GS 3 ) corresponding to the third memory bank 110 c is at the first logic state.
- the first system bus 114 a routes the first through fourth access requests (AR 1 -AR 4 ) in a first sequence to the first arbiter 116 a that corresponds to the first memory bank 110 a. Since the first through fourth cores 102 a - 102 d request the memory controller 104 access to the first memory bank 110 a simultaneously, an access conflict arises.
- the first through fourth muxes 206 a - 206 d receive the first through fourth access requests (AR 1 -AR 4 ) in the first sequence and the first select signal (SEL 1 ).
- the first mux 206 a receives the first and third access requests (AR 1 and AR 3 ), and the second mux 206 b receives the second and fourth access requests (AR 2 and AR 4 ).
- the third mux 206 c receives the third and first access requests (AR 3 and AR 1 ), and the fourth mux 206 d receives the fourth and second access requests (AR 4 and AR 2 ).
- the first through fourth muxes 206 a - 206 d output the first through fourth access requests (AR 1 -AR 4 ) as the first through fourth output access request signals (AR_OUT 1 -AR_OUT 4 ), respectively, when the first select signal (SEL 1 ) is at the first logic state.
- the first through fourth muxes 206 a - 206 d determine a second sequence of access for the first through fourth cores 102 a - 102 d, based on the first select signal (SEL 1 ).
- the fifth through eighth muxes 206 e - 206 h receive the first through fourth access requests (AR 1 -AR 4 ) in the second sequence and the second select signal (SEL 2 ).
- the fifth mux 206 e receives the first and second access requests (AR 1 and AR 2 )
- the sixth mux 206 f receives the second and first access requests (AR 2 and AR 1 ).
- the seventh mux 206 g receives the third and fourth access requests (AR 3 and AR 4 )
- the eighth mux 206 h receives the fourth and third access requests (AR 4 and AR 3 ).
- the fifth through eighth muxes 206 e - 206 h output the first through fourth access requests (AR 1 -AR 4 ) as the fifth through eighth output access request signals (AR_OUT 5 -AR_OUT 8 ), respectively, when the second select signal (SEL 2 ) is at the first logic state.
- the fifth through eighth muxes 206 e - 206 h determine a third sequence of access for the first through fourth cores 102 a - 102 d, based on the second select signal (SEL 2 ).
- the priority encoder 206 receives the first through fourth access requests (AR 1 -AR 4 ) at the first through fourth input terminals, respectively.
- the priority encoder 206 outputs the first through fourth access requests (AR 1 -AR 4 ) in a descending order of priority with the first access request (AR 1 ) having the highest priority.
- the first core 102 a has the highest modified priority level according to the third sequence and so, the first arbiter 116 a provides the first core 102 a access to the first memory bank 110 a in the first access cycle. Therefore, the first arbiter 116 a generates the first grant signal (GS 1 ) at the second logic state, indicating that the first memory bank 110 a is unavailable for memory access in the first access cycle.
- the first and second system buses 114 a and 114 b route the fifth and sixth access requests (AR 5 and AR 6 ) to the second and third arbiters 116 b and 116 c.
- the fifth core 102 e requests access to the second memory bank 110 b
- no memory access conflict arises for accessing the second memory bank 110 b.
- the second arbiter 116 b grants the fifth core 102 e access to the second memory bank 110 b of the first memory segment 108 a in the first access cycle.
- the third arbiter 116 c grants the sixth core 102 f access to the third memory bank 110 c of the second memory segment 108 b in the first access cycle.
- the second and third arbiters 116 b and 116 c generate the second and third grant signals (GS 2 and GS 3 ), respectively, at the second logic states in the first access cycle, indicating that the second and third memory banks 110 b and 110 c are unavailable for memory accesses, respectively, in the first access cycle.
- the seventh access request (AR 7 ) generated by the first core 102 a is consecutive to the first access request (AR 1 ).
- the first address decoder 112 a selects the second memory bank 110 b, based on the seventh set of address LSBs.
- the first address decoder 112 a also determines that the second memory bank 110 b is available for memory access in a second access cycle when the second grant signal (GS 2 ) is at the first logic state.
- the first arbiter 116 a grants the first core 102 a access to the first memory bank 110 a for the first access request (AR 1 ) in the first access cycle.
- the first system bus 114 a routes the seventh access request (AR 7 ) to the second memory bank 110 b in the second access cycle that is consecutive to the first access cycle.
- the second arbiter 116 b grants the first core 102 a access to the second memory bank 110 b for the seventh access request (AR 7 ).
- Each memory location of a memory bank 110 includes a fixed number of bits that corresponds with the width of the memory bank 110 .
- the first address decoder 112 a examines the first though sixth access requests (AR 1 -AR 6 ) to detect that the second access request (AR 2 ) has more bits than the width of the memory bank 110 .
- the first address decoder 112 a determines that the second access request (AR 2 ) is a wide access request and selects first and second addresses of the first and second memory banks 110 a and 110 b, respectively, for the wide access request.
- the first address is consecutive to the second address.
- the first address decoder 112 a determines that the first and second memory banks 110 a and 110 b are available for memory access in a third access cycle when the first and second grant signals (GS 1 and GS 2 ) are at the first logic state.
- the first system bus 114 a routes the wide access request to the first and second memory banks 110 a and 110 b when the first and second memory banks 110 a and 110 b are available for memory access.
- the first and second arbiters 116 a and 116 b simultaneously provide the second core 102 b with the wide access request access to the first and second memory banks 110 a and 110 b in the third access cycle.
- the first and second arbiters 116 a and 116 b generate the first and second grant signals (GS 1 and GS 2 ) at the second logic state, indicating that the first and second memory banks 110 a and 110 b are unavailable for memory access in the third access cycle.
- the memory controller 104 implements an interleaving and arbitration scheme and resolves the contention among the first through fourth cores 102 a - 102 d on access to the first memory bank 110 a by determining the third sequence of access for the first through fourth cores 102 a - 102 d.
- the memory controller 104 modifies the sequence of the predetermined priority levels of the first through fourth cores 102 a - 102 d to avoid starvation of cores 102 with lower priority levels.
- the memory controller 104 provides the first, fifth, and sixth cores 102 a, 102 e, and 102 f access to the first through third memory banks 110 a - 110 c, respectively, in the first access cycle.
- the memory controller 104 achieves a high bandwidth of data transfer in the first access cycle.
- the memory controller 104 also routes the first and seventh access requests (AR 1 and AR 7 ) from the first core 102 a to the first and second memory banks 110 a and 110 b, respectively, in the first and second access cycles, respectively.
- the second access cycle is consecutive to the first access cycle, leading to reduction in the dynamic latency of the first core 102 a.
- the memory controller 104 handles the second access request (AR 2 ) as a wide access request by providing the second core 102 b access to the first and second memory banks 110 a and 110 b in the third access cycle.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
Description
- The present invention generally relates to integrated circuits, and, more particularly, to a memory controller.
- Integrated circuits (ICs) often include multiple cores for processing data packets and a shared memory for storing the data packets. ICs also include a memory controller that manages communication between the cores and the shared memory. To access the data packets stored in the memory, a core issues an access request that includes a memory address. The memory controller grants access to the core only after an on-going transaction of a former core with the memory is completed. Thus, due to contention, the core must wait before it can access the memory. This waiting period is referred to as the dynamic latency of the core.
- A known technique to reduce dynamic latency involves interleaving of memory addresses, which requires the shared memory to be divided into multiple memory banks. Each memory bank is accessible, independent of other memory banks. Interleaving of addresses involves mapping contiguous addresses to memory locations in separate memory banks. The interleaving scheme may depend on the size of a contiguous address block mapped to each memory bank, for instance, interleaving based on a page size, a cache-line, and an address boundary. The cores generate access requests that include addresses mapped to memory locations present in separate memory banks due to interleaving of the addresses. Thus, address interleaving permits a core to sequentially access separate memory banks. Address interleaving also permits different cores to simultaneously access separate memory banks, leading to a reduction in dynamic latency. However, as only one core can access a memory bank in one access cycle, a memory access conflict arises when multiple cores try to simultaneously access the same memory bank.
- A known technique to resolve memory access conflicts involves including an arbiter in the memory controller. The memory controller assigns a priority level to each core based on factors such as the core type and the access request type, and then provides the cores access to the memory based priority levels (i.e., the sequence of access for the cores).
- To ensure fair access to the cores (i.e., to prevent starvation of low priority access requests), the arbiter can modify the access sequence using arbitration techniques such as rotating priority, round robin, and least recently accessed core. However, these arbitration techniques do not allow a user to dynamically determine the access sequence, and hence, a select logic circuit is included in the arbiter to allow a user to configure the access sequence. However, including such select logic requires redesigning the existing arbiter, which increases the complexity of the circuit and the circuit area.
- It would be advantageous to have a memory controller that provides multiple cores access to the memory with reduced dynamic latency and contention and dynamically determines the access sequence without significantly increasing the complexity of the memory controller and the circuit area.
- The following detailed description of the preferred embodiments of the present invention will be better understood when read in conjunction with the appended drawings. The present invention is illustrated by way of example, and not limited by the accompanying figures, in which like references indicate similar elements.
-
FIG. 1 is a schematic block diagram of an integrated circuit (IC) including a memory controller in accordance with an embodiment of the present invention; and -
FIG. 2 is a schematic block diagram of an arbiter of the memory controller ofFIG. 1 in accordance with an embodiment of the present invention. - The detailed description of the appended drawings is intended as a description of the currently preferred embodiments of the present invention, and is not intended to represent the only form in which the present invention may be practiced. It is to be understood that the same or equivalent functions may be accomplished by different embodiments that are intended to be encompassed within the spirit and scope of the present invention. As used herein, the term multiplexer has been abbreviated as a mux.
- In an embodiment of the present invention, a memory controller is provided. The memory controller is connected to a plurality of cores that include first and second cores and a first memory segment that includes first and second memory banks. The memory controller receives first and second access requests from the first core and a third access request from the second core. The second access request is consecutive to the first access request. The first through third access requests include first through third sets of address least significant bits (LSBs), respectively. The memory controller includes a first address decoder, a first system bus, a first arbiter, and a second arbiter. The first address decoder is connected to the plurality of cores including the first and second cores to receive the first through third access requests. The first address decoder selects the first memory bank based on the first and third sets of address LSBs and the second memory bank based on the second set of address LSBs. The first system bus is connected to the first address decoder to receive the first through third access requests and routes the first and third access requests to the first memory bank in a first sequence and the second access request to the second memory bank. The first sequence indicates an order of predetermined priority levels of the first and third access requests. The first arbiter includes first and second multiplexers, and a first priority encoder. The first arbiter is connected to the first system bus and the first memory bank and receives the first and third access requests in the first sequence. The first multiplexer has first and second input terminals to receive the first and third access requests, respectively, a select terminal to receive a first select signal, and an output terminal to output a first output access request signal. The second multiplexer has first and second input terminals to receive the third and first access requests, respectively, a select terminal to receive the first select signal, and an output terminal to output a second output access request signal. The first and second multiplexers output the first and third access requests as the first and second output access request signals, respectively, when the first select signal is at a first logic state. Thus, the first and second multiplexers determine a second sequence of the first and third access requests. The first priority encoder is connected to the output terminals of the first and second multiplexers to receive the first and second output access request signals, respectively. When the first select signal is at the first logic state, the priority encoder outputs the first and third access requests in the second sequence. Thus, the first arbiter provides at least one of the first and second cores access to the first memory bank in a first access cycle. The second arbiter is connected to the corresponding second memory bank and receives the second access request in a second access cycle that is consecutive to the first access cycle. The second arbiter then provides the first core access to the second memory bank.
- In another embodiment of the present invention, an integrated circuit (IC) is provided. The IC includes a plurality of cores including first through fourth cores, a first memory segment, and a memory controller. The first core generates first and second access requests, and the second through fourth cores generate third through fifth access requests, respectively. The second access request is consecutive to the first access request. The first through fifth access requests include first through fifth sets of address LSBs, respectively. The first memory segment includes first and second memory banks. The memory controller receives the first through fifth access requests from the first through fourth cores. The memory controller is connected to the first memory segment and includes a first address decoder, a first system bus, and first and second arbiters. The first address decoder is connected to the plurality of cores including the first through fourth cores and receives the first through fifth access requests. The first address decoder selects the first memory bank based on the first and third through fifth sets of address LSBs and the second memory bank based on the second set of address LSBs. The first system bus is connected to the first address decoder and receives the first through fifth access requests. The first system bus routes the first and third through fifth access requests to the first memory bank in a first sequence and the second access request to the second memory bank. The first sequence indicates an order of predetermined priority levels of the first through fourth cores. The first arbiter is connected to the first memory bank and includes first and second sets of multiplexers, and a priority encoder. The first set of multiplexers is connected to the first system bus to receive the first and third through fifth access requests in the first sequence. The first set of multiplexers include first through fourth multiplexers that determine a second sequence of the first and third through fifth access requests. The first multiplexer has first and second input terminals that receive the first and fourth access requests, respectively, a select terminal that receives a first select signal, and an output terminal that outputs a first output access request signal. The second multiplexer has first and second input terminals that receive the third and fifth access requests, respectively, a select terminal that receives the first select signal, and an output terminal that outputs a second output access request signal. The third multiplexer has first and second input terminals that receive the fourth and first access requests, respectively, a select terminal that receives the first select signal, and an output terminal that outputs a third output access request signal. The fourth multiplexer has first and second input terminals that receive the fifth and third access requests, respectively, a select terminal that receives the first select signal, and an output terminal that outputs a fourth output access request signal. Thus, the first through fourth multiplexers output the first and third through fifth access requests as the first through fourth output access request signals, respectively, when the first select signal is at a first logic state. The second set of multiplexers is connected to the first set of multiplexers to receive the first and third through fifth access requests. The second set of multiplexers includes fifth through eighth multiplexers that determine a third sequence of the first and third through fifth access requests. The fifth multiplexer has first and second input terminals connected to the output terminals of the first and second multiplexers to receive the first and third access requests, respectively, a select terminal that receives a second select signal, and an output terminal that outputs a fifth output access request signal. The sixth multiplexer has first and second input terminals connected to the output terminals of the second and first multiplexers to receive the third and first access requests, respectively, a select terminal that receives the second select signal, and an output terminal that outputs a sixth output access request signal. The seventh multiplexer has first and second terminals connected to the output terminals of the third and fourth multiplexers to receive the fourth and fifth access requests, respectively, a select terminal that receives the second select signal, and an output terminal that outputs a seventh output access request signal. The eighth multiplexer has first and second input terminals connected to the output terminals of the fourth and third multiplexers to receive the fifth and fourth access requests, respectively, a select terminal that receives the second select signal, and an output terminal that outputs an eighth output access request signal. Thus, the fifth through eighth multiplexers output the first through fourth access requests as the fifth through eighth output access request signals, respectively, when the second select signal is at a first logic state. The priority encoder is connected to the fifth through eighth multiplexers to receive the fifth through eighth output access request signals. When the first and second select signals are at the first logic states, the priority encoder outputs the first and the third through fifth access requests in the third sequence. Thus, the first arbiter provides at least one of the first through fourth cores access to the first memory bank according to the third sequence in a first access cycle. The second arbiter receives the second access request in a second access cycle that is consecutive to the first access cycle. The second arbiter then provides the first core access to the second memory bank.
- Various embodiments of the present invention provide a memory controller. The memory controller receives multiple access requests from multiple cores, respectively. An address decoder of the memory controller selects a memory bank within a memory segment based on a set of address LSBs in the access requests. Hence, a core requiring sequential access to the memory is routed to consecutive memory banks for consecutive access requests. When multiple cores compete for access to the same memory bank, an arbiter of the memory controller decides a sequence of access for the cores. The access sequence is decided based on the predetermined priority levels of the cores. The arbiter is configured to modify the access sequence to avoid the starvation of cores with lower predetermined priority levels. Also, the address decoder determines whether an access request is a wide access request and selects consecutive addresses from two memory banks for the wide access request.
- Referring now to
FIG. 1 , a schematic block diagram of an integrated circuit (IC) 100 in accordance with an embodiment of the present invention is shown. TheIC 100 includes a plurality of cores 102 including first through sixth cores 102 a-102 f, amemory controller 104, and amemory 106. Thememory 106 includes a plurality of memory segments 108 including first andsecond memory segments first memory segment 108 a includes first andsecond memory banks second memory segment 108 b includes third andfourth memory banks - For each memory segment 108, the
memory controller 104 includes an address decoder 112, a system bus 114, an arbiter 116 corresponding to each memory bank 110 in the memory segment 108. In an example, thememory controller 104 includes first andsecond address decoders second system buses first address decoder 112 a and thefirst system bus 114 a correspond to thefirst memory segment 108 a, and thesecond address decoder 112 b and thesecond system bus 114 b correspond to thesecond memory segment 108 b. The first through fourth arbiters 116 a-116 d are connected to the corresponding first through fourth memory banks 110 a-110 d, respectively, by way of aninterface 118. - The first through sixth cores 102 a-102 f generate first through sixth access requests (AR1-AR6), respectively. The first through sixth access requests (AR1-AR6) include first through sixth sets of address least significant bits (LSBs), respectively.
- The first and
second address decoders first address decoder 112 a identifies each of the first andsecond memory banks first memory segment 108 a based on the first through sixth sets of address LSBs. Thesecond address decoder 112 b identifies each of the third andfourth memory banks second memory segment 108 b based on the first through sixth sets of address LSBs. - The first and
second system buses second address decoders second system buses second system buses second system buses second system buses - The
first arbiter 116 a is connected to thefirst system bus 114 a and is configured to modify the access sequence to avoid starvation of the cores 102. When the first through sixth cores 102 a-102 f access thefirst memory bank 110 a, thefirst arbiter 116 a provides at least one of the first through sixth cores 102 a-102 f access to thefirst memory bank 110 a in an access cycle. - The second arbiter 116 b is connected to the
first system bus 114 a, and the third andfourth arbiters second system bus 114 b. - Referring now to
FIG. 2 , a schematic block diagram of thefirst arbiter 116 a in accordance with an embodiment of the present invention is shown. Thefirst arbiter 116 a includes first and second sets ofmuxes priority encoder 204. In an example, the first set ofmuxes 202 a includes first through fourth muxes 206 a-206 d, and the second set ofmuxes 202 b includes fifth through eighth muxes 206 e-206 h. The first through eighth muxes 206 a-206 h are 2:1 muxes. Thefirst arbiter 116 a also includes agrant generator 208. In one example, thefirst arbiter 116 a receives first through fourth access requests (AR1-AR4) from thefirst system bus 114 a. The number of sets of muxes 202 and the number of muxes 206 in each set of muxes 202 depends on the number of cores 102 handled by an arbiter 116. In the presently preferred embodiment, the second through fourth arbiters 116 b-116 d are structurally and functionally similar to thefirst arbiter 116 a. - The
first mux 206 a has first and second input terminals connected to thefirst system bus 114 a to receive the first and third access requests (AR1 and AR3), respectively. Thefirst mux 206 a also has a select terminal that receives a first select signal (SEL1) and an output terminal that outputs a first output access request signal (AR_OUT1). - The second mux 206 b has first and second input terminals connected to the
first system bus 114 a to receive the second and fourth access requests (AR2 and AR4), respectively. The second mux 206 b also has a select terminal that receives the first select signal (SEL1) and an output terminal that outputs a second output access request signal (AR_OUT2). - The third mux 206 c has first and second input terminals connected to the
first system bus 114 a to receive the third and first access requests (AR3 and AR1), respectively. The third mux 206 c also has a select terminal that receives the first select signal (SEL1) and an output terminal that outputs a third output access request signal (AR_OUT3). - The fourth mux 206 d has first and second input terminals connected to the
first system bus 114 a to receive the fourth and second access requests (AR4 and AR2), respectively. The fourth mux 206 d also has a select terminal that receives the first select signal (SEL1) and an output terminal that outputs a fourth output access request signal (AR_OUT4). Thus, the first select signal (SEL1) provided to the first through fourth muxes 206 a-206 d configures thefirst arbiter 116 a to rearrange first and second sets of access requests, including the first and second access requests (AR1 and AR2), and the third and fourth access requests (AR3 and AR4), respectively. - The
fifth mux 206 e has first and second input terminals connected to the output terminals of the first andsecond muxes 206 a and 206 b to receive the first and second output access request signals (AR_OUT1 and AR_OUT2), respectively. Thefifth mux 206 e also has a select terminal that receives a second select signal (SEL2) and an output terminal that outputs a fifth output access request signal (AR_OUT5). - The
sixth mux 206 f has first and second input terminals connected to the output terminals of the second andfirst muxes 206 b and 206 a to receive the second and first output access request signals (AR_OUT2 and AR_OUT1), respectively. Thesixth mux 206 f also has a select terminal that receives the second select signal (SEL2) and an output terminal that outputs a sixth output access request signal (AR_OUT6). - The
seventh mux 206 g has first and second input terminals connected to the output terminals of the third and fourth muxes 206 c and 206 d to receive the third and fourth output access request signals (AR_OUT3 and AR_OUT4), respectively. Theseventh mux 206 g also has a select terminal that receives the second select signal (SEL2) and an output terminal that outputs a seventh output access request signal (AR_OUT7). - The
eighth mux 206 h has first and second input terminals connected to the output terminals of the fourth and third muxes 206 d and 206 c to receive the fourth and third output access request signals (AR_OUT4 and AR_OUT3), respectively. Theeighth mux 206 h also has a select terminal that receives the second select signal (SEL2) and an output terminal that outputs an eighth output access request signal (AR_OUT8). The first through fourth output access request signals (AR_OUT1-AR_OUT4) represent the first through fourth access requests (AR1-AR4) in a modified sequence. Thus, the second select signal (SEL2) provided to the fifth through eighth muxes 206 e-206 h configures thefirst arbiter 116 a to rearrange the first and second access requests (AR1 and AR2) of the first set of access requests, and the third and fourth access requests (AR3 and AR4) of the second set of access requests. In an embodiment, the first and the second select signals (SEL1 AND SEL2) are provided by the user. - Thus, the first and second sets of
muxes - The first priority encoder 206 has first through fourth input terminals connected to the output terminals of the fifth through eighth muxes 206 e-206 h to receive the fifth through eighth output access request signals (AR_OUT5-AR_OUT8), respectively. Since the fifth output access request signal (AR_OUT5) is received at the first input terminal, the fifth output access request signal (AR_OUT5) has the highest modified priority, and hence, the priority encoder 206 outputs the fifth output access request signal (AR_OUT5) at its output terminal. Thus, priority encoder 206 provides at least one of the first through fourth cores 102 a-102 d access to the
first memory bank 110 a. - In an embodiment, the
grant generator 208 is connected to the output terminal of the first priority encoder 206 and receives one of the first through fourth access requests (AR1-AR4). Thegrant generator 208 generates a grant signal (GS) at a first logic state when thefirst memory bank 110 a is available for memory access and at a second logic state when thefirst memory bank 110 a is unavailable for memory access. Thefirst memory bank 110 a is unavailable for memory access in an access cycle when thefirst arbiter 116 a provides one of the first through fourth cores 102 a-102 d access to thefirst memory bank 110 a in the access cycle. Thefirst address decoder 112 a receives the grant signal (GS) and determines whether thefirst memory bank 110 a is available for memory access. - In operation, the first and
second address decoders second address decoders first core 102 a. The seventh access request (AR7) includes a seventh set of address LSBs. Thefirst address decoder 112 a selects thefirst memory bank 110 a, based on the first through fourth sets of address LSBs and thesecond memory bank 110 b, based on the fifth and seventh sets of address LSBs. Thesecond address decoder 112 b selects thethird memory bank 110 c, based on the sixth set of address LSBs. - The
first address decoder 112 a determines that the first andsecond memory banks second banks second address decoder 112 b determines that thethird memory bank 110 c is available for memory access in the first access cycle when the third grant signal (GS3) corresponding to thethird memory bank 110 c is at the first logic state. Thefirst system bus 114 a routes the first through fourth access requests (AR1-AR4) in a first sequence to thefirst arbiter 116 a that corresponds to thefirst memory bank 110 a. Since the first through fourth cores 102 a-102 d request thememory controller 104 access to thefirst memory bank 110 a simultaneously, an access conflict arises. - The first through fourth muxes 206 a-206 d receive the first through fourth access requests (AR1-AR4) in the first sequence and the first select signal (SEL1). The
first mux 206 a receives the first and third access requests (AR1 and AR3), and the second mux 206 b receives the second and fourth access requests (AR2 and AR4). The third mux 206 c receives the third and first access requests (AR3 and AR1), and the fourth mux 206 d receives the fourth and second access requests (AR4 and AR2). - The first through fourth muxes 206 a-206 d output the first through fourth access requests (AR1-AR4) as the first through fourth output access request signals (AR_OUT1-AR_OUT4), respectively, when the first select signal (SEL1) is at the first logic state. Thus, the first through fourth muxes 206 a-206 d determine a second sequence of access for the first through fourth cores 102 a-102 d, based on the first select signal (SEL1).
- The fifth through eighth muxes 206 e-206 h receive the first through fourth access requests (AR1-AR4) in the second sequence and the second select signal (SEL2). The
fifth mux 206 e receives the first and second access requests (AR1 and AR2), and thesixth mux 206 f receives the second and first access requests (AR2 and AR1). Theseventh mux 206 g receives the third and fourth access requests (AR3 and AR4), and theeighth mux 206 h receives the fourth and third access requests (AR4 and AR3). The fifth through eighth muxes 206 e-206 h output the first through fourth access requests (AR1-AR4) as the fifth through eighth output access request signals (AR_OUT5-AR_OUT8), respectively, when the second select signal (SEL2) is at the first logic state. The fifth through eighth muxes 206 e-206 h determine a third sequence of access for the first through fourth cores 102 a-102 d, based on the second select signal (SEL2). The priority encoder 206 receives the first through fourth access requests (AR1-AR4) at the first through fourth input terminals, respectively. The priority encoder 206 outputs the first through fourth access requests (AR1-AR4) in a descending order of priority with the first access request (AR1) having the highest priority. Thus, thefirst core 102 a has the highest modified priority level according to the third sequence and so, thefirst arbiter 116 a provides thefirst core 102 a access to thefirst memory bank 110 a in the first access cycle. Therefore, thefirst arbiter 116 a generates the first grant signal (GS1) at the second logic state, indicating that thefirst memory bank 110 a is unavailable for memory access in the first access cycle. - The first and
second system buses third arbiters 116 b and 116 c. However, since a single core, i.e., thefifth core 102 e, requests access to thesecond memory bank 110 b, no memory access conflict arises for accessing thesecond memory bank 110 b. Thus, the second arbiter 116 b grants thefifth core 102 e access to thesecond memory bank 110 b of thefirst memory segment 108 a in the first access cycle. Similarly, since a single core, i.e., thesixth core 102 f, requests access to thethird memory bank 110 c, thethird arbiter 116 c grants thesixth core 102 f access to thethird memory bank 110 c of thesecond memory segment 108 b in the first access cycle. Hence, the second andthird arbiters 116 b and 116 c generate the second and third grant signals (GS2 and GS3), respectively, at the second logic states in the first access cycle, indicating that the second andthird memory banks - Further, the seventh access request (AR7) generated by the
first core 102 a is consecutive to the first access request (AR1). Hence, thefirst address decoder 112 a selects thesecond memory bank 110 b, based on the seventh set of address LSBs. Thefirst address decoder 112 a also determines that thesecond memory bank 110 b is available for memory access in a second access cycle when the second grant signal (GS2) is at the first logic state. Thefirst arbiter 116 a grants thefirst core 102 a access to thefirst memory bank 110 a for the first access request (AR1) in the first access cycle. Thefirst system bus 114 a routes the seventh access request (AR7) to thesecond memory bank 110 b in the second access cycle that is consecutive to the first access cycle. The second arbiter 116 b grants thefirst core 102 a access to thesecond memory bank 110 b for the seventh access request (AR7). - Each memory location of a memory bank 110 includes a fixed number of bits that corresponds with the width of the memory bank 110. The
first address decoder 112 a examines the first though sixth access requests (AR1-AR6) to detect that the second access request (AR2) has more bits than the width of the memory bank 110. Thus, thefirst address decoder 112 a determines that the second access request (AR2) is a wide access request and selects first and second addresses of the first andsecond memory banks first address decoder 112 a determines that the first andsecond memory banks first system bus 114 a routes the wide access request to the first andsecond memory banks second memory banks second arbiters 116 a and 116 b simultaneously provide thesecond core 102 b with the wide access request access to the first andsecond memory banks second arbiters 116 a and 116 b generate the first and second grant signals (GS1 and GS2) at the second logic state, indicating that the first andsecond memory banks - Thus, the
memory controller 104 implements an interleaving and arbitration scheme and resolves the contention among the first through fourth cores 102 a-102 d on access to thefirst memory bank 110 a by determining the third sequence of access for the first through fourth cores 102 a-102 d. Thememory controller 104 modifies the sequence of the predetermined priority levels of the first through fourth cores 102 a-102 d to avoid starvation of cores 102 with lower priority levels. Thememory controller 104 provides the first, fifth, andsixth cores memory controller 104 achieves a high bandwidth of data transfer in the first access cycle. Thememory controller 104 also routes the first and seventh access requests (AR1 and AR7) from thefirst core 102 a to the first andsecond memory banks first core 102 a. Further, thememory controller 104 handles the second access request (AR2) as a wide access request by providing thesecond core 102 b access to the first andsecond memory banks - While various embodiments of the present invention have been illustrated and described, it will be clear that the present invention is not limited to these embodiments only. Numerous modifications, changes, variations, substitutions, and equivalents will be apparent to those skilled in the art, without departing from the spirit and scope of the present invention, as described in the claims.
Claims (18)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/963,248 US9697118B1 (en) | 2015-12-09 | 2015-12-09 | Memory controller with interleaving and arbitration scheme |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/963,248 US9697118B1 (en) | 2015-12-09 | 2015-12-09 | Memory controller with interleaving and arbitration scheme |
Publications (2)
Publication Number | Publication Date |
---|---|
US20170168934A1 true US20170168934A1 (en) | 2017-06-15 |
US9697118B1 US9697118B1 (en) | 2017-07-04 |
Family
ID=59019804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/963,248 Active 2036-03-20 US9697118B1 (en) | 2015-12-09 | 2015-12-09 | Memory controller with interleaving and arbitration scheme |
Country Status (1)
Country | Link |
---|---|
US (1) | US9697118B1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180018291A1 (en) * | 2016-07-15 | 2018-01-18 | Advanced Micro Devices, Inc. | Command arbitration for high speed memory interfaces |
EP3657337A1 (en) * | 2018-11-21 | 2020-05-27 | Beijing Baidu Netcom Science and Technology Co., Ltd. | Method, apparatus, device and storage medium for accessing static random access memory |
US11030127B2 (en) | 2019-10-22 | 2021-06-08 | Nxp Usa, Inc. | Multi-threaded architecture for memory controller data paths |
US11036642B2 (en) * | 2019-04-26 | 2021-06-15 | Intel Corporation | Architectural enhancements for computing systems having artificial intelligence logic disposed locally to memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060271724A1 (en) * | 2001-08-08 | 2006-11-30 | Pasternak Solutions Llc | Memory bus arbitration using memory bank readiness |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5412788A (en) | 1992-04-16 | 1995-05-02 | Digital Equipment Corporation | Memory bank management and arbitration in multiprocessor computer system |
EP0615190A1 (en) | 1993-03-11 | 1994-09-14 | Data General Corporation | Expandable memory for a digital computer |
US5546548A (en) | 1993-03-31 | 1996-08-13 | Intel Corporation | Arbiter and arbitration process for a dynamic and flexible prioritization |
US6978329B1 (en) | 2002-10-08 | 2005-12-20 | Advanced Micro Devices, Inc. | Programmable array-based bus arbiter |
KR100480637B1 (en) | 2002-11-27 | 2005-03-31 | 삼성전자주식회사 | Programmable fixed priority and round robin arbiter for providing the high-speed arbitration and bus control method thereof |
US7120714B2 (en) | 2003-05-27 | 2006-10-10 | Intel Corporation | High-speed starvation-free arbiter system, rotating-priority arbiter, and two stage arbitration method |
US7664901B2 (en) | 2007-03-27 | 2010-02-16 | Arm Limited | Data processing apparatus and method for arbitrating access to a shared resource |
US8868817B2 (en) | 2009-02-13 | 2014-10-21 | The Regents Of The University Of Michigan | Crossbar circuitry for applying an adaptive priority scheme and method of operation of such crossbar circuitry |
US8904115B2 (en) | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
GB2495533A (en) | 2011-10-13 | 2013-04-17 | St Microelectronics Res & Dev | Distributing buffer data evenly across different memory devices |
US20140068125A1 (en) | 2012-08-30 | 2014-03-06 | Lsi Corporation | Memory throughput improvement using address interleaving |
US9129071B2 (en) | 2012-10-24 | 2015-09-08 | Texas Instruments Incorporated | Coherence controller slot architecture allowing zero latency write commit |
-
2015
- 2015-12-09 US US14/963,248 patent/US9697118B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060271724A1 (en) * | 2001-08-08 | 2006-11-30 | Pasternak Solutions Llc | Memory bus arbitration using memory bank readiness |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180018291A1 (en) * | 2016-07-15 | 2018-01-18 | Advanced Micro Devices, Inc. | Command arbitration for high speed memory interfaces |
US10684969B2 (en) * | 2016-07-15 | 2020-06-16 | Advanced Micro Devices, Inc. | Command arbitration for high speed memory interfaces |
EP3657337A1 (en) * | 2018-11-21 | 2020-05-27 | Beijing Baidu Netcom Science and Technology Co., Ltd. | Method, apparatus, device and storage medium for accessing static random access memory |
US11093388B2 (en) | 2018-11-21 | 2021-08-17 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method, apparatus, device and storage medium for accessing static random access memory |
US11036642B2 (en) * | 2019-04-26 | 2021-06-15 | Intel Corporation | Architectural enhancements for computing systems having artificial intelligence logic disposed locally to memory |
US11030127B2 (en) | 2019-10-22 | 2021-06-08 | Nxp Usa, Inc. | Multi-threaded architecture for memory controller data paths |
Also Published As
Publication number | Publication date |
---|---|
US9697118B1 (en) | 2017-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100716950B1 (en) | Bus system | |
CN100472494C (en) | System and method for implementing memory mediation of supporting multi-bus multi-type memory device | |
US5911149A (en) | Apparatus and method for implementing a programmable shared memory with dual bus architecture | |
US6954821B2 (en) | Crossbar switch that supports a multi-port slave device and method of operation | |
US7222224B2 (en) | System and method for improving performance in computer memory systems supporting multiple memory access latencies | |
US6691193B1 (en) | Efficient bus utilization in a multiprocessor system by dynamically mapping memory addresses | |
US8209497B2 (en) | Multi-port memory and system using the same | |
KR20190022428A (en) | Command arbitration for high-speed memory interfaces | |
US9697118B1 (en) | Memory controller with interleaving and arbitration scheme | |
US9335934B2 (en) | Shared memory controller and method of using same | |
JP2009518753A (en) | Arbitration of memory access requests | |
CN107562657B (en) | Full-interleaved SRAM controller | |
US10198216B2 (en) | Low power memory throttling | |
US8213461B2 (en) | Method of designating slots in a transmission frame for controlling transmission of data over an interconnect coupling a plurality of master units with a plurality of slave units | |
US20110276735A1 (en) | Interconnect, bus system with interconnect and bus system operating method | |
KR101781617B1 (en) | System on chip including unified input/output memory management unit | |
EP0901080B1 (en) | Arbitration system | |
US12073114B2 (en) | Stacked command queue | |
US9767054B2 (en) | Data transfer control device and memory-containing device | |
US8635414B2 (en) | System and method for allocating memory resources | |
US10002099B2 (en) | Arbitrated access to resources among multiple devices | |
US6202137B1 (en) | Method and apparatus of arbitrating requests to a multi-banked memory using bank selects | |
US11030127B2 (en) | Multi-threaded architecture for memory controller data paths | |
US20050268023A1 (en) | Multi-port random access memory | |
US20240211414A1 (en) | Multichannel memory arbitration and interleaving scheme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: FREESCALE SEMICONDUCTOR,INC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SINGH, VIVEK;GILL, NAVDEEP SINGH;HERRMANN, STEPHAN M.;AND OTHERS;SIGNING DATES FROM 20151130 TO 20151204;REEL/FRAME:037246/0706 |
|
AS | Assignment |
Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND Free format text: SUPPLEMENT TO THE SECURITY AGREEMENT;ASSIGNOR:FREESCALE SEMICONDUCTOR, INC.;REEL/FRAME:039138/0001 Effective date: 20160525 |
|
AS | Assignment |
Owner name: NXP USA, INC., TEXAS Free format text: CHANGE OF NAME;ASSIGNOR:FREESCALE SEMICONDUCTOR INC.;REEL/FRAME:040626/0683 Effective date: 20161107 |
|
AS | Assignment |
Owner name: NXP USA, INC., TEXAS Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016;ASSIGNORS:NXP SEMICONDUCTORS USA, INC. (MERGED INTO);FREESCALE SEMICONDUCTOR, INC. (UNDER);SIGNING DATES FROM 20161104 TO 20161107;REEL/FRAME:041414/0883 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: NXP B.V., NETHERLANDS Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:050744/0097 Effective date: 20190903 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |