← Back to Patent Explorer
US5696930A Expired / Lapsed US ⏱️ 0.0 years remaining

CAM accelerated buffer management

Assignee: GlobalFoundries Inc
•
Filing: 1996-02-09
•
Granted: 1997-12-09
•
Expires: 2016-02-09
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and apparatus for managing effectively data and command buffers in an I/O subsystem utilizes a content addressable memory (CAM) array (36) having a plurality of CAM storage locations (SL1 . . . SLn). The CAM array is used to store a plurality of SCSI Nexus entries and generates a unique address pointer when there is a match between an incoming SCSI Nexus value and one of the plurality of SCSI Nexus entries. A command buffer (24) or user data buffer (26) is responsive to the unique address pointer for storing and retrieving the command/data section of a Command Control Block in a corresponding one of a plurality of buffer storage locations. As a result, the host CPU (12) or adapter (22) is relieved of much of the overhead associated with managing these buffers.

Inventors

  • 👤 Mark Garetz
  • 👤 David Skinner

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 14:58
CPC Classifications
G; G06; G06F; G06F13/00; G06F13/10; G06F13/12; G06F13/124; G06F13/126

Claims Analysis

Total Claims: 10
Claim 1
Independent Claim 288 words
In a data processing system for efficiently managing command and data buffers comprising in combination: host central processing means (12) for generating high-level commands in the form of a Command Control Block having a first portion defined by a command/data section and a second portion thereof defined as an incoming SCSI Nexus value; local processing means (22) responsive to said Command Control Block for separating said SCSI Nexus value from said Command Control Block; CAM array means (36) having a plurality of CAM storage locations (SL . . . SLn) for storing a plurality of SCSI Nexus entries and for generating unique CAM addresses when there is a match between said SCSI Nexus value and one of the said plurality of SCSI Nexus entries; said local processing means responsive to said unique CAM addresses for generating first and second address pointers; first offset generator means (44) responsive to said first address pointer for generating a first offset which is used to access command buffer means; second offset generator means (48) responsive to said second address pointer for generating a second offset which is used to access user data buffer means; command buffer means (24) having a plurality of first buffer storage locations (CB1 . . . CBn) and being responsive to said first offset for storing and retrieving the command/data section of the Command Control Block in a corresponding one of said plurality of first buffer storage locations and user data buffer means (26) having a plurality of second buffer storage locations (DB1 . . . DBn) and being responsive to said second offset for storing and retrieving the command/data section of the Command Control Block in a corresponding one of said plurality of second buffer storage locations.
Claim 2
Dependent Claim 288 words
In a data processing system for efficiently managing command and data buffers comprising in combination: host central processing means (12) for generating high-level commands in the form of a Command Control Block having a first portion defined by a command/data section and a second portion thereof defined as an incoming SCSI Nexus value; local processing means (22) responsive to said Command Control Block for separating said SCSI Nexus value from said Command Control Block; CAM array means (36) having a plurality of CAM storage locations (SL . . . SLn) for storing a plurality of SCSI Nexus entries and for generating unique CAM addresses when there is a match between said SCSI Nexus value and one of the said plurality of SCSI Nexus entries; said local processing means responsive to said unique CAM addresses for generating first and second address pointers; first offset generator means (44) responsive to said first address pointer for generating a first offset which is used to access command buffer means; second offset generator means (48) responsive to said second address pointer for generating a second offset which is used to access user data buffer means; command buffer means (24) having a plurality of first buffer storage locations (CB1 . . . CBn) and being responsive to said first offset for storing and retrieving the command/data section of the Command Control Block in a corresponding one of said plurality of first buffer storage locations and user data buffer means (26) having a plurality of second buffer storage locations (DB1 . . . DBn) and being responsive to said second offset for storing and retrieving the command/data section of the Command Control Block in a corresponding one of said plurality of second buffer storage locations.
Claim 3
Dependent Claim 32 words
In a data processing system as claimed in claim 1, wherein said SCSI Nexus is defined by a unique combination of 24 bits which is unique for each active Command Control Block.
Claim 4
Dependent Claim 35 words
In a data processing system as claimed in claim 2, wherein said CAM array means is comprised of a content addressable memory which is constructed of 100 words with each word having 24 bits each.
Claim 5
Dependent Claim 36 words
In a data processing system as claimed in claim 3, wherein said command buffer is a random access semiconductor memory containing 100 storage locations so as to form a one-to-one correspondence with said CAM storage locations.
Claim 6
Dependent Claim 38 words
In a data processing system as claimed in claim 4, wherein said user data buffer means is a random access semiconductor memory containing 100 storage locations so as to form a one-to-one correspondence with said CAM storage locations.
Claim 7
Dependent Claim 65 words
In a data processing system as claimed in claim 1, wherein said CAM array means is responsive to a new Command Control Block issued each time by said host central processing means so as to initially assign at a fast speed the SCSI Nexus value associated with the new Command Control Block to one of the plurality of buffer locations in said command buffer means.
Claim 8
Independent Claim 199 words
A method for managing effectively data and command buffers in an I/O subsystem comprising the steps of: generating high-level commands in the form of a Command Control Block having a first portion defined by a command/data section and a second portion thereof defined as an incoming SCSI Nexus value; separating said SCSI Nexus value from said Command Control Block; storing in a CAM array having a plurality of CAM storage locations a plurality of SCSI Nexus entries; generating unique CAM addresses when there is a match between said SCSI Nexus value and one of said plurality of SCSI Nexus entries; generating first and second address pointers in response to said unique CAM addresses; storing and retrieving from a command buffer having a plurality of first buffer storage locations the command/data section of the Command Control Block in a corresponding one of the plurality of first buffer storage locations in response to said first address pointer; and storing and retrieving from a user data buffer having a plurality of second buffer storage locations the command/data section of the Command Control Block in a corresponding one of the plurality of second buffer storage locations in response to said second address pointer.
Claim 9
Independent Claim 199 words
A method for managing effectively data and command buffers in an I/O subsystem comprising the steps of: generating high-level commands in the form of a Command Control Block having a first portion defined by a command/data section and a second portion thereof defined as an incoming SCSI Nexus value; separating said SCSI Nexus value from said Command Control Block; storing in a CAM array having a plurality of CAM storage locations a plurality of SCSI Nexus entries; generating unique CAM addresses when there is a match between said SCSI Nexus value and one of said plurality of SCSI Nexus entries; generating first and second address pointers in response to said unique CAM addresses; storing and retrieving from a command buffer having a plurality of first buffer storage locations the command/data section of the Command Control Block in a corresponding one of the plurality of first buffer storage locations in response to said first address pointer; and storing and retrieving from a user data buffer having a plurality of second buffer storage locations the command/data section of the Command Control Block in a corresponding one of the plurality of second buffer storage locations in response to said second address pointer.
Claim 10
Dependent Claim 41 words
A method as claimed in claim 7, further comprising the step of assigning initially at a fast speed the SCSI Nexus value associated with a new Command Control Block to one of the plurality of buffer locations in the command buffer.

References Cited (Backward Citations)

US4149239A Cited
US4758982A Cited
US5317708A Cited
US5440709A Cited
EP0522728A1 Cited
US5428759A Cited
US5537623A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-12-08 2001-06-09 2001-12-09 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-12-08 2005-06-09 2005-12-09 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-12-08 2009-06-09 2009-12-09 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag