IP Library Granted Patent US 7,584,330
Granted Patent B2
US 7,584,330 · App. 10/886,231 · Granted Sep 1, 2009

Multi-processor data coherency

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 7,584,330
App. No.
10/886,231
Granted
Sep 1, 2009
Kind
B2
Abstract

A method for maintaining coherent data in a multiprocessor system having a plurality of processors coupled to main memory, where each processor has an internal cache which is externally unreadable outside the processor. The method includes requesting data associated with a memory location in main memory and determining if an external cache coupled to an application specific integrated circuit associated with a second processor contains a reference to the requested data. A snoop cycle is performed on the second processor if the external cache has a reference to the requested data, whereupon a determination is made as to whether the requested data has been modified.

Claims (63)

1. A method for maintaining coherent data in a multiprocessor system having a plurality of processors coupled to a memory segment, where each processor has a private cache, the method comprising:

tracking data entering and exiting a first processor so as to derive a status of the data in a private cache associated with the first processor;

storing the status in an external tag memory associated with the first processor, the external tag memory non-hardwired to the private cache associated with the first processor;

receiving a data request from a second processor, the data request requesting data associated with a memory location in the memory segment;

determining if the tag memory associated with the first processor indicates that the requested data is held within the private cache associated with the first processor;

snooping the first processor if the tag memory associated with the first processor indicates that the requested data is held within the private cache associated with the first processor;

re-posting the data request if the private cache associated with the first processor indicates it no longer holds the requested data, and setting the tag status for the requested data so as to indicate that the private cache associated with the first processor no longer holds the requested data;

storing data evicted by the first processor in an external cache associated with the first processor;

storing the status of data evicted by the first processor in the external tag memory associated with the first processor;

posting a transaction of the requested data from the external cache if the status indicates that the first processor has evicted the requested data, that the requested data was modified, and that the first processor has not re-requested the data; and

posting a transaction of the requested data from the external cache if the status indicates that the first processor has evicted the requested data and that the requested data was not modified.

2. A method for maintaining coherent data in a multiprocessor system having a plurality of processor segments, each processor segment being in inter-segment communication via a system bus which is coupled to a memory segment, each processor segment including a processor segment bus connected to at least one processor having a private cache, the method comprising:

tracking data entering and exiting a first processor segment to derive a status of data in a private cache associated with a first processor in the first processor segment;

storing the status in an external tag memory associated with the first processor segment, the external tag memory non-hardwired to the private cache associated with the first processor;

receiving a request on the system bus from a processor in a second processor segment for data associated with a memory location in the memory segment;

determining if the tag memory associated with the first processor segment indicates that the requested data is held within the private cache associated with the first processor;

snooping the first processor segment if the tag memory associated with the first processor segment indicates that the requested data is held within the first processor segment;

re-posting the data request if the private cache associated with the first processor indicates it no longer holds the requested data, and setting the tag status for the requested data so as to indicate that the private cache associated with the first processor no longer holds the requested data;

storing data evicted by the first processor in an external cache associated with the first processor segment;

storing the status of data evicted by the first processor in the external tag memory associated with the first processor segment;

posting a transaction of the requested data from the external cache if the status indicates that the first processor has evicted the requested data, that the requested data was modified, and that the first processor has not re-requested the data; and

posting a transaction of the requested data from the external cache if the status indicates that the first processor has evicted the requested data and that the requested data was not modified.

3. A method for maintaining coherent data in a multiprocessor system having a plurality of processor segments, each segment being in inter-segment communication via a system bus which is coupled to a memory segment, each processor segment including a processor segment bus and at least one processor having a private cache, the method comprising:

tracking data entering and exiting a first processor segment via the system bus to derive a status of data in a private cache associated with a first processor in the first processor segment;

storing the status in an external tag memory associated with the first processor segment;

receiving a request on the system bus from a processor in a second processor segment for data associated with a memory location in the memory segment;

determining if the tag memory associated with the first processor segment indicates that the requested data is held within the private cache associated with the first processor;

snooping the first processor segment if the tag memory associated with the first processor segment indicates that the requested data is held within the first processor segment;

re-posting the data request if the private cache associated with the first processor indicates it no longer holds the requested data, and setting the tag status for the requested data so as to indicate that the private cache associated with the first processor no longer holds the requested data;

storing data evicted by the first processor in an external cache associated with the first processor segment;

storing the status of data evicted by the first processor in the external tag memory associated with the first processor segment;

posting a transaction of the requested data from the external cache if the status indicates that the first processor has evicted the requested data, that the requested data was modified, and that the first processor has not re-requested the data; and

posting a transaction of the requested data from the external cache if the status indicates that the first processor has evicted the requested data and that the requested data was not modified.

4. A method for maintaining coherent data in a multiprocessor system having a plurality of processors coupled to a memory segment, where each processor has a private cache, the method comprising:

tracking data entering and exiting a first processor so as to derive a status of the data in a private cache associated with the first processor;

storing the status in an external tag memory associated with the first processor, the external tag memory non-hardwired to the private cache associated with the first processor;

receiving a data request from a second processor, the data request requesting data associated with a memory location in the memory segment;

determining if the tag memory associated with the first processor indicates that the requested data is held within the private cache associated with the first processor;

snooping the first processor if the tag memory associated with the first processor indicates that the requested data is held within the private cache associated with the first processor;

re-posting the data request if the private cache associated with the first processor indicates it no longer holds the requested data, and setting the tag status for the requested data so as to indicate that the private cache associated with the first processor no longer holds the requested data;

determining if the tag status is correct in indicating that the requested data is modified;

re-posting the data request and setting the tag status for the requested line so as to indicate that the first processor no longer holds the requested data, if the tag status incorrectly indicates that the requested data is modified; and

posting a transaction of the requested data from the private cache if the tag status correctly indicates that the requested data is modified.

5. A method for maintaining coherent data in a multiprocessor system having a plurality of processor segments, each processor segment being in inter-segment communication via a system bus which is coupled to a memory segment, each processor segment including a processor segment bus connected to at least one processor having a private cache, the method comprising:

tracking data entering and exiting a first processor segment to derive a status of data in a private cache associated with a first processor in the first processor segment;

storing the status in an external tag memory associated with the first processor segment, the external tag memory non-hardwired to the private cache associated with the first processor;

receiving a request on the system bus from a processor in a second processor segment for data associated with a memory location in the memory segment;

determining if the tag memory associated with the first processor segment indicates that the requested data is held within the private cache associated with the first processor;

snooping the first processor segment if the tag memory associated with the first processor segment indicates that the requested data is held within the first processor segment;

re-posting the data request if the private cache associated with the first processor indicates it no longer holds the requested data, and setting the tag status for the requested data so as to indicate that the private cache associated with the first processor no longer holds the requested data;

determining if the tag status is correct in indicating that the requested data is modified;

re-posting the data request and setting the tag status for the requested line so as to indicate that the first processor no longer holds the requested data, if the tag status incorrectly indicates that the requested data is modified; and

posting a transaction of the requested data from the private cache if the tag status correctly indicates that the requested data is modified.

6. A method for maintaining coherent data in a multiprocessor system having a plurality of processor segments, each segment being in inter-segment communication via a system bus which is coupled to a memory segment, each processor segment including a processor segment bus and at least one processor having a private cache, the method comprising:

tracking data entering and exiting a first processor segment via the system bus to derive a status of data in a private cache associated with a first processor in the first processor segment;

storing the status in an external tag memory associated with the first processor segment;

receiving a request on the system bus from a processor in a second processor segment for data associated with a memory location in the memory segment;

determining if the tag memory associated with the first processor segment indicates that the requested data is held within the private cache associated with the first processor;

snooping the first processor segment if the tag memory associated with the first processor segment indicates that the requested data is held within the first processor segment;

re-posting the data request if the private cache associated with the first processor indicates it no longer holds the requested data, and setting the tag status for the requested data so as to indicate that the private cache associated with the first processor no longer holds the requested data;

determining if the tag status is correct in indicating that the requested data is modified;

re-posting the data request and setting the tag status for the requested line so as to indicate that the first processor no longer holds the requested data, if the tag status incorrectly indicates that the requested data is modified; and

posting a transaction of the requested data from the private cache if the tag status correctly indicates that the requested data is modified.

Assignments (12)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2017
From: ZIILABS INC., LTD.
To: RPX CORPORATION
Reel/Frame 044087/0353 →
SECURITY INTEREST Recorded Jan 11, 2017
From: MOTHEYE TECHNOLOGIES, LLC; SYNCHRONICITY IP LLC; TRAVERSE TECHNOLOGIES CORP.; 3D NANOCOLOR CORP.; BISMARCK IP INC.; MAGNUS IP GMBH; MUNITECH IP S.À.R.L.; VERMILION PARTICIPATIONS; MARATHON VENTURES S.À.R.L; NYANZA PROPERTIES; MARATHON IP GMBH; ORTHOPHOENIX, LLC; MEDTECH DEVELOPMENT DEUTSCHLAND GMBH; SYNCHRONICITY IP GMBH; TLI COMMUNICATIONS GMBH
To: DBD CREDIT FUNDING LLC, AS COLLATERAL AGENT
Reel/Frame 041333/0001 →
SECURITY INTEREST Recorded Feb 2, 2015
From: MARATHON PATENT GROUP, INC.; VANTAGE POINT TECHNOLOGY, INC.
To: DBD CREDIT FUNDING LLC
Reel/Frame 034870/0508 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2013
From: INTERGRAPH CORPORATION
To: VANTAGE POINT TECHNOLOGY, INC.
Reel/Frame 031660/0293 →
LIEN Recorded Sep 9, 2013
From: COBALT HOLDING COMPANY; COBALT MERGER CORP.; INTERGRAPH CORPORATION; INTERGRAPH EUROPEAN MANUFACTURING, LLC; M & S COMPUTING INVESTMENTS, INC.; INTERGRAPH DISC, INC.; WORLDWIDE SERVICES, INC.; INTERGRAPH (ITALIA), LLC; INTERGRAPH ASIA PACIFIC, INC.; INTERGRAPH CHINA, INC.; INTERGRAPH SERVICES COMPANY; INTERGRAPH COMPUTER SYSTEMS HOLDING, INC.; DAISY SYSTEMS INTERNATIONAL, INC.; INTERGRAPH DC CORPORATION - SUBSIDIARY 3; Z/I IMAGING CORPORATION; INTERGRAPH PROPERTIES COMPANY; INTERGRAPH HARDWARE TECHNOLOGIES COMPANY; INTERGRAPH SOFTWARE TECHNOLOGIES COMPANY
To: MORGAN STANLEY & CO. INCORPORATED
Reel/Frame 031165/0035 →
LIEN Recorded Sep 9, 2013
From: COBALT HOLDING COMPANY; INTERGRAPH CORPORATION; COBALT MERGER CORP.; INTERGRAPH EUROPEAN MANUFACTURING, LLC; M & S COMPUTING INVESTMENTS, INC.; INTERGRAPH DISC, INC.; WORLDWIDE SERVICES, INC.; INTERGRAPH (ITALIA), LLC; INTERGRAPH ASIA PACIFIC, INC.; INTERGRAPH CHINA, INC.; INTERGRAPH SERVICES COMPANY; INTERGRAPH COMPUTER SYSTEMS HOLDING, INC.; DAISY SYSTEMS INTERNATIONAL, INC.; INTERGRAPH DC CORPORATION - SUBSIDIARY 3; Z/I IMAGING CORPORATION; INTERGRAPH PROPERTIES COMPANY; INTERGRAPH HARDWARE TECHNOLOGIES COMPANY; INTERGRAPH SOFTWARE TECHNOLOGIES COMPANY
To: WACHOVIA BANK NATIONAL ASSOCIATION
Reel/Frame 031165/0817 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2013
From: INTERGRAPH CORPORATION
To: INTERGRAPH HARDWARE TECHNOLOGIES COMPANY
Reel/Frame 031151/0180 →
CHANGE OF NAME Recorded Sep 6, 2013
From: INTERGRAPH HARDWARE TECHNOLOGIES COMPANY
To: INTERGRAPH TECHNOLOGIES COMPANY
Reel/Frame 031181/0842 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2013
From: MCKINNEY, ARTHUR C.; MCCARVER, JR., CHARLES H.; SAMIEE, VAHID
To: INTERGRAPH CORPORATION
Reel/Frame 031150/0261 →
MERGER Recorded Sep 6, 2013
From: INTERGRAPH TECHNOLOGIES COMPANY
To: INTERGRAPH CORPORATION
Reel/Frame 031153/0749 →
TERMINATION AND RELEASE OF FIRST LIEN INTELLECTUAL PROPERTY SECURITY INTEREST Recorded Mar 3, 2011
From: MORGAN STANLEY & CO. INCORPORATED
To: INTERGRAPH HOLDING COMPANY (F/K/A COBALT HOLDING COMPANY); INTERGRAPH CORPORATION; INTERGRAPH EUROPEAN MANUFACTURING, LLC; M&S COMPUTING INVESTMENTS, INC.; INTERGRAPH DISC, INC.; WORLDWIDE SERVICES, INC.; INTERGRAPH (ITALIA), LLC; INTERGRAPH ASIA PACIFIC, INC.; INTERGRAPH CHINA, INC.; INTERGRAPH SERVICES COMPANY; INTERGRAPH DC CORPORATION - SUBSIDIARY 3; Z/I IMAGING CORPORATION; INTERGRAPH PP&M US HOLDING, INC.; INTERGRAPH TECHNOLOGIES COMPANY; ENGINEERING PHYSICS SOFTWARE, INC.; COADE HOLDINGS, INC.; COADE INTERMEDIATE HOLDINGS, INC.
Reel/Frame 025892/0299 →
TERMINATION AND RELEASE OF SECOND LIEN INTELLECTUAL PROPERTY SECURITY INTEREST Recorded Mar 3, 2011
From: WACHOVIA BANK, NATIONAL ASSOCIATION
To: INTERGRAPH HOLDING COMPANY (F/K/A COBALT HOLDING COMPANY); INTERGRAPH CORPORATION; INTERGRAPH EUROPEAN MANUFACTURING, LLC; M&S COMPUTING INVESTMENTS, INC.; INTERGRAPH DISC, INC.; WORLDWIDE SERVICES, INC.; INTERGRAPH (ITALIA), LLC; INTERGRAPH ASIA PACIFIC, INC.; INTERGRAPH CHINA, INC.; INTERGRAPH SERVICES COMPANY; INTERGRAPH DC CORPORATION - SUBSIDIARY 3; Z/I IMAGING CORPORATION; INTERGRAPH PP&M US HOLDING, INC.; INTERGRAPH TECHNOLOGIES COMPANY; ENGINEERING PHYSICS SOFTWARE, INC.; COADE HOLDINGS, INC.; COADE INTERMEDIATE HOLDINGS, INC.
Reel/Frame 025892/0028 →