IP Library Granted Patent US 9,870,172
Granted Patent B2
US 9,870,172 · App. 14/852,059 · Granted Jan 16, 2018

Address collision avoidance in a memory device

Inventors: Robert E. Ward (Colorado Springs, CO); Brian Lessard (Colorado Springs, CO)
Assignee: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
G06F3/0659G06F3/0619G06F3/0679G06F12/1416G06F12/125G06F2211/1085G06F2212/1032G06F2212/202
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,870,172
App. No.
14/852,059
Granted
Jan 16, 2018
Kind
B2
Abstract

Embodiments herein provide for avoiding address collisions in a memory device. In one embodiment, a memory controller includes a command scheduler operable to process a read-modify-write I/O command to a location in memory, to detect another I/O command to the same memory location while the read-modify-write I/O command is accessing the memory location, and to stall the other I/O command until the read-modify-write I/O command is complete while allowing a third I/O command to access the memory.

Claims (68)

1. A memory controller, comprising:

a command scheduler operable to process a first read-modify-write Input/Output (I/O) command to a memory location, to detect another I/O command to the same memory location while the first read-modify-write I/O command is accessing the memory location, to extract and track a memory address from the another I/O command if the another I/O command is a read-modify-write I/O command and to not extract and not track the memory address from the another I/O command if the another I/O command is not a read-modify-write command, and to stall the another I/O command until the first read-modify-write I/O command is complete while allowing a third I/O command to access the memory.

2. The memory controller of claim 1 , wherein:

the I/O commands are Advanced eXtensible Interface (AXI) I/O commands.

3. The memory controller of claim 1 , wherein:

the command scheduler is further operable to extract a memory address of the from the first read-modify-write I/O command, and to track the memory address of the first read-modify-write I/O command until the first read-modify-write I/O command is complete.

4. The memory controller of claim 3 , wherein:

the command scheduler further comprises a state machine that is operable to extract the memory address of the another I/O command while the first read-modify-write I/O command is processing, and to compare the memory address of the another I/O command to the memory address extracted from the first read-modify-write I/O command.

5. The memory controller of claim 3 , further comprising:

an address buffer operable to retain the memory address of the first read-modify-write I/O command for a same number of clock cycles as used to complete the first read-modify-write I/O command, and flush the memory address of the first read-modify-write I/O command upon completion of the first read-modify-write I/O command.

6. The memory controller of claim 1 , wherein:

the first read-modify-write I/O command is received from a first master device and comprises a first identification (ID);

the memory is a static random access memory (SRAM) memory configured on a chip;

the memory controller is configured on the chip with the SRAM memory; and

the chip further comprises a slave interface operable to determine the ID of the first read-modify-write I/O command, to determine that the another I/O command is from a second master device and has a same ID as the first read-modify-write I/O command, and to stall the another I/O command until the first read-modify-write I/O command is complete while allowing the third I/O command to access the memory.

7. The memory controller of claim 1 , further comprising:

a command arbiter operable to process the I/O commands from a plurality of master components, and to decide, on a clock-cycle by clock-cycle basis, which I/O command will access the memory.

8. A method operable in a memory controller, the method comprising:

modifying data at a first location in memory with a first read-modify-write Input/Output (I/O) command;

detecting a second I/O command to the first location in the memory while the first read-modify-write command is modifying the data;

extracting and tracking a memory address from the second I/O command if the second I/O command is a read-modify-write I/O command and not extracting and not tracking the memory address from the second I/O command if the second I/O command is not a read-modify-write I/O command;

stalling the second I/O command until the first read-modify-write I/O command is complete;

detecting a third I/O command to a second different location in the memory while the first read-modify-write I/O command is modifying the data; and

allowing the third I/O command to access the second location in the memory while the first read-modify-write I/O command is modifying the data.

9. The method of claim 8 , further comprising:

detecting the second I/O command on a clock cycle that is subsequent to a clock cycle when the first read-modify-write I/O command is detected, wherein the third I/O command is a read I/O command or a write I/O command.

10. The method of claim 8 , wherein:

the I/O commands are Advanced eXtensible Interface (AXI) I/O commands.

11. The method of claim 8 , further comprising:

extracting a memory address from the first read-modify-write I/O command; and

tracking the memory address of the first read-modify-write I/O command until the first read-modify-write I/O command is complete.

12. The method of claim 11 , further comprising:

comparing the memory address of the second I/O command to the memory address extracted from the first read-modify-write I/O command, wherein the extracting the memory address from the second I/O command occurs while the first read-modify-write I/O command is processing.

13. The method of claim 11 , further comprising:

retaining the memory address of the first read-modify-write I/O command for a same number of clock cycles as used to complete the first read-modify-write I/O command.

14. The method of claim 8 , wherein:

the first read-modify-write I/O command is received from a first master device and comprises a first identification (ID);

the memory is a static random access memory (SRAM) memory configured on a chip;

the memory controller is configured on the chip with the SRAM memory; and

the method further comprises:

determining the ID of the first read-modify-write I/O command;

determining that the second I/O command is from a second master device and has a same ID as the first read-modify-write I/O command; and

stalling the second I/O command until the first read-modify-write I/O command is complete while allowing the third I/O command to access the memory.

15. A non-transitory computer readable medium comprising instructions that, when executed by a memory controller, direct the memory controller to:

modify data at a first location in memory with a first read-modify-write Input/Output (I/O) command;

detect a second I/O command to the first location in the memory while the first read-modify-write command is modifying the data;

extract and track a memory address from the second I/O command if the second I/O command is a read-modify-write I/O command and not extract and not track of the memory address from the second I/O command if the second I/O command is not a read-modify-write I/O command;

stall the second I/O command until the first read-modify-write I/O command is complete;

detect a third I/O command to a second different location in the memory while first the read-modify-write I/O command is modifying the data; and

allow the third I/O command to access the second location in the memory while the first read-modify-write I/O command is modifying the data.

16. The computer readable medium of claim 15 , further comprising instructions that direct the memory controller to:

detect the second I/O command on a clock cycle that is subsequent to a clock cycle when the first read-modify-write I/O command is detected.

17. The computer readable medium of claim 15 , further comprising instructions that direct the memory controller to:

extract a memory address of from the first read-modify-write I/O command; and

track the memory address of the first read-modify-write I/O command until the first read-modify-write I/O command is complete.

18. The computer readable medium of claim 17 , further comprising instructions that direct the memory controller to:

extract the memory address of the second I/O command while the first read-modify-write I/O command is processing; and

compare the memory address of the second I/O command to the memory address extracted from the first read-modify-write I/O command.

19. The computer readable medium of claim 17 , further comprising instructions that direct the memory controller to:

retain, in one or more buffers, the memory address of the first read-modify-write I/O command for a same number of clock cycles as used to complete the first read-modify-write I/O command, wherein the instructions direct the memory controller to flush one buffer per clock cycle while processing the first read-modify-write I/O command so that the one or more buffers are completely flushed of the memory address of the first read-modify-write I/O command when the first read-modify-write I/O command is complete.

20. The computer readable medium of claim 15 , wherein:

the first read-modify-write I/O command is received from a first master device and comprises a first identification (ID);

the memory is a static random access memory (SRAM) configured on a chip;

the memory controller is configured on the chip with the SRAM memory; and

the computer readable medium further comprises instructions that direct the memory controller to:

determine the ID of the first read-modify-write I/O command;

determine that the second I/O command is from a second master device and has a same ID as the first read-modify-write I/O command; and

stall the second I/O command until the first read-modify-write I/O command is complete while allowing the third I/O command to access the memory.

Assignments (5)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2015
From: WARD, ROBERT E.; LESSARD, BRIAN
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 036546/0343 →
Continuity (1)
Related Publication 20170075823A1 · Mar 16, 2017