Patent US5956754A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5956754A Expired / Lapsed US ⏱️ 0.0 years remaining

Dynamic shared user-mode mapping of shared memory

Assignee: EMC Corp
•
Filing: 1997-03-03
•
Granted: 1999-09-21
•
Expires: 2017-03-03
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method for use in a multiprocessor computer system where data objects larger than the address space of a single task are mapped in main memory and the translation lookaside buffer (TLB) is maintained by user mode software is disclosed. The method uses lazy TLB updating that allows stale data to stay in the TLB until it needs to be purged.

Inventors

  • 👤 Jeffrey S. Kimmel

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 23:41
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/10; G06F12/1027; G06F12/1036; G06F2212/00; G06F2212/65; G06F2212/656; G06F2212/68; G06F2212/682

Claims Analysis

Total Claims: 12
Claim 1
Independent Claim 390 words
A method for increasing the performance of a multi-processor system executing a plurality of user tasks having: (a) a plurality of processors each one of said processor having a translation lookaside buffer (TLB) for caching translations between virtual and physical addresses; (b) said each one of said processors also having at least one user mode for executing applications and at least one kernel mode for performing operating system functions; (c) a data object larger than the address space of at least one of said plurality of user tasks; (d) a mapping table having a plurality of slots and shared by at least two of said user tasks and each of said slots being in either one of a plurality of mapped states, the unmapped state or the remapping state; (e) a plurality of buffers each one of said buffers being a piece of said large data object and capable of being shared by at least two of said user tasks; (f) a plurality of shared pointers each associated with a piece of said large data object and either null, or non-null and mapped via said mapping table to one of said buffers; said method comprising responding to a call to a library function to map a selected one of said shared pointers to its corresponding shared buffer by: (I) checking to see if said selected shared pointer is null and if it is null performing the following substeps: (i) locating an available slot in said mapping table; (ii) placing said available slot into the remapping state; (iii)invalidating any buffer pointer which is using said available slot; (iv) placing said available slot into the mapped state; (v) invalidating any TLB entries on the executing CPU corresponding to said available slot; (vi) setting said selected shared pointer to point to said slot; and (vii) returning to the caller of said library function; (II) obtaining a selected one of said slots associated with said selected shared pointer; (III)performing substeps (i) to (vii) of step (I) if said slot is in the remapping state; (IV) determining, completely in one of said user modes, if any TLB entries need to be flushed and returning directly to the caller if no TLB flush is required; (V) entering one of said kernel modes and flushing said TLB entries if step (IV) determined that a flush was required.
Claim 2
Independent Claim 390 words
A method for increasing the performance of a multi-processor system executing a plurality of user tasks having: (a) a plurality of processors each one of said processor having a translation lookaside buffer (TLB) for caching translations between virtual and physical addresses; (b) said each one of said processors also having at least one user mode for executing applications and at least one kernel mode for performing operating system functions; (c) a data object larger than the address space of at least one of said plurality of user tasks; (d) a mapping table having a plurality of slots and shared by at least two of said user tasks and each of said slots being in either one of a plurality of mapped states, the unmapped state or the remapping state; (e) a plurality of buffers each one of said buffers being a piece of said large data object and capable of being shared by at least two of said user tasks; (f) a plurality of shared pointers each associated with a piece of said large data object and either null, or non-null and mapped via said mapping table to one of said buffers; said method comprising responding to a call to a library function to map a selected one of said shared pointers to its corresponding shared buffer by: (I) checking to see if said selected shared pointer is null and if it is null performing the following substeps: (i) locating an available slot in said mapping table; (ii) placing said available slot into the remapping state; (iii)invalidating any buffer pointer which is using said available slot; (iv) placing said available slot into the mapped state; (v) invalidating any TLB entries on the executing CPU corresponding to said available slot; (vi) setting said selected shared pointer to point to said slot; and (vii) returning to the caller of said library function; (II) obtaining a selected one of said slots associated with said selected shared pointer; (III)performing substeps (i) to (vii) of step (I) if said slot is in the remapping state; (IV) determining, completely in one of said user modes, if any TLB entries need to be flushed and returning directly to the caller if no TLB flush is required; (V) entering one of said kernel modes and flushing said TLB entries if step (IV) determined that a flush was required.
Claim 3
Dependent Claim 32 words
The method of claim 1, where said determining step (IV) comprises comparing the time of the most recent TLB flush with the time said selected slot was placed into the mapped state.
Claim 4
Dependent Claim 126 words
The method of claim 1, where said determining step (IV) comprises: (I) comparing a first sequence number associated with said selected slot with a second sequence number associated with the currently executing task; (II) determining that no TLB flush is required if said second sequence number is greater than said first sequence number; (III)determining that a TLB flush is required if said second sequence number is not greater than said first sequence number; (IV) if a TLB flush is required and if said first sequence number is equal to a third sequence number associated with said mapping table, incrementing said third sequence number associated with said mapping table; (V) if a TLB flush is required setting said second sequence number equal to said third sequence number.
Claim 5
Dependent Claim 77 words
The method of claim 1, where: (a) each said slot has a task identifier which uniquely identifies one of said plurality of user task; (b) said checking step (I) also comprises storing the task identifier for the current task into said available slot; and (c) said determining step (IV) also comprises comparing the task identifier for the current task with the task identifier stored in said slot and returning directly to the caller if they are equal.
Claim 6
Dependent Claim 235 words
A computer system for performing database operations comprising: (a) a plurality of processors each processor having a translation lookaside buffer (TLB) for caching translations between virtual and physical addresses; (b) each of said processors also having at least one user mode for executing applications and at least one kernel mode for performing operating system functions; (c) a plurality of user tasks; (d) a data object larger than the address space of at least one of said user tasks; (e) a mapping table having a plurality of slots and shared by at least two of said user tasks and each of said slots being in either one of a plurality of mapped states, the unmapped state or the remapping state; (f) a plurality of buffers each buffer being a piece of said large data object and each buffer being capable of being shared by at least two of said user tasks; (g) a plurality of shared pointers each associated with a piece of said large data object and either null, or non-null and mapped via said mapping table to one of said buffers; (h) means for responding to a call to a library function to map a selected one of said shared pointers to its corresponding shared buffer by determining, completely in one of said user modes, if any TLB needs to be flushed and returning directly to the caller if no TLB flush is required.
Claim 7
Dependent Claim 235 words
A computer system for performing database operations comprising: (a) a plurality of processors each processor having a translation lookaside buffer (TLB) for caching translations between virtual and physical addresses; (b) each of said processors also having at least one user mode for executing applications and at least one kernel mode for performing operating system functions; (c) a plurality of user tasks; (d) a data object larger than the address space of at least one of said user tasks; (e) a mapping table having a plurality of slots and shared by at least two of said user tasks and each of said slots being in either one of a plurality of mapped states, the unmapped state or the remapping state; (f) a plurality of buffers each buffer being a piece of said large data object and each buffer being capable of being shared by at least two of said user tasks; (g) a plurality of shared pointers each associated with a piece of said large data object and either null, or non-null and mapped via said mapping table to one of said buffers; (h) means for responding to a call to a library function to map a selected one of said shared pointers to its corresponding shared buffer by determining, completely in one of said user modes, if any TLB needs to be flushed and returning directly to the caller if no TLB flush is required.
Claim 8
Dependent Claim 239 words
A computer system for performing database operations comprising: (a) a plurality of processors each processor having a translation lookaside buffer (TLB) for caching translations between virtual and physical addresses; (b) each of said processors also having at least one user mode for executing applications and at least one kernel mode for performing operating system functions; (c) a plurality of user tasks; (d) a data object larger than the address space of at least one of said user tasks; (e) a mapping table having a plurality of slots and shared by at least two of said user tasks and each of said slots being in either one of a plurality of mapped states, the unmapped state or the remapping state; (f) a plurality of buffers each buffer being a piece of said large data object and each buffer being capable of being shared by at least two of said user tasks; (g) a plurality of shared pointers each associated with a piece of said large data object and either null, or non-null and mapped via said mapping table to one of said buffers; (h) a means for responding to a call to a library function to map a selected one of said shared pointers to its corresponding shared buffer; (i) a means for determining, completely in one of said user modes, if any TLB needs to be flushed and returning directly to the caller if no TLB flush is required.
Claim 9
Dependent Claim 239 words
A computer system for performing database operations comprising: (a) a plurality of processors each processor having a translation lookaside buffer (TLB) for caching translations between virtual and physical addresses; (b) each of said processors also having at least one user mode for executing applications and at least one kernel mode for performing operating system functions; (c) a plurality of user tasks; (d) a data object larger than the address space of at least one of said user tasks; (e) a mapping table having a plurality of slots and shared by at least two of said user tasks and each of said slots being in either one of a plurality of mapped states, the unmapped state or the remapping state; (f) a plurality of buffers each buffer being a piece of said large data object and each buffer being capable of being shared by at least two of said user tasks; (g) a plurality of shared pointers each associated with a piece of said large data object and either null, or non-null and mapped via said mapping table to one of said buffers; (h) a means for responding to a call to a library function to map a selected one of said shared pointers to its corresponding shared buffer; (i) a means for determining, completely in one of said user modes, if any TLB needs to be flushed and returning directly to the caller if no TLB flush is required.
Claim 10
Dependent Claim 51 words
The computer system of claim 6, additionally comprising: (j) a shared physical memory larger that the address space of at least one of said tasks; (k) a means for creating a shared segment in said shared physical memory; (l) a means for creating a shared map in said shared physical memory.
Claim 11
Dependent Claim 27 words
The computer system of claim 7, additionally comprising: (m) a means for attaching said shared map to the address space of at least two of said tasks.
Claim 12
Dependent Claim 158 words
The computer system of claim 6 additionally comprising: (a) means for obtaining a selected one of said slots associated with said selected shared pointer; and where said determining means (i) additionally comprises: (I) means for comparing a first sequence number associated with said selected slot with a second sequence number associated with the currently executing one of said tasks; (II) means for determining that no TLB flush is required if said second sequence number is greater than said first sequence number; (III)means for determining that a TLB flush is required if said second sequence number is not greater than said first sequence number; (IV) means for incrementing a single third sequence number associated with said mapping table if a TLB flush is required and if said first sequence number is equal to said third sequence number; (V) means for setting said second sequence number to the value of said third sequence number if a TLB flush is required.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-09-20 2003-03-22 2003-09-21 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-09-20 2007-03-22 2007-09-21 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-09-20 2011-03-22 2011-09-21 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag