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

Segregation of thread-specific information from shared task information

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1996-04-16
•
Granted: 1997-11-04
•
Expires: 2016-04-16
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A multi-processor system includes memory and at least two central processing units (CPUs) that may execute different threads of computation of a same task at the same time. CPU-specific data is segregated from shared task information of different threads of computation of the task. In particular, the shared task information is placed in memory locations of the memory that are directly addressable by both CPUs, and CPU-specific data are placed in memory locations that are directly addressable by only the associated CPU. No additional hardware is needed, and the memory and run-time costs of the invention are miniscule.

Inventors

  • 👤 Bryan Willman

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 18:15
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/48; G06F9/4806; G06F9/4843; G06F9/54; G06F9/544

Claims Analysis

Total Claims: 18
Claim 1
Independent Claim 163 words
In a multi-processor system having a memory and multiple central processing units (CPUs) wherein multiple threads of a task are executed across the multiple CPUs, a method of segregating thread-specific data from shared task information, comprising the steps of: (a) providing global descriptor tables in memory for address translation wherein each CPU has a unique one of the global descriptor tables associated with it that includes entries indexed by an index value which point to memory segments that are directly addressable by the threads of the task executed on the CPU; (b) filling entries with same index values in the respective global descriptor tables with identical entries; and (c) filling at least one selected entry in each global descriptor table with a segment selector that points to a segment in memory holding thread-specific data that identifies which of the threads is being run on the CPU with which the global descriptor table is associated, each said selected entry having a same index value.
Claim 2
Dependent Claim 163 words
In a multi-processor system having a memory and multiple central processing units (CPUs) wherein multiple threads of a task are executed across the multiple CPUs, a method of segregating thread-specific data from shared task information, comprising the steps of: (a) providing global descriptor tables in memory for address translation wherein each CPU has a unique one of the global descriptor tables associated with it that includes entries indexed by an index value which point to memory segments that are directly addressable by the threads of the task executed on the CPU; (b) filling entries with same index values in the respective global descriptor tables with identical entries; and (c) filling at least one selected entry in each global descriptor table with a segment selector that points to a segment in memory holding thread-specific data that identifies which of the threads is being run on the CPU with which the global descriptor table is associated, each said selected entry having a same index value.
Claim 3
Dependent Claim 86 words
A method as recited in claim 1 wherein each CPU has a register and said method further comprising the steps of: for each CPU, loading the register with a selector that serves as an index value for an entry in the descriptor table associated with the CPU, said entry pointing to the segment in memory holding thread-specific data; maintaining the respective selectors in the respective registers whenever an operating system is running on the CPU; and using the register to gain access to the CPU-specific data.
Claim 4
Dependent Claim 120 words
In a multi-processor system having at least two central processing units (CPUs) for executing separate threads of computation of a task and a memory divided into memory segments, a system comprising: (a) a multi-threading operating system run on said CPUs to control said CPUs; and (b) for each CPU, a global descriptor table held in memory and used by the operating system in address translation, each said global descriptor table holding entries that point to memory segments that are accessible to all of the threads of computation and at least one entry that points to a memory segment holding thread-specific information that identifies the thread currently being run on the CPU and which is directly addressable only by said CPU.
Claim 5
Dependent Claim 120 words
In a multi-processor system having at least two central processing units (CPUs) for executing separate threads of computation of a task and a memory divided into memory segments, a system comprising: (a) a multi-threading operating system run on said CPUs to control said CPUs; and (b) for each CPU, a global descriptor table held in memory and used by the operating system in address translation, each said global descriptor table holding entries that point to memory segments that are accessible to all of the threads of computation and at least one entry that points to a memory segment holding thread-specific information that identifies the thread currently being run on the CPU and which is directly addressable only by said CPU.
Claim 6
Dependent Claim 38 words
A system as recited in claim 3, further comprising, for each CPU, a register holding an index that is used to access the entry in the global descriptor table that points to a memory segment holding thread-specific information.
Claim 7
Dependent Claim 179 words
In a data processing system having multiple central processing units (CPUs) running threads of computation and a memory that is logically partitioned into segments, a method of accessing thread-specific data, comprising the steps of: (a) storing a global descriptor table for use in address translation in memory for each CPU wherein each global descriptor table includes like indexed entries that hold descriptors which point to segments of memory that are directly addressable to threads executed on the CPU and also includes a like-indexed entry holding a descriptor that points to a segment holding thread-specific data for a thread that is currently being run on the CPU, said thread-specific data identifying the thread being run on the CPU; (b) accessing the entry in one of the global descriptor tables that points to thread-specific data to obtain a descriptor for the segment holding the thread-specific data for one of the CPUs; (c) using the descriptor for the thread-specific data to obtain an address of the thread-specific data; and (d) using the address of the thread-specific data to access the thread-specific data.
Claim 8
Dependent Claim 179 words
In a data processing system having multiple central processing units (CPUs) running threads of computation and a memory that is logically partitioned into segments, a method of accessing thread-specific data, comprising the steps of: (a) storing a global descriptor table for use in address translation in memory for each CPU wherein each global descriptor table includes like indexed entries that hold descriptors which point to segments of memory that are directly addressable to threads executed on the CPU and also includes a like-indexed entry holding a descriptor that points to a segment holding thread-specific data for a thread that is currently being run on the CPU, said thread-specific data identifying the thread being run on the CPU; (b) accessing the entry in one of the global descriptor tables that points to thread-specific data to obtain a descriptor for the segment holding the thread-specific data for one of the CPUs; (c) using the descriptor for the thread-specific data to obtain an address of the thread-specific data; and (d) using the address of the thread-specific data to access the thread-specific data.
Claim 9
Dependent Claim 49 words
A method as recited in claim 5 wherein the data processing system includes a register for holding an index into the descriptor table and said method, further comprising the step of using the register to obtain an index of the entry in the descriptor table which holds thread-specific data.
Claim 10
Dependent Claim 14 words
A method as recited in claim 6 wherein the register is a segment register.
Claim 11
Dependent Claim 286 words
In a data processing system having a memory, that is logically partitioned into segments, and multiple central processing units (CPUs) executing separate threads of a task, a method, comprising the steps of: a) providing a page directory in memory wherein said page directory is local to said task and includes entries that each hold a pointer to a page table; b) providing, for each CPU, a global descriptor table in memory for use in translating a virtual address, having a selector and an offset, into a linear address, each said global descriptor table holding like entries at like indexes and holding at least one entry at a like index that includes a descriptor for a segment of memory holding thread-specific data for the thread currently being run on the CPU; c) using a selector of a virtual address as an index to access the entry in a global descriptor table of a CPU which holds the descriptor for the segment of memory holding thread-specific data, said descriptor including a base address of the segment of memory holding the thread-specific data; d) adding an offset in the virtual address to the base address of the segment of memory holding the thread-specific data to obtain a linear address; e) using bits in the linear address as an index into the page directory to obtain a pointer to a page table; f) using bits in the linear address as an index into the page table to obtain a page frame address; g) combining the page frame address with offset bits in the linear address to obtain a physical address; and h) using the physical address to access a memory location in the segment of memory holding the thread-specific data.
Claim 12
Dependent Claim 286 words
In a data processing system having a memory, that is logically partitioned into segments, and multiple central processing units (CPUs) executing separate threads of a task, a method, comprising the steps of: a) providing a page directory in memory wherein said page directory is local to said task and includes entries that each hold a pointer to a page table; b) providing, for each CPU, a global descriptor table in memory for use in translating a virtual address, having a selector and an offset, into a linear address, each said global descriptor table holding like entries at like indexes and holding at least one entry at a like index that includes a descriptor for a segment of memory holding thread-specific data for the thread currently being run on the CPU; c) using a selector of a virtual address as an index to access the entry in a global descriptor table of a CPU which holds the descriptor for the segment of memory holding thread-specific data, said descriptor including a base address of the segment of memory holding the thread-specific data; d) adding an offset in the virtual address to the base address of the segment of memory holding the thread-specific data to obtain a linear address; e) using bits in the linear address as an index into the page directory to obtain a pointer to a page table; f) using bits in the linear address as an index into the page table to obtain a page frame address; g) combining the page frame address with offset bits in the linear address to obtain a physical address; and h) using the physical address to access a memory location in the segment of memory holding the thread-specific data.
Claim 13
Dependent Claim 211 words
A computer-readable storage medium for use in a multi-processor system having a memory and multiple central processing units (CPUs) wherein threads of a task are executed across the CPUs and the memory holds global descriptor tables for address translation such that each CPU has a unique one of the global descriptor tables associated with it that includes entries indexed by an index value which point to memory segments that are directly addressable by the threads of the task executed on the CPU, said medium holding instructions for: (a) providing global descriptor tables in memory for address translation wherein each CPU has a unique one of the global descriptor tables associated with it that includes entries indexed by an index value which point to memory segments that are directly addressable by the threads of the task executed on the CPU; (b) filling entries with same index values in the respective global descriptor tables with identical entries; and (c) filling at least one selected entry in each global descriptor table with a segment selector that points to a segment in memory holding thread-specific data that identifies which of the threads is being run on the CPU with which the global descriptor table is associated, each said selected entry having a same index value.
Claim 14
Dependent Claim 211 words
A computer-readable storage medium for use in a multi-processor system having a memory and multiple central processing units (CPUs) wherein threads of a task are executed across the CPUs and the memory holds global descriptor tables for address translation such that each CPU has a unique one of the global descriptor tables associated with it that includes entries indexed by an index value which point to memory segments that are directly addressable by the threads of the task executed on the CPU, said medium holding instructions for: (a) providing global descriptor tables in memory for address translation wherein each CPU has a unique one of the global descriptor tables associated with it that includes entries indexed by an index value which point to memory segments that are directly addressable by the threads of the task executed on the CPU; (b) filling entries with same index values in the respective global descriptor tables with identical entries; and (c) filling at least one selected entry in each global descriptor table with a segment selector that points to a segment in memory holding thread-specific data that identifies which of the threads is being run on the CPU with which the global descriptor table is associated, each said selected entry having a same index value.
Claim 15
Dependent Claim 126 words
A computer-readable storage medium for use in a multi-processor system having at least two central processing units (CPUs) for executing separate threads of a task and a memory that is divided into memory segments, said medium holding: (a) a multi-threading operating system run on said CPUs to control said CPUs; and (b) for each CPU, a global descriptor table held in memory and used by the operating system in address translation, each said global descriptor table holding entries that point to memory segments that are accessible to all of the threads of computation and at least one entry that points to a memory segment holding thread-specific information that identifies the thread currently being run on the CPU and which is directly addressable only by said CPU.
Claim 16
Dependent Claim 126 words
A computer-readable storage medium for use in a multi-processor system having at least two central processing units (CPUs) for executing separate threads of a task and a memory that is divided into memory segments, said medium holding: (a) a multi-threading operating system run on said CPUs to control said CPUs; and (b) for each CPU, a global descriptor table held in memory and used by the operating system in address translation, each said global descriptor table holding entries that point to memory segments that are accessible to all of the threads of computation and at least one entry that points to a memory segment holding thread-specific information that identifies the thread currently being run on the CPU and which is directly addressable only by said CPU.
Claim 17
Dependent Claim 180 words
A computer-readable storage medium for use in a data processing system having multiple central processing units (CPUs) running threads of computation and a memory that is logically partitioned into segments, said medium holding instructions for: (a) storing a global descriptor table for use in address translation in memory for each CPU wherein each global descriptor table includes like indexed entries that hold descriptors which point to segments of memory that are directly addressable to threads executed on the CPU and also includes a like-indexed entry holding a descriptor that points to a segment holding thread-specific data for a thread that is currently being run on the CPU, said thread-specific data identifying the thread being run on the CPU; (b) accessing the entry in one of the global descriptor tables that points to thread-specific data to obtain a descriptor for the segment holding the thread-specific data for one of the CPUs; (c) using the descriptor for the thread-specific data to obtain an address of the thread-specific data; and (d) using the address of the thread-specific data to access the threadspecific data.
Claim 18
Dependent Claim 180 words
A computer-readable storage medium for use in a data processing system having multiple central processing units (CPUs) running threads of computation and a memory that is logically partitioned into segments, said medium holding instructions for: (a) storing a global descriptor table for use in address translation in memory for each CPU wherein each global descriptor table includes like indexed entries that hold descriptors which point to segments of memory that are directly addressable to threads executed on the CPU and also includes a like-indexed entry holding a descriptor that points to a segment holding thread-specific data for a thread that is currently being run on the CPU, said thread-specific data identifying the thread being run on the CPU; (b) accessing the entry in one of the global descriptor tables that points to thread-specific data to obtain a descriptor for the segment holding the thread-specific data for one of the CPUs; (c) using the descriptor for the thread-specific data to obtain an address of the thread-specific data; and (d) using the address of the thread-specific data to access the threadspecific data.

References Cited (Backward Citations)

US4442484A Cited
US4539637A Cited
US4972338A Cited
US4926322A Cited
US5144551A Cited
US5345588A Cited
US5255379A Cited
US5303378A Cited

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag