US20020078308A1 - Symmetric multi-processing system - Google Patents
Symmetric multi-processing system Download PDFInfo
- Publication number
- US20020078308A1 US20020078308A1 US09/736,585 US73658500A US2002078308A1 US 20020078308 A1 US20020078308 A1 US 20020078308A1 US 73658500 A US73658500 A US 73658500A US 2002078308 A1 US2002078308 A1 US 2002078308A1
- Authority
- US
- United States
- Prior art keywords
- processing unit
- memory access
- direct memory
- tlb
- range
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/682—Multiprocessor TLB consistency
Definitions
- the present invention relates to the field of Symmetric Multi-Processing (SMP) systems, and more particularly to an SMP system where attached processing units have restricted access to a shared memory without being structurally configured with an address translation mechanism.
- SMP Symmetric Multi-Processing
- SMP Symmetric Multi-Processing
- SMP Symmetric Multi-Processing
- SMP computer architectures are known in the art as overcoming the limitations of single or uni-processors in terms of processing speed and transaction throughput, among other things.
- SMP systems are generally “shared memory” systems, characterized in that multiple processing elements on a bus, or a plurality of busses, share a single global memory. In shared memory multiprocessors, all memory is uniformly accessible to each processing element, which simplifies the task of dynamic load distribution.
- Processing of complex tasks can be distributed among various processing elements in the multiprocessor system while data used in the processing is substantially equally available to each of the processing elements undertaking any portion of the complex task.
- programmers writing code for typical shared memory SMP systems do not need to be concerned with issues of data partitioning, as each of the processing elements has access to and shares the same, consistent global memory SMP systems typically run multiple processes or threads at a time where each process requires some amount of physical memory, i.e., a block of physical memory, in the shared memory. Since the amount of physical memory in the shared memory is limited, it must be allocated among the different processing elements.
- physical memory may be divided into pages where the pages are allocated to different processing elements. Physical memory that is so allocated may be referred to as mapped memory.
- Each process that may be allocated a block of physical memory may further be provided with a set of translations for translating virtual addresses to assigned physical addresses of the allocated block.
- Each set of translations may be stored in what is commonly referred to as a page table.
- Page tables are typically stored in the shared memory.
- Page tables are commonly indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address. If a virtual page is stored in the shared memory, then a corresponding PTE may include a physical address of the page. The PTE for a page may be identified by looking at an index that corresponds to the virtual page address
- a page table that is associated with the process is searched for the requested virtual memory address.
- the process may access the desired page using the physical address in the PTE that is associated with the virtual address.
- Each processing element in the SMP computer architecture may comprise a processing unit.
- the processing unit may comprise a central processing unit, e.g., Power PCTM, and an address translation mechanism such as a Translation Lookaside Buffer (TLB).
- TLB may be used for storing a number of most recently used virtual memory address-to-physical memory address translations, i.e., PTE translations.
- PTE Translation Lookaside Buffer
- a processing unit retrieves a translation from the PTE in the shared memory, it typically stores the translation in an associated TLB.
- the processing unit may retrieve a translation from the TLB faster than from an associated cache or the shared memory.
- Each processing element in the SMP computer architecture may further comprise a plurality of Attached Processing Units (APU's).
- APU Attached Processing Units
- each APU may be structured to perform a particular task, e.g., image compression, image decompression, transformation, clipping, lighting, texturing, depth cueing, transparency processing, set-up, screen space rendering of graphics primitives, by the processing unit. That is, an APU may be configured to perform a particular operation, e.g., floating point calculation, vector calculation. For example, an APU may be a floating point unit configured to execute floating point operations on source operands.
- APU's do not have to perform address translation, i.e., mapping virtual addresses to physical addresses.
- address translation mechanism e.g., TLB
- APU's in prior art SMP computer architectures may not access the shared memory because APU's are not structurally configured with an address translation mechanism, e.g., TLB.
- TLB address translation mechanism
- an SMP system comprising direct memory access controllers with an address translation mechanism, e.g., Translation Lookaside Buffer (TLB).
- Attached processing units may then be configured to issue a request to access the shared memory to its associated direct memory access controller. Since the direct memory access controllers comprise an address translation mechanism, attached processing units may request to access the shared memory specifying the range of addresses to be accessed as virtual addresses instead of physical addresses thereby foregoing the need of an address translation mechanism.
- TLB Translation Lookaside Buffer
- a system comprises a shared memory.
- the system further comprises a plurality of processing elements coupled to the shared memory.
- Each of the plurality of processing elements comprises a processing unit, a direct memory access controller and a plurality of attached processing units.
- Each processing unit comprises an address translation mechanism.
- Each direct memory access controller comprises an address translation mechanism thereby enabling each of the plurality of attached processing units to access the shared memory in a restricted manner without an address translation mechanism.
- Each of the plurality of attached processing units is configured to issue a request to an associated direct memory access controller to access the shared memory where the request specifies a range of addresses to be accessed as virtual addresses.
- the associated direct memory access controller is configured to translate the range of virtual addresses to be accessed into an associated range of physical addresses.
- a method for maintaining TLB consistency in a system comprising a shared memory and a plurality of processing elements coupled to the shared memory where each of the plurality of processing elements comprises a processing unit, a direct memory access controller and a plurality of attached processing units.
- Each of the plurality of processing units and plurality of direct memory access controllers comprises a TLB.
- the method comprises the step of invalidating a copy of a page table entry that was updated in a particular TLB by a particular processing unit.
- the method further comprises issuing a TLB invalidated entry instruction by the particular processing unit.
- the TLB invalidated entry may be broadcasted to each of the plurality of processing units other than the particular processing unit by the particular processing unit.
- the method further comprises determining whether to invalidate any entries in the TLB's associated with each of the plurality of processing units other than the particular processing unit and in the TLB's associated with each of the plurality of direct memory access controllers other than the direct memory access controller associated with the particular processing unit.
- the method further comprises issuing a synchronization instruction to each of the plurality of processing units other than the particular processing unit by the particular processing unit.
- FIG. 1 illustrates a symmetric multi-processing system configured in accordance with the present invention
- FIG. 2 illustrates an embodiment of processing elements in a symmetric multi-processing system configured in accordance with the present invention
- FIG. 3 illustrates an embodiment of a processing unit in a symmetric multi-processing system configured in accordance with the present invention
- FIG. 4 illustrates an embodiment of a direct memory access controller in a symmetric multi-processing system configured in accordance with the present invention
- FIG. 5 is a flowchart of a method for attached processing units to access the shared memory without an address translation mechanism
- FIG. 6 is a flowchart of a method for maintaining TLB consistency.
- the present invention comprises a system and method for attached processing units accessing a shared memory in an SMP system.
- a system comprises a shared memory.
- the system further comprises a plurality of processing elements coupled to the shared memory.
- Each of the plurality of processing elements comprises a processing unit, a direct memory access controller and a plurality of attached processing units.
- Each direct memory access controller comprises an address translation mechanism thereby enabling each associated attached processing unit to access the shared memory in a restricted manner without an address translation mechanism.
- Each attached processing unit is configured to issue a request to an associated direct memory access controller to access the shared memory where the request specifies a range of addresses to be accessed as virtual addresses.
- a method for maintaining TLB consistency in an SMP system comprises the step of invalidating a copy of a page table entry that was updated in a particular TLB by a particular processing unit.
- the method further comprises issuing a TLB invalidated entry instruction by the particular processing unit.
- the TLB invalidated entry may be broadcasted to each of the plurality of processing units other than the particular processing unit by the particular processing unit.
- the method further comprises determining whether to invalidate any entries in the TLB's associated with each of the plurality of processing units other than the particular processing unit and in the TLB's associated with each of the plurality of direct memory access controllers other than the direct memory access controller associated with the particular processing unit.
- the method further comprises issuing a synchronization instruction to each of the plurality of processing units other than the particular processing unit by the particular processing unit.
- FIG. 1 Symmetric Multi-Processing System
- FIG. 1 illustrates an embodiment of the present invention of a Symmetric Multi-Processing (SMP) system 100 .
- Symmetric Multi-Processing system 100 comprises a shared memory 10 , e.g., Dynamic Random Access Memory (DRAM), Static RAM (SRAM), coupled to a plurality of processing elements 20 A-D.
- Processing elements 20 A-D may collectively or individually be referred to as processing elements 20 or processing element 20 , respectively.
- a more detailed description of processing elements 20 are provided below.
- Shared memory 10 is further coupled to a system Input/Output (I/O) controller 50 .
- I/O Input/Output
- System I/O Controller 50 is coupled to one or more peripheral devices 60 , e.g., SCSI host bus adapter, LAN adapter, graphics adapter, audio peripheral device, which may be coupled to a display 40 .
- System I/O Controller 50 may further be coupled to expansion memory 70 .
- Expansion memory 70 may be configured to provide a fast file system. It is noted that system 100 may comprise any number of processing elements 20 and peripheral devices 60 and that FIG. 1 is used for illustrative purposes only.
- FIG. 2 Providesing Elements
- FIG. 2 illustrates an embodiment of the present invention of processing elements 20 A-D.
- Processing element 20 A comprises a processing unit 210 A, a Direct Memory Address (DMA) controller 220 B and a plurality of Attached Processing Units (APU's) 230 A-E.
- Processing element 20 B comprises a processing unit 210 B, a DMA controller 220 B, and a plurality of APU's 230 F-J.
- Processing element 20 C comprises a processing unit 210 C, a DMA controller 220 C, and a plurality of APU's 230 K-O.
- Processing element 20 D comprises a processing unit 210 D, a DMA controller 220 D, and a plurality of APU's 230 P-T.
- Processing units 210 A-D may collectively or individually be referred to as Processing Units (PU's) 210 or Processing Unit (PU) 210 , respectively.
- DMA controllers 220 A-D may collectively or individually be referred to as DMA controllers 220 or DMA controller 220 , respectively.
- APU's 230 A-T may collectively or individually be referred to as APU's 230 or APU 230 , respectively. It is noted that processing elements 20 may comprise any number of APU's 230 .
- FIG. 3 Process
- FIG. 3 illustrates an embodiment of the present invention of a processing unit 210 comprising a central processing unit (CPU) 310 and a Translation Lookaside Buffer (TLB) 320 .
- a TLB may be used for storing a number of most recently used virtual memory address-to-physical memory address translations, i.e., PTE translations.
- CPU 310 may be configured to quickly search and retrieve address translations form TLB 320 .
- each processing unit 210 of processing elements 20 may comprise a TLB 320 .
- SMP system 100 may comprise a plurality of processing units 210
- SMP system 100 may comprise a plurality of TLB's 320 .
- Processing unit 210 may request to read from or write to shared memory 10 by initiating a Direct Memory Access (DMA) transfer to have the associated DMA controller 220 , e.g., DMA controller 220 A, issue a DMA request to shared memory 10 . That is, blocks of information may be exchanged between a processing unit 210 , e.g., processing unit 210 A, and shared memory 10 by issuing DMA requests, i.e., requests to read from or write to shared memory 10 , to the associated DMA controller 220 , e.g., DMA controller 220 A.
- DMA Direct Memory Access
- processing unit 210 may request blocks of information to be exchanged between an associated APU 230 , e.g., APU 230 A, and shared memory 10 by issuing DMA requests to the associated DMA controller 220 , e.g., DMA controller 220 A.
- a method for processing units 210 acquiring the right to access shared memory 10 is described in U.S. patent application Ser. No. ______, filed on ______, entitled “Token Based DMA,” Attorney Docket No. AUS9-2000-0794-US1, which is hereby incorporated in its entirety by reference.
- processing unit 210 Prior to processing unit 210 , e.g., processing unit 210 A, issuing a DMA request to access shared memory 10 to the associated DMA controller 220 , e.g., DMA controller 220 A, processing unit 210 , e.g., processing unit 210 A, may translate the range of virtual addresses to be accessed. That is, processing unit 210 , e.g., processing unit 210 A, may translate the range of virtual addresses to be read from or written to in shared memory to physical addresses.
- CPU 310 of processing unit 210 may be configured to first search through the associated TLB 320 for the translation, i.e., virtual memory address-to-physical memory address translation, prior to issuing a DMA request to the associated DMA controller 220 , e.g., DMA controller 220 A. If the translation exists in the associated TLB 320 , processing unit 210 , e.g., processing unit 210 A, retrieves the physical address from TLB 320 .
- processing unit 210 When processing unit 210 , e.g., processing unit 210 A, issues a DMA request to access shared memory 10 to the associated DMA controller 220 , e.g., DMA controller 220 A, processing unit 210 , e.g., processing unit 210 A, specifies the range of physical addresses to be accessed.
- processing unit 210 searches through a page table (not shown) in shared memory 10 .
- page tables may be indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address.
- the PTE may include a physical address associated with a particular virtual address.
- Processing unit 210 e.g., processing unit 210 A, may then identify the PTE, i.e., physical memory address associated with the virtual memory address, by identifying the corresponding PTE through an index that corresponds to the virtual address.
- processing unit 210 Upon translating the range of virtual addresses to be accessed, processing unit 210 , e.g., processing unit 210 A, issues a DMA request to access shared memory 10 to the associated DMA controller 220 , e.g., DMA controller 220 A, specifying the range of physical addresses to be accessed.
- DMA controller 220 e.g., DMA controller 220 A
- the physical addresses to be accessed are “pinned” such as by the operating system.
- Physical addresses that are pinned may not be reassigned such as for a page fault. That is, the virtual address-to-physical address mapping for the physical addresses to be accessed, e.g., a page in shared memory 10 , remains constant as long the physical addresses to be accessed, e.g., a page in shared memory 10 , are pinned.
- a pinned page has effectively been removed from the virtual and physical memory spaces of all processes other than the process that pinned it.
- FIG. 4 Direct Memory Access Controller
- FIG. 4 illustrates an embodiment of the present invention of a direct memory access controller 220 .
- Direct memory access controller 220 may comprise a manager 420 and a TLB 410 Manager 420 may be configured to search through TLB 410 for address translations, i.e., virtual memory address-to-physical memory address translations.
- a TLB may be used for storing a number of most recently used virtual memory address-to-physical memory address translations, i.e., PTE translations
- each direct memory access controller 220 of processing elements 20 may comprise a TLB 410 . Since SMP system 100 may comprise a plurality of DMA controllers 220 , SMP system 100 may comprise a plurality of TLB's 410 .
- FIG. 4 illustrates a direct memory access controller 220 , e.g., DMA controller 220 A, comprising a TLB 410 that allows the associated APU's 230 , e.g., APU 230 A-E, to access shared memory 10 without an address translation mechanism, e.g., TLB.
- DMA controller 220 A e.g., DMA controller 220 A
- APU's 230 may be configured to request to read from or write to shared memory 10 by initiating a Direct Memory Access (DMA) transfer to have the associated DMA controller 220 , e.g., DMA controller 220 A, issue a DMA request to shared memory 10 . That is, blocks of information may be exchanged between an APU 230 , e.g., APU 230 A, and shared memory 10 by issuing DMA requests, i.e., requests to read from or write to shared memory 10 , to the associated DMA controller 220 , e.g., DMA controller 220 A.
- DMA Direct Memory Access
- APU 230 In the DMA request to shared memory 10 , APU 230 , e.g., APU 230 A, does not translate the range of virtual addresses to be accessed.
- APU 230 e.g., APU 230 A
- APU 230 e.g., APU 230 A
- the DMA controller 220 upon receiving the DMA request from the associated APU 230 , e.g., APU 230 A, translates the range of virtual addresses to be accessed by the associated APU 230 , e.g., APU 230 A. That is, DMA controller 220 , e.g., DMA controller 210 A, may translate the range of virtual addresses to be read from or written to in shared memory 10 by the associated APU 230 , e.g., APU 230 A, to physical addresses.
- manager 420 of DMA controller 220 e.g., DMA controller 220 A, maybe configured to search through the associated TLB 410 for the translation, i.e., virtual memory address-to-physical memory address translation, of the virtual addresses to be accessed in shared memory 10 .
- manager 420 of DMA controller 220 e.g., DMA controller 220 A, may retrieve the physical address from TLB 410 .
- DMA controller 220 e.g., DMA controller 220 A, subsequently specifies the range of physical addresses to be accessed by the associated APU 230 , e.g., APU 230 A, to shared memory 10 .
- manager 420 of DMA controller 220 searches through a page table (not shown) in shared memory 10 .
- page tables may be indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address.
- PTE may include a physical address associated with a particular virtual address.
- Manager 420 of DMA controller 220 e.g., DMA controller 220 A, may then identify the PTE, i.e., physical memory address associated with the virtual memory address, by identifying the corresponding PTE through an index that corresponds to the virtual address.
- DMA controller 220 Upon translating the range of virtual addresses to be accessed, DMA controller 220 , e.g., DMA controller 220 A, specifies the range of physical addresses to be accessed by the associated APU 230 , e.g., APU 230 A, to shared memory 10 .
- the physical addresses to be accessed are “pinned” such as by the operating system.
- Physical addresses that are pinned may not be reassigned such as for a page fault. That is, the virtual address-to-physical address mapping for the physical addresses to be accessed, e.g., a page in shared memory 10 , remains constant as long the physical addresses to be accessed, e.g., a page in shared memory 10 , are pinned.
- a pinned page has effectively been removed from the virtual and physical memory spaces of all processes other than the process that pinned it.
- FIG. 5 Method for Attached Processing Units Accessing a Shared Memory
- FIG. 5 illustrates a flowchart of one embodiment of the present invention of a method 500 for attached processing units 230 accessing shared memory 10 .
- attached processing units APU's
- FIG. 5 illustrates a method 500 for APU's 230 to access shared memory 10 without an address translation mechanism, e.g., TLB.
- APU's 230 may be configured to issue a request, i.e., DMA request, to read from or write to shared memory 10 to the associated DMA controller 220 , e.g., DMA controller 220 A.
- DMA request a request, i.e., DMA request, to read from or write to shared memory 10 to the associated DMA controller 220 , e.g., DMA controller 220 A.
- APU 230 e.g, APU 230 A, does not translate the range of virtual addresses to be accessed.
- APU 230 e.g., APU 230 A
- APU 230 e.g., APU 230 A
- APU 230 specifies the range of addresses to be accessed as virtual addresses and not as physical addresses.
- APU 230 does not require an address translation mechanism, e.g., TLB.
- step 520 the DMA controller 220 , e.g., DMA controller 220 A, upon receiving the DMA request from the associated APU 230 , e.g., APU 230 A, translates the range of virtual addresses to be accessed by the associated APU 230 , e.g., APU 230 A. That is, DMA controller 220 , e.g., DMA controller 210 A, may translate the range of virtual addresses to be read from or written to in shared memory 10 by the associated APU 230 , e.g., APU 230 A, to physical addresses.
- manager 420 of DMA controller 220 may be configured to search through the associated TLB 410 for the translation, i.e., virtual memory address-to-physical memory address translation, of the virtual addresses to be accessed in shared memory 10 .
- manager 420 of DMA controller 220 e.g., DMA controller 220 A
- DMA controller 220 e.g., DMA controller 220 A
- manager 420 of DMA controller 220 searches through a page table (not shown) in shared memory 10 .
- page tables may be indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address.
- PTE may include a physical address associated with a particular virtual address.
- Manager 420 of DMA controller 220 e.g., DMA controller 220 A, may then identify the PTE, i.e., physical memory address associated with the virtual memory address, by identifying the corresponding PTE through an index that corresponds to the virtual address.
- DMA controller 220 Upon translating the range of virtual addresses to be accessed, DMA controller 220 , e.g., DMA controller 220 A, specifies the range of physical addresses to be accessed by the associated APU 230 , e.g., APU 230 A, to shared memory 10 .
- the physical addresses to be accessed are “pinned” such as by the operating system.
- Physical addresses that are pinned may not be reassigned such as for a page fault. That is, the virtual address-to-physical address mapping for the physical addresses to be accessed, e.g., a page in shared memory 10 , remains constant as long the physical addresses to be accessed, e.g., a page in shared memory 10 , are pinned.
- a pinned page has effectively been removed from the virtual and physical memory spaces of all processes other than the process that pinned it.
- FIG. 6 Method for Maintaining TLB Consistency
- FIG. 6 illustrates a flowchart of one embodiment of the present invention of a method 600 for maintaining TLB consistency by processing units 210 where the physical addresses to be accessed, e.g., a page in shared memory 10 , are not “pinned”.
- a problem that confronts TLB's, e.g., TLB 320 , TLB 410 is maintaining consistency of data that is stored in more than one location. For example, a PTE may be retrieved from shared memory 10 and stored in one or more TLB's 320 of processing units 210 and/or in one or more TLB's 410 of DMA controllers 220 . Later, an operating system may change or invalidate the PTE.
- data that is stored in the mapped physical memory location may be moved to another physical location.
- the PTE is no longer valid because it stores the physical address of the data prior to the movement.
- the operating system updates the PTE to reflect the new physical location of the data in the page table.
- the copy of the PTE that is stored in one or more TLB's 320 of processing units 210 and/or in one or more TLB's 410 of DMA controllers 220 is no longer valid. Subsequently, the TLB entries associated with the data moved must be invalidated.
- Method 600 is a method for maintaining TLB consistency of all TLB's, e.g., TLB's 320 of processing units 210 , TLB's 410 of DMA controllers 220 , by processing units 210 .
- step 610 the CPU 310 of processing unit 210 , e.g., processing unit 210 A, invalidates the copy of the PTE, i.e., the PTE that was updated, that was cached in the entry of its TLB 320 and/or in the entry of the TLB 410 of its associated DMA controller 220 , e.g, DMA controller 220 A.
- step 620 the processing unit 210 , e.g., processing unit 210 A, that invalidated the copy of the PTE, i.e., the PTE that was updated, in step 610 , issues a TLB invalidated entry instruction for each virtual address for which the entry should be invalidated in all the TLB's, e.g., TLB 320 , TLB 410 , that comprises the entry for the invalidated mapping.
- TLB 320 e.g., TLB 320 , TLB 410
- the TLB invalidated entry instruction may be broadcast from processing unit 210 , e.g., processing unit 210 A, that issued the TLB invalidated entry instruction instep 620 , to each otherprocessingunit 210 , e.g., processing units 210 B-D, in SMP system 100 .
- CPU's 310 of the processing units 210 e.g., processing units 210 B-D, other than the issuing processing unit 210 , e.g., processing unit 210 A, search through the entries of its associated TLB's 320 as well as the entries of the TLB's 410 of its associated DMA controllers 220 , e.g., DMA controllers 220 B-D, to determine if any of its entries are invalid, i.e., determine if any of its entries match the entry invalidated by the issuing processing unit 210 , e.g., processing unit 210 A.
- CPU 310 of each of the other processing units 210 may search through the entries of its associated TLB's 320 to determine if any of its entries are invalid, i.e., determine if any of its entries match the entry invalidated by the issuing processing unit 210 , e.g., processing unit 210 A.
- Manager 420 in each of the DMA controllers 220 e.g., DMA controllers 220 B-D, associated with the processing units 210 , e.g., processing units 210 B-D, other than the issuing processing unit 210 , e.g., processing unit 210 A, may be configured to search through the entries of its associated TLB 410 to determine if any of its entries are invalid, i.e., determine if any of its entries match the entry invalidated by the issuing processing unit 210 , e.g., processing unit 210 A.
- CPU 310 of each of the processing units 210 may be configured to invalidate any invalid entries in its associated TLB 320 as well as the entries of the TLB 410 of its associated DMA controller 220 , e.g., DMA controller 220 B.
- CPU 310 of each of the processing units 210 e.g., processing units 210 B-D, other than the issuing processing unit 210 , e.g., processing unit 210 A, may be configured to invalidate any invalid entries in its associated TLB 320 .
- Manager 420 in each of the DMA controllers 220 e.g., DMA controllers 220 B-D, associated with the processing units 210 , e.g., processing units 210 B-D, other than the issuing processing unit 210 , e.g., processing unit 210 A, may be configured to invalidate any invalid entries in the TLB 410 of its associated DMA controller 220 , e.g., DMA controller 220 B.
- CPU 310 of each of the processing units 210 may be configured to issue an acknowledgment to the respective issuing processing unit 210 , e.g., processing unit 210 A, that CPU 310 invalidated any invalid entries in its associated TLB 320 as well as the entries of the TLB 410 of its associated DMA controller 220 , e.g., DMA controller 220 B.
- CPU 310 of each of the processing units 210 may be configured to issue an acknowledgment to the respective issuing processing unit 210 , e.g., processing unit 210 A, that CPU 310 invalidated any invalid entries in its associated TLB 320 .
- Manager 420 in each of the DMA controllers 220 e.g., DMA controllers 220 B-D, associated with the processing units 210 , e.g., processing units 210 B-D, other than the issuing processing unit 210 , e.g., processing unit 210 A, may be configured to issue an acknowledgment to the respective issuing processing unit 210 , e.g., processing unit 210 A, that manager 420 invalidated any invalid entries in its associated TLB 410 .
- the TLB invalidated entry instruction or instructions if multiple TLB entries are invalidated may be followed in the instruction sequence of the issuing processing unit 210 , e.g., processing unit 210 A, by one or more synchronization instructions to each of the other processing units 210 , e.g., processing units 210 B-D.
- the one or more synchronization instructions may guarantee that the TLB entry invalidation has been performed by all the other processing units 210 , e.g., processing units 210 B-D.
- steps 610 - 670 of method 600 may be executed in any order and that the order presented in the discussion of FIG. 6 is used for illustrative purposes only. It is further noted that the page table (not shown) in shared memory 10 may be locked prior to the execution of method 600 and unlocked after the execution of method 600 by the operating system.
Abstract
Description
- The present invention is related to the following U.S. Patent Applications which are incorporated herein by reference:
- Ser. No. ______ (Attorney Docket No. AUS9-2000-0794-US1) entitled “Token Based DMA” filed ______.
- Ser. No. ______ (Attorney Docket No. AUS9-2000-0795-US1) entitled “Reduction of Interrupts in Remote Procedure Calls” filed ______.
- The present invention relates to the field of Symmetric Multi-Processing (SMP) systems, and more particularly to an SMP system where attached processing units have restricted access to a shared memory without being structurally configured with an address translation mechanism.
- One widely accepted system architecture for personal computers has been the Symmetric Multi-Processing (SMP) architecture. Symmetric Multi-Processing (SMP) computer architectures are known in the art as overcoming the limitations of single or uni-processors in terms of processing speed and transaction throughput, among other things. Typically, commercially available SMP systems are generally “shared memory” systems, characterized in that multiple processing elements on a bus, or a plurality of busses, share a single global memory. In shared memory multiprocessors, all memory is uniformly accessible to each processing element, which simplifies the task of dynamic load distribution. Processing of complex tasks can be distributed among various processing elements in the multiprocessor system while data used in the processing is substantially equally available to each of the processing elements undertaking any portion of the complex task. Similarly, programmers writing code for typical shared memory SMP systems do not need to be concerned with issues of data partitioning, as each of the processing elements has access to and shares the same, consistent global memory SMP systems typically run multiple processes or threads at a time where each process requires some amount of physical memory, i.e., a block of physical memory, in the shared memory. Since the amount of physical memory in the shared memory is limited, it must be allocated among the different processing elements. Typically, physical memory may be divided into pages where the pages are allocated to different processing elements. Physical memory that is so allocated may be referred to as mapped memory.
- Each process that may be allocated a block of physical memory may further be provided with a set of translations for translating virtual addresses to assigned physical addresses of the allocated block. Each set of translations may be stored in what is commonly referred to as a page table. Page tables are typically stored in the shared memory.
- Page tables are commonly indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address. If a virtual page is stored in the shared memory, then a corresponding PTE may include a physical address of the page. The PTE for a page may be identified by looking at an index that corresponds to the virtual page address
- When a process requests access to a particular virtual memory address, a page table that is associated with the process is searched for the requested virtual memory address. When the virtual address is found, the process may access the desired page using the physical address in the PTE that is associated with the virtual address.
- Each processing element in the SMP computer architecture may comprise a processing unit. The processing unit may comprise a central processing unit, e.g., Power PC™, and an address translation mechanism such as a Translation Lookaside Buffer (TLB). A TLB may be used for storing a number of most recently used virtual memory address-to-physical memory address translations, i.e., PTE translations. When a processing unit retrieves a translation from the PTE in the shared memory, it typically stores the translation in an associated TLB. The processing unit may retrieve a translation from the TLB faster than from an associated cache or the shared memory.
- Each processing element in the SMP computer architecture may further comprise a plurality of Attached Processing Units (APU's). In prior art SMP architectures, each APU may be structured to perform a particular task, e.g., image compression, image decompression, transformation, clipping, lighting, texturing, depth cueing, transparency processing, set-up, screen space rendering of graphics primitives, by the processing unit. That is, an APU may be configured to perform a particular operation, e.g., floating point calculation, vector calculation. For example, an APU may be a floating point unit configured to execute floating point operations on source operands. One of the advantages of an APU structurally configured to perform a particular operation is that the APU's do not have to perform address translation, i.e., mapping virtual addresses to physical addresses. By not performing address translation, APU's do not have to be structurally configured with an address translation mechanism, e.g., TLB, and thereby reduce the complexity of the APU's.
- Unfortunately, APU's in prior art SMP computer architectures may not access the shared memory because APU's are not structurally configured with an address translation mechanism, e.g., TLB.
- It would therefore be desirable to develop an SMP computer architecture where the APU's have restricted access to the shared memory without being structurally configured with an address translation mechanism. It would further be desirable to develop an SMP computer architecture where the APU's have more capabilities than prior art APU's, i.e., structured to perform a particular task. It would further be desirable to develop an SMP system where Translation Lookaside Buffer (TLB) consistency may be maintained by the processing units only.
- The problems outlined above may at least in part be solved in some embodiments by an SMP system comprising direct memory access controllers with an address translation mechanism, e.g., Translation Lookaside Buffer (TLB). Attached processing units may then be configured to issue a request to access the shared memory to its associated direct memory access controller. Since the direct memory access controllers comprise an address translation mechanism, attached processing units may request to access the shared memory specifying the range of addresses to be accessed as virtual addresses instead of physical addresses thereby foregoing the need of an address translation mechanism.
- In one embodiment, a system comprises a shared memory. The system further comprises a plurality of processing elements coupled to the shared memory. Each of the plurality of processing elements comprises a processing unit, a direct memory access controller and a plurality of attached processing units. Each processing unit comprises an address translation mechanism. Each direct memory access controller comprises an address translation mechanism thereby enabling each of the plurality of attached processing units to access the shared memory in a restricted manner without an address translation mechanism. Each of the plurality of attached processing units is configured to issue a request to an associated direct memory access controller to access the shared memory where the request specifies a range of addresses to be accessed as virtual addresses. The associated direct memory access controller is configured to translate the range of virtual addresses to be accessed into an associated range of physical addresses.
- In another embodiment of the present invention, a method for maintaining TLB consistency in a system comprising a shared memory and a plurality of processing elements coupled to the shared memory where each of the plurality of processing elements comprises a processing unit, a direct memory access controller and a plurality of attached processing units. Each of the plurality of processing units and plurality of direct memory access controllers comprises a TLB. The method comprises the step of invalidating a copy of a page table entry that was updated in a particular TLB by a particular processing unit. The method further comprises issuing a TLB invalidated entry instruction by the particular processing unit. The TLB invalidated entry may be broadcasted to each of the plurality of processing units other than the particular processing unit by the particular processing unit. The method further comprises determining whether to invalidate any entries in the TLB's associated with each of the plurality of processing units other than the particular processing unit and in the TLB's associated with each of the plurality of direct memory access controllers other than the direct memory access controller associated with the particular processing unit. The method further comprises issuing a synchronization instruction to each of the plurality of processing units other than the particular processing unit by the particular processing unit.
- The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention.
- A better understanding of the present invention can be obtained when the following detailed description is considered in conjunction with the following drawings, in which:
- FIG. 1 illustrates a symmetric multi-processing system configured in accordance with the present invention;
- FIG. 2 illustrates an embodiment of processing elements in a symmetric multi-processing system configured in accordance with the present invention;
- FIG. 3 illustrates an embodiment of a processing unit in a symmetric multi-processing system configured in accordance with the present invention;
- FIG. 4 illustrates an embodiment of a direct memory access controller in a symmetric multi-processing system configured in accordance with the present invention;
- FIG. 5 is a flowchart of a method for attached processing units to access the shared memory without an address translation mechanism; and
- FIG. 6 is a flowchart of a method for maintaining TLB consistency.
- The present invention comprises a system and method for attached processing units accessing a shared memory in an SMP system. In one embodiment of the present invention, a system comprises a shared memory. The system further comprises a plurality of processing elements coupled to the shared memory. Each of the plurality of processing elements comprises a processing unit, a direct memory access controller and a plurality of attached processing units. Each direct memory access controller comprises an address translation mechanism thereby enabling each associated attached processing unit to access the shared memory in a restricted manner without an address translation mechanism. Each attached processing unit is configured to issue a request to an associated direct memory access controller to access the shared memory where the request specifies a range of addresses to be accessed as virtual addresses. The associated direct memory access controller is configured to translate the range of virtual addresses to be accessed into an associated range of physical addresses. In another embodiment of the present invention, a method for maintaining TLB consistency in an SMP system, where each of the plurality of processing units and plurality of direct memory access controllers comprises a TLB, comprises the step of invalidating a copy of a page table entry that was updated in a particular TLB by a particular processing unit. The method further comprises issuing a TLB invalidated entry instruction by the particular processing unit. The TLB invalidated entry may be broadcasted to each of the plurality of processing units other than the particular processing unit by the particular processing unit. The method further comprises determining whether to invalidate any entries in the TLB's associated with each of the plurality of processing units other than the particular processing unit and in the TLB's associated with each of the plurality of direct memory access controllers other than the direct memory access controller associated with the particular processing unit. The method further comprises issuing a synchronization instruction to each of the plurality of processing units other than the particular processing unit by the particular processing unit.
- FIG. 1—Symmetric Multi-Processing System
- FIG. 1 illustrates an embodiment of the present invention of a Symmetric Multi-Processing (SMP)
system 100.Symmetric Multi-Processing system 100 comprises a sharedmemory 10, e.g., Dynamic Random Access Memory (DRAM), Static RAM (SRAM), coupled to a plurality ofprocessing elements 20A-D. Processing elements 20A-D may collectively or individually be referred to as processing elements 20 or processing element 20, respectively. A more detailed description of processing elements 20 are provided below. Sharedmemory 10 is further coupled to a system Input/Output (I/O)controller 50. System I/O Controller 50 is coupled to one or moreperipheral devices 60, e.g., SCSI host bus adapter, LAN adapter, graphics adapter, audio peripheral device, which may be coupled to adisplay 40. System I/O Controller 50 may further be coupled toexpansion memory 70.Expansion memory 70 may be configured to provide a fast file system. It is noted thatsystem 100 may comprise any number of processing elements 20 andperipheral devices 60 and that FIG. 1 is used for illustrative purposes only. - FIG. 2—Processing Elements
- FIG. 2 illustrates an embodiment of the present invention of
processing elements 20A-D. Processing element 20A comprises aprocessing unit 210A, a Direct Memory Address (DMA)controller 220B and a plurality of Attached Processing Units (APU's) 230 A-E.Processing element 20B comprises aprocessing unit 210B, aDMA controller 220B, and a plurality of APU's 230F-J. Processing element 20C comprises aprocessing unit 210C, aDMA controller 220C, and a plurality of APU's 230K-O. Processing element 20D comprises aprocessing unit 210D, aDMA controller 220D, and a plurality of APU's 230P-T. Processing units 210A-D may collectively or individually be referred to as Processing Units (PU's) 210 or Processing Unit (PU) 210, respectively.DMA controllers 220A-D may collectively or individually be referred to asDMA controllers 220 orDMA controller 220, respectively. APU's 230A-T may collectively or individually be referred to as APU's 230 or APU 230, respectively. It is noted that processing elements 20 may comprise any number of APU's 230. - FIG. 3—Processing Unit
- FIG. 3 illustrates an embodiment of the present invention of a
processing unit 210 comprising a central processing unit (CPU) 310 and a Translation Lookaside Buffer (TLB) 320. As stated in the Background Information section, a TLB may be used for storing a number of most recently used virtual memory address-to-physical memory address translations, i.e., PTE translations.CPU 310 may be configured to quickly search and retrieve address translations formTLB 320. It is noted that eachprocessing unit 210 of processing elements 20 may comprise aTLB 320. SinceSMP system 100 may comprise a plurality ofprocessing units 210,SMP system 100 may comprise a plurality of TLB's 320. -
Processing unit 210, e.g., processingunit 210A, may request to read from or write to sharedmemory 10 by initiating a Direct Memory Access (DMA) transfer to have the associatedDMA controller 220, e.g.,DMA controller 220A, issue a DMA request to sharedmemory 10. That is, blocks of information may be exchanged between aprocessing unit 210, e.g., processingunit 210A, and sharedmemory 10 by issuing DMA requests, i.e., requests to read from or write to sharedmemory 10, to the associatedDMA controller 220, e.g.,DMA controller 220A. It is also noted thatprocessing unit 210, e.g., processingunit 210A, may request blocks of information to be exchanged between an associated APU 230, e.g.,APU 230A, and sharedmemory 10 by issuing DMA requests to the associatedDMA controller 220, e.g.,DMA controller 220A. A method for processingunits 210 acquiring the right to access sharedmemory 10 is described in U.S. patent application Ser. No. ______, filed on ______, entitled “Token Based DMA,” Attorney Docket No. AUS9-2000-0794-US1, which is hereby incorporated in its entirety by reference. - Prior to
processing unit 210, e.g., processingunit 210A, issuing a DMA request to access sharedmemory 10 to the associatedDMA controller 220, e.g.,DMA controller 220A, processingunit 210, e.g., processingunit 210A, may translate the range of virtual addresses to be accessed. That is, processingunit 210, e.g., processingunit 210A, may translate the range of virtual addresses to be read from or written to in shared memory to physical addresses. In one embodiment,CPU 310 ofprocessing unit 210, e.g., processingunit 210A, may be configured to first search through the associatedTLB 320 for the translation, i.e., virtual memory address-to-physical memory address translation, prior to issuing a DMA request to the associatedDMA controller 220, e.g.,DMA controller 220A. If the translation exists in the associatedTLB 320, processingunit 210, e.g., processingunit 210A, retrieves the physical address fromTLB 320. When processingunit 210, e.g., processingunit 210A, issues a DMA request to access sharedmemory 10 to the associatedDMA controller 220, e.g.,DMA controller 220A, processingunit 210, e.g., processingunit 210A, specifies the range of physical addresses to be accessed. - If the translation does not exist in the associated
TLB 320, then processingunit 210, e.g., processingunit 210A, searches through a page table (not shown) in sharedmemory 10. As stated in the Background Information section, page tables may be indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address. The PTE may include a physical address associated with a particular virtual address.Processing unit 210, e.g., processingunit 210A, may then identify the PTE, i.e., physical memory address associated with the virtual memory address, by identifying the corresponding PTE through an index that corresponds to the virtual address. Upon translating the range of virtual addresses to be accessed, processingunit 210, e.g., processingunit 210A, issues a DMA request to access sharedmemory 10 to the associatedDMA controller 220, e.g.,DMA controller 220A, specifying the range of physical addresses to be accessed. - In one embodiment, the physical addresses to be accessed, e.g., a page in shared
memory 10, are “pinned” such as by the operating system. Physical addresses that are pinned may not be reassigned such as for a page fault. That is, the virtual address-to-physical address mapping for the physical addresses to be accessed, e.g., a page in sharedmemory 10, remains constant as long the physical addresses to be accessed, e.g., a page in sharedmemory 10, are pinned. A pinned page has effectively been removed from the virtual and physical memory spaces of all processes other than the process that pinned it. - FIG. 4—Direct Memory Access Controller
- FIG. 4 illustrates an embodiment of the present invention of a direct
memory access controller 220. Directmemory access controller 220 may comprise amanager 420 and aTLB 410Manager 420 may be configured to search throughTLB 410 for address translations, i.e., virtual memory address-to-physical memory address translations. As stated in the Background Information section, a TLB may be used for storing a number of most recently used virtual memory address-to-physical memory address translations, i.e., PTE translations It is noted that each directmemory access controller 220 of processing elements 20 may comprise aTLB 410. SinceSMP system 100 may comprise a plurality ofDMA controllers 220,SMP system 100 may comprise a plurality of TLB's 410. - As stated in the Background Information section, in prior art SMP computer architectures attached processing units (APU's) may not access the shared memory because the APU's were not structurally configured with an address translation mechanism, e.g., TLB. FIG. 4 illustrates a direct
memory access controller 220, e.g.,DMA controller 220A, comprising aTLB 410 that allows the associated APU's 230, e.g.,APU 230A-E, to access sharedmemory 10 without an address translation mechanism, e.g., TLB. - APU's230 may be configured to request to read from or write to shared
memory 10 by initiating a Direct Memory Access (DMA) transfer to have the associatedDMA controller 220, e.g.,DMA controller 220A, issue a DMA request to sharedmemory 10. That is, blocks of information may be exchanged between an APU 230, e.g.,APU 230A, and sharedmemory 10 by issuing DMA requests, i.e., requests to read from or write to sharedmemory 10, to the associatedDMA controller 220, e.g.,DMA controller 220A. In the DMA request to sharedmemory 10, APU 230, e.g.,APU 230A, does not translate the range of virtual addresses to be accessed. When APU 230, e.g.,APU 230A, issues a DMA request to access sharedmemory 10 to the associatedDMA controller 220, e.g.,DMA controller 220A, APU 230, e.g.,APU 230A, specifies the range of addresses to be accessed as virtual addresses and not as physical addresses. Therefore, APU 230, e.g.,APU 230A, does not require an address translation mechanism, e.g., TLB. - The
DMA controller 220, e.g.,DMA controller 220A, upon receiving the DMA request from the associated APU 230, e.g.,APU 230A, translates the range of virtual addresses to be accessed by the associated APU 230, e.g.,APU 230A. That is,DMA controller 220, e.g.,DMA controller 210A, may translate the range of virtual addresses to be read from or written to in sharedmemory 10 by the associated APU 230, e.g.,APU 230A, to physical addresses. In one embodiment,manager 420 ofDMA controller 220, e.g.,DMA controller 220A, maybe configured to search through the associatedTLB 410 for the translation, i.e., virtual memory address-to-physical memory address translation, of the virtual addresses to be accessed in sharedmemory 10. In one embodiment, if the translation exists in the associatedTLB 410,manager 420 ofDMA controller 220, e.g.,DMA controller 220A, may retrieve the physical address fromTLB 410.DMA controller 220, e.g.,DMA controller 220A, subsequently specifies the range of physical addresses to be accessed by the associated APU 230, e.g.,APU 230A, to sharedmemory 10. - If the translation does not exist in the associated
TLB 410, thenmanager 420 ofDMA controller 220, e.g.,DMA controller 220A, searches through a page table (not shown) in sharedmemory 10. As stated in the Background Information section, page tables may be indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address. The PTE may include a physical address associated with a particular virtual address.Manager 420 ofDMA controller 220, e.g.,DMA controller 220A, may then identify the PTE, i.e., physical memory address associated with the virtual memory address, by identifying the corresponding PTE through an index that corresponds to the virtual address. Upon translating the range of virtual addresses to be accessed,DMA controller 220, e.g.,DMA controller 220A, specifies the range of physical addresses to be accessed by the associated APU 230, e.g.,APU 230A, to sharedmemory 10. - In one embodiment, the physical addresses to be accessed, e.g., a page in shared
memory 10, are “pinned” such as by the operating system. Physical addresses that are pinned may not be reassigned such as for a page fault. That is, the virtual address-to-physical address mapping for the physical addresses to be accessed, e.g., a page in sharedmemory 10, remains constant as long the physical addresses to be accessed, e.g., a page in sharedmemory 10, are pinned. A pinned page has effectively been removed from the virtual and physical memory spaces of all processes other than the process that pinned it. - FIG. 5—Method for Attached Processing Units Accessing a Shared Memory
- FIG. 5 illustrates a flowchart of one embodiment of the present invention of a
method 500 for attached processing units 230 accessing sharedmemory 10. As stated in the Background Information section, in prior art SMP computer architectures attached processing units (APU's) may not access the shared memory because the APU's were not structurally configured with an address translation mechanism, e.g., TLB. FIG. 5 illustrates amethod 500 for APU's 230 to access sharedmemory 10 without an address translation mechanism, e.g., TLB. - In
step 510, APU's 230 may be configured to issue a request, i.e., DMA request, to read from or write to sharedmemory 10 to the associatedDMA controller 220, e.g.,DMA controller 220A. In the DMA request, APU 230, e.g,APU 230A, does not translate the range of virtual addresses to be accessed. That is, when APU 230, e.g.,APU 230A, issues a DMA request to access sharedmemory 10 to the associatedDMA controller 220, e.g.,DMA controller 220A, APU 230, e.g.,APU 230A, specifies the range of addresses to be accessed as virtual addresses and not as physical addresses. Subsequently, APU 230, e.g.,APU 230A, does not require an address translation mechanism, e.g., TLB. - In
step 520, theDMA controller 220, e.g.,DMA controller 220A, upon receiving the DMA request from the associated APU 230, e.g.,APU 230A, translates the range of virtual addresses to be accessed by the associated APU 230, e.g.,APU 230A. That is,DMA controller 220, e.g.,DMA controller 210A, may translate the range of virtual addresses to be read from or written to in sharedmemory 10 by the associated APU 230, e.g.,APU 230A, to physical addresses. In one embodiment,manager 420 ofDMA controller 220, e.g.,DMA controller 220A, may be configured to search through the associatedTLB 410 for the translation, i.e., virtual memory address-to-physical memory address translation, of the virtual addresses to be accessed in sharedmemory 10. In one embodiment, if the translation exists in the associatedTLB 410,manager 420 ofDMA controller 220, e.g.,DMA controller 220A, may retrieve the physical address fromTLB 410.DMA controller 220, e.g.,DMA controller 220A, subsequently specifies the range of physical addresses to be accessed by the associated APU 230, e.g.,APU 230A, to sharedmemory 10. - If the translation does not exist in the associated
TLB 410, thenmanager 420 ofDMA controller 220, e.g.,DMA controller 220A, searches through a page table (not shown) in sharedmemory 10. As stated in the Background Information section, page tables may be indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address. The PTE may include a physical address associated with a particular virtual address.Manager 420 ofDMA controller 220, e.g.,DMA controller 220A, may then identify the PTE, i.e., physical memory address associated with the virtual memory address, by identifying the corresponding PTE through an index that corresponds to the virtual address. Upon translating the range of virtual addresses to be accessed,DMA controller 220, e.g.,DMA controller 220A, specifies the range of physical addresses to be accessed by the associated APU 230, e.g.,APU 230A, to sharedmemory 10. - In one embodiment, the physical addresses to be accessed, e.g., a page in shared
memory 10, are “pinned” such as by the operating system. Physical addresses that are pinned may not be reassigned such as for a page fault. That is, the virtual address-to-physical address mapping for the physical addresses to be accessed, e.g., a page in sharedmemory 10, remains constant as long the physical addresses to be accessed, e.g., a page in sharedmemory 10, are pinned. A pinned page has effectively been removed from the virtual and physical memory spaces of all processes other than the process that pinned it. - FIG. 6—Method for Maintaining TLB Consistency
- FIG. 6 illustrates a flowchart of one embodiment of the present invention of a
method 600 for maintaining TLB consistency by processingunits 210 where the physical addresses to be accessed, e.g., a page in sharedmemory 10, are not “pinned”. A problem that confronts TLB's, e.g.,TLB 320,TLB 410, is maintaining consistency of data that is stored in more than one location. For example, a PTE may be retrieved from sharedmemory 10 and stored in one or more TLB's 320 of processingunits 210 and/or in one or more TLB's 410 ofDMA controllers 220. Later, an operating system may change or invalidate the PTE. For example, data that is stored in the mapped physical memory location may be moved to another physical location. As a result of the movement of data, the PTE is no longer valid because it stores the physical address of the data prior to the movement. Thus, the operating system updates the PTE to reflect the new physical location of the data in the page table. The copy of the PTE that is stored in one or more TLB's 320 of processingunits 210 and/or in one or more TLB's 410 ofDMA controllers 220 is no longer valid. Subsequently, the TLB entries associated with the data moved must be invalidated. The invalidation of a PTE cached in an entry of a TLB, e.g.,TLB 320,TLB 410, is complicated by the fact that eachprocessing unit 210 and eachDMA controller 220 has its own TLB.Method 600 is a method for maintaining TLB consistency of all TLB's, e.g., TLB's 320 of processingunits 210, TLB's 410 ofDMA controllers 220, by processingunits 210. - In
step 610, theCPU 310 ofprocessing unit 210, e.g., processingunit 210A, invalidates the copy of the PTE, i.e., the PTE that was updated, that was cached in the entry of itsTLB 320 and/or in the entry of theTLB 410 of its associatedDMA controller 220, e.g,DMA controller 220A. - In
step 620, theprocessing unit 210, e.g., processingunit 210A, that invalidated the copy of the PTE, i.e., the PTE that was updated, instep 610, issues a TLB invalidated entry instruction for each virtual address for which the entry should be invalidated in all the TLB's, e.g.,TLB 320,TLB 410, that comprises the entry for the invalidated mapping. - In
step 630, the TLB invalidated entry instruction may be broadcast from processingunit 210, e.g., processingunit 210A, that issued the TLB invalidatedentry instruction instep 620, to each otherprocessingunit210, e.g., processingunits 210B-D, inSMP system 100. - In
step 640, CPU's 310 of theprocessing units 210, e.g., processingunits 210B-D, other than the issuingprocessing unit 210, e.g., processingunit 210A, search through the entries of its associated TLB's 320 as well as the entries of the TLB's 410 of its associatedDMA controllers 220, e.g.,DMA controllers 220B-D, to determine if any of its entries are invalid, i.e., determine if any of its entries match the entry invalidated by the issuingprocessing unit 210, e.g., processingunit 210A. In another embodiment,CPU 310 of each of theother processing units 210, e.g., processingunits 210B-D, may search through the entries of its associated TLB's 320 to determine if any of its entries are invalid, i.e., determine if any of its entries match the entry invalidated by the issuingprocessing unit 210, e.g., processingunit 210A.Manager 420 in each of theDMA controllers 220, e.g.,DMA controllers 220B-D, associated with theprocessing units 210, e.g., processingunits 210B-D, other than the issuingprocessing unit 210, e.g., processingunit 210A, may be configured to search through the entries of its associatedTLB 410 to determine if any of its entries are invalid, i.e., determine if any of its entries match the entry invalidated by the issuingprocessing unit 210, e.g., processingunit 210A. - In
step 650,CPU 310 of each of theprocessing units 210, e.g., processingunits 210B-D, other than the issuingprocessing unit 210, e.g., processingunit 210A, may be configured to invalidate any invalid entries in its associatedTLB 320 as well as the entries of theTLB 410 of its associatedDMA controller 220, e.g.,DMA controller 220B. In another embodiment,CPU 310 of each of theprocessing units 210, e.g., processingunits 210B-D, other than the issuingprocessing unit 210, e.g., processingunit 210A, may be configured to invalidate any invalid entries in its associatedTLB 320.Manager 420 in each of theDMA controllers 220, e.g.,DMA controllers 220B-D, associated with theprocessing units 210, e.g., processingunits 210B-D, other than the issuingprocessing unit 210, e.g., processingunit 210A, may be configured to invalidate any invalid entries in theTLB 410 of its associatedDMA controller 220, e.g.,DMA controller 220B. - In
step 660,CPU 310 of each of theprocessing units 210, e.g., processingunits 210B-D, other than the issuingprocessing unit 210, e.g., processingunit 210A, may be configured to issue an acknowledgment to the respectiveissuing processing unit 210, e.g., processingunit 210A, thatCPU 310 invalidated any invalid entries in its associatedTLB 320 as well as the entries of theTLB 410 of its associatedDMA controller 220, e.g.,DMA controller 220B. In another embodiment,CPU 310 of each of theprocessing units 210, e.g., processingunits 210B-D, other than the issuingprocessing unit 210, e.g., processingunit 210A, may be configured to issue an acknowledgment to the respectiveissuing processing unit 210, e.g., processingunit 210A, thatCPU 310 invalidated any invalid entries in its associatedTLB 320.Manager 420 in each of theDMA controllers 220, e.g.,DMA controllers 220B-D, associated with theprocessing units 210, e.g., processingunits 210B-D, other than the issuingprocessing unit 210, e.g., processingunit 210A, may be configured to issue an acknowledgment to the respectiveissuing processing unit 210, e.g., processingunit 210A, thatmanager 420 invalidated any invalid entries in its associatedTLB 410. - In
step 670, the TLB invalidated entry instruction or instructions if multiple TLB entries are invalidated may be followed in the instruction sequence of the issuingprocessing unit 210, e.g., processingunit 210A, by one or more synchronization instructions to each of theother processing units 210, e.g., processingunits 210B-D. The one or more synchronization instructions may guarantee that the TLB entry invalidation has been performed by all theother processing units 210, e.g., processingunits 210B-D. - It is noted for clarity that the steps610-670 of
method 600 may be executed in any order and that the order presented in the discussion of FIG. 6 is used for illustrative purposes only. It is further noted that the page table (not shown) in sharedmemory 10 may be locked prior to the execution ofmethod 600 and unlocked after the execution ofmethod 600 by the operating system. - Although the system and method of the present invention are described in connection with several embodiments, it is not intended to be limited to the specific forms set forth herein, but on the contrary, it is intended to cover such alternatives, modifications, and equivalents, as can be reasonably included within the spirit and scope of the invention as defined by the appended claims. It is noted that the headings are used only for organizational purposes and not meant to limit the scope of the description or claims.
Claims (22)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/736,585 US6779049B2 (en) | 2000-12-14 | 2000-12-14 | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US10/676,540 US6970982B2 (en) | 2000-12-14 | 2003-10-01 | Method and system for maintaining coherency in a multiprocessor system by broadcasting TLB invalidated entry instructions |
US10/782,044 US6907477B2 (en) | 2000-12-14 | 2004-02-19 | Symmetric multi-processing system utilizing a DMAC to allow address translation for attached processors |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/736,585 US6779049B2 (en) | 2000-12-14 | 2000-12-14 | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/676,540 Division US6970982B2 (en) | 2000-12-14 | 2003-10-01 | Method and system for maintaining coherency in a multiprocessor system by broadcasting TLB invalidated entry instructions |
US10/782,044 Division US6907477B2 (en) | 2000-12-14 | 2004-02-19 | Symmetric multi-processing system utilizing a DMAC to allow address translation for attached processors |
Publications (2)
Publication Number | Publication Date |
---|---|
US20020078308A1 true US20020078308A1 (en) | 2002-06-20 |
US6779049B2 US6779049B2 (en) | 2004-08-17 |
Family
ID=24960449
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/736,585 Expired - Lifetime US6779049B2 (en) | 2000-12-14 | 2000-12-14 | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US10/676,540 Expired - Fee Related US6970982B2 (en) | 2000-12-14 | 2003-10-01 | Method and system for maintaining coherency in a multiprocessor system by broadcasting TLB invalidated entry instructions |
US10/782,044 Expired - Fee Related US6907477B2 (en) | 2000-12-14 | 2004-02-19 | Symmetric multi-processing system utilizing a DMAC to allow address translation for attached processors |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/676,540 Expired - Fee Related US6970982B2 (en) | 2000-12-14 | 2003-10-01 | Method and system for maintaining coherency in a multiprocessor system by broadcasting TLB invalidated entry instructions |
US10/782,044 Expired - Fee Related US6907477B2 (en) | 2000-12-14 | 2004-02-19 | Symmetric multi-processing system utilizing a DMAC to allow address translation for attached processors |
Country Status (1)
Country | Link |
---|---|
US (3) | US6779049B2 (en) |
Cited By (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138637A1 (en) * | 2001-03-22 | 2002-09-26 | Masakazu Suzuoki | Computer architecture and software cells for broadband networks |
US20020156993A1 (en) * | 2001-03-22 | 2002-10-24 | Masakazu Suzuoki | Processing modules for computer architecture for broadband networks |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US20040083342A1 (en) * | 2002-10-24 | 2004-04-29 | International Business Machines Corporation | Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture |
US20040083462A1 (en) * | 2002-10-24 | 2004-04-29 | International Business Machines Corporation | Method and apparatus for creating and executing integrated executables in a heterogeneous architecture |
US20040083455A1 (en) * | 2002-10-24 | 2004-04-29 | International Business Machines Corporation | Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture |
US20040083458A1 (en) * | 2002-10-24 | 2004-04-29 | International Business Machines Corporation | Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture |
US6809734B2 (en) | 2001-03-22 | 2004-10-26 | Sony Computer Entertainment Inc. | Resource dedication system and method for a computer architecture for broadband networks |
US6826662B2 (en) | 2001-03-22 | 2004-11-30 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
EP1492004A2 (en) * | 2003-06-27 | 2004-12-29 | Kabushiki Kaisha Toshiba | Method and system for performing real-time operation using processors |
US20050080998A1 (en) * | 2003-10-09 | 2005-04-14 | International Business Machines Corporation | Method and apparatus for coherent memory structure of heterogeneous processor systems |
US20050102485A1 (en) * | 2003-09-02 | 2005-05-12 | Kabushiki Kaisha Toshiba | Semiconductor system and memory sharing method |
US20050184994A1 (en) * | 2000-02-11 | 2005-08-25 | Sony Computer Entertainment Inc. | Multiprocessor computer system |
FR2879322A1 (en) * | 2004-12-15 | 2006-06-16 | Claude Massuard | Computer system architecture, has central and satellite processors associated to ensure respectively operational integrity, using hardware protection mechanism, and performance of system, and databases navigated using relocatable pointers |
US20060155955A1 (en) * | 2005-01-10 | 2006-07-13 | Gschwind Michael K | SIMD-RISC processor module |
US20060195575A1 (en) * | 2000-12-22 | 2006-08-31 | Oracle International Corporation | Determining a user's groups |
US20070052562A1 (en) * | 2005-07-28 | 2007-03-08 | Hofstee Harm P | Modular design method and apparatus |
US7213123B2 (en) | 2002-10-24 | 2007-05-01 | International Business Machines Corporation | Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture |
US7231500B2 (en) | 2001-03-22 | 2007-06-12 | Sony Computer Entertainment Inc. | External data interface in a computer architecture for broadband networks |
US20070214340A1 (en) * | 2005-05-24 | 2007-09-13 | Marathon Technologies Corporation | Symmetric Multiprocessor Fault Tolerant Computer System |
US7302546B2 (en) | 2004-01-09 | 2007-11-27 | International Business Machines Corporation | Method, system, and article of manufacture for reserving memory |
JP2008009982A (en) * | 2006-06-27 | 2008-01-17 | Internatl Business Mach Corp <Ibm> | Method and system for memory address conversion and pinning |
US20080098233A1 (en) * | 2006-10-20 | 2008-04-24 | International Business Machines Corporation | Load balancing for a system of cryptographic processors |
US20080148032A1 (en) * | 2006-12-19 | 2008-06-19 | Freimuth Douglas M | System and method for communication between host systems using a queuing system and shared memories |
US20080147938A1 (en) * | 2006-12-19 | 2008-06-19 | Douglas M Freimuth | System and method for communication between host systems using a transaction protocol and shared memories |
US20080147904A1 (en) * | 2006-12-19 | 2008-06-19 | Freimuth Douglas M | System and method for communication between host systems using a socket connection and shared memories |
US20080147959A1 (en) * | 2006-12-19 | 2008-06-19 | Freimuth Douglas M | System and method for initializing shared memories for sharing endpoints across a plurality of root complexes |
US20080147943A1 (en) * | 2006-12-19 | 2008-06-19 | Douglas M Freimuth | System and method for migration of a virtual endpoint from one virtual plane to another |
US20080152127A1 (en) * | 2006-12-22 | 2008-06-26 | International Business Machines Corporation | Forward shifting of processor element processing for load balancing |
US20080288819A1 (en) * | 2007-05-14 | 2008-11-20 | International Business Machines Corporation | Computing System with Transactional Memory Using Millicode Assists |
US20080288727A1 (en) * | 2007-05-14 | 2008-11-20 | International Business Machines Corporation | Computing System with Optimized Support for Transactional Memory |
US7516334B2 (en) | 2001-03-22 | 2009-04-07 | Sony Computer Entertainment Inc. | Power management for processing modules |
US20090106507A1 (en) * | 2007-10-22 | 2009-04-23 | Maurizio Skerlj | Memory System and Method for Using a Memory System with Virtual Address Translation Capabilities |
US20090113443A1 (en) * | 2007-05-14 | 2009-04-30 | International Business Machines Corporation | Transactional Memory Computing System with Support for Chained Transactions |
US20090293034A1 (en) * | 2006-09-15 | 2009-11-26 | Pai Ravi R | Method and system for processing geometrical layout design data |
US7836238B2 (en) | 2006-12-19 | 2010-11-16 | International Business Machines Corporation | Hot-plug/remove of a new component in a running PCIe fabric |
EP2250648A1 (en) * | 2008-02-27 | 2010-11-17 | Microchip Technology Incorporated | Virtual memory interface |
US20110055483A1 (en) * | 2009-08-31 | 2011-03-03 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US20110137861A1 (en) * | 2009-12-09 | 2011-06-09 | International Business Machines Corporation | Methods for Achieving Efficient Coherent Access to Data in a Cluster of Data Processing Computing Nodes |
US7984454B2 (en) | 2006-12-19 | 2011-07-19 | International Business Machines Corporation | Migration of single root stateless virtual functions |
US8095750B2 (en) | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory system with fast processing of common conflicts |
US8117403B2 (en) | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US8751212B2 (en) | 2004-03-29 | 2014-06-10 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processing task scheduling |
US8812907B1 (en) | 2010-07-19 | 2014-08-19 | Marathon Technologies Corporation | Fault tolerant computing systems using checkpoints |
EP2767904A1 (en) | 2013-02-18 | 2014-08-20 | Hybridserver Tec GmbH | Method, processing modules and system for executing an executable code |
US20150378961A1 (en) * | 2009-06-12 | 2015-12-31 | Intel Corporation | Extended Fast Memory Access in a Multiprocessor Computer System |
US9251002B2 (en) | 2013-01-15 | 2016-02-02 | Stratus Technologies Bermuda Ltd. | System and method for writing checkpointing data |
US20160140040A1 (en) * | 2014-11-14 | 2016-05-19 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US20160140051A1 (en) * | 2014-11-14 | 2016-05-19 | Cavium, Inc. | Translation lookaside buffer invalidation suppression |
US9588844B2 (en) | 2013-12-30 | 2017-03-07 | Stratus Technologies Bermuda Ltd. | Checkpointing systems and methods using data forwarding |
US9652338B2 (en) | 2013-12-30 | 2017-05-16 | Stratus Technologies Bermuda Ltd. | Dynamic checkpointing systems and methods |
CN106776379A (en) * | 2011-07-26 | 2017-05-31 | 英特尔公司 | For the method and apparatus that the TLB in the heterogeneous computing system for supporting shared virtual memory is closed |
US9760442B2 (en) | 2013-12-30 | 2017-09-12 | Stratus Technologies Bermuda Ltd. | Method of delaying checkpoints by inspecting network packets |
US10482008B2 (en) * | 2015-01-23 | 2019-11-19 | Hewlett Packard Enterprise Development Lp | Aligned variable reclamation |
US20200183859A1 (en) * | 2018-12-11 | 2020-06-11 | International Business Machines Corporation | Distributed directory of named data elements in coordination namespace |
WO2021254598A1 (en) * | 2020-06-16 | 2021-12-23 | Huawei Technologies Co., Ltd. | Devices for memory management |
US11734192B2 (en) | 2018-12-10 | 2023-08-22 | International Business Machines Corporation | Identifying location of data granules in global virtual address space |
Families Citing this family (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7404012B2 (en) * | 2002-05-06 | 2008-07-22 | Qlogic, Corporation | System and method for dynamic link aggregation in a shared I/O subsystem |
US7447778B2 (en) * | 2002-05-06 | 2008-11-04 | Qlogic, Corporation | System and method for a shared I/O subsystem |
US7899473B2 (en) * | 2003-07-21 | 2011-03-01 | Telecommunications Systems, Inc. | Wireless network location-based reference information |
US7739479B2 (en) | 2003-10-02 | 2010-06-15 | Nvidia Corporation | Method for providing physics simulation data |
US20050086040A1 (en) * | 2003-10-02 | 2005-04-21 | Curtis Davis | System incorporating physics processing unit |
US7895411B2 (en) * | 2003-10-02 | 2011-02-22 | Nvidia Corporation | Physics processing unit |
US7260186B2 (en) | 2004-03-23 | 2007-08-21 | Telecommunication Systems, Inc. | Solutions for voice over internet protocol (VoIP) 911 location services |
US7903791B2 (en) | 2005-06-13 | 2011-03-08 | Telecommunication Systems, Inc. | Enhanced E911 location information using voice over internet protocol (VoIP) |
JP2005202767A (en) * | 2004-01-16 | 2005-07-28 | Toshiba Corp | Processor system, dma control circuit, dma control method, control method for dma controller, image processing method, and image processing circuit |
US20050251644A1 (en) * | 2004-05-06 | 2005-11-10 | Monier Maher | Physics processing unit instruction set architecture |
US20050273571A1 (en) * | 2004-06-02 | 2005-12-08 | Lyon Thomas L | Distributed virtual multiprocessor |
US8843727B2 (en) * | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US7698473B2 (en) * | 2005-01-05 | 2010-04-13 | Sony Computer Entertainment Inc. | Methods and apparatus for list transfers using DMA transfers in a multi-processor system |
US7613886B2 (en) * | 2005-02-08 | 2009-11-03 | Sony Computer Entertainment Inc. | Methods and apparatus for synchronizing data access to a local memory in a multi-processor system |
US7650266B2 (en) * | 2005-05-09 | 2010-01-19 | Nvidia Corporation | Method of simulating deformable object using geometrically motivated model |
US7225287B2 (en) * | 2005-06-01 | 2007-05-29 | Microsoft Corporation | Scalable DMA remapping on a computer bus |
US8660573B2 (en) | 2005-07-19 | 2014-02-25 | Telecommunications Systems, Inc. | Location service requests throttling |
US20070123271A1 (en) * | 2005-08-26 | 2007-05-31 | Richard Dickinson | Cellular phone tracking scope |
US7958513B2 (en) * | 2005-11-17 | 2011-06-07 | International Business Machines Corporation | Method, system and program product for communicating among processes in a symmetric multi-processing cluster environment |
US7502888B2 (en) * | 2006-02-07 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Symmetric multiprocessor system |
US8059789B2 (en) | 2006-02-24 | 2011-11-15 | Telecommunication Systems, Inc. | Automatic location identification (ALI) emergency services pseudo key (ESPK) |
US7814279B2 (en) * | 2006-03-23 | 2010-10-12 | International Business Machines Corporation | Low-cost cache coherency for accelerators |
US20070234424A1 (en) * | 2006-03-31 | 2007-10-04 | Lucent Technologies, Inc. | Design and evaluation of a fast and robust worm detection algorithm |
US20080005399A1 (en) * | 2006-05-16 | 2008-01-03 | Ati Technologies Inc. | Method and Apparatus for Determining the Status of Bus Requests and Responses |
US8156310B2 (en) * | 2006-09-11 | 2012-04-10 | International Business Machines Corporation | Method and apparatus for data stream alignment support |
US20080082750A1 (en) * | 2006-09-28 | 2008-04-03 | Okin Kenneth A | Methods of communicating to, memory modules in a memory channel |
US8949555B1 (en) | 2007-08-30 | 2015-02-03 | Virident Systems, Inc. | Methods for sustained read and write performance with non-volatile memory |
US7761626B2 (en) * | 2006-09-28 | 2010-07-20 | Virident Systems, Inc. | Methods for main memory in a system with a memory controller configured to control access to non-volatile memory, and related technologies |
US8074022B2 (en) * | 2006-09-28 | 2011-12-06 | Virident Systems, Inc. | Programmable heterogeneous memory controllers for main memory with different memory modules |
US7761625B2 (en) * | 2006-09-28 | 2010-07-20 | Virident Systems, Inc. | Methods for main memory with non-volatile type memory modules, and related technologies |
US9984012B2 (en) | 2006-09-28 | 2018-05-29 | Virident Systems, Llc | Read writeable randomly accessible non-volatile memory modules |
WO2008040028A2 (en) * | 2006-09-28 | 2008-04-03 | Virident Systems, Inc. | Systems, methods, and apparatus with programmable memory control for heterogeneous main memory |
US7761623B2 (en) * | 2006-09-28 | 2010-07-20 | Virident Systems, Inc. | Main memory in a system with a memory controller configured to control access to non-volatile memory, and related technologies |
US7761624B2 (en) * | 2006-09-28 | 2010-07-20 | Virident Systems, Inc. | Systems and apparatus for main memory with non-volatile type memory modules, and related technologies |
WO2008051940A2 (en) | 2006-10-23 | 2008-05-02 | Virident Systems, Inc. | Methods and apparatus of dual inline memory modules for flash memory |
US8176265B2 (en) | 2006-10-30 | 2012-05-08 | Nvidia Corporation | Shared single-access memory with management of multiple parallel requests |
US8108625B1 (en) | 2006-10-30 | 2012-01-31 | Nvidia Corporation | Shared memory with parallel access and access conflict resolution mechanism |
US7680988B1 (en) | 2006-10-30 | 2010-03-16 | Nvidia Corporation | Single interconnect providing read and write access to a memory shared by concurrent threads |
US7937567B1 (en) * | 2006-11-01 | 2011-05-03 | Nvidia Corporation | Methods for scalably exploiting parallelism in a parallel processing system |
US7913055B2 (en) * | 2006-11-04 | 2011-03-22 | Virident Systems Inc. | Seamless application access to hybrid main memory |
US8321849B2 (en) * | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
US8050386B2 (en) * | 2007-02-12 | 2011-11-01 | Telecommunication Systems, Inc. | Mobile automatic location identification (ALI) for first responders |
US7827383B2 (en) * | 2007-03-09 | 2010-11-02 | Oracle America, Inc. | Efficient on-chip accelerator interfaces to reduce software overhead |
US7809895B2 (en) * | 2007-03-09 | 2010-10-05 | Oracle America, Inc. | Low overhead access to shared on-chip hardware accelerator with memory-based interfaces |
US8520805B2 (en) * | 2007-05-02 | 2013-08-27 | Telecommunication Systems, Inc. | Video E911 |
US8214808B2 (en) * | 2007-05-07 | 2012-07-03 | International Business Machines Corporation | System and method for speculative thread assist in a heterogeneous processing environment |
US7627744B2 (en) * | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
US20090024772A1 (en) * | 2007-07-20 | 2009-01-22 | Wenjeng Ko | Overlayed separate dma mapping of adapters |
US20090024823A1 (en) * | 2007-07-20 | 2009-01-22 | Wenjeng Ko | Overlayed separate dma mapping of adapters |
US9921896B2 (en) | 2007-08-30 | 2018-03-20 | Virident Systems, Llc | Shutdowns and data recovery to avoid read errors weak pages in a non-volatile memory system |
US8112174B2 (en) * | 2008-02-25 | 2012-02-07 | International Business Machines Corporation | Processor, method and computer program product for fast selective invalidation of translation lookaside buffer |
US8745314B1 (en) | 2008-06-24 | 2014-06-03 | Virident Systems, Inc. | Methods for a random read and read/write block accessible memory |
US9513695B2 (en) | 2008-06-24 | 2016-12-06 | Virident Systems, Inc. | Methods of managing power in network computer systems |
JP5433349B2 (en) * | 2009-08-27 | 2014-03-05 | ルネサスエレクトロニクス株式会社 | Data processor |
US8370595B2 (en) * | 2009-12-21 | 2013-02-05 | International Business Machines Corporation | Aggregate data processing system having multiple overlapping synthetic computers |
US8364922B2 (en) * | 2009-12-21 | 2013-01-29 | International Business Machines Corporation | Aggregate symmetric multiprocessor system |
US9015027B2 (en) | 2011-04-21 | 2015-04-21 | International Business Machines Corporation | Fast emulation of virtually addressed control flow |
US9264537B2 (en) | 2011-12-05 | 2016-02-16 | Telecommunication Systems, Inc. | Special emergency call treatment based on the caller |
KR20150041873A (en) * | 2013-10-10 | 2015-04-20 | 에스케이하이닉스 주식회사 | Data processing system |
US10838862B2 (en) * | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US9785554B2 (en) * | 2014-05-30 | 2017-10-10 | International Business Machines Corporation | Synchronizing updates of page table status indicators in a multiprocessing environment |
US10120814B2 (en) | 2016-04-01 | 2018-11-06 | Intel Corporation | Apparatus and method for lazy translation lookaside buffer (TLB) coherence |
US10067870B2 (en) * | 2016-04-01 | 2018-09-04 | Intel Corporation | Apparatus and method for low-overhead synchronous page table updates |
US11422815B2 (en) | 2018-03-01 | 2022-08-23 | Dell Products L.P. | System and method for field programmable gate array-assisted binary translation |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5388217A (en) * | 1991-12-13 | 1995-02-07 | Cray Research, Inc. | Distributing system for multi-processor input and output using channel adapters |
US5887134A (en) * | 1997-06-30 | 1999-03-23 | Sun Microsystems | System and method for preserving message order while employing both programmed I/O and DMA operations |
US5903771A (en) * | 1996-01-16 | 1999-05-11 | Alacron, Inc. | Scalable multi-processor architecture for SIMD and MIMD operations |
US6119176A (en) * | 1997-08-05 | 2000-09-12 | Ricoh Company, Ltd. | Data transfer control system determining a start of a direct memory access (DMA) using rates of a common bus allocated currently and newly requested |
US6219724B1 (en) * | 1997-11-29 | 2001-04-17 | Electronics And Telecommunications Research Institute | Direct memory access controller |
US6282588B1 (en) * | 1997-04-22 | 2001-08-28 | Sony Computer Entertainment, Inc. | Data transfer method and device |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1213986A (en) * | 1983-12-14 | 1986-11-12 | Thomas O. Curlee, Iii | Selective guest system purge control |
US4779188A (en) * | 1983-12-14 | 1988-10-18 | International Business Machines Corporation | Selective guest system purge control |
US5161156A (en) | 1990-02-02 | 1992-11-03 | International Business Machines Corporation | Multiprocessing packet switching connection system having provision for error correction and recovery |
DE69132300T2 (en) * | 1990-03-12 | 2000-11-30 | Hewlett Packard Co | Direct memory access defined by the user using virtual addresses |
JP2774862B2 (en) * | 1990-07-16 | 1998-07-09 | 株式会社日立製作所 | DMA control device and information processing device |
US5423013A (en) | 1991-09-04 | 1995-06-06 | International Business Machines Corporation | System for addressing a very large memory with real or virtual addresses using address mode registers |
US5381537A (en) | 1991-12-06 | 1995-01-10 | International Business Machines Corporation | Large logical addressing method and means |
US5437017A (en) * | 1992-10-09 | 1995-07-25 | International Business Machines Corporation | Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system |
US5758182A (en) * | 1995-05-15 | 1998-05-26 | Nvidia Corporation | DMA controller translates virtual I/O device address received directly from application program command to physical i/o device address of I/O device on device bus |
US5659798A (en) * | 1996-02-02 | 1997-08-19 | Blumrich; Matthias Augustin | Method and system for initiating and loading DMA controller registers by using user-level programs |
US6105113A (en) * | 1997-08-21 | 2000-08-15 | Silicon Graphics, Inc. | System and method for maintaining translation look-aside buffer (TLB) consistency |
US6263403B1 (en) * | 1999-10-31 | 2001-07-17 | Hewlett-Packard Company | Method and apparatus for linking translation lookaside buffer purge operations to cache coherency transactions |
US6681346B2 (en) * | 2000-05-11 | 2004-01-20 | Goodrich Corporation | Digital processing system including a DMA controller operating in the virtual address domain and a method for operating the same |
US6820143B2 (en) * | 2002-12-17 | 2004-11-16 | International Business Machines Corporation | On-chip data transfer in multi-processor system |
-
2000
- 2000-12-14 US US09/736,585 patent/US6779049B2/en not_active Expired - Lifetime
-
2003
- 2003-10-01 US US10/676,540 patent/US6970982B2/en not_active Expired - Fee Related
-
2004
- 2004-02-19 US US10/782,044 patent/US6907477B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5388217A (en) * | 1991-12-13 | 1995-02-07 | Cray Research, Inc. | Distributing system for multi-processor input and output using channel adapters |
US5903771A (en) * | 1996-01-16 | 1999-05-11 | Alacron, Inc. | Scalable multi-processor architecture for SIMD and MIMD operations |
US6282588B1 (en) * | 1997-04-22 | 2001-08-28 | Sony Computer Entertainment, Inc. | Data transfer method and device |
US5887134A (en) * | 1997-06-30 | 1999-03-23 | Sun Microsystems | System and method for preserving message order while employing both programmed I/O and DMA operations |
US6119176A (en) * | 1997-08-05 | 2000-09-12 | Ricoh Company, Ltd. | Data transfer control system determining a start of a direct memory access (DMA) using rates of a common bus allocated currently and newly requested |
US6219724B1 (en) * | 1997-11-29 | 2001-04-17 | Electronics And Telecommunications Research Institute | Direct memory access controller |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
Cited By (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050184994A1 (en) * | 2000-02-11 | 2005-08-25 | Sony Computer Entertainment Inc. | Multiprocessor computer system |
US20060195575A1 (en) * | 2000-12-22 | 2006-08-31 | Oracle International Corporation | Determining a user's groups |
US6809734B2 (en) | 2001-03-22 | 2004-10-26 | Sony Computer Entertainment Inc. | Resource dedication system and method for a computer architecture for broadband networks |
US20020156993A1 (en) * | 2001-03-22 | 2002-10-24 | Masakazu Suzuoki | Processing modules for computer architecture for broadband networks |
US20050097302A1 (en) * | 2001-03-22 | 2005-05-05 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US7231500B2 (en) | 2001-03-22 | 2007-06-12 | Sony Computer Entertainment Inc. | External data interface in a computer architecture for broadband networks |
US7999813B2 (en) | 2001-03-22 | 2011-08-16 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US7457939B2 (en) | 2001-03-22 | 2008-11-25 | Sony Computer Entertainment Inc. | Processing system with dedicated local memories and busy identification |
US6826662B2 (en) | 2001-03-22 | 2004-11-30 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US8434091B2 (en) | 2001-03-22 | 2013-04-30 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US20050081213A1 (en) * | 2001-03-22 | 2005-04-14 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US8028288B2 (en) | 2001-03-22 | 2011-09-27 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US20050081209A1 (en) * | 2001-03-22 | 2005-04-14 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US20050078117A1 (en) * | 2001-03-22 | 2005-04-14 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US7233998B2 (en) | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US7139882B2 (en) | 2001-03-22 | 2006-11-21 | Sony Computer Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US7516334B2 (en) | 2001-03-22 | 2009-04-07 | Sony Computer Entertainment Inc. | Power management for processing modules |
US20020138637A1 (en) * | 2001-03-22 | 2002-09-26 | Masakazu Suzuoki | Computer architecture and software cells for broadband networks |
US7720982B2 (en) | 2001-03-22 | 2010-05-18 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US7093104B2 (en) | 2001-03-22 | 2006-08-15 | Sony Computer Entertainment Inc. | Processing modules for computer architecture for broadband networks |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US20040083342A1 (en) * | 2002-10-24 | 2004-04-29 | International Business Machines Corporation | Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture |
US7225431B2 (en) | 2002-10-24 | 2007-05-29 | International Business Machines Corporation | Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture |
US7243333B2 (en) | 2002-10-24 | 2007-07-10 | International Business Machines Corporation | Method and apparatus for creating and executing integrated executables in a heterogeneous architecture |
US7200840B2 (en) | 2002-10-24 | 2007-04-03 | International Business Machines Corporation | Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture |
US7213123B2 (en) | 2002-10-24 | 2007-05-01 | International Business Machines Corporation | Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture |
US7222332B2 (en) | 2002-10-24 | 2007-05-22 | International Business Machines Corporation | Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture |
US20040083458A1 (en) * | 2002-10-24 | 2004-04-29 | International Business Machines Corporation | Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture |
US20040083455A1 (en) * | 2002-10-24 | 2004-04-29 | International Business Machines Corporation | Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture |
US20040083462A1 (en) * | 2002-10-24 | 2004-04-29 | International Business Machines Corporation | Method and apparatus for creating and executing integrated executables in a heterogeneous architecture |
EP1492004A3 (en) * | 2003-06-27 | 2010-09-29 | Kabushiki Kaisha Toshiba | Method and system for performing real-time operation using processors |
EP1492004A2 (en) * | 2003-06-27 | 2004-12-29 | Kabushiki Kaisha Toshiba | Method and system for performing real-time operation using processors |
US20050102485A1 (en) * | 2003-09-02 | 2005-05-12 | Kabushiki Kaisha Toshiba | Semiconductor system and memory sharing method |
US7249226B2 (en) * | 2003-09-02 | 2007-07-24 | Kabushiki Kaisha Toshiba | Semiconductor system and memory sharing method |
US20050080998A1 (en) * | 2003-10-09 | 2005-04-14 | International Business Machines Corporation | Method and apparatus for coherent memory structure of heterogeneous processor systems |
US7093080B2 (en) | 2003-10-09 | 2006-08-15 | International Business Machines Corporation | Method and apparatus for coherent memory structure of heterogeneous processor systems |
US7302546B2 (en) | 2004-01-09 | 2007-11-27 | International Business Machines Corporation | Method, system, and article of manufacture for reserving memory |
US9183051B2 (en) | 2004-03-29 | 2015-11-10 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processing task scheduling |
US8751212B2 (en) | 2004-03-29 | 2014-06-10 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processing task scheduling |
FR2879322A1 (en) * | 2004-12-15 | 2006-06-16 | Claude Massuard | Computer system architecture, has central and satellite processors associated to ensure respectively operational integrity, using hardware protection mechanism, and performance of system, and databases navigated using relocatable pointers |
US20060155955A1 (en) * | 2005-01-10 | 2006-07-13 | Gschwind Michael K | SIMD-RISC processor module |
US20070214340A1 (en) * | 2005-05-24 | 2007-09-13 | Marathon Technologies Corporation | Symmetric Multiprocessor Fault Tolerant Computer System |
EP1883865A4 (en) * | 2005-05-24 | 2010-12-15 | Marathon Techn Corp | Symmetric multiprocessor fault tolerant computer system |
US7877552B2 (en) | 2005-05-24 | 2011-01-25 | Marathon Technologies Corporation | Symmetric multiprocessor fault tolerant computer system |
EP1883865A2 (en) * | 2005-05-24 | 2008-02-06 | Marathon Technologies Corporation | Symmetric multiprocessor fault tolerant computer system |
US7398482B2 (en) | 2005-07-28 | 2008-07-08 | International Business Machines Corporation | Modular design method and apparatus |
US20080235647A1 (en) * | 2005-07-28 | 2008-09-25 | Harm Peter Hofstee | Modular design method and apparatus |
US20070052562A1 (en) * | 2005-07-28 | 2007-03-08 | Hofstee Harm P | Modular design method and apparatus |
US8032849B2 (en) | 2005-07-28 | 2011-10-04 | International Business Machines Corporation | Integrated circuit chip with modular design |
US20100049883A1 (en) * | 2006-06-27 | 2010-02-25 | Shmuel Ben-Yehuda | Method and system for memory address translation and pinning |
JP2008009982A (en) * | 2006-06-27 | 2008-01-17 | Internatl Business Mach Corp <Ibm> | Method and system for memory address conversion and pinning |
US20090293034A1 (en) * | 2006-09-15 | 2009-11-26 | Pai Ravi R | Method and system for processing geometrical layout design data |
US7823110B2 (en) * | 2006-09-15 | 2010-10-26 | Softjin Technologies Private Limited | Method and system for processing geometrical layout design data |
US7870395B2 (en) * | 2006-10-20 | 2011-01-11 | International Business Machines Corporation | Load balancing for a system of cryptographic processors |
US20080098233A1 (en) * | 2006-10-20 | 2008-04-24 | International Business Machines Corporation | Load balancing for a system of cryptographic processors |
US20080147959A1 (en) * | 2006-12-19 | 2008-06-19 | Freimuth Douglas M | System and method for initializing shared memories for sharing endpoints across a plurality of root complexes |
US20080147943A1 (en) * | 2006-12-19 | 2008-06-19 | Douglas M Freimuth | System and method for migration of a virtual endpoint from one virtual plane to another |
US7836129B2 (en) | 2006-12-19 | 2010-11-16 | International Business Machines Corporation | Communication between host systems using a queuing system and shared memories |
US7836238B2 (en) | 2006-12-19 | 2010-11-16 | International Business Machines Corporation | Hot-plug/remove of a new component in a running PCIe fabric |
US8271604B2 (en) * | 2006-12-19 | 2012-09-18 | International Business Machines Corporation | Initializing shared memories for sharing endpoints across a plurality of root complexes |
US7991839B2 (en) | 2006-12-19 | 2011-08-02 | International Business Machines Corporation | Communication between host systems using a socket connection and shared memories |
US7860930B2 (en) | 2006-12-19 | 2010-12-28 | International Business Machines Corporation | Communication between host systems using a transaction protocol and shared memories |
US7813366B2 (en) | 2006-12-19 | 2010-10-12 | International Business Machines Corporation | Migration of a virtual endpoint from one virtual plane to another |
US20080147904A1 (en) * | 2006-12-19 | 2008-06-19 | Freimuth Douglas M | System and method for communication between host systems using a socket connection and shared memories |
US7984454B2 (en) | 2006-12-19 | 2011-07-19 | International Business Machines Corporation | Migration of single root stateless virtual functions |
US20080147938A1 (en) * | 2006-12-19 | 2008-06-19 | Douglas M Freimuth | System and method for communication between host systems using a transaction protocol and shared memories |
US20080148032A1 (en) * | 2006-12-19 | 2008-06-19 | Freimuth Douglas M | System and method for communication between host systems using a queuing system and shared memories |
US7890559B2 (en) | 2006-12-22 | 2011-02-15 | International Business Machines Corporation | Forward shifting of processor element processing for load balancing |
US20080152127A1 (en) * | 2006-12-22 | 2008-06-26 | International Business Machines Corporation | Forward shifting of processor element processing for load balancing |
US20090113443A1 (en) * | 2007-05-14 | 2009-04-30 | International Business Machines Corporation | Transactional Memory Computing System with Support for Chained Transactions |
US20080288727A1 (en) * | 2007-05-14 | 2008-11-20 | International Business Machines Corporation | Computing System with Optimized Support for Transactional Memory |
US8095750B2 (en) | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory system with fast processing of common conflicts |
US8095741B2 (en) | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory computing system with support for chained transactions |
US8117403B2 (en) | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US20080288819A1 (en) * | 2007-05-14 | 2008-11-20 | International Business Machines Corporation | Computing System with Transactional Memory Using Millicode Assists |
US8321637B2 (en) * | 2007-05-14 | 2012-11-27 | International Business Machines Corporation | Computing system with optimized support for transactional memory |
US9104427B2 (en) | 2007-05-14 | 2015-08-11 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
US9009452B2 (en) | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
DE102008048630B4 (en) * | 2007-10-22 | 2016-04-28 | Polaris Innovations Ltd. | Storage arrangement and storage system |
US8185716B2 (en) * | 2007-10-22 | 2012-05-22 | Qimonda Ag | Memory system and method for using a memory system with virtual address translation capabilities |
US20090106507A1 (en) * | 2007-10-22 | 2009-04-23 | Maurizio Skerlj | Memory System and Method for Using a Memory System with Virtual Address Translation Capabilities |
KR101535626B1 (en) * | 2008-02-27 | 2015-07-09 | 마이크로칩 테크놀로지 인코포레이티드 | Virtual memory interface |
EP2250648A4 (en) * | 2008-02-27 | 2013-04-24 | Microchip Tech Inc | Virtual memory interface |
EP2250648A1 (en) * | 2008-02-27 | 2010-11-17 | Microchip Technology Incorporated | Virtual memory interface |
US10860524B2 (en) * | 2009-06-12 | 2020-12-08 | Intel Corporation | Extended fast memory access in a multiprocessor computer system |
US20150378961A1 (en) * | 2009-06-12 | 2015-12-31 | Intel Corporation | Extended Fast Memory Access in a Multiprocessor Computer System |
US8738862B2 (en) | 2009-08-31 | 2014-05-27 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US8667231B2 (en) | 2009-08-31 | 2014-03-04 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US8566524B2 (en) | 2009-08-31 | 2013-10-22 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US20110055483A1 (en) * | 2009-08-31 | 2011-03-03 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US20110137861A1 (en) * | 2009-12-09 | 2011-06-09 | International Business Machines Corporation | Methods for Achieving Efficient Coherent Access to Data in a Cluster of Data Processing Computing Nodes |
US8812907B1 (en) | 2010-07-19 | 2014-08-19 | Marathon Technologies Corporation | Fault tolerant computing systems using checkpoints |
CN106776379A (en) * | 2011-07-26 | 2017-05-31 | 英特尔公司 | For the method and apparatus that the TLB in the heterogeneous computing system for supporting shared virtual memory is closed |
US9251002B2 (en) | 2013-01-15 | 2016-02-02 | Stratus Technologies Bermuda Ltd. | System and method for writing checkpointing data |
EP2767904A1 (en) | 2013-02-18 | 2014-08-20 | Hybridserver Tec GmbH | Method, processing modules and system for executing an executable code |
WO2014125109A1 (en) | 2013-02-18 | 2014-08-21 | Hybridserver Tec Gmbh | Method, processing modules and system for executing an executable code |
US9772882B2 (en) | 2013-02-18 | 2017-09-26 | Hybridserver Tec Ip Gmbh | Detecting and selecting two processing modules to execute code having a set of parallel executable parts |
US9760442B2 (en) | 2013-12-30 | 2017-09-12 | Stratus Technologies Bermuda Ltd. | Method of delaying checkpoints by inspecting network packets |
US9588844B2 (en) | 2013-12-30 | 2017-03-07 | Stratus Technologies Bermuda Ltd. | Checkpointing systems and methods using data forwarding |
US9652338B2 (en) | 2013-12-30 | 2017-05-16 | Stratus Technologies Bermuda Ltd. | Dynamic checkpointing systems and methods |
US20160140040A1 (en) * | 2014-11-14 | 2016-05-19 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US9697137B2 (en) * | 2014-11-14 | 2017-07-04 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US9684606B2 (en) * | 2014-11-14 | 2017-06-20 | Cavium, Inc. | Translation lookaside buffer invalidation suppression |
US20160140051A1 (en) * | 2014-11-14 | 2016-05-19 | Cavium, Inc. | Translation lookaside buffer invalidation suppression |
US10482008B2 (en) * | 2015-01-23 | 2019-11-19 | Hewlett Packard Enterprise Development Lp | Aligned variable reclamation |
US11734192B2 (en) | 2018-12-10 | 2023-08-22 | International Business Machines Corporation | Identifying location of data granules in global virtual address space |
US20200183859A1 (en) * | 2018-12-11 | 2020-06-11 | International Business Machines Corporation | Distributed directory of named data elements in coordination namespace |
US11016908B2 (en) * | 2018-12-11 | 2021-05-25 | International Business Machines Corporation | Distributed directory of named data elements in coordination namespace |
WO2021254598A1 (en) * | 2020-06-16 | 2021-12-23 | Huawei Technologies Co., Ltd. | Devices for memory management |
Also Published As
Publication number | Publication date |
---|---|
US20040160835A1 (en) | 2004-08-19 |
US6779049B2 (en) | 2004-08-17 |
US6907477B2 (en) | 2005-06-14 |
US20040107321A1 (en) | 2004-06-03 |
US6970982B2 (en) | 2005-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6779049B2 (en) | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism | |
US6490671B1 (en) | System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system | |
JP3493409B2 (en) | Computer equipment | |
US7680987B1 (en) | Sub-page-granular cache coherency using shared virtual memory mechanism | |
US4654790A (en) | Translation of virtual and real addresses to system addresses | |
US8285969B2 (en) | Reducing broadcasts in multiprocessors | |
US6263403B1 (en) | Method and apparatus for linking translation lookaside buffer purge operations to cache coherency transactions | |
US5463739A (en) | Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold | |
US20060101227A1 (en) | Method and apparatus for sharing TLB entries | |
US9436616B2 (en) | Multi-core page table sets of attribute fields | |
US20170337136A1 (en) | Managing Cache Coherence Using Information in a Page Table | |
JP7443344B2 (en) | External memory-based translation lookaside buffer | |
US9678872B2 (en) | Memory paging for processors using physical addresses | |
US20240028522A1 (en) | PROCESS DEDICATED IN-MEMORY TRANSLATION LOOKASIDE BUFFERS (TLBs) (mTLBs) FOR AUGMENTING MEMORY MANAGEMENT UNIT (MMU) TLB FOR TRANSLATING VIRTUAL ADDRESSES (VAs) TO PHYSICAL ADDRESSES (PAs) IN A PROCESSOR-BASED SYSTEM | |
US20160283396A1 (en) | Memory management | |
EP0365117B1 (en) | Data-processing apparatus including a cache memory | |
US7093080B2 (en) | Method and apparatus for coherent memory structure of heterogeneous processor systems | |
KR20160148333A (en) | Memory management unit and operating method thereof | |
GB2557588A (en) | Memory management | |
US5479629A (en) | Method and apparatus for translation request buffer and requestor table for minimizing the number of accesses to the same address | |
US4757447A (en) | Virtual memory system having identity marking for common address space | |
US5341485A (en) | Multiple virtual address translation per computer cycle | |
US5619673A (en) | Virtual access cache protection bits handling method and apparatus | |
US9507729B2 (en) | Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor | |
JPH1091521A (en) | Duplex directory virtual cache and its control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ALTMAN, ERIK R.;CAPEK, PETER G.;GSCHWIND, MICHAEL;AND OTHERS;REEL/FRAME:011688/0799;SIGNING DATES FROM 20001208 TO 20001218 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: SONY COMPUTER ENTERTAINMENT INC., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SUZUOKI, MASAKAZU;YAMAZAKI, TAKESHI;REEL/FRAME:016182/0241;SIGNING DATES FROM 20050309 TO 20050427 Owner name: SONY COMPUTER ENTERTAINMENT INC., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SUZUOKI, MASAKAZU;YAMAZAKI, TAKESHI;REEL/FRAME:016182/0244;SIGNING DATES FROM 20050309 TO 20050427 |
|
CC | Certificate of correction | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: SONY NETWORK ENTERTAINMENT PLATFORM INC., JAPAN Free format text: CHANGE OF NAME;ASSIGNOR:SONY COMPUTER ENTERTAINMENT INC.;REEL/FRAME:027449/0001 Effective date: 20100401 |
|
AS | Assignment |
Owner name: SONY COMPUTER ENTERTAINMENT INC., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SONY NETWORK ENTERTAINMENT PLATFORM INC.;REEL/FRAME:027449/0640 Effective date: 20100401 |
|
REMI | Maintenance fee reminder mailed | ||
FPAY | Fee payment |
Year of fee payment: 8 |
|
SULP | Surcharge for late payment |
Year of fee payment: 7 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: SONY INTERACTIVE ENTERTAINMENT INC., JAPAN Free format text: CHANGE OF NAME;ASSIGNOR:SONY COMPUTER ENTERTAINMENT INC.;REEL/FRAME:040350/0891 Effective date: 20160401 |