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

Method, system and computer program product for profiling thread virtual memory accesses

Assignee: Morgan Stanley and Co LLC
•
Filing: 1997-08-14
•
Granted: 1999-10-26
•
Expires: 2017-08-14
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method, system, and computer program product are provided for profiling virtual memory accesses by one or more threads. A virtual memory access thread profiling tool includes a histogram generator and a thread placement file generator. The histogram generator generates a histogram that indicates the relative frequency at which virtual memory addresses are accessed by each program thread. To generate the histogram, the histogram generator runs and interrupts each program thread to collect samples. When an interrupt is issued, a program counter is returned. A valid load or store instruction is determined for a thread in assembly code identified by the returned program counter. In one example, to determine a valid load or store instruction, the histogram generator walks forward or backward through the assembly code identified by the returned program counter until a valid load or store instruction is reached. A virtual memory address corresponding to a valid load or store instruction is then read. A histogram is then incremented based on the virtual memory address to track the relative frequency at which virtual memory addresses are accessed by each thread. Further options are provided to allow a user to control the virtual memory access profiling tool. These options include selecting and setting the type of collection method, selecting and setting program counter (PC) and memory address filtering, setting the sampling granularity, providing start/stop control, selecting real-time graphical histogram output, and naming output files. The virtual memory access thread profiling tool can be implemented as a profiling command executed by an operating system for a multi-processor system, such as, a NUMA machine.

Inventors

  • 👤 John L. Richardson

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 22:41
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/30; G06F11/34; G06F11/3466; G06F11/3409; G06F11/3452; G06F2201/00; G06F2201/815; G06F2201/86; G06F2201/88

Claims Analysis

Total Claims: 57
Claim 1
Independent Claim 42 words
A method for profiling frequencies of accesses made to a virtual memory by a program thread, comprising the steps of: running the program thread; and generating a profile that indicates the frequencies at which virtual memory addresses are accessed by the thread.
Claim 2
Independent Claim 42 words
A method for profiling frequencies of accesses made to a virtual memory by a program thread, comprising the steps of: running the program thread; and generating a profile that indicates the frequencies at which virtual memory addresses are accessed by the thread.
Claim 3
Dependent Claim 43 words
The method of claim 1, further comprising the step of generating placement data that identifies at least one virtual address region for the program thread, said at least one virtual address region representing virtual memory addresses accessed relatively frequently by the program thread.
Claim 4
Dependent Claim 77 words
The method of claim 1, wherein said profile generating step comprises the steps of: interrupting the thread; returning a program counter; using said returned program counter to determine a valid load or store instruction for the thread in assembly code; reading a virtual memory address corresponding to said valid load or store instruction; and incrementing said profile based on said virtual memory address to track the frequencies at which virtual memory addresses are accessed by the thread.
Claim 5
Dependent Claim 76 words
The method of claim 3, wherein said using step comprises the steps of: walking forward through said assembly code identified by said returned program counter until a valid load or store instruction is reached; tracking registers which get written; and aborting said walking when at least one of the following two conditions occurs: a branch is reached, or a load or store instruction is reached whose address is based on a register that has been modified.
Claim 6
Dependent Claim 81 words
The method of claim 3, wherein said using step comprises the steps of: walking backward through said assembly code identified by said returned program counter until a valid load or store instruction is reached; tracking registers which get written; and aborting said walking when at least one of the following three conditions occurs: a branch is reached, a load or store instruction is reached whose address is based on a register that has been modified, or a branch target is crossed.
Claim 7
Dependent Claim 18 words
The method of claim 3, wherein said thread interrupting step uses an interval timer as a sampling trigger.
Claim 8
Dependent Claim 20 words
The method of claim 3, wherein said thread interrupting step uses a count of hardware events as a sampling trigger.
Claim 9
Dependent Claim 34 words
The method of claim 3, further comprising the step of: filtering said program counter returned in said returning step to determine whether said program counter is within a range of maximum and minimum values.
Claim 10
Dependent Claim 36 words
The method of claim 3, further comprising the step of: filtering said virtual memory address read in said reading step to determine whether said virtual memory address is within a range of maximum and minimum values.
Claim 11
Dependent Claim 22 words
The method of claim 3, further comprising the step of permitting a user to set a virtual memory address sampling granularity value.
Claim 12
Dependent Claim 19 words
The method of claim 3, further comprising the step of permitting a user to toggle sampling on and off.
Claim 13
Dependent Claim 21 words
The method of claim 3, further comprising the step of outputting said profile in real-time for display at a graphical user-interface.
Claim 14
Dependent Claim 37 words
The method of claim 2, further comprising the steps of: outputting said profile to a first data file; and outputting said placement data to a placement data file capable of being accessed by a memory placement tool.
Claim 15
Dependent Claim 22 words
The method of claim 6, wherein said thread interrupting step further comprises the step of: collecting samples at a predetermined sampling rate.
Claim 16
Dependent Claim 22 words
The method of claim 8, wherein said filtering step further comprises the step of: ignoring program counter events outside of said range.
Claim 17
Dependent Claim 22 words
The method of claim 9, wherein said filtering step further comprises the step of: ignoring virtual memory addresses outside of said range.
Claim 18
Dependent Claim 37 words
The method of claim 1, wherein said profile includes a histogram, wherein said generating step further comprises: generating a histogram that indicates a distribution in the frequencies at which virtual memory addresses are accessed by the thread.
Claim 19
Dependent Claim 26 words
The method of claim 1, wherein said generating step comprises: generating a profile that indicates the respective frequency at which each virtual memory address is accessed.
Claim 20
Dependent Claim 37 words
The method of claim 1, wherein said generating step comprises: generating a profile that indicates the frequency at which a virtual memory address is accessed relative to the frequencies at which other virtual memory addresses are accessed.
Claim 21
Independent Claim 42 words
A method for profiling frequencies of accesses made to a virtual memory by multiple program threads, comprising the steps of: running multiple program threads; and generating a profile that indicates the frequencies at which virtual memory addresses are accessed by each thread.
Claim 22
Independent Claim 42 words
A method for profiling frequencies of accesses made to a virtual memory by multiple program threads, comprising the steps of: running multiple program threads; and generating a profile that indicates the frequencies at which virtual memory addresses are accessed by each thread.
Claim 23
Dependent Claim 37 words
The method of claim 20, wherein said profile includes a histogram, wherein said generating step further comprises: generating a histogram that indicates a distribution in the frequencies at which virtual memory addresses are accessed by the thread.
Claim 24
Dependent Claim 26 words
The method of claim 20, wherein said generating step comprises: generating a profile that indicates the respective frequency at which each virtual memory address is accessed.
Claim 25
Dependent Claim 37 words
The method of claim 20, wherein said generating step comprises: generating a profile that indicates the frequency at which a virtual memory address is accessed relative to the frequencies at which other virtual memory addresses are accessed.
Claim 26
Independent Claim 43 words
A system for profiling frequencies of accesses made to a virtual memory by a program thread, comprising: means for running the program thread; and means for generating a profile that indicates the frequencies at which virtual memory addresses are accessed by the thread.
Claim 27
Independent Claim 43 words
A system for profiling frequencies of accesses made to a virtual memory by a program thread, comprising: means for running the program thread; and means for generating a profile that indicates the frequencies at which virtual memory addresses are accessed by the thread.
Claim 28
Dependent Claim 42 words
The system of claim 24, further comprising means for generating placement data that identifies at least one virtual address region for the program thread, said at least one virtual address region representing virtual memory addresses accessed relatively frequently by the program thread.
Claim 29
Dependent Claim 38 words
The system of claim 25, further comprising: means for outputting said profile to a first data file; and means for outputting said placement data to a placement data file capable of being accessed by a memory placement tool.
Claim 30
Dependent Claim 84 words
The system of claim 24, wherein said profile generating means comprises: means for interrupting the thread; means for returning a program counter; means for using said returned program counter to determine a valid load or store instruction for said thread in assembly code; means for reading a virtual memory address corresponding to said valid load or store instruction; and means for incrementing said profile based on said virtual memory address to track the frequencies at which virtual memory addresses are accessed by the thread.
Claim 31
Dependent Claim 84 words
The system of claim 27, wherein said valid load or store instruction determining means comprises: means for walking forward through said assembly code identified by said returned program counter until a valid load or store instruction is reached; means for tracking registers which get written; and means for aborting said walking when at least one of the following two conditions occurs: a branch is reached, or a load or store instruction is reached whose address is based on a register that has been modified.
Claim 32
Dependent Claim 89 words
The system of claim 27, wherein said valid load or store instruction determining means comprises: means for walking backward through said assembly code identified by said returned program counter until a valid load or store instruction is reached; means for tracking registers which get written; and means for aborting said walking when at least one of the following three conditions occurs: a branch is reached, a load or store instruction is reached whose address is based on a register that has been modified, or a branch target is crossed.
Claim 33
Dependent Claim 18 words
The system of claim 27, wherein said thread interrupting means uses an interval timer as a sampling trigger.
Claim 34
Dependent Claim 20 words
The system of claim 27, wherein said thread interrupting means uses a count of hardware events as a sampling trigger.
Claim 35
Dependent Claim 33 words
The system of claim 27, further comprising: means for filtering said program counter returned by said returning means to determine whether said program counter is within a range of maximum and minimum values.
Claim 36
Dependent Claim 35 words
The system of claim 27, further comprising: means for filtering said virtual memory address read by said reading means to determine whether said virtual memory address is within a range of maximum and minimum values.
Claim 37
Dependent Claim 21 words
The system of claim 27, further comprising means for permitting a user to set a virtual memory address sampling granularity value.
Claim 38
Dependent Claim 18 words
The system of claim 27, further comprising means for permitting a user to toggle sampling on and off.
Claim 39
Dependent Claim 20 words
The system of claim 27, further comprising means for outputting said profile in real-time for display at a graphical user-interface.
Claim 40
Dependent Claim 11 words
The system of claim 24, wherein said profile includes a histogram.
Claim 41
Dependent Claim 20 words
The system of claim 24, wherein said profile indicates the respective frequency at which each virtual memory address is accessed.
Claim 42
Dependent Claim 31 words
The system of claim 24, wherein said profile indicates the frequency at which a virtual memory address is accessed relative to the frequencies at which other virtual memory addresses are accessed.
Claim 43
Independent Claim 43 words
A system for profiling frequencies of accesses made to a virtual memory by multiple program threads, comprising: means for running multiple program threads; and means for generating a profile that indicates the frequencies at which virtual memory addresses are accessed by each thread.
Claim 44
Independent Claim 43 words
A system for profiling frequencies of accesses made to a virtual memory by multiple program threads, comprising: means for running multiple program threads; and means for generating a profile that indicates the frequencies at which virtual memory addresses are accessed by each thread.
Claim 45
Dependent Claim 11 words
The system of claim 40, wherein said profile includes a histogram.
Claim 46
Dependent Claim 20 words
The system of claim 40, wherein said profile indicates the respective frequency at which each virtual memory address is accessed.
Claim 47
Dependent Claim 31 words
The system of claim 40, wherein said profile indicates the frequency at which a virtual memory address is accessed relative to the frequencies at which other virtual memory addresses are accessed.
Claim 48
Dependent Claim 75 words
A virtual memory access thread profiling tool, comprising: a profile generator that generates a profile that indicates the frequencies at which virtual memory addresses are accessed by each thread; and a thread placement file generator for generating placement data based on said profile, wherein said placement data identifies at least one virtual address region for each thread, said at least one virtual address region representing virtual memory addresses accessed relatively frequently by the respective thread.
Claim 49
Dependent Claim 75 words
A virtual memory access thread profiling tool, comprising: a profile generator that generates a profile that indicates the frequencies at which virtual memory addresses are accessed by each thread; and a thread placement file generator for generating placement data based on said profile, wherein said placement data identifies at least one virtual address region for each thread, said at least one virtual address region representing virtual memory addresses accessed relatively frequently by the respective thread.
Claim 50
Dependent Claim 11 words
The system of claim 44, wherein said profile includes a histogram.
Claim 51
Dependent Claim 76 words
A computer program product comprising a computer usable medium having computer program logic recorded thereon for enabling a processor in a computer system to profile frequencies of accesses made to a virtual memory by a program thread, said computer program logic comprising: means for enabling the processor to run the program thread; and means for enabling the processor to generate a profile that indicates the frequencies at which virtual memory addresses are accessed by the thread.
Claim 52
Dependent Claim 76 words
A computer program product comprising a computer usable medium having computer program logic recorded thereon for enabling a processor in a computer system to profile frequencies of accesses made to a virtual memory by a program thread, said computer program logic comprising: means for enabling the processor to run the program thread; and means for enabling the processor to generate a profile that indicates the frequencies at which virtual memory addresses are accessed by the thread.
Claim 53
Dependent Claim 11 words
The system of claim 46, wherein said profile includes a histogram.
Claim 54
Independent Claim 33 words
A system comprising: a processor executing at least one program thread; and a profiling command for directing an operating system to profile frequencies of accesses made to a virtual memory by each thread.
Claim 55
Independent Claim 33 words
A system comprising: a processor executing at least one program thread; and a profiling command for directing an operating system to profile frequencies of accesses made to a virtual memory by each thread.
Claim 56
Dependent Claim 20 words
The system of claim 48, wherein said profile indicates the respective frequency at which each virtual memory address is accessed.
Claim 57
Dependent Claim 31 words
The system of claim 48, wherein said profile indicates the frequency at which a virtual memory address is accessed relative to the frequencies at which other virtual memory addresses are accessed.

References Cited (Backward Citations)

US5247676A Cited
US5345588A Cited
US5261097A Cited
US5430850A Cited
US5560029A Cited
US5590326A Cited
US5692193A Cited
US5717926A Cited
US5752031A Cited
US5745703A Cited

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag