KR101667772B1 - Translation look-aside buffer with prefetching - Google Patents
Translation look-aside buffer with prefetching Download PDFInfo
- Publication number
- KR101667772B1 KR101667772B1 KR1020157006634A KR20157006634A KR101667772B1 KR 101667772 B1 KR101667772 B1 KR 101667772B1 KR 1020157006634 A KR1020157006634 A KR 1020157006634A KR 20157006634 A KR20157006634 A KR 20157006634A KR 101667772 B1 KR101667772 B1 KR 101667772B1
- Authority
- KR
- South Korea
- Prior art keywords
- delete delete
- request
- index buffer
- prefetch
- translation
- Prior art date
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]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- 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/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G06F17/5009—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- 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/681—Multi-level TLB, e.g. microTLB and main TLB
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
시스템 TLB는, 개시자들로부터 변환 프리페치 요청들을 수락한다. 미스들은 워커 포트에 외부 변환 요청들을 발생시킨다. ID, 어드레스, 및 클래스와 같은, 요청의 속성들뿐만 아니라 TLB의 상태는 변환 테이블들의 다수의 레벨들 내에서 변환들의 할당 정책에 영향을 미친다. 변환 테이블들은 SRAM으로 구현되고, 그룹들로 조직된다.The system TLB accepts conversion prefetch requests from initiators. Misses generate external conversion requests on the worker port. The state of the TLB as well as the attributes of the request, such as ID, address, and class, affect the assignment policy of transformations within multiple levels of translation tables. Conversion tables are implemented in SRAM and organized into groups.
Description
관련 출원들Related Applications
더 나아가, 본 출원은, ___자로 출원되고 발명의 명칭이 SYSTEM TRANSLATION LOOK-ASIDE BUFFER WITH REQUEST-BASED ALLOCATION AND PREFETCHING으로 명명된 미국 일반 특허 출원들 ___(ART-024US1), ___자로 출원되고 발명의 명칭이 SYSTEM TRANSLATION LOOK-ASIDE BUFFER INTEGRATED IN AN INTERCONNECT로 명명된 미국 일반 특허 출원들 ___(ART-024US2), ___자로 출원되고 발명의 명칭이 DMA ENGINE WITH STLB PREFETCH CAPABILITIES AND TETHERED PREFETCHING로 명명된 미국 일반 특허 출원들 ___(ART-024US3), 및 ___자로 출원되고 발명의 명칭이 STLB PREFETCHING FOR A MULTI-DIMENSION ENGINE로 명명된 미국 일반 특허 출원들 ___(ART-024US4)에 관한 것이고, 이들 각각은 인용에 의해 본 명세서에 통합된다.Further, the present application is related to US generic patent applications ___ (ART-024US1), filed as ___ and entitled SYSTEM TRANSLATION LOOK-ASIDE BUFFER WITH REQUEST-BASED ALLOCATION AND PREFETCHING, United States Patent Application Serial No. ______ (ART-024US2), entitled SYSTEM TRANSLATION LOOK-ASIDE BUFFER INTEGRATED IN INTERCONNECT, entitled " DMA ENGINE WITH STLB PREFETCH CAPABILITIES AND TETHERED PREFETCHING " (ART-024US3), filed as " STLB PREFETCHING FOR A MULTI-DIMENSION ENGINE ", each of which is assigned to the assignee of the present application, Which is incorporated herein by reference.
기술 분야Technical field
본 명세서에 개시된 발명은, 컴퓨터 시스템 설계, 특히 시스템-온-칩 반도체 디바이스들의 분야이다.The invention disclosed herein is in the field of computer system design, particularly system-on-chip semiconductor devices.
메모리 관리 유닛들(MMU들; Memory Management Units)은 보통 가상 메모리 능력을 제공하기 위해 마이크로프로세서들에서 이용된다. 가상 메모리가 인에이블될 때, 프로세서 상에서 실행중인 소프트웨어는 오직 가상 어드레스(VA; Virtual Address)들만을 관찰하고 이용한다. MMU는, VA를, 프로세서 내부 및 외부에서 이후에 이용될 수 있는 물리적 어드레스(PA; Physical Address)로 변환하도록 임무가 주어진다. 가상 메모리를 이용하는 것은, 실질적으로 이용가능한 것보다 더 많은 메모리가 있는 것으로의 착각(illusion)을 부여할 수 있는 것, 소프트웨어에 의해 지원되는 것보다 더 많은 어드레스 비트들을 갖는 물리적 메모리 시스템으로의 액세스를 부여하는 것, 그리고 액세스 권한들을 변경시키는 것을 통해 물리적 메모리를 보호하는 것을 포함하는 다수의 이점들을 갖는다.Memory Management Units (MMUs) are typically used in microprocessors to provide virtual memory capabilities. When virtual memory is enabled, software running on the processor only observes and uses virtual addresses (VA). The MMU is tasked to convert the VA into a physical address (PA) that can be used later in and out of the processor. Using virtual memory can give illusion of having more memory than is available, access to a physical memory system with more address bits than is supported by software And protecting the physical memory through altering the access rights. ≪ Desc / Clms Page number 2 >
가상화를 지원하는 일부 현대의 시스템들은, VA들과 PA들 사이에서 2개 레벨들의 어드레스 변환(address translation)을 갖는다. 제 1 레벨은 가상화되지 않은(non-virtualized) 시스템상에서 발견되는 것과 유사하지만, PA는 최종 PA가 아니다. 이는, 중간 물리적 어드레스(IPA; Intermediate Physical Address) 또는 게스트 물리적 어드레스(GPA; Guest Physical Address)로 지칭될 수 있다. 제 2 레벨은 그 중간 어드레스를 최종 PA로 맵핑한다. 이러한 시스템들에서, 프로세서상에서 구동하는 임의의 소프트웨어의 경우, 제 1 레벨 또는 제 2 레벨 또는 둘 다 인에이블될 수 있다.Some modern systems that support virtualization have two levels of address translation between VAs and PAs. The first level is similar to that found on a non-virtualized system, but PA is not the final PA. This may be referred to as an Intermediate Physical Address (IPA) or a Guest Physical Address (GPA). The second level maps the intermediate address to the final PA. In such systems, for any software running on the processor, the first level or the second level, or both, may be enabled.
일반적으로, 가상 어드레스 공간은 페이지들로 분할된다. 페이지들은 보통 수 킬로바이트들이지만, 다른 페이지 크기들도 이용될 수 있다. 시스템들은 종종 수 킬로바이트들 내지 수 메가바이트들 또는 심지어는 기가바이트들의 다수의 페이지 크기들을 지원하여 변환 효율을 증가시킨다. 일 페이지 내의 전체 어드레스들은 동일한 방식으로 변환되고, 모든 액세스 권한 정보는 동일하다. VA들과 PA들 사이에서의 변환은 (종종 멀티-레벨의) 페이지 테이블을 통해서 행해진다. VA를 PA로 변환하기 위해 페이지 테이블을 통해 진행하는 프로세스는 종종, 이 프로세스가 페이지 테이블 룩업들의 시퀀스를 포함하기 때문에, 워킹(walking)으로 지칭된다.Generally, the virtual address space is divided into pages. Pages are usually several kilobytes, but other page sizes can be used. Systems often support multiple page sizes of several kilobytes to several megabytes or even gigabytes to increase conversion efficiency. All addresses in a page are converted in the same manner, and all access right information is the same. Conversions between VAs and PAs are made through (often multi-level) page tables. The process that proceeds through the page table to convert VA to PA is often referred to as walking, since this process includes a sequence of page table lookups.
MMU는 종종 2개의 부분들을 포함한다. 제 1 부분은, 변환 색인 버퍼(TLB; Translation Look-aside Buffer)로 지칭된다. 제 1 부분은, 변환들이 프로세서에 매우 빠르게 액세스가능하게 되도록 변환들을 캐싱(cache)하여, 캐싱된 변환들에 대해, 프로세서는 거의 딜레이 없이 실행될 수 있다. 제 2 부분은, TLB가 변환을 포함하지 않을 때 페이지 테이블들을 워킹(walk)하는 워커(walker)이다. 일부 시스템들에서, TLB와 워커 사이에는 더 많은 캐싱이 존재한다. 예를 들어, TLB는 2 레벨들의 캐싱을 갖는다. 워커는 그 자체가 캐시를 포함할 수 있다.The MMU often includes two parts. The first part is referred to as a translation look-aside buffer (TLB). The first part caches the transformations so that the transformations are very quickly accessible to the processor so that for the cached transformations, the processor can be executed with little delay. The second part is a walker that walks the page tables when the TLB does not contain a translation. In some systems, there is more caching between the TLB and the worker. For example, the TLB has two levels of caching. A worker can itself include a cache.
시스템 MMU(SMMU)는 MMU의 기능을 미러링하지만, 마이크로프로세서들 이외의 개시자(initiator)들에 적용된다. 몇몇 이러한 개시자들은 GPU들, DSP들, 및 DMA 엔진들이다. SMMU의 경우, 이러한 개시자들은 가상 메모리 및 가상화의 혜택들의 이점들을 취할 수 있다. MMU와 유사하게, SMMU는 페이지들 상에서 동작하고, 페이지 테이블들을 이용하여 변환들을 계산한다. 일부 경우들에서, SMMU는, SMMU의 개시자가 접속된 프로세서의 MMU와 동일한 페이지 테이블 포맷들을 이용한다. 그 경우, 페이지 테이블은 MMU와 SMMU 사이에서 공유될 수 있다.The system MMU (SMMU) mirrors the functionality of the MMU, but applies to initiators other than microprocessors. Some such initiators are GPUs, DSPs, and DMA engines. In the case of SMMU, these initiators can take advantage of the benefits of virtual memory and virtualization. Similar to the MMU, the SMMU operates on pages and calculates transformations using page tables. In some cases, the SMMU uses the same page table formats as the MMU of the processor to which the initiator of the SMMU is connected. In that case, the page table can be shared between MMU and SMMU.
MMU가 TLB 및 워커를 포함하기 때문에, SMMU는 이에 따라 시스템 TLB(STLB) 및 워커를 포함한다. STLB는 변환들을 위한 캐시로서 동작하여 개시자들의 피크 성능을 유지하도록 돕는다. 일부 경우들에서, 다수의 STLB들은 효율성 이유로 인해 단일의 워커를 공유할 수 있다. 일부 경우들에서, 다수의 개시자들은 STLB를 공유할 수 있다.Since the MMU includes a TLB and a worker, the SMMU accordingly includes a system TLB (STLB) and a worker. STLB acts as a cache for transforms to help maintain the peak performance of initiators. In some cases, multiple STLBs may share a single worker for efficiency reasons. In some cases, multiple initiators may share the STLB.
대부분의 경우, 프로세서들 내부의 TLB들은 프로세서와 밀접하게(tightly) 통합되는데, 이는 (예를 들어, 캐시 코히어런시(cache coherency)로 볼 수 있는 캐시들의 경우) 프로세서 내부에 물리적 어드레스들이 필요하기 때문이다. 대조적으로, STLB는 개시자 내부에 통합되어야 하는 것은 아니다. STLB는, 어떠한 부정적인 영향도 없이 개시자 외부에 위치될 수 있다. 수많은 경우들에서, 다수의 개시자들은 단일의 STLB를 공유한다. STLB는 변환 서비스들을 제공하기 위해 단지 요청의 소스와 목적지 사이에 있기만 하면 된다. 대부분의 칩 설계들은 타겟들로의 개시자들에 의한 액세스를 제공하는 인터커넥트를 갖는다. STLB들은, 개시자들과 인터커넥트 사이에, 또는 인터커넥트 내부에서 개시자들 가까이에 위치될 수 있다.In most cases, the TLBs within the processors are tightly integrated with the processor, which requires physical addresses within the processor (e.g., in the case of caches viewed as cache coherency) . In contrast, STLBs need not be integrated within the initiator. The STLB may be located outside the initiator without any negative impact. In many cases, multiple initiators share a single STLB. The STLB only needs to be between the source and destination of the request to provide transformation services. Most chip designs have interconnects that provide access by initiators to targets. The STLBs may be located between the initiators and the interconnect, or within the interconnect, near the initiators.
개시자에 가상 메모리를 부가하는 것은, 개시자의 성능에 대한 심각하게 부정적인 영향들을 가질 수 있다. 과도한 로직으로 인한 레이턴시 증가뿐만 아니라, STLB가 미스(miss)할(즉, 개시자로부터의 요청을 프로세싱하기 위해 필수적인 변환이 캐싱되지 않을) 때마다, 그 변환이 캐시의 다른 레벨 또는 워크에 의해 해결될 때까지, 요청은 정지(stall)되어야만 한다. 이는, 요청의 성능에 영향을 줄 것이며, 뒤따르는 요청들에도 또한 영향을 줄 수 있다. 일 페이지 테이블 워크가 통상적으로 1 내지 20개의 순차적 액세스들을 취하고 각각의 액세스가 통상적으로 10 내지 100개의 클록 사이클들을 취하기 때문에, 개시자 요청은 장시간(a large amount of time) 동안 정지될 수 있고, 개시자의 성능은 대폭 저하될 수 있다.Adding virtual memory to the initiator may have serious negative impacts on the initiator's performance. In addition to increasing the latency due to excessive logic, whenever the STLB misses (i.e., the translation required to process requests from the initiator will not be cached), the translation is resolved by another level or work in the cache , The request must be stalled. This will affect the performance of the request and may also affect subsequent requests. Since the one page table walk typically takes 1 to 20 sequential accesses and each access typically takes between 10 and 100 clock cycles, the initiator request can be stopped for a large amount of time, The performance of the reader can be significantly degraded.
STLB 미스들을 감소시키는 것은, STLB 캐시의 크기를 증가시킴으로써 그리고 워크 딜레이를 감소시킴으로써 행해질 수 있다. 그러나, 이는 불충분하다. 일부 미스들은, (예를 들어, 페이지가 처음으로 보여지고, 캐시가 변환을 이미 포함하고 있을 가능성이 없을 때의) 강제적인(compulsory) 미스들이며, 이들은 캐시 크기에 의해 개선되지 않는다. 몇몇 극적인 예시들에서, 불량한 페이지 국부성(locality)을 갖는 대량의 데이터가 개시자에 의해 요청되어, 다수의 강제적인 미스들을 트리거한다.Reducing STLB misses can be done by increasing the size of the STLB cache and by reducing the work delay. However, this is insufficient. Some misses are compulsory misses (e.g., when the page is first seen and the cache is not likely to already contain the translation), and they are not improved by cache size. In some dramatic examples, a large amount of data with bad page locality is requested by the initiator to trigger a number of mandatory misses.
이에 따라, STLB에서 미스하는 요청의 확률이 감소되거나 또는 제거되도록 STLB로 변환들을 프리페칭하기 위한 메커니즘이 필요하다. 이는, 시스템 TLB들에 특히 적용가능한데, 이는 개시자들이 예측가능한 메모리 액세스 패턴들을 갖는 경향이 있어서 대부분의 경우에 미래의 메모리 액세스 패턴들을 예측하는 진보된 프리페치 패턴들을 발생시키도록 또한 강화될 수 있기 때문이다.There is thus a need for a mechanism for prefetching transformations into the STLB so that the probability of a missed request in the STLB is reduced or eliminated. This is particularly applicable to system TLBs because it tends to have predictable memory access patterns so that it can also be enhanced to generate advanced prefetch patterns that predict future memory access patterns in most cases Because.
각각의 STLB는 프로토콜을 이용하여 메모리 요청들을 행하는 타겟 측 인터페이스를 갖는다. 상이한 I/O 디바이스들은 상이한 프로토콜들을 요구한다. 이는, 상이한 STLB들의 설계를 일관성 없게 하여 이에 따라 더욱 복잡하게 만든다. 실리콘 영역을 이용하고 동작 속도를 제한하는 불필요한 중복(redundant) 로직을 포함하는 어드레스 디코딩이, STLB에서 그리고 인터커넥트에서 수행된다. 요청들을 STLB들로부터 그들의 워커들에 수송(transport)하기 위한 인터페이스 프로토콜은, 인터커넥트 내에서 요청들을 개시자들로부터 타겟들로 수송하는데 이용되는 프로토콜과는 상이하다. 이는, 검증 및 시스템 레벨 모델링의 복잡도를 증가시킨다. 게다가, 별도로 설계된 로직 블록들을 통합하기 위해 서브시스템 인터커넥트들을 이용할 때, 변환 정보 및 변환 프리페치 요청들을 개시자들로부터 인터커넥트를 통해 TLB들로 트랜스퍼하기 위한 어떠한 방법도 존재하지 않는다. 게다가 또한, 공유된 변환들에 액세스하는 다수의 STLB들은 그들의 요청들의 공유된 국부성으로부터 어떠한 이득도 갖지 않는다.Each STLB has a target-side interface that makes memory requests using a protocol. Different I / O devices require different protocols. This makes the design of the different STLBs inconsistent and thus more complex. Address decoding involving redundant logic that utilizes the silicon region and limits the operating speed is performed in the STLB and on the interconnect. The interface protocol for transporting requests from STLBs to their workers is different from the protocol used to transport requests from initiators to targets within the interconnect. This increases the complexity of verification and system level modeling. In addition, when using subsystem interconnects to integrate separately designed logic blocks, there is no way to transfer the translation information and translation prefetch requests from the initiators to the TLBs via the interconnect. In addition, multiple STLBs accessing shared transforms also have no benefit from the shared localization of their requests.
몇몇 마이크로프로세서들과 같은 몇몇 I/O 디바이스들은, 보조 저장소(backing store)로부터 캐시로 데이터가 이동하도록 야기하기 위한 프리페치 동작들을 수행하여, 가능성이 있는 미래의 요청이 캐시 내에서 미스(miss)하지 않고 히트(hit)하게 될 것이다. 프리페칭은 일반적으로, 더 낮은 평균 메모리 액세스 레이턴시의 이점을 위해 보조 저장소 대역폭을 희생시킨다.Some I / O devices, such as some microprocessors, perform prefetch operations to cause data to move from a backing store to a cache so that potential future requests may miss in the cache, It will hit without doing it. Prefetching generally sacrifices auxiliary storage bandwidth for the benefit of lower average memory access latency.
TBL을 갖는 시스템에서, 임의의 액세스는 TLB 변환 테이블에서의 미스를 야기할 수 있다. 대부분의 동작 조건들에서의 캐시 미스들보다 덜 빈번하긴 하지만 그래도 TLB 미스들은 노멀 캐시 미스보다 현저하게 더 긴 딜레이들을 야기할 수 있다.In a system with TBL, any access may cause a miss in the TLB translation table. Although less frequent than cache misses in most operating conditions, TLB misses can still cause significantly longer delays than normal cache misses.
수많은 데이터 프로세싱 분야들에서 자신의 메모리 구조(memory organization)를 따르지 않는 방식으로 데이터 세트에 액세스하는 것은 흔하다. 특히, 2-차원 어레이들은 통상적으로, 2차원 중 하나를 따르는 액세스들이 메모리 내에서 순차적이 되도록, 메모리 내에 놓인다. 그러나, 다른 차원을 따르는 그 동일한 어레이에 액세스하는 것은, 메모리에 대한 비-순차적 액세스들을 요구한다. 액세스들의 이러한 유형이 발생하는 분야들은, 비디오 및 이미지 캡쳐 및 디스플레이, 2D 프로세싱뿐만 아니라 매트릭스-기반 데이터 프로세싱을 갖는 다른 분야들을 포함한다. 선형 어드레스 공간으로서 조직된 메모리를 갖는 시스템에서 2개 또는 그 초과의 차원들(예를 들어, 2D 표면)을 갖는 어레이를 표현하기 위해, 어드레스 공간이 변환된 페이지들로 분할되고 그리고 어레이 차원들이 페이지 크기보다 훨씬 작지 않다면, 특정 심각한 성능-저해 문제들이 발생한다. 표면 데이터의 모든 각각의 데이터 요소 또는 원자 단위(예를 들어, 픽셀)가 회전의 판독 또는 기록 단계 중 어디에서든 상이한 페이지들에 액세스할 것이다. 이는 적어도, 표면의 시작부에서 STLB 미스들의 동요(flurry)를 야기한다. 액세스되고 있는 로우들의 수가 STLB 캐시에서 맵핑들의 수를 초과하면, 전체 표면에서의 모든 각각의 픽셀은 STLB 미스를 야기한다.In many data processing applications it is common to access data sets in a manner that does not follow their memory organization. In particular, two-dimensional arrays are typically placed in memory such that accesses along one of the two dimensions are sequential in memory. However, accessing that same array along a different dimension requires non-sequential accesses to the memory. The fields in which this type of access occurs include video and image capture and display, 2D processing, as well as other fields with matrix-based data processing. To represent an array having two or more dimensions (e.g., a 2D surface) in a system having memory organized as a linear address space, the address space is divided into converted pages and the array dimensions are divided into pages If not much smaller than the size, certain serious performance-inhibition problems arise. Every individual data element or atomic unit (e.g., pixel) of the surface data will access different pages in either the read or write phase of rotation. This, at least, causes a flurry of STLB misses at the beginning of the surface. If the number of rows being accessed exceeds the number of mappings in the STLB cache, every pixel on the entire surface will cause an STLB miss.
본 발명은, STLB에서의 미스하는 요청의 확률이 감소되거나 또는 제거되도록, 변환들을 STLB로 프리페칭하기 위한 메커니즘이다. 요청들은 STLB에 입력된다. 요청은 노멀 요청(데이터 판독 또는 기록) 또는 프리페치일 수 있다. 프리페치는, 개시자와 타겟 사이에서 데이터가 트랜스퍼되도록 야기하지 않는 요청이다. 프리페치는, 변환이 요청될 가능성이 있는 시기에 앞서 STLB로 하여금 페이지 테이블로부터의 변환의 판독을 요청하도록 야기한다.The present invention is a mechanism for prefetching transformations into the STLB such that the probability of a missed request in the STLB is reduced or eliminated. Requests are entered into the STLB. The request may be a normal request (data read or write) or prefetch. Prefetch is a request that does not cause data to be transferred between the initiator and the target. Prefetch causes the STLB to request a read of the translation from the page table prior to a time when translation is likely to be requested.
STLB 프리페치는 CPU 프리페치와 상이하다는 점에 주목한다. CPU 프리페치는 일반적으로 특정 명령에 의해 개시된다. CPU 프리페치는, 캐시 내에서 히트(hit)하는 CPU 판독의 확률을 개선하기 위해, 데이터를 메모리로부터 CPU 데이터 또는 명령 캐시로 이동시킨다. STLB 프리페치는, STLB 변환 캐시 내에서 히트하는 개시자 트랜잭션 요청 어드레스 변환의 확률을 개선하기 위해, 맵핑을 메모리 내의 페이지 테이블로부터 캐시로서 동작하는 STLB 변환 테이블로 이동시킨다. 본 개시의 나머지 범위는 STLB 프리페치들과 관련되고, 프리페치라는 용어는 앞에 이미 언급한 것을 의미하는 것으로 이해되어야 한다.Note that STLB prefetch is different from CPU prefetch. CPU prefetch is typically initiated by a specific instruction. CPU prefetch moves data from memory to CPU data or instruction cache to improve the probability of CPU reads hitting in the cache. STLB prefetch moves the mapping from a page table in memory to an STLB translation table that acts as a cache to improve the probability of initiator transaction request address translation hitting in the STLB translation cache. It should be understood that the remainder of this disclosure relates to STLB prefetches, and the term prefetch refers to what has already been mentioned above.
개시된 발명은, 개선된 STLB 및 이를 포함하는 시스템이다. STLB는, 인터커넥트 내에서 I/O 디바이스들에 가까이에 위치된다. 이는, 상이한 인터페이스 프로토콜들의 I/O 디바이스들 사이에서 재사용가능하게 되도록 개시자 측 및 타겟 측 상에서의 범용 인터페이스(generic interface)를 이용한다. 이는, 데이터 경로 수송 토폴로지를 통해 보편적인 수송 프로토콜을 이용하여 공유 워커에 접속된다.The disclosed invention is an improved STLB and a system including the same. The STLB is located close to the I / O devices in the interconnect. It uses a generic interface on the initiator side and the target side to be reusable between the I / O devices of different interface protocols. It is connected to the shared walker using a universal transport protocol over the data path transport topology.
개시된 발명은, 변환 할당 정보 및 변환 프리페치 커맨드들이 개시자들로부터 인터커넥트를 통해 인터커넥트의 타겟 측에 위치된 SLTB들로 전달되도록 허용한다. 게다가, 다수의 STLB들은, 상이한 I/O 디바이스들 사이에서 요청들의 국부화의 이점을 취하기 위해, 공유된 중간-레벨 변환 캐시를 이용할 수 있다.The disclosed invention allows transform assignment information and transform prefetch commands to be transmitted from initiators to interconnected SLTBs located on the target side of the interconnect. In addition, multiple STLBs may use a shared mid-level translation cache to take advantage of the localization of requests between different I / O devices.
본원에 개시된 발명은, I/O 디바이스들에 대한 TLB 변환 프리페치들을 개시하기 위한 효율적인 시스템이다. 이는, 평균 메모리 액세스 레이턴시에 상당한 감소를 제공할 수 있다. 본 발명은, TLB에 접속된 DMA 엔진에 채용된다. DMA 엔진은, 메모리로부터의, 메모리로의, 또는 이 둘 모두의 데이터의 블록들을 이동시키는, 중앙 프로세싱 유닛(central processing unit)을 제외한 임의의 디바이스이다. DMA 엔진들은, I/O 인터페이스들과 접속될 수 있거나, 프로세싱 엔진들 내에 집적될 수 있거나, 독립형일 수 있거나, 또는 그렇지 않으면 칩들 내에 통합될 수 있다.The invention disclosed herein is an efficient system for initiating TLB transform prefetches for I / O devices. This can provide a significant reduction in the average memory access latency. The present invention is employed in a DMA engine connected to a TLB. A DMA engine is any device other than a central processing unit that moves blocks of data from memory, into memory, or both. DMA engines can be connected to I / O interfaces, integrated within processing engines, stand alone, or otherwise integrated into chips.
프리페칭은, 요청들이 특정 VA들을 가지고 전송되는 것의 결과로서 발생한다. 프리페칭의 유효성을 위한 비결(key)은, DMA 엔진 내에서의 프리페치 가상 어드레스 발생기의 기능이다.Prefetching occurs as a result of requests being sent with certain VAs. The key to the effectiveness of prefetching is the function of the prefetch virtual address generator in the DMA engine.
개시된 발명은, STLB를 갖는 SMMU를 통해서 메모리에 접속될 수 있는 다차원 엔진이다. 다차원 엔진은, 표면들 또는 다른 유형들의 데이터 어레이들에 대한 데이터에 액세스한다. 이는, 비-선형 방식으로 데이터에 액세스할 수 있다. 다차원 엔진은, 페이지 내의 데이터 엘리먼트들에 액세스하기 위한 이후의 요청들에 앞서, 페이지들 내에서 어드레스들의 변환들을 위한 요청들을 전송하고, 이에 의해 데이터 엘리먼트 액세스 요청이 전송될 때 변환 페칭을 위한 정지(stalling)를 최소화하거나 또는 회피한다. 이러한 데이터가 없는(data-less) 변환들에 대한 요청들은, STLB 프리페치 요청들로서 알려져 있다. 다차원 엔진은, STLB의 커패시티 내에 포함될 수 있는 오직 약간의(a number of) 맵핑들만을 이용하는 데이터 엘리먼트들의 그룹들에 액세스하여, 이에 의해 변환 캐시 미스들의 전체 수를 감소시킨다.The disclosed invention is a multidimensional engine that can be connected to memory via SMMUs with STLBs. The multidimensional engine accesses data for surfaces or other types of data arrays. It can access data in a non-linear manner. The multidimensional engine sends requests for translations of addresses in pages prior to subsequent requests for accessing data elements within the page, thereby causing a stop for conversion fetching when a data element access request is sent minimizing or avoiding stalling. Requests for such data-less transforms are known as STLB prefetch requests. The multi-dimensional engine accesses groups of data elements that use only a number of mappings that can be included in the capacity of the STLB, thereby reducing the total number of translation cache misses.
도 1은, 본 발명의 다양한 양상들에 따른 간단한 STLB를 예시한다.
도 2는, 본 발명의 다양한 양상들에 따라 할당 로직(allocation logic)을 갖는 STLB를 예시한다.
도 3은, 본 발명의 다양한 양상들에 따라 명료한 프리페칭을 수행하는 STLB를 예시한다.
도 4는, 본 발명의 다양한 양상들에 따라 STLB 및 워커를 포함하는 SMMU를 예시했다.
도 5는, 본 발명에 따라 시스템 TLB들 및 인터커넥트의 종래의 시스템을 예시한다.
도 6은, 본 발명에 따라 시스템 TLB들이 개시자 네트워크 인터페이스 유닛들 내에 집적된 인터커넥트를 예시한다.
도 7은, 본 발명에 따라 하나의 인터커넥트의 변환 요청들이 다른 인터커넥트에 집적된 시스템 TLB들에 의해 지원되는, 2개의 인터커넥트들의 시스템을 예시한다.
도 8은, 본 발명에 따라 중간-레벨 변환 캐시를 공유하는 시스템 TLB들을 예시한다.
도 9는, 본 발명에 따라 인터커넥트에 대한 시뮬레이션 환경을 예시했다.
도 10은, 본 발명에 따라 가상 어드레스 발생기, STLB, 및 타겟을 갖는 DMA 엔진의 시스템을 예시한다.
도 11은, 본 발명에 따라 노멀 및 프리페치 가상 어드레스 발생기들, STLB, 및 타겟을 갖는 DMA 엔진의 시스템을 예시한다.
도 12는, 프리페치 가상 어드레스 스트림 및 노멀 가상 어드레스 스트림을 생성하는 프로세스를 예시한다.
도 13은, 일 표면의 회전을 예시한다.
도 14는, 회전된 라인 내에서 데이터의 어드레스들의 관련성(correspondence)을 도시한다.
도 15는, 소스로부터 픽셀들의 그룹들을 판독하고 그리고 이들을 목적지에 기록하는 것을 도시한다.
도 16은, 메모리 페이지들로의 표면의 로우들의 맵핑을 도시한다.
도 17은, 회전 엔진, SMMU, 및 메모리의 어레인지먼트를 예시한다.
도 18은, 데이터 요청들 및 프리페치 요청들에 대해 별도의 채널들을 갖는 다른 이러한 어레인지먼트를 예시한다.
도 19는, 회전 엔진 내에서 어드레스 발생기들의 2개의 가능한 어레인지먼트들을 예시한다.
도 20은, 상이한 페이지들에 걸쳐 퍼져 있는 라인들을 갖는 액세스 영역의 프리페치 윈도우의 애플리케이션을 도시한다.Figure 1 illustrates a simple STLB in accordance with various aspects of the present invention.
Figure 2 illustrates an STLB with allocation logic in accordance with various aspects of the present invention.
Figure 3 illustrates an STLB that performs clear pre-fetching in accordance with various aspects of the present invention.
Figure 4 illustrates an SMMU that includes an STLB and a walker in accordance with various aspects of the present invention.
Figure 5 illustrates a conventional system of system TLBs and interconnects in accordance with the present invention.
Figure 6 illustrates an interconnect in which system TLBs are integrated into initiator network interface units in accordance with the present invention.
Figure 7 illustrates a system of two interconnects in which translation requests of one interconnect are supported by system TLBs integrated into another interconnect in accordance with the present invention.
Figure 8 illustrates system TLBs sharing an intermediate-level translation cache in accordance with the present invention.
Figure 9 illustrates a simulation environment for an interconnect in accordance with the present invention.
10 illustrates a system of a DMA engine having a virtual address generator, STLB, and target, in accordance with the present invention.
11 illustrates a system of DMA engines having normal and prefetch virtual address generators, STLBs, and targets in accordance with the present invention.
12 illustrates a process for generating a pre-fetch virtual address stream and a normal virtual address stream.
13 illustrates the rotation of one surface.
Figure 14 shows the correspondence of the addresses of the data in the rotated line.
15 illustrates reading groups of pixels from a source and writing them to a destination.
Figure 16 shows the mapping of the rows of surfaces to memory pages.
Figure 17 illustrates the arrangement of a rotating engine, SMMU, and memory.
Figure 18 illustrates another such arrangement with separate channels for data requests and prefetch requests.
Figure 19 illustrates two possible arrangements of address generators in a rotation engine.
Figure 20 shows an application of a prefetch window of an access area having lines spread over different pages.
이제 도 1을 참조하면, STLB(100)는 입력 포트(110)를 통해서 입력 요청들을 수신하고, 어드레스를 변환하고, 출력 포트(120)를 통해서 하나 또는 그 초과의 대응 출력 요청을 송신한다. 요청들은, 어드레스, 동작(판독/기록), 크기, 보안 표시(security indication), 특권 레벨(privilege level) 및 범용 측파대 정보를 포함하는(그러나, 이에 제한되지 않음), 변환과 관련된 요청의 부분들을 추출하는 콘텍스트 로직(150)으로 전송된다. 이러한 부분들을 이용하면, 콘텍스트 로직은 변환 테이블(160)에서 룩업된(looked up) 적어도 콘텍스트 식별자와 어드레스의 조합을 생성한다.Referring now to FIG. 1,
변환 테이블(160)은 하나 또는 그 초과의 엔트리들을 포함하고, 이들 엔트리들 각각은 일련의(a range of) 어드레스들 및 일 세트의 콘텍스트들에 대응한다. 입력 요청 어드레스 및 콘텍스트가 엔트리와 매치(match)할 때, 변환 테이블은 변환된 어드레스 및 허가(permission)들을 포함하는 다수의 파라미터들을 리턴한다. 변환 테이블(160)은, 수많은 방식들로, 예를 들어, 완전히 연관되거나(associative) 또는 세트-연관된 CAM(Content-Addressable Memory)의 형태로 구현될 수 있다. 일부 양상들에 따르면, STLB(100)는, 더 작은 수의 엔트리들이지만 더 낮은 레이턴시 변환 테이블을 첫 번째로, 그후 더 큰 수의 엔트리들이지만 더 높은 레이턴시 변환 테이블을 두 번째로 갖는 멀티-레벨 캐시의 방식으로 배열된 다수의 레벨들의 변환 테이블을 포함한다.The translation table 160 includes one or more entries, each of which corresponds to a range of addresses and a set of contexts. When the input request address and the context match the entry, the translation table returns a number of parameters including the translated address and permissions. The translation table 160 may be implemented in a number of ways, e.g., in the form of a CAM (Content-Addressable Memory) that is fully associative or set-related. According to some aspects, the
콘텍스트 로직(150)에서 행해진 콘텍스트 계산 및 변환 테이블(160)의 변환 테이블 룩업의 결과에 기초하여, 제어 로직(170)은 이하의 동작들 중 하나를 취한다:Based on the results of the context lookup performed in the
A) 요청으로부터의 정보 및 몇몇 내부적 구성 상태를 이용하는 콘텍스트 로직(150)이 요청이 변환을 필요로 하지 않는다고 결정하는 경우, 어떠한 변형도 없이 또는 약간의 변형만으로 통과(pass through)하도록 허용되어, 변환 테이블(160)은 인테로게이팅되지(interrogated) 않는다.A) If the
B) 룩업이 변환 테이블(160)에서 히트하고 허가가 유효한 경우, 요청은 변환된다. 변환된 어드레스를 이용하기 위해 적어도 어드레스 필드가 변형된다. 통상적으로, 최상위(most significant) 비트들은 변환 테이블(160)로부터 획득된 변환된 어드레스에 의해 대체되고, 여기서 비트들의 수는 변환 테이블(160)에서 엔트리에 대응하는 페이지 크기로부터 도출된다. 몇몇 경우들에서, 요청의 다른 속성들이 또한 변형된다.B) If the lookup hits in the translation table 160 and the permission is valid, the request is translated. At least the address field is modified to use the translated address. Typically, the most significant bits are replaced by the translated address obtained from the translation table 160, where the number of bits is derived from the page size corresponding to the entry in the translation table 160. In some cases, other attributes of the request are also modified.
C) 허가가 실패한 경우, 요청은 진행하도록 허용되지 않거나 또는 에러로 마킹된다.C) If the authorization fails, the request is not allowed to proceed or is marked as error.
D) 룩업이 변환 테이블(160)에서 미스하는 경우(즉, 어떠한 대응하는 엔트리도 존재하지 않는 경우), STLB(100)가 워커 포트(130)를 통해서 외부 변환 요청을 위치시키고 동일한 워커 포트(130)로부터 응답을 수신할 때까지, 요청은 진행되지 않는다. 외부 변환 요청이 펜딩하는 동안, 오리지널 요청은 STLB(100)에서 정지된다(stalled). 이는 STLB(100)를 통해서 진행하는 모든 트래픽을 정지시킨다. 몇몇 STLB들은 TLB에서 미스되었던 요청들을 일시적으로 저장하는데 이용되는 버퍼(180)를 갖는다. 이는, (버퍼(180)가 꽉 찰 때까지) STLB(100)를 통한 진행을 유지하도록 하는 이후의 요청들을 허용하기 때문에, HUM(Hit-Under-Miss) 및/또는 MUM(Miss-Under-Miss) 버퍼로서 보통 지칭된다. 워커 포트(130)를 통한 외부 변환 요청이 응답을 수신한 후, 정지된 요청은 A), B), 또는 C)에 따라 변환되고 처리된다.D) If the lookup misses in the translation table 160 (i.e., there is no corresponding entry), the
외부 변환 요청이 워커 포트(130)를 통해서 전송되는 경우, 응답이 다시 돌아올 때, 새로운 변환이 변환 테이블(160)에 부가된다. 새로운 변환을 위치시킬(put)(그리고 이전에 저장된 변환을 폐기할) 엔트리를 선택하기 위해 이용될 수 있는 수많은 종류들의 알고리즘들이 존재한다. 이는, 특히, LRU(Least Recently Used), Pseudo-LRU, NRU(Not-recently-Used), FIFO(First-In-First-Out)와 같은 공통의 캐시 할당 대체 정책들을 포함한다.When an external translation request is sent through the
본 발명의 몇몇 양상들에 따르면, 외부 변환 요청들은 일 유형을 포함한다. 이 유형은, 외부 변환 요청이 노멀 입력 요청에 응답하여 개시되었는지 또는 프리페치 요청에 응답하여 개시되었는지 여부를 나타낸다. 본 발명의 몇몇 양상들에 따르면, 이 유형은 워커 포트(130)의 프로토콜 내에서 대역-내 인코딩된다. 본 발명의 다른 양상들에 따르면, 이 유형은 측파대 신호로 표시된다.According to some aspects of the present invention, external conversion requests include one type. This type indicates whether the external conversion request was initiated in response to a normal input request or in response to a prefetch request. According to some aspects of the invention, this type is in-band encoded within the protocol of the
본 발명의 몇몇 양상들에 따르면, 변환 테이블(160)은 완전히 연관된다. 본 발명의 몇몇 양상들에 따르면, 변환 테이블(160)은 세트-연관된다. 본 발명의 몇몇 양상들에 따르면, 변환 테이블(160)은 다수의 레벨들의 변환 테이블로 구축된다. 본 발명의 몇몇 양상들에 따르면, 변환 테이블(160)은, 제 1-레벨의 완전히 연관된 변환 테이블 및 제 2-레벨의 완전히-연관된 또는 세트-연관된 변환 테이블로 구축된다. 본 발명의 몇몇 양상들에 따르면, 변환 테이블(160)의 일부는 하나 또는 그 초과의 SRAM(static random access memory) 어레이들로 구축된다.According to some aspects of the invention, the conversion table 160 is fully related. According to some aspects of the invention, the conversion table 160 is set-related. According to some aspects of the present invention, the conversion table 160 is constructed with a plurality of levels of conversion tables. According to some aspects of the present invention, the conversion table 160 is constructed with a first-level fully associated conversion table and a second-level fully-associated or set-associated conversion table. According to some aspects of the present invention, portions of the translation table 160 are constructed with one or more static random access memory (SRAM) arrays.
이제 도 2를 참조하면, 본 발명에 따라, 할당 로직(261)은, 교체 정책(replacement policy)에 기초하여, 엔트리가 변환 테이블(160) 내의 요청에 대해 할당되어야만 하는지 여부 그리고 만약 그렇게 할당되었다면 어떤 엔트리가 이용되어야만 하는지를 결정하기 위해 입력 포트(110)로부터 도출되는 요청의 몇몇 특징들을 이용한다. 본 발명의 몇몇 양상들에 따르면, 교체 정책은 온더플라이(on the fly)로 변경될 수 있다. 본 발명의 다른 양상에 따르면, 교체 정책은 트랜잭션 요청으로 표시된 바와 같이 트랜잭션(per-transaction) 단위로 선택된다.Referring now to FIG. 2, in accordance with the present invention,
본 발명의 몇몇 양상들에 따르면, 변환 테이블(160)은 세트 연관되고 다수의 그룹들로 세분되며, 여기서 각각의 그룹은 하나 또는 그 초과의 웨이(way)들을 포함한다. 본 발명의 몇몇 양상들에 따르면, 그룹들은 단지 하나의 엔트리이다. 본 발명의 다른 양상들에 따르면, 그룹들은 상대적으로 더 크고 SRAM들에 저장된다.According to some aspects of the invention, the conversion table 160 is set related and subdivided into a plurality of groups, where each group includes one or more ways. According to some aspects of the invention, the groups are only one entry. According to other aspects of the invention, the groups are relatively larger and stored in SRAMs.
본 발명의 몇몇 양상들에 따르면, 입력 포트(110)로부터 착신되는 요청의 속성들은, 요청이 엔트리를 할당할 그룹들을 결정하는데 이용된다. 이러한 속성들은, 요청의 소스, 요청의 식별자(ID)(종종 태그로서 지칭됨), 또는 할당에 전용되는 특수한 측파대들, 또는 이들의 임의의 조합을 포함한다.According to some aspects of the present invention, the attributes of the incoming request from the
본 발명의 몇몇 양상들에 따르면, 할당 로직(261)은 결정에 이용되는 요청의 속성들에 기초하여 허용가능한 할당 그룹들을 결정하기 위해 이용되는 설정가능한(configurable) 또는 프로그래밍가능한 레지스터 어레이를 포함한다. 설정가능한 어레이는, 시스템 하드웨어 설계 시간에서 셋 업된다. 프로그래밍가능한 어레이는, 소프트웨어에 의해 셋 업되고, 칩의 구동 동안 변경될 수 있다.According to some aspects of the invention,
본 발명의 몇몇 양상들에 따르면, 요청들의 클래스들은 요청들의 속성들을 이용하여 결정된다. 본 발명의 몇몇 양상들에 따르면, 일 클래스는 변환 테이블(160)에 최대수의 엔트리들을 할당한다. 본 발명의 몇몇 양상들에 따르면, 일 클래스는 변환 테이블(160)에 최소수의 엔트리들을 할당한다.According to some aspects of the invention, the classes of requests are determined using attributes of the requests. According to some aspects of the invention, a class assigns a maximum number of entries to the translation table 160. According to some aspects of the present invention, a class assigns a minimum number of entries to the translation table 160.
본 발명의 몇몇 양상들에 따르면, (워커 포트(130)를 통한) 워커로의 펜딩 요청들의 수가 한정된 경우, 펜딩 요청 엔트리들은 클래스별로 규제되어 이용되는 다수의 엔트리들의 그룹들에 할당된다. 펜딩 요청들의 수에 대한 한계치(limit)에 도달되는 동안 행해진 외부 변환 요청은, 응답이 펜딩 외부 변환 요청들의 수를 다시 한계치 미만으로 가져올 때까지 외부 변환 요청이 일시적으로 차단되도록 야기한다. 본 발명의 다른 양상들에 따르면, 한계치는 프리페치 입력 요청의 결과인 일 유형의 전체 펜딩 외부 변환 요청들에 적용된다. 본 발명의 다른 양상들에 따르면, 한계치는 특정 그룹의 전체 펜딩 외부 변환 요청들에 적용된다. 본 발명의 다른 양상들에 따르면, 한계치는 특정 클래스의 전체 펜딩 외부 변환 요청들에 적용된다.According to some aspects of the invention, when the number of pending requests to a worker (through the worker port 130) is limited, the pending request entries are assigned to groups of multiple entries that are regulated and used classwise. An external conversion request made while reaching the limit on the number of pending requests causes the external conversion request to be temporarily blocked until the response returns the number of pending external conversion requests below the threshold again. According to other aspects of the present invention, the threshold is applied to all pending external conversion requests of a type that are the result of a prefetch input request. According to other aspects of the invention, the threshold is applied to the entire group of pending external conversion requests. According to other aspects of the invention, the threshold applies to all pending external conversion requests of a particular class.
본 발명의 일 양상에 따르면, 워커로의 펜딩 요청들의 수가 한계치에 도달할 때, 펜딩 요청들의 수가 한계치 미만이 될 때까지, 프리페치들로부터 야기되는 요청들은 일시적으로 차단된다. 본 발명의 다른 양상에 따르면, 워커로의 펜딩 요청들의 수가 한계치에 도달할 때, 프리페치들로부터 야기되는 요청들은 폐기된다.According to an aspect of the invention, when the number of pending requests to the worker reaches the limit, requests resulting from the prefetches are temporarily blocked until the number of pending requests becomes less than the limit. According to another aspect of the invention, when the number of pending requests to the worker reaches a limit, requests resulting from prefetches are discarded.
이제 도 3을 참조하면, 부가적인 기능은 명시적 프리페칭을 지원한다. 본 발명의 일 양상에 따르면, 프리페치 식별 로직(355)은 프리페치 요청들을 식별한다. 프리페치 요청들은 여러 가지 속성들을 이용하여 식별된다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청들은, 요청들을 가지고 입력 포트(310)를 통해서 또한 전송된 측파대 신호를 이용하여 식별된다. 본 발명의 다른 양상들에 따르면, 프리페치 요청들은 요청의 ID를 이용하여 식별된다. 본 발명의 다른 양상들에 따르면, 프리페치 요청들은 요청들의 어드레스 비트들을 이용하여 식별된다. 다른 필드들 또는 필드들의 조합이 프리페치 요청들을 식별하기 위해 이용된다. 본 발명의 다른 양상들에 따르면, 프리페치 요청들은 입력 포트(310)와는 분리된 전용 프리페치 포트를 갖는다.Referring now to FIG. 3, additional functions support explicit prefetching. According to an aspect of the invention,
본 발명의 몇몇 양상들에 따르면, 프리페치 요청들은 사용시에 표준 트랜잭션 프로토콜에 따라 합법적으로 형성된다. 일부 표준 트랜잭션 프로토콜들은 AMBA(Advanced Microcontroller Bus Architecture) AXI(Advanced extensible Interface) 및 OCP(Open Cores Protocol)이다. 본 발명의 몇몇 양상들에 따르면, 노멀 요청들은 풀 캐시 라인을 위한 것인 반면, 프리페치 요청들은 0 바이트들 또는 1 바이트와 같은 소량의 데이터를 위한 것이다. 0 바이트 요청은 몇몇 프로토콜들에 따르면 불법적이지만, 프리페치의 표시로서 이용될 수 있다. 1 바이트 요청은, 대부분의 프로토콜에 따르면 합법적이며, 프리페치 크기로서 이용될 수 있다. 1 바이트 요청(바이트는 데이터 요청의 최소 원자 단위임)은, 요청된 데이터가, 액세스 제한들의 정의된 어드레스 범위들 또는 카덴스들 사이의 임의의 바운더리들, 예컨대, 페이지 크기로 정렬된 범위들을 초과하지 않을 것임을 보장하는 이점을 갖는다. 게다가, 1 바이트 요청은 인터페이스상에서 데이터 트랜스퍼의 정확하게 1 사이클을 요구한다. 대안적으로, 입력 요청들은, 더 낮은 어드레스 비트들을 폐기함으로써와 같이, 페이지 정렬되도록 강제될 수 있다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청들은 어떠한 데이터도 포함하지 않아야만 한다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청은 4KB와 같은 특정 바운더리로 정렬되어야만 한다. 본 발명의 다른 양상들에 따르면, 프리페치 요청들은 프로토콜에 의해 예상되지(anticipated) 않는 특수 형태들을 취한다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청 ID는 노멀 요청들의 ID와는 상이해야만 한다. 본 발명의 몇몇 양상들에 따르면, 펜딩 프리페치 요청들은 모두 상이한 ID를 가져야만 한다. 본 발명의 몇몇 양상들에 따르면, 프리페치 식별 로직(355)은 콘텍스트 로직(350)에 통합된다.According to some aspects of the present invention, prefetch requests are legitimately formed in use in accordance with standard transaction protocols. Some standard transaction protocols are AMBA (Advanced Microcontroller Bus Architecture) AXI (Advanced Extensible Interface) and OCP (Open Cores Protocol). According to some aspects of the invention, the normal requests are for a full cache line, while the prefetch requests are for a small amount of data, such as zero bytes or one byte. A 0 byte request is illegal according to some protocols, but can be used as an indication of prefetch. A one-byte request is legal according to most protocols and can be used as a prefetch size. A one-byte request (the byte is the minimum atomic unit of the data request) indicates that the requested data does not exceed the defined address ranges of the access restrictions or any boundaries between the cadences, e.g., It will have the advantage of ensuring that it will not. In addition, a one byte request requires exactly one cycle of data transfer on the interface. Alternatively, input requests can be forced to page align, such as by discarding lower address bits. According to some aspects of the invention, prefetch requests must not contain any data. According to some aspects of the present invention, the prefetch request must be aligned to a specific boundary, such as 4 KB. According to other aspects of the invention, prefetch requests take special forms that are not anticipated by the protocol. According to some aspects of the present invention, the prefetch request ID must differ from the IDs of normal requests. According to some aspects of the invention, pending prefetch requests must all have different IDs. According to some aspects of the present invention, the
본 발명의 몇몇 양상들에 따르면, 프리페치 요청들은 또한 워커 쓰루 포트(330)에 또한 전송된다. 본 발명의 몇몇 양상들에 따르면, 이 포트(330) 상에 이용되는 요청 프로토콜은, 워커가 특정 경우들에서 상이하게 거동하게 하는 프리페치 표시를 포함한다. 본 발명의 몇몇 양상들에 따르면, 요청이 프리페치 요청으로서 식별될 때, 이는, 워커에 의해 추측된 것으로서(speculative) 고려되며, 인터럽트들과 같은 어떠한 부작용도 트리거되지 않는다. 본 발명의 몇몇 양상들에 따르면, 포트(330) 상의 응답 프로토콜은, 요청이 프리페치가 아니었다면 워커에 보통 부작용을 트리거했을 것이라는 표시를 포함한다. 본 발명의 몇몇 양상들에 따르면, 이 응답 표시는 변환 테이블(360) 또는 프리페치 테이블(390)에 대응하는 엔트리를 부가하지 않기 위해 STLB(300)에서 이용된다. 본 발명의 다른 양상들에 따르면, 이 응답 표시는, 비-프리페치 요청이 이 엔트리와 매치할 때 디스에이블된 프리페치 표시를 갖는 워커 쓰루 포트(330)에 새로운 요청이 전송되도록, 변환 테이블(360) 또는 프리페치 테이블(390) 내에서 엔트리를 특수하게 마킹하는데 이용된다.According to some aspects of the present invention, prefetch requests are also sent to the worker through
본 발명의 몇몇 양상들에 따르면, 프리페치 테이블(390)은 펜딩 프리페치 요청들을 저장하는데 이용된다. 본 발명의 몇몇 양상들에 따르면, 프리페치 테이블(390)은 워커에 전송되지 않았던 프리페치 요청들을 포함할 수 있다. 본 발명의 다른 양상들에 따르면, 프리페치 테이블(390)은 워커 쓰루 포트(330)에 전송되었던 프리페치 요청들을 포함할 수 있다. 본 발명의 다른 양상들에 따르면, 프리페치 테이블(390)은, 워커 쓰루 포트(330)에 전송되었던 그리고 워커 쓰루 포트(330)를 통해서 응답을 수신했던 프리페치 요청들을 포함할 수 있다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청에 대한 응답이 STLB(300)에 의해 수신될 때, 변환 테이블(360)에 응답 변환이 할당된다.According to some aspects of the present invention, prefetch table 390 is used to store pending prefetch requests. According to some aspects of the present invention, the prefetch table 390 may include prefetch requests that were not sent to the worker. According to other aspects of the present invention, the prefetch table 390 may include prefetch requests that have been transmitted to the worker through
제어 로직(170)(A, B, C, D)에 대해 도 1에 설명된 4개의 가능한 동작들에 부가하여, 본 발명의 다양한 양상들에 따르면, 제어 로직(370)은 또한 프리페치 요청으로서 식별된 요청을 프리페치 요청 종결 로직(395)으로 전송하도록 인에이블된다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청 종결 로직(395)은 포트(320)를 통해서 프리페치 요청들을 전송하지 않고 그 프리페치 요청들에 자동으로 응답한다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청 종결 로직(395)은, 오직 프리페치 요청들이 (통신 쓰루 포트(330)를 통해서) 워커로부터 응답을 수신한 이후에만, 변환 테이블(360)에서 미스하는 프리페치 요청들에 응답한다. 변환 테이블(360)에서 히트하는 프리페치 요청들은 프리페치 요청 종결 로직(395)에 의해 즉각적으로 응답된다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청 종결 로직(395)은 펜딩 프리페치 요청의 페이지에 매치하는 프리페치 요청들에 곧바로 응답한다. 이렇게 하여, 입력 포트(310)를 통해서 접속된 STLB(300)를 이용하는 에이전트는, 펜딩 프리페치 요청들의 수를 계속 파악하고 있고, STLB(300)에 의해 추적될 수 있는 것보다 더 많은 수의 프리페치 요청들을 전송하지 않음을 보장한다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청이 수신되지만 프리페치 테이블(390)이 이용가능한 엔트리를 갖지 않을 때, 프리페치 요청은, 워커 쓰루 포트(330)로의 요청을 트리거하지 않지만 그 대신에 프리페치 요청 종결 로직(395)에 의해 곧바로 응답된다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청이 수신되지만 프리페치 테이블(390)이 이용가능한 엔트리를 갖지 않을 때, 프리페치 요청은, 공간이 프리페치 테이블(390) 내에서 이용가능하게 될 때까지 정지된다. 본 발명의 몇몇 양상들에 따르면, 전술한 2개의 거동들(무시, 정지) 사이에서의 선택은 프리페치 요청에서의 표시에 의해 행해진다. 본 발명의 다른 양상들에 따르면, 선택은 설정가능한 비트에 의해 행해진다.In addition to the four possible operations described in FIG. 1 for the control logic 170 (A, B, C, D), according to various aspects of the present invention, the
본 발명의 몇몇 양상들에 따르면, STLB(300)는 도 3에 설명된 바와 같은 할당 로직을 포함한다. 프리페치 테이블(390)의 할당은, 클래스에 의해 규제된 다수의 엔트리들 또는 그룹들을 포함한다. 이에 더해, 프리페치 표시는 또한, 변환 테이블(360) 및 프리페치 테이블(390) 내에서 허용가능한 할당 그룹들을 결정하기 위해 이용된다.According to some aspects of the present invention, the
본 발명의 몇몇 양상들에 따르면, 워커(쓰루 포트(330))로의 펜딩 요청들의 수가 한정된 경우, 펜딩 요청 엔트리들은 클래스에 의해 규제되어 이용되는 다수의 엔트리들 또는 그룹들에 할당되며, 여기서 입력 포트(310) 상의 요청의 프리페치 표시는 그룹 또는 클래스 결정시에 이용된다.According to some aspects of the invention, when the number of pending requests to the worker (through port 330) is limited, the pending request entries are assigned to a number of entries or groups that are regulated and used by the class, The prefetch indication of the request on the requestor 310 is used in determining the group or class.
본 발명의 몇몇 양상들에 따르면, 프리페치 요청들에 대해 별도의 포트가 제공된다. 이 경우에, 프리페치 요청은 노멀 요청들과 구별될 필요는 없다. 그러나, 몇몇 양상들에 따르면, 이들은 특정 ID, 크기, 및 얼라인먼트가 되도록 여전히 요구된다.According to some aspects of the invention, a separate port is provided for prefetch requests. In this case, the prefetch request need not be distinguished from the normal requests. However, according to some aspects, they are still required to be specific ID, size, and alignment.
본 발명의 몇몇 양상들에 따르면, STLB(300)은 입력 포트(310)에서 관찰되는 패턴들에 기초하여 프리페치들을 자동으로 발생시키는 로직을 포함한다. 본 발명의 몇몇 양상들에 따르면, 자동 프리페칭은, (현재 페이지 크기, 프로그래밍된 페이지 크기 또는 최소 페이지 크기를 포함하는 페이지 크기에 기초하여) 뒤따르는 페이지를 자동으로 프리페칭하고 있다. 본 발명의 몇몇 양상들에 따르면, 자동 프리페칭 로직은 스트라이드들(strides) 또는 2-차원 액세스들 및 이에 따른 프리페치를 검출한다. 다른 보통의 프리페칭 기법들이 이용될 수 있지만, 이들은 페이지-입도(page-granularity)에 적응되고, 그리고 동일한 페이지에 대해 다수 회 자동 프리페치들을 행하는 것을 회피한다. 본 발명의 몇몇 양상들에 따르면, 자동 프리페칭 로직으로부터 착신되는, 워커 쓰루 포트(330)에 전송된 프리페치들은, 워커가 인터럽트들과 같은 워크의 부작용을 인에이블하는 것을 방지하기 위해 추측에 근거한 표시를 이용한다.According to some aspects of the present invention, the
이제 도 4를 참조하면, 본 발명의 몇몇 양상들에 따르면, STLB(100)는 SMMU(400) 내에 포함된다. STLB(100)는 워커(410)에 커플링된다. 워커(410)는, STLB(100)로부터 외부 변환 요청들을 수신하고, 워커 포트(130)를 통해서 응답들을 제공한다. STLB(100) 및 워커(410)는 출력 포트(120)를 공유한다.Referring now to FIG. 4, in accordance with some aspects of the present invention, an
STLB들을 갖는 인터커넥트(5100)가 도 5에 도시된다. 인터커넥트(5100)는, 개시자 네트워크 인터페이스 유닛 포트들(5110 및 5120), 중심 인터커넥션 네트워크(5140), 및 타겟 포트들(5150)을 포함한다. 개시자 네트워크 인터페이스 포트(5110)는 AXI 프로토콜을 이용하고, 개시자 네트워크 인터페이스 포트(5120)는 AHB 인터페이스 프로토콜을 이용한다. 개시자 IP 인터페이스들은 STLB들(5112 및 5122) 각각을 통해서 개시자 네트워크 인터페이스 포트들(5110 및 5120)에 접속된다. STLB들(5112 및 5122)은 워커 인터페이스 포트(5160)를 통해서 워커에 접속된다.An
도 6은, 개시자 네트워크 인터페이스 유닛들(네트워크 인터페이스 유닛)(6210 및 6220)을 포함하는, 본 발명에 따른 인터커넥트(6200)를 도시한다. 네트워크 인터페이스 유닛(6210)은 개시자 AXI 트랜잭션 인터페이스를 내부 범용 인터페이스 프로토콜에 적응시키는 특정-범용 유닛(6211)을 포함한다. 네트워크 인터페이스 유닛(6220)은, 개시자 AHB 트랜잭션 인터페이스를 내부 범용 인터페이스 프로토콜에 적응시키는 특정-범용(specific-to-generic) 유닛(6221)을 포함한다.Figure 6 illustrates an
개시자 네트워크 인터페이스 유닛들(6210 및 6220) 각각은 G2T(generic to transport) 유닛(6212)을 더 포함한다. G2T 유닛은, 각각의 트랜잭션을 하나 또는 그 초과의 수송 패킷들로 컨버팅하고, 그 수송 패킷들을 타겟 네트워크 인터페이스 유닛 포트들(6250)에 트랜잭션들을 운반하는 데이터경로 수송 네트워크(6240) 상으로 전송한다.Each of the initiator
본 발명의 일 양상에 따르면, 각각의 개시자 네트워크 인터페이스 유닛은 특정-범용 유닛과 G2T 유닛 사이에 배열된 STLB(6213)를 더 포함한다. STLB들(6213)은 자신의 개시자 측 데이터 요청 인터페이스 및 자신의 타겟 측 데이터 요청 인터페이스상에 범용 프로토콜 인터페이스를 포함한다. STLB들(5112 및 5122) 각각은 자신의 상이한 개별적인 프로토콜들(STLB(5112)에 대해서는 AXI 및 STLB(5122)에 대해서는 AHB))에 적응되는 반면에, STLB들(6213)은 동일하고 범용 프로토콜 사양으로 설계된다. 프로토콜 적응의 복잡한 특징들(complexities)은, 특정-범용 유닛들(6211 및 6221)에서 수행되고, 이에 따라 범용 프로토콜은 단순함을 위해 설계된다. 본 발명의 일부 양상들에 따르면, 범용 프로토콜은 정렬되지 않은 액세스들의 복잡한 특징들 또는 복잡한 순서화 요건들을 지원하지 않는다. 이에 따라, STLB(6213)의 설계는 크게 단순화된다. 게다가, 단순화로 인해, STLB(6213) 내 로직 경로들은 더 짧게 되고, 그 레이턴시는 더 낮게 된다.According to an aspect of the present invention, each initiator network interface unit further includes an
G2T(6212)는, 트랜잭션이 지향될(directed) 일 세트의 하나 또는 그 초과의 타겟 인터페이스들(6250)을 결정하기 위해 트랜잭션 어드레스들을 디코딩한다. STLB(6213)는 또한 변환을 룩업하기 위해 그 어드레스를 디코딩해야만 한다. 본 발명의 다른 양상에 따르면, G2T(6212)에서 수행된 것과는 다르게, 어드레스 디코딩이 대신에 STLB(6213)에서 수행된다. 이는, 감소된 트랜잭션 레이턴시의 이점을 제공한다.
자연적으로, 각각의 STLB는 워커(6230)에 워커 요청들을 전송하기 위해 워커 인터페이스를 갖는다. 본 발명의 다른 양상에 따르면, STLB들(6213)의 워커 인터페이스들은 수송 네트워크(6260)를 통해서 워커(6230)에 접속된다. 수송 네트워크(6260)는 수송 네트워크(6240)와 동일한 수송 유닛들의 라이브러리 및 프로토콜을 이용한다. 이는, 요구되는 유닛 레벨 로직 설계 검증의 양을 감소시킬 뿐만 아니라 성능 추정 시뮬레이션 모델을 구축하는데 있어서의 복잡도를 감소시킨다. 수송 유닛들의 라이브러리는:Naturally, each STLB has a worker interface to send worker requests to the
칩 평면도(chip floor plan) 내에서의 대역폭과 배선들의 트레이드-오프들을 허용하기 위한 직렬화 어댑터들(serialization adapters);Serialization adapters to allow trade-offs in bandwidth and wiring within the chip floor plan;
별도의 클록 트리들 및 주파수 스케일링을 위한 클록 도메인 어댑터들; Separate clock trees and clock domain adapters for frequency scaling;
전력 도메인 관리를 허용하기 위한 전력 어댑터들;Power adapters to allow power domain management;
관찰 프로브들(observation probes);Observation probes;
보안 필터들; 및Security filters; And
다른 통상적인 온-칩-인터커텍트 유닛들을 포함한다. 대조적으로, 워커로의 인터페이스 포트(5160)는 표준 프로토콜을 이용하지 않으며, 이에 따라 필연적으로 상이한 세트의 인터커넥트 로직을 갖는다.Other conventional on-chip-interconnect units. In contrast, the
도 7은, 본 발명의 교시들에 따라서, 도 6의 인터커넥트(6200), 개시자 네트워크 인터페이스 유닛(6210), 및 도 6의 STLB(6213)를 도시한다. 서브시스템 인터커넥트(7300)는, 자신의 타겟 네트워크 인터페이스 유닛(7310)을 통해서 개시자 네트워크 인터페이스 유닛(6210)에 접속된다. 서브시스템 인터커넥트(7300)는 다수의 개시자 포트들(7320) 및 내부 네트워크(7330)를 포함한다.FIG. 7 illustrates
본 발명의 일 양상에 따르면, 서브시스템 인터커넥트(7300)는 인터커넥트(6200)와 동일한 라이브러리로부터의 유닛들을 포함한다. 본 발명의 몇몇 양상들에 따르면, 타겟 네트워크 인터페이스 유닛(7310)과 개시자 네트워크 인터페이스 유닛(6210) 사이의 인터페이스 프로토콜은 표준 프로토콜이다. 몇몇 표준 프로토콜들은 AXI, ACE, 및 OCP이다. 본 발명의 다른 양상들에 따르면, 타겟 네트워크 인터페이스 유닛(7310)과 개시자 타겟 인터페이스 유닛(6210) 사이의 프로토콜은, 2012년 9월 25일 출원되고 발명의 명칭이 NETWORK ON A CHIP SOCKET PROTOCOL이며 본원에 인용에 의해 통합된 미국 일반 특허 출원 제13/626,766호에 설명된 네트워크-온-칩 소켓 프로토콜과 같은 특히 낮은 레이턴시를 갖는 특수한 프로토콜이다. 몇몇 프로토콜들을 낮은-레이턴시 프로토콜들로 만드는 일 특징은, 응답들을 요청들과 연관시키기 위해 마스터들이 간접적인 룩업을 수행하게 하는 필요성을 제거하는 트랜잭션 식별자 신호를 갖는 것이다.In accordance with an aspect of the invention,
본 발명의 일 양상에 따르면, TLB 할당 정보가 개시자 네트워크 인터페이스 유닛들(7320)에 접속된 개시자들에 의해 전송되고, 서브시스템 내부 네트워크(7330)를 통해서, 타겟 네트워크 인터페이스 유닛(7310)을 통해서, 이 정보가 STLB(6213)에 제공되는 개시자 네트워크 인터페이스 유닛(6210)으로 수송된다. STLB(6213)는 할당 정책을 수행하기 위해 할당 정보를 이용한다.According to an aspect of the present invention, TLB allocation information is transmitted by initiators connected to initiator
본 발명의 몇몇 양상들에 따르면, TLB 할당 정보는, 트랜잭션 프로토콜의 ID 필드들의 순서화를 이용하여, 개시자 네트워크 인터페이스 유닛들(7320)에서 인코딩된다. 본 발명의 다른 양상들에 따르면, TLB 할당 정보는, 개시자 네트워크 인터페이스 유닛들(7320)로부터 타겟 네트워크 인터페이스 유닛(7310)으로 수송된 프로토콜 측파대 신호들로 인코딩된다. 본 발명의 다른 양상들에 따르면, TLB 할당 정보는 수송 프로토콜의 네트워크 인터페이스 유닛 식별자 필드들로 인코딩된다.According to some aspects of the present invention, the TLB allocation information is encoded in initiator
본 발명의 몇몇 양상들에 따르면, STLB 프리페치 요청들은 개시자 네트워크 인터페이스 유닛들(7320)로부터 STLB(6213)로 전송된다. 프리페치 요청들은, ___자로 출원되고 발명의 명칭이 SYSTEM TRANSLATION LOOK-ASIDE BUFFER WITH REQUEST-BASED ALLOCATION AND PREFETCHING ART-024US1이며, 인용에 의해 본원에 통합된 미국 일반 특허 출원 일련 번호 제 ___ 호에 설명된 유형일 수 있다. 서브시스템 인터커넥트(7300)는, STLB(6213)가 프리페치 요청들을 식별할 수 있게 프리페치 요청들이 전송되거나 재생성되도록 구성된다. 본 발명의 다른 양상들에 따르면, 개시자 네트워크 인터페이스 유닛들(7320)은 프리페치 요청들로부터 노멀 요청들을 구별하기 위해 ID 비트들을 순서화하는 것을 이용한다. 본 발명의 다른 양상들에 따르면, 프리페치 요청들은 측파대 신호들로 표시된다.According to some aspects of the present invention, STLB prefetch requests are sent from initiator
본 발명의 일 양상에 따르면, 개시자 네트워크 인터페이스 유닛들(7320)은 노멀 요청과 프리페치 요청 사이를 구별하도록 프로그래밍가능하다.According to an aspect of the present invention, initiator
본 발명의 일 양상에 따르면, TLB 할당 정보 및 프리페치 식별 정보는 개시자 네트워크 인터페이스 유닛들(7320)로부터 바뀌지 않은(unaltered) 타겟 네트워크 인터페이스 유닛들(7310)로 전송될 수 있어서, 임의의 수의 서브시스템 인터커넥트들(7300)이 캐스케이딩될 수 있고 그리고 여전히 할당 정보를 STLB(6213)에 제공할 수 있다.According to an aspect of the present invention, the TLB allocation information and the prefetch identification information may be transmitted from the initiator
도 8에 도시된 바와 같이, 본 발명의 일 양상에 따르면, STLB들(8400)은 중간-레벨 변환 캐시(8410)를 공유한다. 도 8은, 2개의 STLB들(8400)에 접속된 개시자(8420)를 도시한다. STLB들(8400) 각각은, 워커 인터페이스(8430)를 통해서 워커에 접속된 중간-레벨 변환 캐시(8410)에 접속된다. STLB(8400) 및 중간-레벨 변환 캐시(8410) 둘 다에서 미스하는 변환 요청들은 워커 쓰루 포트(8430)로 전송된다.8, in accordance with an aspect of the present invention,
본 발명의 일 양상에 따르면, 중간-레벨 변환 캐시(8410)는 STLB들(8400) 내의 캐시들보다 더 크고, STLB들(8400)은 중간-레벨 변환 캐시들(8410)의 가외의 커패시티를 공유한다.
본 발명의 양상에 따르면, STLB들(8400)에 의해 수신된 요청들은 교차-국부성을 갖는데, 즉, 상이한 STLB들(8400)은 동일한 변환들 중 일부를 필요로 한다. 중간-레벨 캐시는, 변환들이 워커에 의해 리턴되기 때문에 이 변환들을 홀딩하여, 워커 요청의 딜레이를 일으키지 않으면서 그 대신에 두 번째로 요청하는 STLB(8400)가 중간-레벨 캐시(8410) 내에서 자신이 필요로 하는 변환을 찾을 수 있게 된다.In accordance with an aspect of the present invention, requests received by
본 발명의 일 양상에 따르면, 개시자(8420)는 다수의 인터페이스들을 갖는 개시자이다. 개시자(8420)는 포트들 사이에 트래픽을 분포시킨다. 이 분포는, 링크의 폭을 증가시키지 않고 요청 대역폭을 증가시킨다. 본 발명의 몇몇 양상들에 따르면, 분포는, 몇몇 어드레스 비트들에 기초하여 어드레스 범위의 인터리빙에 의해 결정되어, 그 특정 어드레스 비트들 또는 그 어드레스 비트들의 해쉬(hash)는, 요청에 의해 어떤 포트가 이용될지를 결정한다. 본 발명의 다른 양상들에 따르면, 각각의 포트는 어드레스 공간의 일부에 전용된 캐시에 의해 구동된다. 본 발명의 일 양상에 따르면, 멀티포트형 개시자는, 3D(GPU) 엔진, 2D 엔진, 비디오 엔진, 이미지 프로세싱 엔진, 또는 신호 프로세싱 엔진과 같은 멀티미디어 엔진이다.According to an aspect of the invention, an
특히 포트들 사이에서 요청들의 분포가 적어도 부분적으로는 낮은 어드레스 비트들에 기초한 인터리빙에 기초하여 행해진 경우에는, 동일한 엔진의 다수의 포트들로부터 나오는 트래픽은 양호한 페이지 국부성을 갖는 경향이 있다. 이 경우에서, 긴 인접 버스트(long contiguous burst)들은 포트들 사이에서 나뉠 것이며, STLB 레이턴시는 공유된 중간-레벨 변환 캐시의 이용에 의해 현저하게 감소된다.Traffic from multiple ports of the same engine tends to have good page localization, especially if the distribution of requests among the ports is made based at least in part on interleaving based on low address bits. In this case, long contiguous bursts will be split between the ports, and the STLB latency is significantly reduced by the use of a shared mid-level translation cache.
시뮬레이션 환경은, 본 발명의 다양한 양상들에 따라 도 9에 제시된다. 시뮬레이션 환경은, 컴퓨터에 의해 구동되는 컴퓨터 실행가능 명령들로 구현된다. 로컬 컴퓨터 또는 클라우드 컴퓨터와 같은 수많은 유형들의 컴퓨터들이 이용될 수 있다. 시뮬레이션은, 명령들의 실행의 호출(invocation)에 의해 시작한다.The simulation environment is presented in FIG. 9 in accordance with various aspects of the present invention. The simulation environment is implemented with computer-executable instructions that are run by a computer. Many types of computers, such as a local computer or a cloud computer, may be used. The simulation starts by invocation of execution of instructions.
본 발명의 일 양상에 따르면, 인터커넥트(9510)가 시뮬레이션 환경(9520) 내에서 시뮬레이팅된다. 인터커넥트(9510)는 STLB(9530)를 포함한다. 동일한 시뮬레이션 환경이, STLB 없는 인터커넥트에 대해 또는 TLB를 포함하는 인터커넥트(9510)와 같은 인터커넥트에 대해 이용될 수 있다. 이는, 인터커넥트 및 별도의 STLB에 대해 별도의 시뮬레이션 환경들을 통합시키도록 요구되는 엄청난 복잡성 및 어려운 작업을 회피한다.In accordance with an aspect of the invention, an
본 발명의 몇몇 양상들에 따르면, 시뮬레이션 환경(9520)은 트랜잭터들, 모니터들, 다양한 다른 검증 지적 재산들, 및 스코어보드를 포함한다. 이 스코어보드는 인터커넥트를 지원하도록 설계된다. 스코어보드를 포함하는 시뮬레이션 환경은 내부 STLB를 갖는 또는 내부 STLB를 갖지 않는 인터커넥트에 대해 재사용될 수 있다. 시뮬레이션 환경은, Verilog 또는 System Verilog와 같은 레지스터 트랜스퍼 레벨 언어로 구현된다.According to some aspects of the present invention, the
본 발명의 다른 양상들에 따르면, 이 시뮬레이션은 성능 시뮬레이션(performance simulation)이다. 시뮬레이션 환경은, SystemC와 같은 시스템 레벨 모델링 언어들로 구현된다. 공통의 트랜잭션 소켓 모델링 프로토콜은, OSCI(Open SystemC Initiative) TLM(Transaction Level Modeling) 2.0 표준이다. According to other aspects of the invention, this simulation is a performance simulation. The simulation environment is implemented in system level modeling languages such as SystemC. The common transaction socket modeling protocol is OSCI (Open SystemC Initiative) TLM (Transaction Level Modeling) 2.0 standard.
도 10은, 요청들의 가상 어드레스들이 변환되는 STLB(10120)로 요청들을 전송하는 DMA 엔진(10110)을 포함하는 시스템을 도시한다. DMA 엔진들의 예시들은, 이더넷, 무선, USB, SATA 컨트롤러들과 같은 I/O-기반 엔진들을 포함할 뿐 아니라 또한 카메라 이미지 신호 프로세싱 엔진들, 비디오 엔진들, 2D 및 3D 엔진들, 및 TCP/IP와 같은 가속기들 및 암호화 가속기(cryptography accelerator)를 포함한다. DMA 엔진(10110)과 STLB(10120)는 통신하고 있다. DMA 엔진(10110)은, 요청들에서 전송될 가상 어드레스들의 시퀀스들을 발생시키는 가상 어드레스 발생기(10140)를 포함한다. 본 발명의 몇몇 양상들에 따르면, DMA 엔진(10110)과 STLB(10120)는 직접 접속된다. 본 발명의 다른 양상들에 따르면, DMA 엔진(10110)과 STLB(10120)는 다른 모듈을 통해서 접속된다. 보조 저장 요청들이 인터커넥트(10130)에 행해진다. 대안적으로, 다음-레벨 캐시 또는 보조 저장 DRAM 컨트롤러와 같은 타겟은 인터커넥트(10130) 대신일 수 있다.10 illustrates a system that includes a
STLB(10120)는, 어드레스 변환들을 캐싱하고, 워커 인터페이스(10160)를 통해서 캐시 내에 있지 않은 변환들에 대한 변환 요청들을 전송할 수 있다. 대안적으로, 워커는 STLB와 통합되어 이를 완전한 SMMU로 만들 수 있다. 이러한 경우에서, 변환 테이블 메모리 인터페이스가 워커 인터페이스(10160) 대신에 접속될 것이다. 이러한 경우에서, 대안적으로 워커 인터페이스(10160)는 존재하지 않을 수도 있고, 페이지 테이블 메모리 요청들은 인터커넥트(10130)에 직접 전송될 것이다.
STLB(10120)는 변환 룩-업들 및 어드레스 변형을 수행하기 위해 로직의 결과로서 DMA 엔진(10110)에 의해 전송된 모든 요청들에 보통의(modest) 레이턴시를 부가한다. 그러나, 요청이 STLB(10120)에서 미스할 때(즉, 가상 어드레스에 대응하는 페이지 변환이 변환 캐시에 존재하지 않을 때), STLB(10120)는 페이지 테이블 메모리로부터 변환을 리트리브하기 위해 긴 프로세스(lengthy process)를 통해 진행한다. 이는, TLB 미스들을 갖는 요청들에 상당한 딜레이를 야기한다.
STLB(10120)의 버퍼링 능력 및 요청 스트림의 순서화 제약들에 따라, 다수의 미스들을 동시에 처리할 수 있다. 그러나, 자신의 버퍼링 능력들이 고갈될(exhausted) 때, STLB(10120)는 미스들을 한 번에 하나만 프로세싱해야하고, 이는 훨씬 더 많은 미스들을 급격하게 요청 레이턴시에 부가한다.Depending on the buffering capabilities of the
간단한 블록-기반 DMA 엔진들은 양호한 페이지 국부성을 가질 수 있다. 예를 들어, 4KB의 공통의 페이지 크기의 경우, 간단한 블록-기반 DMA 엔진은 64개의 연속적인 64B 요청들을 위치시킬 수 있다. 페이지에 대한 첫 번째 요청은, 그 요청의 전송을 미스하고 딜레이할 것이다. 그러나, 변환이 STLB에 의해 수신되었을 때, 이 변환은 뒤따르는 63개의 요청들에 대해 효율적으로 재사용될 수 있다. 첫 번째 요청이 상당한 레이턴시 페널티를 발생시키는 동안, 뒤따르는 요청들은 빠르게 진행할 수 있고, 변환이 수신되면, STLB의 존재로 인해 상당하지만 보통 손상(crippling)을 주지 않는 전반적인 성능 페널티를 야기한다. 성능 페널티는 변환 리트리벌의 레이턴시 및 요청들의 레이트에 의존한다.Simple block-based DMA engines can have good page localization. For example, for a common page size of 4 KB, a simple block-based DMA engine could place 64 consecutive 64B requests. The first request to the page will miss and delay the transmission of the request. However, when the transform is received by the STLB, this transform can be efficiently reused for the following 63 requests. While the first request generates a significant latency penalty, subsequent requests can go fast and, if a conversion is received, cause an overall performance penalty that is significant due to the presence of STLB but does not usually cause crippling. The performance penalty depends on the latency of the conversion retry and the rate of requests.
그러나, 수많은 DMA 엔진들은 훨씬 더 불량한 페이지 국부성을 갖는 요청 패턴들을 갖는다. 예를 들어, 어레이를 수직으로 판독하는 2D DMA 엔진은 이전 페이지와는 상이한 페이지에 모든 각각의 요청들을 전송할 수 있다. 액세스된 페이지들의 수가 TLB에 저장될 수 있는 변환들의 수보다 큰 경우, 미스들은 성능에 심각하게 손상을 줄 수 있다. 캐시가 충분히 큰 경우, 2D 엔진이 다음 컬럼을 페칭할 때, 페이지들은 여전히 그 캐시 내에 있을 수도 있어서, 이는 페널티를 감소시킨다.However, many DMA engines have request patterns with much poorer page localization. For example, a 2D DMA engine that reads the array vertically can send all respective requests to a different page than the previous page. If the number of accessed pages is greater than the number of transformations that can be stored in the TLB, the misses can severely impair performance. When the cache is large enough, when the 2D engine fetches the next column, the pages may still be in its cache, which reduces the penalty.
마이크로프로세서들 내에서, 요청들의 어드레스들은 이전에 쉽게 컴퓨팅되지 않는다. 그러나, 수많은 DMA 엔진들은 페칭된 데이터와 그들의 어드레스들 사이에 약간의 종속성(dependency)을 갖는다. 이러한 DMA 컨트롤러들은 예상 요청들의 정확한 스트림을 쉽게 발생시킬 수 있다.Within microprocessors, the addresses of requests are not easily computed previously. However, many DMA engines have some dependency between the fetched data and their addresses. These DMA controllers can easily generate an accurate stream of expected requests.
이는, 오직 데이터 관리가 공간을 다 소진할 때 또는 지원되는 중요한(outstanding) 요청들의 수에 도달될 때에만 가상 어드레스 발생기가 제한되도록, 데이터 버퍼 관리로부터 가상 어드레스 발생기를 디커플링함으로써 자연스럽게 이용된다. 이 특성은 STLB 미스들의 성능 페널티를 감소시키는데 이용될 수 있다.This is used naturally by decoupling the virtual address generator from the data buffer management so that the virtual address generator is limited only when the data management is exhausting the space or when the number of outstanding requests supported is reached. This property can be used to reduce the performance penalty of STLB misses.
도 11은, 타겟(10130)에 접속된 STLB(11220)에 접속된 DMA 엔진(11210)을 포함하는 시스템을 도시한다. DMA 엔진(11210)은 2개의 가상 어드레스 스트림들을 발생시킨다. 하나의 가상 어드레스 스트림은 노멀 가상 어드레스 발생기(11240)에 의해 발생된 노멀 가상 어드레스 스트림이다. 다른 가상 어드레스 스트림은, 노멀 가상 어드레스 발생기(11240)에 의해 발생된 가상 어드레스 스트림과 유사하지만 이보다 앞서는, 프리페치 가상 어드레스 발생기(11250)에 의해 발생된 프리페치 가상 어드레스들의 스트림이다.11 shows a system that includes a
본 발명의 몇몇 양상들에 따르면, 프리페치 가상 어드레스 발생기(11250)는 노멀 가상 어드레스 발생기(11240)와 동일하다. 본 발명의 몇몇 양상들에 따르면, 프리페치 가상 어드레스 발생기(11250)는 노멀 가상 어드레스 발생기(11240)와 몇몇 로직을 공유한다. 가능한 공유 로직의 몇몇 유형들은 설정 레지스터들 및 상태 머신들의 일부들이다.According to some aspects of the present invention, prefetch
본 발명의 몇몇 양상들에 따르면, 프리페치 가상 어드레스 발생기(11250)는 노멀 가상 어드레스 발생기(11240)에 의해 이후에 전송될 각각의 노멀 요청들에 대응하는 프리페치 요청을 전송한다. 본 발명의 다른 양상들에 따르면, 프리페치 가상 어드레스 발생기(11250)는 이전의 또는 최근의 요청에서 액세스되었던 페이지들의 범위에 있는 리던던트 연속 가상 어드레스들을 통해 프리페치들을 요청하는 것을 회피한다. 그렇게 하기 위한 하나의 방법은, 일 페이지 내에서 오직 특정 어드레스에 대응하는 요청 어드레스들만으로 프리페치들의 파생된 스트림을 한정하는 것이다. 보통, 이것은 일 페이지 내에서 첫 번째 어드레스일 수 있다.According to some aspects of the present invention, prefetch
본 발명의 몇몇 양상들에 따르면, 프리페치 요청들은 사용시에 표준 트랜잭션 프로토콜에 따라 합법적으로 형성된다. 몇몇 표준 트랜잭션 프로토콜들은 AMBA(Advanced Microcontroller Bus Architecture) AXI(Advanced extensible Interface) 및 OCP(Open Cores Protocol)이다. 본 발명의 몇몇 양상들에 따르면, 노멀 요청들은 전체 캐시 라인을 위한 것인 반면, 프리페치 요청들은 0 바이트들 또는 1 바이트와 같은 소량의 데이터를 위한 것이다. 0 바이트 요청은 몇몇 프로토콜들에 따르면 불법적이지만, 프리페치의 표시로서 이용될 수 있다. 1 바이트 요청은, 대부분의 프로토콜에 따르면 합법적이며, 프리페치 크기로서 이용될 수 있다. 1 바이트 요청(바이트는 데이터 요청의 최소 원자 단위임)은, 요청된 데이터가, 액세스 제한들의 정의된 어드레스 범위들 또는 카덴스들 사이의 임의의 바운더리들, 예컨대, 페이지 크기로 정렬된 범위들에 걸쳐있지 않을 것임을 보장하는 이점을 갖는다. 게다가, 1 바이트 요청은 인터페이스상에서 데이터의 트랜스퍼의 정확하게 1 사이클을 요구한다. 대안적으로, 입력 요청들은, 더 낮은 어드레스 비트들을 폐기함으로써와 같이, 페이지 정렬되도록 강제될 수 있다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청들은 어떠한 데이터도 포함하지 않아야만 한다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청은 4KB와 같은 특정 바운더리로 정렬되어야만 한다. 본 발명의 다른 양상들에 따르면, 프리페치 요청들은 프로토콜에 의해 예상되지 않는 특수 형태들을 취한다. 본 발명의 몇몇 양상들에 따르면, 프리페치 요청 ID는 노멀 요청들의 ID와는 상이해야만 한다. 본 발명의 몇몇 양상들에 따르면, 펜딩 프리페치 요청들은 모두 상이한 ID를 가져야만 한다. 본 발명의 몇몇 양상들에 따르면, STLB 인터페이스는 펜딩 프리페치 요청들의 수를 특정수로 제한한다. 펜딩 프리페치 요청들의 수는 동적이며, 이는 수를 프로그래밍하는 소프트웨어에 의해 또는 가능한 수들의 초이스로부터 선택하는 소프트웨어에 의해서와 같이, 제조된 칩에서 변경될 수 있음을 의미한다.According to some aspects of the present invention, prefetch requests are legitimately formed in use in accordance with standard transaction protocols. Some standard transaction protocols are AMBA (Advanced Microcontroller Bus Architecture) AXI (Advanced Extensible Interface) and OCP (Open Cores Protocol). According to some aspects of the invention, the normal requests are for the entire cache line, while the prefetch requests are for a small amount of data, such as zero bytes or one byte. A 0 byte request is illegal according to some protocols, but can be used as an indication of prefetch. A one-byte request is legal according to most protocols and can be used as a prefetch size. A one-byte request (where the byte is the minimum atomic unit of the data request) indicates that the requested data is within the defined bounds of access constraints or ranges bounded by any boundaries between the cadences, e.g., page size It will have the advantage of ensuring that it will not be. In addition, a one-byte request requires exactly one cycle of transfer of data on the interface. Alternatively, input requests can be forced to page align, such as by discarding lower address bits. According to some aspects of the invention, prefetch requests must not contain any data. According to some aspects of the present invention, the prefetch request must be aligned to a specific boundary, such as 4 KB. According to other aspects of the present invention, prefetch requests take special forms that are not expected by the protocol. According to some aspects of the present invention, the prefetch request ID must differ from the IDs of normal requests. According to some aspects of the invention, pending prefetch requests must all have different IDs. According to some aspects of the invention, the STLB interface limits the number of pending prefetch requests to a specific number. The number of pending prefetch requests is dynamic, which means that it can be changed in the fabricated chip, such as by software programming the number or by software selecting from a possible number of choices.
본 발명의 몇몇 양상들에 따르면, STLB(11220)는 DMA 엔진(11210)으로부터 노멀 및 프리페치 요청 스트림들 모두를 수신한다. 본 발명의 몇몇 양상들에 따르면, 노멀 요청들 및 프리페치 요청들은 상이한 물리적 또는 가상 요청 채널들 상에서 전송된다. 본 발명의 다른 양상들에 따르면, 노멀 요청들 및 프리페치 요청들은 동일한 채널들 상에서 전송되고, 프리페치 요청들은 STLB(11220)에 의해 식별가능하다.In accordance with some aspects of the present invention,
필수적으로 전부는 아니지만 일부의 방식들은:Essentially, but not all, of the following methods:
각각의 요청을 통해 전송된 측파대 신호를 이용함으로써;By using sideband signals transmitted on each request;
요청의 ID를 이용함으로써;By using the ID of the request;
요청들의 어드레스 비트들을 이용함으로써;By using the address bits of the requests;
요청의 일부인 다른 필드들 또는 필드들의 조합을 이용함으로써; 그리고By using a combination of other fields or fields that are part of the request; And
노멀 요청들에 대해 이용된 포트와는 별개인 전용 프리페치 포트를 이용함으로써 By using a dedicated prefetch port that is separate from the port used for normal requests
식별가능하다.Identifiable.
본 발명의 몇몇 양상들에 따르면, 프리페치 가상 어드레스 발생기(11250)는, 노멀 가상 어드레스 발생기(11240)의 현재 상태, DMA 엔진(11210) 내의 버퍼 이용가능성, 또는 STLB(11220)와의 프리페치 가상 어드레스 발생기(11250)의 상호작용에 기초하여 요청들을 전송하기 위한 제어 로직을 포함한다.According to some aspects of the present invention, the pre-fetch
본 발명의 몇몇 양상들에 따르면, 프리페치 가상 어드레스 발생기(11250)는 노멀 가상 어드레스 발생기(11240)에 테더링되어, 오직 노멀 가상 어드레스 발생기(11240)에 의해 발생된 가상 어드레스들 앞에 N개의 가상 어드레스들의 거리 내에 있게 되는 가상 어드레스들만을 발생시킨다. 통상적으로 이러한 거리를 계산하기 위한 노멀 어드레스는 가장 최근에-발생된 노멀 어드레스이다. 본 발명의 몇몇 양상들에 따르면, 프리페치 가상 어드레스 스트림이 오직 노멀 스트림 앞의 M개의 필터링된 가상 어드레스들인 가상 어드레스들만을 발생시키도록, 테더(tether)는 필터링된 프리페치 가상 어드레스 스트림에 기초한다(즉, 여기서 프리페치 가상 어드레스는, 요청이 다른 최근의 요청과 동일한 페이지 내에 어드레스를 갖는 요청과 같이 특정 기준을 충족하는 경우에는 발생되지 않는다). 이는, 너무 많은 프리페칭을 통해 TLB 캐시를 쓰래싱(thrashing)하는 것을 회피하기 위해, 프리페치 스트림에 의해 요청된 새로운 페이지들의 수를 제어하는데 유용하다. 본 발명의 몇몇 양상들에 따르면, N 및 M은 하드 코딩될 수 있거나, 동적으로 프로그래밍가능하거나, 또는 가능한 값의 테이블의 일부일 수 있다.According to some aspects of the present invention, the pre-fetch
본 발명의 몇몇 양상들에 따르면, STLB(11220)는 자신의 캐시 및 구조들에서 할당 정책들을 지원한다. STLB(11220)에서 이용가능한 할당된 리소스들이 초과되지 않도록 보장하기 위해 테더를 N 또는 M으로 한정시킴으로써, DMA 엔진(11210)은, 프리페치 요청 스트림이 이용가능한 리소스들의 이점을 취하고 그리고 캐시들 또는 요청 스트림의 거동을 방해하지 않는 것을 보장한다.According to some aspects of the present invention,
본 발명의 몇몇 양상들에 따르면, STLB(11220)는, 캐시 미스가 발생하였고 그리고 STLB(11220) 내의 트래킹 구조에서 슬롯이 취해졌음을 나타내기 위한 방법으로서 프리페치 요청들에 대한 응답들을 이용한다. 특히, 프리페치 요청이 변환 캐시 내에 이미 존재하거나 또는 미스로서 이미 펜딩 가상 어드레스에 수신되는 경우, STLB(11220)는 응답을 즉시 리턴한다. 프리페치 요청이 미스하여 페이지에 대한 워커 요청이 이미 펜딩중이 아닌 경우, 오직 변환이 워커에 의해 리턴된 때에만 STLB(11220)는 응답을 리턴한다. 본 발명의 몇몇 양상들에 따르면, 프리페치 가상 어드레스 발생기(11250)는 오직 P개의 프리페치 요청들만이 펜딩하는 것으로 프로그래밍될 수 있다. 오직 변환이 획득된 후에만 미스들에 대한 응답을 리턴하는 STLB(11220)과 함께, 프리페치 가상 어드레스 발생기(250)는, 자신이 처리할 수 있는 것보다 더 많은 요청들을 STLB(11220)에 전송하지 않는 것을 보장한다. 이는, STLB(11220)로부터의 역압(backpressure) 또는 STLB(11220)에 의한 프리페치 요청들의 중단(dropping)(둘 모두 바람직하지 않음)을 회피한다. 본 발명의 몇몇 양상들에 따르면, P는 하드 코딩되거나, 동적으로 프로그래밍가능하거나, 또는 가능한 값의 테이블의 일부일 수 있다.According to some aspects of the present invention,
본 발명의 몇몇 양상들에 따르면, STLB(11220)는 또한 할당 정책을 지원한다. STLB 프리페치들에 적용가능한 몇몇 할당 정책들은, ___자로 출원되고 발명의 명칭이 SYSTEM TRANSLATION LOOK-ASIDE BUFFER WITH REQUEST-BASED ALLOCATION AND PREFETCHING인 미국 일반 특허 출원 ___(ART-024US1), 및 2012년 8월 18일자로 출원되고 발명의 명칭이 SYSTEM TRANSLATION LOOK-ASIDE BUFFER WITH REQUEST-BASED ALLOCATION AND PREFETCHING인 미국 가특허 출원 일련 번호 제61/684705호 (어토니 도켓 번호: ART-024PRV)에 설명되며, 이들은 둘 다 인용에 의해 그 전체가 본원에 통합된다. 할당 정책을 이용하여, DMA 엔진(11210)은 STLB(11220)에서 특정 개수의 엔트리들을 예비할 수 있다. 자신의 중요한 프리페치들의 수를 그 수로 한정시킴으로써, DMA 엔진(11210)은 STLB(11220)에서 프리페치 오버플로우들을 절대 야기하지 않는 것으로 보장한다.According to some aspects of the present invention,
본 발명의 몇몇 양상들에 따르면, STLB(11220)는 선택가능한 또는 프로그래밍가능한 할당 정책들을 지원한다. DMA 엔진(11210)으로부터의 프리페치 요청들은, STLB(11220)가 사용해야만 하는 할당 정책의 표시를 포함한다.According to some aspects of the present invention,
본 발명의 몇몇 양상들에 따르면, DMA 엔진(11210)은 다수의 노멀 가상 어드레스 발생기들을 포함한다. 프리페치 가상 어드레스 발생기는, 다수의 노멀 가상 어드레스 발생기들이 STLB 프리페칭의 이점을 취하는 것을 가능하게 하기 위해 다수의 노멀 가상 어드레스 발생기들에 커플링된다.According to some aspects of the present invention, the
임의의 캐시와 같은 TLB는 퇴거(eviction) 정책을 갖는다. 퇴거 정책은, 새로운 변환이 워커로부터 페칭될 때 어떤 저장된 변환이 교체될지 결정한다. 프리페치들은 이러한 퇴거 정책을 바이어싱하는데 이용될 수 있다. 본 발명의 일 양상에 따르면, TLB는 LRU(least recently used) 교체 정책을 이용하고, 프리페치는 엔트리 변환을 "이용"하는 효과를 가져서, 이에 의해 변환의 퇴거 확률을 낮춘다.A TLB, such as any cache, has an eviction policy. The eviction policy determines which stored conversions are to be replaced when a new transformation is fetched from the worker. Prefetches can be used to bias this eviction policy. According to an aspect of the invention, the TLB utilizes a least recently used (LRU) replacement policy, and prefetching has the effect of "using" the entry transformation, thereby lowering the probability of the eviction of the transformation.
이제 도 12의 플로우차트를 참조한다. 본 발명의 일 양상에 따르면, 프리페치 요청 스트림은 테더링된다. 프리페치 요청 스트림은 노멀 요청 스트림과 동일하지만 그에 앞선다. 가상 어드레스 스트림들을 발생시키는 프로세스의 시작(12300) 이후에, DMA 엔진은 노멀 가상 어드레스(12310)를 발생시킨다. 다음으로 그리고 노멀 가상 어드레스(12310)에 기초하여, DMA 엔진은 프리페치 가상 어드레스(12320)를 발생시킨다. 프리페치 가상 어드레스는 직접 또는 중간 모듈을 통해서 STLB(12330)에 전송된다. 약간의 시간 이후에(이 시간은 이상적으로, 변환을 페칭하기 위해 STLB가 최소한으로 소요하는 시간임), DMA는 직접 또는 중간 모듈을 통해서 노멀 가상 어드레스를 STLB(12340)에 전송한다.Reference is now made to the flow chart of FIG. According to an aspect of the invention, the prefetch request stream is tiled. The prefetch request stream is the same as the normal request stream, but precedes it. After the
"사용 카운터(use counter)"는 각각의 변환 엔트리와 연관된다. "사용 카운터"는, 각각의 프리페치 요청에 대해 증분되고, 각각의 노멀 요청에 대해 감분된다. 논-널(non-null) 사용 카운터는 엔트리가 퇴거되는 것을 방지한다. 미스하는 프리페치 요청은 퇴거를 요구한다. 그 퇴거가 방지되는 경우, 프리페치 요청은 정지된다. 이 메커니즘은, 요청 플로우의 국부성 및 STLB에서 이용가능한 엔트리들의 수의 함수로서, 테더의 길이를 자동으로 조절한다.A "use counter" is associated with each conversion entry. The "usage counter" is incremented for each prefetch request and decremented for each normal request. A non-null usage counter prevents an entry from being evicted. Miss prefetch requests require eviction. If the eviction is prevented, the prefetch request is stopped. This mechanism automatically adjusts the length of the tether as a function of the localization of the request flow and the number of entries available in the STLB.
회전 엔진과 같은 다차원 엔진은, 2D 표면을 취하고, 반전된 x-y 좌표들로 이를 기록한다. 도 13은, 메모리 내에서의 표면 데이터의 어레이를 도시한다. 소스 표면(13110)은 목적지 표면(13120)을 생성하기 위해 반전된 자신의 좌표들을 갖는다.A multidimensional engine, such as a rotating engine, takes a 2D surface and records it with the inverted x-y coordinates. Figure 13 shows an array of surface data in memory.
본 발명의 일 양상에 따르면, 자신의 좌표들에 기초한 표면의 각각의 픽셀의 메모리 어드레스는 이하의 공식에 의해 제공된다.According to an aspect of the invention, the memory address of each pixel of the surface based on its coordinates is provided by the following formula:
Addr = BASE + y * WIDTH + x * PIX_SIZE Addr = BASE + y * WIDTH + x * PIX_SIZE
여기서:here:
x 및 y는 표면 내 픽셀의 좌표들이고;x and y are the coordinates of the pixels in the surface;
BASE는 표면의 베이스 어드레스이고;BASE is the base address of the surface;
WIDTH는 로우의 시작부와 다음 로우의 시작부 사이의 거리(바이트 단위)이고; 그리고WIDTH is the distance (in bytes) between the beginning of the row and the beginning of the next row; And
PIX_SIZE는 바이트 단위의 일 픽셀의 크기(통상적으로 2 또는 4 바이트)이다.PIX_SIZE is the size of one pixel in bytes (typically 2 or 4 bytes).
본 발명의 다른 양상들에 따르면, 다른 공식들은 메모리 어드레스들에서의 픽셀들의 어레인지먼트를 설명한다.According to other aspects of the present invention, other formulas describe the arrangement of pixels at memory addresses.
소스 표면(13110)과 목적지 표면(13120)은 동일한 파라미터들(BASE, WIDTH, PIX_SIZE)을 가질 필요는 없다.The
종래의 다차원 엔진들에 대한 문제점은, (로우의 말단부에서는 잠재적으로 제외하고) 인접하는 데이터의 증분 어드레스들에서 하나의 표면이 스텝 쓰루될 수 있으면서, 다른 표면은 어드레스들에 있어서 상대적으로 큰 스텝들로 스텝 쓰루 되어야만 한다는 점이다. 이는, 도 14에 도시되는데, 여기서 픽셀 어드레스들의 맵핑은,The problem with conventional multidimensional engines is that one surface can be stepped through at incremental addresses of contiguous data (potentially at the end of the row), while the other surface has relatively large steps in the addresses It must be stepped through. This is illustrated in FIG. 14, where the mapping of pixel addresses,
소스 표면(0) => 목적지 표면(0)Source surface (0) => Destination surface (0)
소스 표면(32) => 목적지 표면(4)
소스 표면(64) => 목적지 표면(8)
소스 표면(96) => 목적지 표면(12)
소스 표면(128) => 목적지 표면(16)
이다.to be.
목적지 표면은 인접 데이터의 증분 어드레스들(여기서, PIX_SIZE = 4바이트임)로 기록되는 한편, SRC 표면은 픽셀들 사이에서 큰 점프(jump)들을 가지고 판독된다.The destination surface is written with incremental addresses of contiguous data (where PIX_SIZE = 4 bytes), while the SRC surface is read with large jumps between pixels.
표면들이 기록 에이전트와 판독 에이전트 사이에서 공유될 수도 있는 DRAM(dynamic random access memory)들과 같은 메모리들은, 데이터의 작은 유닛들에 액세스할 때 효율적이지 않다. 도 14의 예시에서, 목적지 표면의 기록은 효율적으로 행해질 수 있지만, 소스 표면의 판독은 효율적으로 행해질 수 없다.Memories, such as dynamic random access memories (DRAMs), whose surfaces may be shared between the recording agent and the read agent, are inefficient when accessing small units of data. In the example of Fig. 14, the recording of the destination surface can be performed efficiently, but the reading of the source surface can not be performed efficiently.
이는, 전통적으로 2개의 단계들:This traditionally involves two steps:
(1) 더 큰 블록들에서의 소스 표면들로부터 페칭하는 단계(1) fetching from the source surfaces in the larger blocks
(2) 큰 블록 페치로부터의 불필요한 데이터가, 다차원 엔진이 이를 필요로 할 때 중간 저장소에 여전히 있게 하기 위해 충분한 시간 동안 유지되도록 다차원 엔진에 일부 중간 저장소를 부가하는 단계로 해결된다.(2) adding some intermediate storage to the multidimensional engine so that unnecessary data from the large block fetch is held for a sufficient time to still remain in the intermediate storage when the multidimensional engine needs it.
도 15에서, 다차원 엔진은 인접 픽셀들의 그룹들(이 예시에서, 2개의 그룹들)에서의 SRC로부터 판독한다. 그후, 이 엔진이 DST에 직접 기록하기 위해 사용하는 동안, 나머지는 일시적으로 저장된다. 블록들의 폭 및 높이는, 필요한 버퍼를 최소화하면서 DRAM의 사용을 최대화하도록 선택될 수 있다.In Fig. 15, the multi-dimensional engine reads from SRCs in groups of adjacent pixels (in this example, two groups). Then, while this engine is used to write directly to the DST, the rest is temporarily stored. The width and height of the blocks may be selected to maximize the use of the DRAM while minimizing the required buffer.
DRAM들은 통상적으로 64-256 바이트 버스트들에 대해 거의 최적으로 거동하여, 직사각형 액세스 영역이 한 측에 16-128 픽셀들이 있을 수 있다. 버퍼링을 감소시키기 위해, 직사각형의 일 차원은 감소될 수 있다.The DRAMs typically behave almost optimally for 64-256 byte bursts, so the rectangular access area may be 16-128 pixels on one side. To reduce buffering, one dimension of the rectangle can be reduced.
다른 문제는, 다차원 엔진에 의해 액세스되는 어드레스들이 가상 어드레스들일 때 발생한다.Another problem arises when the addresses accessed by the multidimensional engine are virtual addresses.
가상 어드레싱 시스템에서, 메모리는 페이지들(통상적인 크기는 4KB임)로 구성된다. 물리적 어드레스들(PA)로의 가상 어드레스들(VA)의 맵핑은 불규칙한 경향이 있어서, 페이지 바운더리에 걸쳐 인접하는 VA들에 있는 픽셀들은 물리적으로-어드레싱된 메모리에서는 멀리 떨어져 있을 수도 있다.In a virtual addressing system, the memory consists of pages (the typical size is 4 KB). The mapping of virtual addresses VA to physical addresses PA tends to be irregular so that pixels in adjacent VAs across the page boundary may be far from physically-addressed memory.
칩들 내에서 회전되는 표면들은, 4B의 PIX_SIZE를 갖는 4KB의 WIDTH를 초과할 수 있다. 4KB의 가상으로 어드레싱된 페이지 크기들의 경우, 이는, 표면 내 픽셀들의 단일 로우가 1 페이지를 초과하여 확장한다는 것을 의미한다. 그 결과로서, 컬럼 내 픽셀들은 동일한 픽셀 상에 있지 않다. 심지어는 페이지 크기보다 더 작은 WIDTH의 경우에도, 컬럼 내 픽셀들의 페이지 국부성은 STLB 미스들로 인한 상당한 성능 문제를 야기할 만큼 충분히 낮을 수 있다.Surfaces rotated in chips may exceed 4KB WIDTH with PIX_SIZE of 4B. In the case of 4 KB of virtually addressed page sizes, this means that a single row of pixels within a surface extends beyond one page. As a result, the pixels in the column are not on the same pixel. Even in the case of a WIDTH smaller than the page size, the page localization of the pixels in the column may be low enough to cause significant performance problems due to STLB misses.
도 16은, 3200 픽셀 폭 및 4B PIX_SIZE를 갖는 표면(16410)을 도시한다. 표면의 각각의 로우(16420)는 WIDTH=3200 * 4B=12.8kB를 이용한다. 4KB 페이지들의 경우, 각각의 로우는 3.125 페이지들을 이용한다. 제 1 컬럼의 픽셀들은 페이지들 0, 3, 6 등에 있다.16 shows a
가상 메모리 시스템에서, 다차원 엔진은 시스템 메모리 관리 유닛(SMMU)을 통해서 메모리에 접속된다. SMMU는 VA들을 취하고 이들을 메모리에 적합한 PA들로 컨버팅한다.In a virtual memory system, the multidimensional engine is connected to memory via a system memory management unit (SMMU). The SMMU takes the VAs and converts them into PAs suitable for memory.
본 발명의 일 양상에 따르면, 도 17에 도시된 바와 같이, 다차원 엔진(17510)은 SMU(17520)를 통해서 메모리(17530)로 접속된다. SMMU(17520)는 시스템 변환 색인 버퍼(STLB)(17522) 및 워커(17524)를 포함한다. STLB(17522)는 최근의 VA-PA 변환들을 파악하고 있다. 워커(17524)는, 요청된 VA에 대한 변환이 STLB(17522)에 존재하지 않을 때 메모리 내의 변환 테이블로부터의 변환을 컴퓨팅하거나 또는 룩업한다.According to one aspect of the present invention, as shown in Fig. 17, a
워커(17524)는 변환을 해결하기 위해 2개 내지 20개 초과의 메모리 액세스들을 취한다. 2개의 메모리 액세스들은 작은 VA 공간에 충분하다. 과도한 가상화 계층으로 인해 "네스티드 페이징(nested paging)" 및 64비트들로 표현될 수 있는 것들과 같은 큰 VA 공간들에 대해 20개 또는 그 초과의 메모리 액세스들이 요구된다.
이 때문에, 수직 방향으로 표면(410)의 횡단 동안 워커(17524)에 의해 발생된 메모리 액세스 트래픽은, 그들 자신의 픽셀들에 액세스하기 위한 트래픽을 훨씬 초과하며, STLB 미스들로 인한 정지들의 지속기간은 쓰루풋을 급격하게 저하시킬 수 있다. 이에 따라, STLB(17522)에서 변환들을 캐싱하는 것은 중요하다.Because of this, the memory access traffic generated by the
STLB 내에서 캐싱하기 위한 적절한 수의 엔트리들은, 표면의 수직 순회(vertical traversal)에 의해 터치되는 페이지들의 수이다. 픽셀들의 로우들에 의해 이용되는 메모리가 VA 페이지 크기들을 초과할 때, 일 엔트리는 그 표면 내의 각각의 로우에 대해 캐싱되어야 한다.The appropriate number of entries for caching in the STLB is the number of pages that are touched by the vertical traversal of the surface. When the memory used by the rows of pixels exceeds VA page sizes, one entry must be cached for each row in its surface.
STLB를 액세스 영역의 높이와 동일한 엔트리들의 수로 사이징하는 것은 여전히 이하의 문제들을 제기한다:Sizing the STLB by the number of entries equal to the height of the access area still raises the following problems:
(A) 회전 판독들 및 기록들의 플로우는, 로우 액세스가 새로운 페이지에 도달할 때 (종종, 긴 시간 기간 동안) 인터럽트되어 STLB 미스를 야기한다. (A) The flow of rotation readings and writes is interrupted when a row access reaches a new page (often for a long period of time), resulting in a STLB miss.
(B) WIDTH가 정수 페이지들인 표면들과 같은 잘 정렬된 표면들의 경우, STLB 미스들은 로우 액세스가 새로운 페이지에 도달하는 매 번 모든 로우에 대해 백-투-백(back-to-back)을 일으킨다. 이는, SMMU 워커로부터 큰 버스트의 트래픽을 생성하여, 장시간 동안 픽셀 트래픽을 딜레이한다.(B) For well-aligned surfaces such as surfaces where WIDTH is an integer page, STLB misses cause a back-to-back for every row every time a row access reaches a new page . This creates a large burst of traffic from the SMMU worker and delays the pixel traffic for an extended period of time.
본 발명의 일 양상에 따르면, 변환 프리페칭 메커니즘은 STLB 미스들로 인해 딜레이를 감소시키거나 또는 제거하기 위해 STLB와 함께 이용된다. STLB는, 워커로 하여금 자신의 가까운 미래 사용의 예측에 있어서 변환을 페칭하도록 트리거하기 위해 다차원 엔진(또는 다른 조정된 에이전트)으로부터 프리페치 커맨드들을 수신한다. 워커는 STLB에 새로운 변환을 위치시켜서, STLB가 사전에 이용가능하거나 또는 변환이 다차원 엔진에 의해 요청된 후에 감소된 양의 시간에 이용가능하다.According to an aspect of the present invention, a transform prefetching mechanism is used with the STLB to reduce or eliminate delays due to STLB misses. The STLB receives prefetch commands from the multidimensional engine (or other coordinated agent) to trigger the walker to fetch the transformations in the prediction of its near future usage. The walker places a new transform in the STLB so that the STLB is available in advance or at a reduced amount of time after the transformation is requested by the multidimensional engine.
도 18은, SMMU(18620)를 통해서 메모리(17530)에 접속된, 본 발명의 몇몇 양상들에 따른 다차원 엔진(18610)을 도시한다. 다차원 엔진(18610)은, 물리적 채널(18640)을 통해서 데이터 요청들을 행하고, 물리적 채널(18650)을 통해서 프리페치 요청들을 행한다. 본 발명의 다른 양상들에 따르면, 픽셀 및 프리페치 요청들은, 공유된 물리적 채널 상에서 전송되고, 요청의 속성(예를 들어, 비트 또는 커맨드 유형 또는 예비된 요청 크기)에 의해 구별된다.18 shows a
본 발명의 몇몇 양상들에 따르면, 도 19a에 도시된 바와 같이, 다차원 엔진(18610)은 메모리 내의 픽셀들에 액세스하는데 필요한 어드레스들을 발생시키는 어드레스 발생기(19720)를 포함한다. 어드레스 발생기(19720)는, 각각의 발생기가 동일한 스트림의 어드레스들을 발생시키도록 인에이블되도록 복사(duplicate)되지만, 채널(18650) 상에서의 프리페치 요청들로서는 더 일찍 그리고 채널들(18640) 상에서의 데이터 요청들로서는 더 늦게 이들을 발생시킬 것이다.According to some aspects of the present invention, as shown in Figure 19A, the
본 발명의 다른 양상들에 따르면, 도 19b에 도시된 바와 같이, 다차원 엔진(19710)은, 동일한 어드레스들의 데이터 요청들에 앞서, 어드레스들에 대한 프리페치 요청들의 진보된 스트림을 발생시키는 어드레스 발생기(19730)를 포함한다.19B, the
본 발명의 다른 양상에 따르면, 프리페치 발생기는, 규칙적인 스트림의 어드레스들의 특정 범위 내에 머무르도록 제약된다.According to another aspect of the invention, the pre-fetch generator is constrained to stay within a certain range of addresses of the regular stream.
본 발명의 다른 양상에 따르면, 거리는, 액세스되는 임의의 로우에 대해, 마주하게될 다음 페이지에 대한 변환은 프리페칭될 수 있지만 그에 뒤따르는 페이지에 대해서는 프리페칭되지 않도록, 1 페이지이다.According to another aspect of the invention, the distance is one page, so that for any row being accessed, the translation for the next page to be encountered can be pre-fetched, but not for subsequent pages.
본 발명의 다른 양상들에 따르면, 거리는, 프리페치 요청들의 워킹 시간을 커버하기 위해 요구되는 레이턴시 및 버퍼링에 의존하여, 일 페이지 미만 또는 일 페이지 초과로 설정될 수 있다.According to other aspects of the invention, the distance may be set to less than one page or more than one page, depending on the latency and buffering required to cover the working time of the prefetch requests.
이제 도 20을 참조하면, 본 발명의 일 양상에 따르면, 표면(20800)은 데이터의 로우를 갖는다(로우는 데이터의 3.125 페이지들을 포함한다). 표면(20800)은 한 번에 8개의 로우들에 액세스되며, 여기서 순차 액세스들은 우측 방향 데이터를 향한다. 원시(raw) 프리페치 어드레스 스트림에는, 이후에 한 페이지-정도의 어드레스들인, 규칙적인 스트림에 의해 액세스 될 모든 어드레스들이 딸려있다. 특정 시간에, 데이터 요청들은 컬럼(20810)에서의 데이터에 대해 전송된다. 원시 프리페치 스트림은 프리페치 요청 컬럼(20820)에서의 데이터에 대해 전송된다.Referring now to FIG. 20, in accordance with an aspect of the present invention,
원시 스트림은, 페이지 마다 단 하나의 프리페치만을 전송하도록 필터링된다. 특히, 어드레스들은, 이들이 페이지 바운더리 상에 완벽하게 정렬되지 않은 경우에 필터링 아웃된다. 이에 따라, 다음 페이지의 프리페치는, 이전 페이지의 마지막 데이터 엘리먼트가 액세스된 직후에 전송되고, 로우 마다 정확하게 2개의 변환들에 대해 이용가능하게 될 필요가 있다.The raw stream is filtered to transmit only one prefetch per page. In particular, the addresses are filtered out if they are not perfectly aligned on the page boundary. Thus, the prefetch of the next page is sent immediately after the last data element of the previous page is accessed, and needs to be available for exactly two transforms per row.
표면(20800)의 우측 엣지에서, 데이터 액세스 컬럼은, 표면의 좌측 엣지(20830)로부터 시작하여 다음 그룹의 8개의 로우들의 시작부까지 래핑(warp)한다. 래핑 시에, 각각의 액세스는 변환 미스를 야기할 것이다. 본 발명의 다른 양상에 따르면, 일부(대부분)가 페이지 바운더리에 완벽하게 정렬되지 않는다는 사실에도 불구하고, 좌측 엣지(20830)에 대응하는 어드레스들의 프리페치 요청들이 전송된다. 이는, 액세스 영역의 시작 엣지상의 데이터가 페이지 바운더리에 정렬되지 않을 때 트랜스퍼될 새로운 액세스 영역에 대한 시작 조건에 대응한다.At the right edge of
본 발명의 몇몇 양상들에 따르면, 프리페치 트래픽은, 이 트래픽이 워커 또는 메모리 시스템을 압도(overwhelm)하지 않도록, 제한된다. 즉, 다차원 엔진은 자신의 상태에 기초하여 프리페치 요청들의 발행을 폐기하거나 또는 딜레이한다. 특히, 프리페치 요청들의 대역폭, 중요한 프리페치 요청들의 현재 수, 및 최대 레이턴시에 기초한 제한들이 가능하다.According to some aspects of the present invention, prefetch traffic is limited such that this traffic does not overwhelm the walker or memory system. That is, the multi-dimensional engine discards or delays the issuance of prefetch requests based on its state. In particular, limitations based on the bandwidth of the prefetch requests, the current number of critical prefetch requests, and the maximum latency are possible.
본 발명의 몇몇 양상들에 따르면, STLB는, 프리페치 윈도우가 폭의 일 페이지로 제한될 때 페치 액세스 영역의 높이의 2배와 동일한 변환들의 수로 사이징된다. 이것은, 전체 프리페치 윈도우가 로우 마다 오직 2개의 페이지들(현재, 다음)만을 포함할 수 있기 때문이다.According to some aspects of the invention, the STLB is sized with a number of transforms equal to twice the height of the fetch access area when the prefetch window is limited to one page of width. This is because the entire prefetch window may only contain two pages (current, next) per row.
본 발명의 다른 양상들에 따르면, STLB는 시스템에 의해 지원된 가장 큰 페이지 크기에 대해 1+ (프리페치 윈도우 폭/페이지 크기)와 동일한 변환들의 수로 사이징된다.According to other aspects of the present invention, the STLB is sized with a number of transforms equal to 1+ (prefetch window width / page size) for the largest page size supported by the system.
이러한 설정들은, 안정 상태에 있을 때(즉, 프리페치 윈도우가 표면의 엣지들을 터치하지 않을 때) 최적이다. 그러나, 프리페치 윈도우가 시작 엣지에 있거나 또는 액세스 영역들에 걸쳐있을(straddle) 때, 새로운 액세스 영역은 통상적으로 완전히 상이한 페이지들을 이용하기 때문에, 프리페치하기 위한 페이지들 내에 불연속(discontinuity)이 존재한다. These settings are optimal when in a steady state (i.e., when the prefetch window does not touch the edges of the surface). However, when the prefetch window is at the start edge or straddle over the access areas, there is discontinuity in the pages for prefetching because the new access area typically uses completely different pages .
본 발명의 몇몇 양상들에 따르면, STLB는 (페이지-너비 프리페치 윈도우에 대해) 페치 높이를 3배 하거나 또는 다른 크기들에 대해서는 페치 높이를 2+(프리페치 윈도우 크기/페이지 크기) 배로 사이징된다. 이는, 프리페치 윈도우로 하여금 프리페칭시에 어떠한 인터럽션도 없이 2개의 상이한 액세스 영역들을 커버하도록 허용한다.According to some aspects of the invention, the STLB is sized by tripling the fetch height (for the page-width prefetch window) or the fetch height by 2+ (prefetch window size / page size) for other sizes . This allows the prefetch window to cover two different access areas without any interruption in prefetching.
정렬되지 않은 경우들에서, 페치 액세스 영역의 좌측에 있는 부분적으로 이용된 페이지들은 또한 액세스 영역의 우측에 있는 이전 로우 상에서 이용된다. 너비가 충분한 표면 상에서, 프리페치 윈도우 크기가 액세스 영역의 우측에 도달할 무렵에 TLB에서 페이지가 교체될 것이고, 그래서 페이지는 다시 프리페칭되어야만 할 것이다. 원시 프리페치 스트림 필터 크기를 증가시키거나 또는 특수 로직을 부가하는 것은, 반복되는 페칭을 불필요하게 만들 수 있다.In unaligned cases, the partially used pages to the left of the fetch access area are also used on the previous row to the right of the access area. On a surface with sufficient width, the page will be replaced in the TLB by the time the prefetch window size reaches the right side of the access area, so the page will have to be prefetched again. Increasing the size of the raw prefetch stream filter or adding special logic may make repeating fetching unnecessary.
본 발명의 몇몇 양상들에 따르면, STLB는 (페이지-너비 프리페치 윈도우에 대해) 페치 높이를 3배 하거나 또는 다른 크기들에 대해서는 페치 높이를 2+(프리페치 윈도우 크기/페이지 크기)배로 사이징되고, TLB는 액세스 영역의 말단부에 도달할 때까지 액세스 영역의 시작부에 페이지 엔트리들을 고정하도록 필터링된다.According to some aspects of the present invention, the STLB may be sized 3 times the fetch height (for the page-width prefetch window) or 2+ (prefetch window size / page size) times the fetch height for other sizes , The TLB is filtered to fix the page entries at the beginning of the access area until it reaches the end of the access area.
본 개시를 읽는 즉시 당업자들에게 명백하게 되는 바와 같이, 본원에 설명되고 예시된 양상들 각각은 본 발명의 범위 또는 사상으로부터 벗어나지 않고 실시예들을 형성하기 위해 특징들 및 양상들로부터 용이하게 분리될 수 있거나 또는 이들과 조합될 수 있는 이산적 컴포넌트들 및 특징들을 갖는다. 임의의 언급된 방법은, 언급된 이벤트들의 순서로 또는 논리적으로 가능한 임의의 다른 순서로 수행될 수 있다.As will be apparent to those skilled in the art upon reading this disclosure, each of the aspects described and illustrated herein may be readily separated from the features and aspects to form embodiments without departing from the scope or spirit of the invention Or discrete components and features that can be combined with them. Any of the mentioned methods may be performed in the order of the events mentioned or in any other order possible logically.
그렇지 않은 것으로 정의되지 않는 한, 본원에 이용된 모든 기술적 그리고 과학적 용어들은 본 발명이 속하는 분야의 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 본원에 설명된 것들과 유사하거나 또는 동일한 임의의 방법들 및 내용들이 본 발명의 실제 또는 테스팅에 이용될 수 있지만, 대표적으로 예시적인 방법들 및 내용들이 현재 설명된다.Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Moreover, although any methods and contents similar or equivalent to those described herein can be used in the practice or testing of the present invention, exemplary methods and content are presently exemplary.
이 상세한 설명에서 인용된 모든 간행물들 및 특허들은, 마치 각각의 개별적인 간행물 또는 특허가 인용에 의해 통합되기 위해 구체적으로 그리고 개별적으로 표시되는 것처럼 인용에 의해 본원에 통합되며, 간행물들이 인용된 것과 관련하여 방법들 및/또는 시스템을 개시 및 설명하기 위해 인용에 의해 본원에 통합된다. 임의의 간행물의 인용은, 출원 날짜 이전의 그 개시에 대한 것이며, 본 발명이 종래 발명에 의해 이러한 간행물에 선행하는 것으로 권리부여되지 않는다는 인정(admission)으로서 해석되지 않아야만 한다. 게다가, 제공된 간행물의 날짜들은 개별적으로 확인될 필요가 있을 수 있는 실제 공개 일자들과는 상이할 수 있다.All publications and patents cited in this specification are incorporated herein by reference, as if each individual publication or patent was specifically and individually indicated to be incorporated by reference, and that publications are cited Methods and / or systems are incorporated herein by reference for disclosing and describing. The citation of any publication shall be for its commencement prior to the filing date and shall not be construed as admission that the present invention is not entitled to precede such publication by prior invention. In addition, the dates of the publications provided may differ from the actual publication dates, which may need to be individually verified.
추가적으로, 이러한 균등물들은, 현재 알려진 균등물들 및 미래에 개발될 균등물들 둘 다, 즉, 구조에 상관없이 동일한 기능을 수행하는 개발된 임의의 엘리먼트들을 포함하도록 의도된다. 따라서, 본 발명의 범위는, 본원에 설명된 그리고 나타낸 예시적인 실시예들로 제한되는 것으로 의도되지 않는다. Additionally, such equivalents are intended to include both currently known equivalents and equivalents developed in the future, i.e., any elements developed that perform the same function regardless of structure. Accordingly, the scope of the present invention is not intended to be limited to the exemplary embodiments described and illustrated herein.
본 발명의 교시에 따르면, 컴퓨터 및 컴퓨팅 디바이스는 제조 물품(article of manufacture)들이다. 제조 물품의 다른 예시들은: 마더 보드, 서버, 메인프레임 컴퓨터, 또는 데이터를 수신하고, 데이터를 송신하고, 데이터를 저장하고, 또는 방법들을 수행하기 위해 컴퓨터 판독가능 프로그램 코드(예를 들어, 알고리즘, 하드웨어, 펌웨어, 및/또는 소프트웨어)를 실행하도록 구성된 하나 또는 그 초과의 프로세서들(예를 들어, 중앙 프로세싱 유닛, 그래피컬 프로세싱 유닛, 또는 마이크로프로세서)를 각각 갖는 다른 특수 목적 컴퓨터상에 상주하는 전자 컴포넌트를 포함한다.According to the teachings of the present invention, computers and computing devices are articles of manufacture. Other examples of articles of manufacture include: computer readable program code (e.g., computer program code) for receiving a motherboard, server, mainframe computer or data, transmitting data, storing data, (E. G., A central processing unit, a graphical processing unit, or a microprocessor) configured to execute one or more programs (e. G., Hardware, firmware, and / or software) .
제조 물품(예를 들어, 컴퓨터 또는 컴퓨팅 디바이스)은, 컴퓨터 판독가능 프로그램 단계들 또는 여기에 인코딩된 코드와 같은 일련의 명령들을 포함하는 비-일시적 컴퓨터 판독가능 매체 또는 저장소를 포함한다. 본 발명의 특정 양상들에서, 비-일시적 컴퓨터 판독가능 매체는 하나 또는 그 초과의 데이터 저장소들을 포함한다. 따라서, 본 발명의 임의의 양상에 따른 특정 실시예들에서, 컴퓨터 판독가능 프로그램 코드(또는 코드)는 컴퓨팅 디바이스의 비-일시적 컴퓨터 판독가능 매체로 인코딩된다. 결국, 프로세서는, 컴퓨터 판독가능 프로그램 코드가, 툴을 이용하여 기존의 컴퓨터-지원 설계(computer-aided design)를 생성하거나 또는 수정하게 하도록 실행한다. 실시예들의 다른 양상들에서, 컴퓨터-지원 설계의 생성 또는 수정은 웹-기반 소프트웨어 애플리케이션으로서 구현되고, 여기서 컴퓨터-지원 설계 또는 툴 또는 컴퓨터 판독가능 프로그램 코드에 관련된 데이터의 부분들은 호스트의 컴퓨팅 디바이스로 수신되거나 또는 송신된다.An article of manufacture (e.g., a computer or computing device) includes non-transitory computer readable media or storage that includes a series of instructions, such as computer readable program steps or encoded code therein. In certain aspects of the invention, the non-transitory computer readable medium comprises one or more data stores. Thus, in certain embodiments according to certain aspects of the present invention, the computer readable program code (or code) is encoded into a non-transient computer readable medium of the computing device. As a result, the processor executes the computer readable program code to cause the computer to create or modify an existing computer-aided design using the tool. In other aspects of embodiments, the creation or modification of a computer-aided design is implemented as a web-based software application, wherein portions of the data associated with the computer-aided design or tool or computer readable program code are communicated Received or transmitted.
본 발명의 다양한 양상들에 따른 제조 물품 또는 시스템은, 하나 또는 그 초과의 별도의 프로세서들 또는 마이크로프로세서들, 휘발성 및/또는 비-휘발성 메모리 및 주변기기들 또는 주변 컨트롤러들을 통해; 프로세서, 로컬 휘발성 및 비-휘발성 메모리, 주변기기들 및 입력/출력 핀들을 갖는 집적된 마이크로컨트롤러를 통해; 제조 물품 또는 시스템의 고정 버전을 구현하는 별도의 로직을 통해; 그리고 로컬 또는 원격의 인터페이스를 통해서 재프로그래밍될 수 있는 제조 물품 또는 시스템의 버전을 구현하는 프로그래머블 로직을 통해서 다양한 방식들로 구현된다. 이러한 로직은, 로직으로 또는 소프트-프로세서에 의해 실행된 일 세트의 커맨드들을 통해서 제어 시스템을 구현할 수 있다.An article of manufacture or system according to various aspects of the present invention may be implemented on one or more separate processors or microprocessors, volatile and / or non-volatile memory and peripherals or peripheral controllers; Through an integrated microcontroller with a processor, local volatile and non-volatile memory, peripherals and input / output pins; Through separate logic implementing a fixed version of the article of manufacture or system; And programmable logic implementing a version of the article of manufacture or system that can be reprogrammed via a local or remote interface. Such logic may implement the control system through a set of commands executed by logic or by a soft-processor.
이에 따라, 이전의 사항은 단지 본 발명의 다양한 양상들 및 원리들을 예시한다. 당업자들은 본원에 명시적으로 설명되거나 또는 나타나지 않았지만 본 발명의 원리들을 구현하고, 본 발명의 사상 및 범위 내에 포함되는 다양한 어레인지먼트들을 고안할 수 있을 것임을 인식할 것이다. 게다가, 본원에 언급된 모든 예시들 및 조건적 언어는, 발명자들에 의해 기여된 개념들 및 발명의 원리들을 이해하는데 있어서 독자들을 돕도록 주로 의도되고, 이러한 구체적으로 언급된 예시들 및 조건들에 대해 제한하지는 않는 것으로 해석된다. 더욱이, 본 발명의 원리들, 양상들, 및 실시예들을 언급하는 본원의 모든 진술들뿐만 아니라 이들의 특정 예시들은, 이들의 구조적 그리고 기능적 균등물들 모두를 포함하는 것으로 의도된다. 추가적으로, 이러한 균등물들은, 현재 알려진 균등물들은 현재 알려져 있는 균등물들 및 미래에 개발될 균등물들 둘 다, 즉, 구조에 상관없이 동일한 기능을 수행하는 개발된 임의의 엘리먼트들을 포함하도록 의도된다. 따라서, 본 발명의 범위는, 본원에서 설명된 그리고 논의된 다양한 양상들로 제한되는 것으로 의도되지 않는다. 오히려, 본 발명의 범위 및 사상은 첨부된 청구항들에 의해 구현된다.Accordingly, the foregoing merely illustrates the various aspects and principles of the present invention. Those skilled in the art will recognize that, while not explicitly described or shown herein, it is possible to implement the principles of the invention and to contemplate various arrangements that fall within the spirit and scope of the invention. In addition, all examples and conditional language mentioned herein are intended to aid the reader in understanding the concepts and inventive principles taught by the inventors, and are incorporated by reference to such specifically recited examples and conditions It is understood that the present invention is not limited thereto. Moreover, all statements herein reciting principles, aspects, and embodiments of the present invention, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof. Additionally, such equivalents are intended to include both currently known equivalents and currently developed equivalents and equivalents developed in the future, i.e., any elements developed that perform the same function regardless of structure. Accordingly, the scope of the present invention is not intended to be limited to the various aspects described and discussed herein. Rather, the scope and spirit of the invention is embodied by the appended claims.
Claims (112)
어드레스 변환들을 저장하는 변환 테이블;
개시자(initiator)로부터 입력 요청을 수신하도록 인에이블된 입력 포트; 및
상기 입력 요청에 대응하는 출력 요청을 전송하도록 인에이블된 출력 포트를 포함하고,
상기 입력 요청이 프리페치(prefetch)이면, 상기 출력 포트는 출력 요청을 전송하지 않고,
만일 상기 입력 요청이 상기 변환 테이블의 엔트리에 매치(match)하는 경우, 상기 변환 테이블은 변환된 어드레스를 리턴하고,
어드레스 필드는 상기 변환된 어드레스를 이용하기 위해 변형되고,
상기 어드레스 필드의 적어도 일부 비트들은 상기 변환 테이블로부터 획득된 상기 변환된 어드레스에 의해 교체되고, 그리고
상기 변환된 어드레스에 의해 교체된 상기 어드레스 필드의 상기 비트들의 수는 상기 변환 테이블의 상기 엔트리에 대응하는 페이지 크기로부터 도출되는,
시스템 변환 색인 버퍼.A translation look-aside buffer (TLB)
A translation table storing address translations;
An input port enabled to receive an input request from an initiator; And
And an output port enabled to transmit an output request corresponding to the input request,
If the input request is a prefetch, the output port does not send an output request,
If the input request matches an entry in the translation table, the translation table returns the translated address,
An address field is modified to use the translated address,
At least some bits of the address field being replaced by the translated address obtained from the translation table, and
Wherein the number of bits in the address field replaced by the translated address is derived from a page size corresponding to the entry in the translation table,
System conversion index buffer.
프리페치 요청들을 수신하도록 전용된 프리페치 포트를 더 포함하는,
시스템 변환 색인 버퍼.The method according to claim 1,
Further comprising a prefetch port dedicated to receive prefetch requests,
System conversion index buffer.
상기 입력 요청이 프리페치인지 여부를 나타내는 측파대(sideband) 신호를 더 포함하는,
시스템 변환 색인 버퍼.The method according to claim 1,
Further comprising a sideband signal indicating whether the input request is a prefetch,
System conversion index buffer.
상기 입력 요청은 값을 나타내는 ID를 포함하고, 상기 값은 상기 입력 요청이 프리페치인지 여부를 나타내는,
시스템 변환 색인 버퍼.The method according to claim 1,
Wherein the input request includes an ID indicating a value, the value indicating whether the input request is a prefetch,
System conversion index buffer.
상기 입력 요청은 어드레스를 포함하고, 상기 어드레스는 상기 입력 요청이 프리페치인지 여부를 나타내는,
시스템 변환 색인 버퍼.The method according to claim 1,
The input request including an address, the address indicating whether the input request is a prefetch,
System conversion index buffer.
상기 입력 요청은, 상기 입력 요청이 프리페치든 아니든 간에 표준 트랜잭션 프로토콜에 따라 행해지는,
시스템 변환 색인 버퍼.The method according to claim 1,
Wherein the input request is made according to a standard transaction protocol, whether the input request is a prefetch or not,
System conversion index buffer.
상기 입력 요청은 상기 입력 요청에 의해 요청된 데이터의 양을 나타내는 크기를 포함하고,
상기 크기는 전체 캐시 라인의 크기 미만인 데이터의 양을 나타낼 수 있는,
시스템 변환 색인 버퍼.The method according to claim 1,
Wherein the input request includes a magnitude indicating an amount of data requested by the input request,
The size being indicative of the amount of data that is less than the size of the entire cache line,
System conversion index buffer.
상기 크기는 0인,
시스템 변환 색인 버퍼.8. The method of claim 7,
Wherein the size is 0,
System conversion index buffer.
상기 크기는 1 바이트인,
시스템 변환 색인 버퍼.8. The method of claim 7,
Wherein the size is one byte,
System conversion index buffer.
상기 입력 요청은 페이지 정렬되는(page aligned),
시스템 변환 색인 버퍼.The method according to claim 1,
The input request may be page aligned,
System conversion index buffer.
상기 변환 테이블은 세트 결합(set associative)인,
시스템 변환 색인 버퍼.The method according to claim 1,
Wherein the conversion table is set associative,
System conversion index buffer.
상기 변환 테이블은, 정적 랜덤 액세스 메모리 어레이를 포함하는,
시스템 변환 색인 버퍼.12. The method of claim 11,
Wherein the conversion table comprises a static random access memory array,
System conversion index buffer.
상기 변환 테이블은 제 1 변환 테이블 및 제 2 변환 테이블을 포함하고, 상기 제 1 변환 테이블은 상기 제 2 변환 테이블보다 더 작은 수의 엔트리를 갖는,
시스템 변환 색인 버퍼.The method according to claim 1,
Wherein the conversion table includes a first conversion table and a second conversion table, the first conversion table having a smaller number of entries than the second conversion table,
System conversion index buffer.
교체 정책을 이용하도록 배열된 할당 로직을 더 포함하는,
시스템 변환 색인 버퍼.The method according to claim 1,
Further comprising allocation logic arranged to use a replacement policy,
System conversion index buffer.
이용되는 교체 정책은 온더플라이(on the fly)로 변경될 수 있는,
시스템 변환 색인 버퍼.15. The method of claim 14,
The replacement policy used may be changed to on the fly,
System conversion index buffer.
주어진 요청에 대한 교체 정책은, 상기 입력 요청의 속성에 기초하는,
시스템 변환 색인 버퍼.15. The method of claim 14,
Wherein the replacement policy for a given request is based on an attribute of the input request,
System conversion index buffer.
상기 변환 테이블은, 제 1 그룹 및 제 2 그룹을 포함하는,
시스템 변환 색인 버퍼.The method according to claim 1,
Wherein the conversion table comprises a first group and a second group,
System conversion index buffer.
상기 제 1 그룹에 할당이 허용될지 여부를 결정하는 설정가능한 레지스터 어레이(configurable register array)를 더 포함하는,
시스템 변환 색인 버퍼.18. The method of claim 17,
Further comprising a configurable register array for determining whether allocation to the first group is allowed.
System conversion index buffer.
상기 제 1 그룹에 할당이 허용될지 여부를 결정하는 프로그래밍가능 레지스터 어레이를 더 포함하는,
시스템 변환 색인 버퍼.18. The method of claim 17,
Further comprising a programmable register array for determining whether allocation to the first group is allowed,
System conversion index buffer.
상기 입력 요청의 속성은, 상기 입력 요청이 상기 제 1 그룹에 엔트리를 할당할지 여부를 결정하는,
시스템 변환 색인 버퍼.18. The method of claim 17,
Wherein the attribute of the input request is a value indicating whether the input request is to assign an entry to the first group,
System conversion index buffer.
상기 속성은, 상기 입력 요청의 소스(source)의 표시인,
시스템 변환 색인 버퍼.21. The method of claim 20,
Wherein the attribute is an indication of a source of the input request,
System conversion index buffer.
상기 속성은 식별자인,
시스템 변환 색인 버퍼.21. The method of claim 20,
The attribute is an identifier,
System conversion index buffer.
상기 속성은 측파대인,
시스템 변환 색인 버퍼.21. The method of claim 20,
Wherein the attribute is a sideband,
System conversion index buffer.
상기 입력 요청은 입력 요청 클래스를 포함하고;
상기 변환 테이블은, 엔트리 클래스를 각각 포함하는 다수의 변환 테이블 엔트리들을 포함하는,
시스템 변환 색인 버퍼.The method according to claim 1,
The input request including an input request class;
The conversion table including a plurality of conversion table entries each including an entry class,
System conversion index buffer.
상기 입력 요청 클래스에 매치하는 엔트리 클래스를 갖는 변환 테이블 엔트리들의 수가 최대 수(maximum number)를 초과하면, 상기 시스템 변환 색인 버퍼는 상기 입력 요청 클래스에 매치하는 엔트리 클래스를 갖는 변환 테이블 엔트리를 교체하는,
시스템 변환 색인 버퍼.25. The method of claim 24,
If the number of conversion table entries having an entry class matching the input request class exceeds a maximum number, the system conversion index buffer replaces a conversion table entry having an entry class matching the input request class,
System conversion index buffer.
특정 엔트리 클래스를 갖는 변환 테이블 엔트리들의 수가 최소 수 미만이면, 상기 특정 엔트리 클래스를 갖는 변환 테이블 엔트리들은 교체되기에 부적격한,
시스템 변환 색인 버퍼.25. The method of claim 24,
If the number of translation table entries with a particular entry class is less than the minimum number, then the translation table entries with that particular entry class are invalid,
System conversion index buffer.
외부 변환 요청들을 전송하기 위한 워커 포트(walker port)를 더 포함하고,
상기 입력 요청은 어드레스를 포함하고,
상기 변환 테이블이 미스(miss)를 나타내면, 상기 시스템 변환 색인 버퍼는 외부 변환 요청을 전송하는,
시스템 변환 색인 버퍼.The method according to claim 1,
Further comprising a walker port for transmitting external conversion requests,
Wherein the input request comprises an address,
If the translation table indicates a miss, the system translation index buffer transmits an external translation request,
System conversion index buffer.
외부 변환 요청 유형을 더 포함하고,
상기 외부 변환 요청 유형은 상기 입력 요청이 프리페치인지 여부를 나타내는,
시스템 변환 색인 버퍼.28. The method of claim 27,
An external conversion request type,
Wherein the external conversion request type indicates whether the input request is a prefetch,
System conversion index buffer.
상기 외부 변환 요청을 전송하는 것은, 계류중인(pending) 외부 변환 요청들의 수가 한계치에 도달할 때 일시적으로 차단되는(blocked),
시스템 변환 색인 버퍼.28. The method of claim 27,
Transmitting the outer translation request is temporarily blocked when the number of pending outer translation requests reaches a threshold,
System conversion index buffer.
상기 외부 변환 요청을 전송하는 것은, 프리페치들로 인한 계류중인 외부 변환 요청들의 수가 한계치에 도달할 때 일시적으로 차단되는,
시스템 변환 색인 버퍼.28. The method of claim 27,
Transmitting the outer translation request is temporarily blocked when the number of pending outer translation requests due to prefetches reaches a threshold,
System conversion index buffer.
상기 외부 변환 요청을 전송하는 것은, 프리페치들로 인한 계류중인 외부 변환 요청들의 수가 한계치에 도달할 때 폐기되는,
시스템 변환 색인 버퍼.28. The method of claim 27,
Transmitting the external conversion request is discarded when the number of pending external conversion requests due to prefetches reaches a threshold,
System conversion index buffer.
상기 변환 테이블은 제 1 그룹 및 제 2 그룹을 포함하고; 그리고
상기 외부 변환 요청을 전송하는 것은, 상기 제 1 그룹에 대한 계류중인 외부 변환 요청들의 수가 한계치에 도달할 때 일시적으로 차단되는,
시스템 변환 색인 버퍼.28. The method of claim 27,
Wherein the conversion table comprises a first group and a second group; And
Wherein sending the external conversion request is temporarily blocked when the number of pending external conversion requests for the first group reaches a threshold,
System conversion index buffer.
상기 입력 요청은 클래스를 포함하고;
상기 클래스는 상기 외부 변환 요청과 연관되고; 그리고
상기 외부 변환 요청을 전송하는 것은, 상기 클래스의 계류중인 외부 변환 요청들의 수가 한계치에 도달할 때 일시적으로 차단되는,
시스템 변환 색인 버퍼.28. The method of claim 27,
The input request including a class;
The class being associated with the external conversion request; And
Wherein sending the external conversion request is temporarily blocked when the number of pending external conversion requests of the class reaches a threshold,
System conversion index buffer.
워커(walker);
시스템 변환 색인 버퍼를 포함하고,
상기 시스템 변환 색인 버퍼는:
어드레스 변환들을 저장하는 변환 테이블;
개시자(initiator)로부터 입력 요청을 수신하도록 인에이블된 입력 포트 ― 상기 입력 요청은 어드레스를 포함하며, 상기 변환 테이블이 미스를 나타내면, 상기 버퍼는 외부 변환 요청을 전송함 ― ; 및
상기 입력 요청에 대응하는 출력 요청을 전송하도록 인에이블된 출력 포트 ― 상기 입력 요청이 프리페치(prefetch)이면, 상기 출력 포트는 출력 요청을 전송하지 않음 ― 를 포함하고,
만일 상기 입력 요청이 상기 변환 테이블의 엔트리에 매치하는 경우, 상기 변환 테이블은 변환된 어드레스를 리턴하고,
어드레스 필드는 상기 변환된 어드레스를 이용하기 위해 변형되고,
상기 어드레스 필드의 적어도 일부 비트들은 상기 변환 테이블로부터 획득된 상기 변환된 어드레스에 의해 교체되고, 그리고
상기 변환된 어드레스에 의해 교체된 상기 어드레스 필드의 상기 비트들의 수는 상기 변환 테이블의 상기 엔트리에 대응하는 페이지 크기로부터 도출되며,
상기 시스템 변환 색인 버퍼는 상기 워커와 커플링되는,
시스템 메모리 관리 유닛. As a system memory management unit,
A walker;
System conversion index buffer,
The system translation index buffer comprising:
A translation table storing address translations;
An input port enabled to receive an input request from an initiator, the input request comprising an address; if the translation table indicates a miss, the buffer transmits an external translation request; And
An output port enabled to transmit an output request corresponding to the input request, the output port not transmitting an output request if the input request is prefetch;
If the input request matches an entry in the translation table, the translation table returns the translated address,
An address field is modified to use the translated address,
At least some bits of the address field being replaced by the translated address obtained from the translation table, and
Wherein the number of bits in the address field replaced by the translated address is derived from a page size corresponding to the entry in the translation table,
Wherein the system translation index buffer is coupled to the worker,
System memory management unit.
상기 입력 요청이 프리페치인지 여부를 나타내는 외부 변환 요청 유형을 더 포함하는,
시스템 메모리 관리 유닛. 35. The method of claim 34,
Further comprising an external conversion request type indicating whether the input request is a prefetch,
System memory management unit.
상기 입력 요청이 프리페치인 것으로 상기 외부 변환 요청 유형이 나타낼 때, 상기 시스템 메모리 관리 유닛은 부작용들을 발생시키는 것이 금지되는,
시스템 메모리 관리 유닛. 36. The method of claim 35,
Wherein when the external request type indicates that the input request is a prefetch, the system memory management unit is prohibited from generating side effects,
System memory management unit.
개시자;
타겟;
워커;
시스템 변환 색인 버퍼; 및
외부 변환 요청들을 전송하기 위한 워커 포트 ― 상기 외부 변환 요청을 전송하는 것은, 프리페치들로 인한 계류중인 외부 변환 요청들의 수가 한계치에 도달할 때 폐기됨 ―
를 포함하고,
상기 시스템 변환 색인 버퍼는:
어드레스 변환들을 저장하는 변환 테이블;
개시자(initiator)로부터 입력 요청을 수신하도록 인에이블된 입력 포트 ― 상기 입력 요청은 어드레스를 포함하고, 만일 상기 변환 테이블이 미스(miss)를 나타내면, 상기 버퍼는 외부 변환 요청을 전송함 ―; 및
상기 입력 요청에 대응하는 출력 요청을 전송하도록 인에이블된 출력 포트 ― 만일 상기 입력 요청이 프리페치(prefetch)이면, 상기 출력 포트는 출력 요청을 전송하지 않음 ― 를 포함하고,
만일 상기 입력 요청이 상기 변환 테이블의 엔트리에 매치하는 경우, 상기 변환 테이블은 변환된 어드레스를 리턴하고,
어드레스 필드는 상기 변환된 어드레스를 이용하기 위해 변형되고,
상기 어드레스 필드의 적어도 일부 비트들은 상기 변환 테이블로부터 획득된 상기 변환된 어드레스에 의해 교체되고,
상기 변환된 어드레스에 의해 교체된 상기 어드레스 필드의 상기 비트들의 수는 상기 변환 테이블의 상기 엔트리에 대응하는 페이지 크기로부터 도출되며, 그리고
상기 시스템 변환 색인 버퍼의 상기 입력 포트는 상기 개시자에 의해 액세스가능하고, 상기 타겟은 상기 시스템 변환 색인 버퍼의 상기 출력 포트에 의해 액세스가능하며, 상기 워커는 상기 시스템 변환 색인 버퍼의 상기 워커 포트에 의해 액세스가능한,
인터커넥트.As an interconnect,
Initiator;
target;
Walker;
System conversion index buffer; And
A worker port for transmitting external conversion requests; transmitting said external conversion request is discarded when the number of pending external conversion requests due to prefetches reaches a limit value;
Lt; / RTI >
The system translation index buffer comprising:
A translation table storing address translations;
An input port enabled to receive an input request from an initiator, the input request comprising an address; if the translation table indicates a miss, the buffer transmits an external translation request; And
An output port enabled to transmit an output request corresponding to the input request, the output port not transmitting an output request if the input request is prefetch;
If the input request matches an entry in the translation table, the translation table returns the translated address,
An address field is modified to use the translated address,
At least some bits of the address field being replaced by the translated address obtained from the translation table,
Wherein the number of bits in the address field replaced by the translated address is derived from a page size corresponding to the entry in the translation table,
Wherein the input port of the system conversion index buffer is accessible by the initiator and the target is accessible by the output port of the system conversion index buffer and the worker is connected to the worker port of the system conversion index buffer Accessible by,
Interconnect.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261684705P | 2012-08-18 | 2012-08-18 | |
US61/684,705 | 2012-08-18 | ||
PCT/US2013/055451 WO2014031495A2 (en) | 2012-08-18 | 2013-08-16 | System translation look-aside buffer with request-based allocation and prefetching |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167028407A Division KR20160122278A (en) | 2012-08-18 | 2013-08-16 | Translation look-aside buffer with prefetching |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150046130A KR20150046130A (en) | 2015-04-29 |
KR101667772B1 true KR101667772B1 (en) | 2016-10-19 |
Family
ID=50100918
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157006634A KR101667772B1 (en) | 2012-08-18 | 2013-08-16 | Translation look-aside buffer with prefetching |
KR1020167028407A KR20160122278A (en) | 2012-08-18 | 2013-08-16 | Translation look-aside buffer with prefetching |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167028407A KR20160122278A (en) | 2012-08-18 | 2013-08-16 | Translation look-aside buffer with prefetching |
Country Status (5)
Country | Link |
---|---|
US (4) | US9141556B2 (en) |
EP (1) | EP2885713A4 (en) |
KR (2) | KR101667772B1 (en) |
CN (1) | CN104583976B (en) |
WO (1) | WO2014031495A2 (en) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489196B2 (en) | 2011-12-23 | 2016-11-08 | Intel Corporation | Multi-element instruction with different read and write masks |
WO2013095601A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
US10157060B2 (en) | 2011-12-29 | 2018-12-18 | Intel Corporation | Method, device and system for control signaling in a data path module of a data stream processing engine |
US9390018B2 (en) * | 2012-08-17 | 2016-07-12 | Advanced Micro Devices, Inc. | Data cache prefetch hints |
KR101667772B1 (en) | 2012-08-18 | 2016-10-19 | 퀄컴 테크놀로지스, 인크. | Translation look-aside buffer with prefetching |
US10489295B2 (en) * | 2012-10-08 | 2019-11-26 | Sandisk Technologies Llc | Systems and methods for managing cache pre-fetch |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US9904626B2 (en) | 2014-08-29 | 2018-02-27 | Samsung Electronics Co., Ltd. | Semiconductor device, semiconductor system and system on chip |
US9996350B2 (en) * | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
GB2536201B (en) * | 2015-03-02 | 2021-08-18 | Advanced Risc Mach Ltd | Handling address translation requests |
US10268745B2 (en) | 2015-05-29 | 2019-04-23 | Oracle International Corporation | Inherited dimensions |
US10037280B2 (en) | 2015-05-29 | 2018-07-31 | Qualcomm Incorporated | Speculative pre-fetch of translations for a memory management unit (MMU) |
US10528421B2 (en) * | 2015-12-29 | 2020-01-07 | Arteris, Inc. | Protection scheme conversion |
US10866854B2 (en) | 2015-12-29 | 2020-12-15 | Arteris, Inc. | System and method for reducing ECC overhead and memory access bandwidth |
US10402332B2 (en) * | 2016-05-24 | 2019-09-03 | Xilinx, Inc. | Memory pre-fetch for virtual memory |
US10552338B2 (en) * | 2017-02-21 | 2020-02-04 | Arm Limited | Technique for efficient utilisation of an address translation cache |
US10417140B2 (en) * | 2017-02-24 | 2019-09-17 | Advanced Micro Devices, Inc. | Streaming translation lookaside buffer |
CN107370578B (en) * | 2017-06-15 | 2020-11-06 | 西安微电子技术研究所 | Multi-redundancy Ethernet controller based on hardware fast autonomous switching |
CN109144898B (en) * | 2017-06-19 | 2023-02-17 | 深圳市中兴微电子技术有限公司 | System memory management device and system memory management method |
US10649912B2 (en) | 2017-07-14 | 2020-05-12 | International Business Machines Corporation | Method and apparatus for an efficient TLB lookup |
US10877839B2 (en) | 2017-09-22 | 2020-12-29 | Arteris, Inc. | Recovery of a coherent system in the presence of an uncorrectable error |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US11288187B2 (en) * | 2018-03-28 | 2022-03-29 | SK Hynix Inc. | Addressing switch solution |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
GB2574270B (en) * | 2018-06-01 | 2020-09-09 | Advanced Risc Mach Ltd | Speculation-restricted memory region type |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
CN108959125B (en) * | 2018-07-03 | 2021-08-06 | 中国人民解放军国防科技大学 | Storage access method and device supporting rapid data acquisition |
CN110941565B (en) * | 2018-09-25 | 2022-04-15 | 北京算能科技有限公司 | Memory management method and device for chip storage access |
CN109669832A (en) * | 2018-12-11 | 2019-04-23 | 中国航空工业集团公司西安航空计算技术研究所 | One kind is towards GPU graphics chip pipeline unit performance verification method and platform |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
CN111177948A (en) * | 2020-01-15 | 2020-05-19 | 东方红卫星移动通信有限公司 | Typical Walker constellation mathematical model described by using orbit elements |
US20210406199A1 (en) * | 2020-06-25 | 2021-12-30 | Intel Corporation | Secure address translation services using cryptographically protected host physical addresses |
EP4268085A4 (en) * | 2020-12-22 | 2024-04-10 | INTEL Corporation | Processor circuitry to execute an input-output translate virtual address instruction |
US20220197821A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Device, system and method for selectively dropping software prefetch instructions |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080209130A1 (en) | 2005-08-12 | 2008-08-28 | Kegel Andrew G | Translation Data Prefetch in an IOMMU |
US20100262787A1 (en) | 2009-04-09 | 2010-10-14 | International Buisness Machines Corporation | Techniques for cache injection in a processor system based on a shared state |
Family Cites Families (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4525780A (en) | 1981-05-22 | 1985-06-25 | Data General Corporation | Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information |
US4914577A (en) * | 1987-07-16 | 1990-04-03 | Icon International, Inc. | Dynamic memory management system and method |
EP0495167A3 (en) | 1991-01-16 | 1996-03-06 | Ibm | Multiple asynchronous request handling |
US5333291A (en) * | 1991-06-14 | 1994-07-26 | International Business Machines Corporation | Stride enhancer for high speed memory accesses with line fetching mode and normal mode employing boundary crossing determination |
US5440710A (en) | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
US5752274A (en) * | 1994-11-08 | 1998-05-12 | Cyrix Corporation | Address translation unit employing a victim TLB |
US5694567A (en) * | 1995-02-09 | 1997-12-02 | Integrated Device Technology, Inc. | Direct-mapped cache with cache locking allowing expanded contiguous memory storage by swapping one or more tag bits with one or more index bits |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5701448A (en) * | 1995-12-15 | 1997-12-23 | Cyrix Corporation | Detecting segment limit violations for branch target when the branch unit does not supply the linear address |
US6735688B1 (en) * | 1996-11-13 | 2004-05-11 | Intel Corporation | Processor having replay architecture with fast and slow replay paths |
US6195735B1 (en) | 1996-12-31 | 2001-02-27 | Texas Instruments Incorporated | Prefetch circuity for prefetching variable size data |
US6065113A (en) * | 1997-03-07 | 2000-05-16 | Texas Instruments Incorporated | Circuits, systems, and methods for uniquely identifying a microprocessor at the instruction set level employing one-time programmable register |
US6289138B1 (en) | 1997-04-30 | 2001-09-11 | Canon Kabushiki Kaisha | General image processor |
US6212603B1 (en) * | 1998-04-09 | 2001-04-03 | Institute For The Development Of Emerging Architectures, L.L.C. | Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory |
US6574698B1 (en) | 1998-04-17 | 2003-06-03 | International Business Machines Corporation | Method and system for accessing a cache memory within a data processing system |
US6311260B1 (en) | 1999-02-25 | 2001-10-30 | Nec Research Institute, Inc. | Method for perfetching structured data |
US6389514B1 (en) * | 1999-03-25 | 2002-05-14 | Hewlett-Packard Company | Method and computer system for speculatively closing pages in memory |
US6629207B1 (en) | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method for loading instructions or data into a locked way of a cache memory |
US6560664B1 (en) * | 2000-02-18 | 2003-05-06 | Hewlett Packard Development Company, L.P. | Method and apparatus for translation lookaside buffers to access a common hardware page walker |
US7124376B2 (en) | 2000-05-02 | 2006-10-17 | Palmchip Corporation | Design tool for systems-on-a-chip |
EP1354484B1 (en) | 2001-01-12 | 2010-12-08 | Nxp B.V. | Unit and method for memory address translation and image processing apparatus comprising such a unit |
US6877088B2 (en) * | 2001-08-08 | 2005-04-05 | Sun Microsystems, Inc. | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
US7260704B2 (en) | 2001-11-30 | 2007-08-21 | Intel Corporation | Method and apparatus for reinforcing a prefetch chain |
US6675280B2 (en) * | 2001-11-30 | 2004-01-06 | Intel Corporation | Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher |
US7099318B2 (en) * | 2001-12-28 | 2006-08-29 | Intel Corporation | Communicating message request transaction types between agents in a computer system using multiple message groups |
US6775747B2 (en) | 2002-01-03 | 2004-08-10 | Intel Corporation | System and method for performing page table walks on speculative software prefetch operations |
US6804741B2 (en) * | 2002-01-16 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Coherent memory mapping tables for host I/O bridge |
US7631106B2 (en) * | 2002-08-15 | 2009-12-08 | Mellanox Technologies Ltd. | Prefetching of receive queue descriptors |
US20040176942A1 (en) | 2003-03-04 | 2004-09-09 | International Business Machines Corporation | Method, system and program product for behavioral simulation(s) of a network adapter within a computing node or across multiple nodes of a distributed computing environment |
US7614015B2 (en) | 2003-04-09 | 2009-11-03 | Microsoft Corporation | Method and system for representing group policy object topology and relationships |
US6985970B2 (en) | 2003-04-25 | 2006-01-10 | International Business Machines Corporation | Data transfer with implicit notification |
US7143225B1 (en) * | 2003-04-29 | 2006-11-28 | Advanced Micro Devices, Inc. | Apparatus and method for viewing data processor bus transactions on address pins during memory idle cycles |
WO2004104841A1 (en) * | 2003-05-21 | 2004-12-02 | Fujitsu Limited | Address conversion buffer power control method and device thereof |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7260685B2 (en) | 2003-06-20 | 2007-08-21 | Micron Technology, Inc. | Memory hub and access method having internal prefetch buffers |
US7870553B2 (en) | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7093100B2 (en) * | 2003-11-14 | 2006-08-15 | International Business Machines Corporation | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes |
US7269708B2 (en) * | 2004-04-20 | 2007-09-11 | Rambus Inc. | Memory controller for non-homogenous memory system |
EP1589433A1 (en) | 2004-04-20 | 2005-10-26 | Ecole Polytechnique Federale De Lausanne | Virtual memory window with dynamic prefetching support |
US7406613B2 (en) * | 2004-12-02 | 2008-07-29 | Qualcomm Incorporated | Translation lookaside buffer (TLB) suppression for intra-page program counter relative or absolute address branch instructions |
US7330940B2 (en) | 2005-02-02 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Method and system for cache utilization by limiting prefetch requests |
US7861095B2 (en) * | 2005-02-15 | 2010-12-28 | Arm Limited | Data processing apparatus security |
US20070067505A1 (en) | 2005-09-22 | 2007-03-22 | Kaniyur Narayanan G | Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware |
US7532676B2 (en) | 2005-10-20 | 2009-05-12 | Trellis Phase Communications, Lp | Single sideband and quadrature multiplexed continuous phase modulation |
JP4160589B2 (en) | 2005-10-31 | 2008-10-01 | 富士通株式会社 | Arithmetic processing device, information processing device, and memory access method for arithmetic processing device |
US8447837B2 (en) | 2005-12-30 | 2013-05-21 | Akamai Technologies, Inc. | Site acceleration with content prefetching enabled through customer-specific configurations |
WO2007079192A2 (en) | 2005-12-30 | 2007-07-12 | Akamai Technologies, Inc. | Site acceleration with content prefetching enabled through customer-specific configurations |
US7702843B1 (en) * | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US20080028181A1 (en) * | 2006-07-31 | 2008-01-31 | Nvidia Corporation | Dedicated mechanism for page mapping in a gpu |
US7702888B2 (en) * | 2007-02-28 | 2010-04-20 | Globalfoundries Inc. | Branch predictor directed prefetch |
CN101689144B (en) | 2007-06-19 | 2013-07-24 | 富士通株式会社 | Information processor and control method |
JP4608011B2 (en) | 2007-06-19 | 2011-01-05 | 富士通株式会社 | Arithmetic processing apparatus and arithmetic processing method |
US8244979B2 (en) | 2007-07-13 | 2012-08-14 | International Business Machines Corporation | System and method for cache-locking mechanism using translation table attributes for replacement class ID determination |
US8417920B2 (en) | 2007-12-21 | 2013-04-09 | Arm Limited | Management of speculative transactions |
US8250307B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Sourcing differing amounts of prefetch data in response to data prefetch requests |
US20100318707A1 (en) | 2008-02-08 | 2010-12-16 | Panasonic Corporation | External device access apparatus, control method thereof, and system lsi |
US8387067B2 (en) | 2008-03-14 | 2013-02-26 | Lsi Corporation | Method for tracking and/or verifying message passing in a simulation environment |
US8117420B2 (en) * | 2008-08-07 | 2012-02-14 | Qualcomm Incorporated | Buffer management structure with selective flush |
US8131947B2 (en) | 2008-08-29 | 2012-03-06 | Freescale Semiconductor, Inc. | Cache snoop limiting within a multiple master data processing system |
US8347037B2 (en) | 2008-10-22 | 2013-01-01 | International Business Machines Corporation | Victim cache replacement |
US7930519B2 (en) | 2008-12-17 | 2011-04-19 | Advanced Micro Devices, Inc. | Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit |
US8275598B2 (en) | 2009-03-02 | 2012-09-25 | International Business Machines Corporation | Software table walk during test verification of a simulated densely threaded network on a chip |
US8533437B2 (en) | 2009-06-01 | 2013-09-10 | Via Technologies, Inc. | Guaranteed prefetch instruction |
US8397049B2 (en) | 2009-07-13 | 2013-03-12 | Apple Inc. | TLB prefetching |
US8341380B2 (en) | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
US9519947B2 (en) | 2009-09-25 | 2016-12-13 | Nvidia Corporation | Architecture and instructions for accessing multi-dimensional formatted surface memory |
US20110145542A1 (en) | 2009-12-15 | 2011-06-16 | Qualcomm Incorporated | Apparatuses, Systems, and Methods for Reducing Translation Lookaside Buffer (TLB) Lookups |
US9081501B2 (en) | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8429378B2 (en) * | 2010-07-06 | 2013-04-23 | Qualcomm Incorporated | System and method to manage a translation lookaside buffer |
US8583894B2 (en) | 2010-09-09 | 2013-11-12 | Advanced Micro Devices | Hybrid prefetch method and apparatus |
US9405700B2 (en) * | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
US8527684B2 (en) | 2010-11-12 | 2013-09-03 | Lsi Corporation | Closed loop dynamic interconnect bus allocation method and architecture for a multi layer SoC |
US8405668B2 (en) * | 2010-11-19 | 2013-03-26 | Apple Inc. | Streaming translation in display pipe |
US9378150B2 (en) | 2012-02-28 | 2016-06-28 | Apple Inc. | Memory management unit with prefetch ability |
US9116815B2 (en) | 2012-06-20 | 2015-08-25 | Advanced Micro Devices, Inc. | Data cache prefetch throttle |
KR101667772B1 (en) | 2012-08-18 | 2016-10-19 | 퀄컴 테크놀로지스, 인크. | Translation look-aside buffer with prefetching |
US9569361B2 (en) * | 2014-01-10 | 2017-02-14 | Samsung Electronics Co., Ltd. | Pre-fetch chaining |
-
2013
- 2013-08-16 KR KR1020157006634A patent/KR101667772B1/en active IP Right Grant
- 2013-08-16 US US13/969,425 patent/US9141556B2/en not_active Expired - Fee Related
- 2013-08-16 KR KR1020167028407A patent/KR20160122278A/en not_active Application Discontinuation
- 2013-08-16 US US13/969,451 patent/US9396130B2/en active Active
- 2013-08-16 WO PCT/US2013/055451 patent/WO2014031495A2/en active Application Filing
- 2013-08-16 CN CN201380043416.5A patent/CN104583976B/en active Active
- 2013-08-16 EP EP13830550.3A patent/EP2885713A4/en not_active Withdrawn
- 2013-08-17 US US13/969,562 patent/US9852081B2/en active Active
- 2013-08-17 US US13/969,559 patent/US9465749B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080209130A1 (en) | 2005-08-12 | 2008-08-28 | Kegel Andrew G | Translation Data Prefetch in an IOMMU |
US20100262787A1 (en) | 2009-04-09 | 2010-10-14 | International Buisness Machines Corporation | Techniques for cache injection in a processor system based on a shared state |
Also Published As
Publication number | Publication date |
---|---|
KR20160122278A (en) | 2016-10-21 |
US9465749B2 (en) | 2016-10-11 |
US9852081B2 (en) | 2017-12-26 |
US9396130B2 (en) | 2016-07-19 |
US9141556B2 (en) | 2015-09-22 |
US20140052956A1 (en) | 2014-02-20 |
EP2885713A4 (en) | 2016-03-23 |
EP2885713A2 (en) | 2015-06-24 |
US20140052955A1 (en) | 2014-02-20 |
CN104583976B (en) | 2017-10-17 |
KR20150046130A (en) | 2015-04-29 |
US20140052954A1 (en) | 2014-02-20 |
US20140052919A1 (en) | 2014-02-20 |
WO2014031495A3 (en) | 2014-07-17 |
WO2014031495A2 (en) | 2014-02-27 |
CN104583976A (en) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101667772B1 (en) | Translation look-aside buffer with prefetching | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
US7673116B2 (en) | Input/output memory management unit that implements memory attributes based on translation data | |
US7653803B2 (en) | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) | |
US10296465B2 (en) | Processor using a level 3 translation lookaside buffer implemented in off-chip or die-stacked dynamic random-access memory | |
US7623134B1 (en) | System and method for hardware-based GPU paging to system memory | |
US8593474B2 (en) | Method and system for symmetric allocation for a shared L2 mapping cache | |
JP6370065B2 (en) | System on chip and operation method thereof | |
EP3446223A1 (en) | Object tagged memory monitoring method and processing apparatus | |
JP2013500525A (en) | I / O memory management unit including multi-level address translation for I / O and computational load reduction | |
KR20120054549A (en) | Streaming translation in display pipe | |
US10467138B2 (en) | Caching policies for processing units on multiple sockets | |
US9436610B2 (en) | Enhanced pre-fetch in a memory management system | |
KR102397275B1 (en) | Memory pre-fetch for virtual memory | |
Lee et al. | Snakebyte: A tlb design with adaptive and recursive page merging in gpus | |
US10909045B2 (en) | System, method and apparatus for fine granularity access protection | |
US11494300B2 (en) | Page table walker with page table entry (PTE) physical address prediction | |
CN114218132B (en) | Information prefetching method, processor and electronic equipment | |
WO2023064590A1 (en) | Software indirection level for address translation sharing | |
Leidinger | A Virtual Memory Architecture for Ray Tracing Hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |