KR20190087500A - 메모리 어드레스 변환 - Google Patents
메모리 어드레스 변환 Download PDFInfo
- Publication number
- KR20190087500A KR20190087500A KR1020197017550A KR20197017550A KR20190087500A KR 20190087500 A KR20190087500 A KR 20190087500A KR 1020197017550 A KR1020197017550 A KR 1020197017550A KR 20197017550 A KR20197017550 A KR 20197017550A KR 20190087500 A KR20190087500 A KR 20190087500A
- Authority
- KR
- South Korea
- Prior art keywords
- address
- data
- entry
- memory address
- row
- 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/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
- G11C11/4082—Address Buffers; level conversion circuits
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
-
- 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/65—Details of virtual memory and virtual address translation
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
메모리 어드레스 변환장치는, 초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 페이지 테이블 액세스 회로; 상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을 저장하는 변환 데이터 버퍼; 상기 변환 데이터 버퍼는: 행들과 열들로 배치된 저장장소들의 어레이; 상기 어레이의 행의 각각의 부분으로부터 정보를 각기 저장하기 위해 복수의 엔트리들을 포함하는 행 버퍼; 및 적어도 상기 초기의 메모리 어드레스에 의존한 키 값에 응답하여, 상기 행 버퍼의 적어도 하나의 키 엔트리-각 키 엔트리가 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-의 각각에 저장된 정보와 상기 키 값을 비교하고, 만약에 있다면, 그 적어도 하나의 키 엔트리의 어느 것이 상기 키 값과 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는, 비교회로; 및 일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을, 출력하는 출력회로를 구비한다.
Description
본 개시내용은 메모리 어드레스 변환에 관한 것이다.
메모리 어드레스 변환장치, 이를테면 관리 유닛들(MMUs)은, 가상 메모리 어드레스들을 물리 메모리 어드레스들로 변환하는 것을 처리한다.
데이터 처리장치는, 각 실행 프로그램에 가상 메모리 어드레스들에 의해 명시된 가상 어드레스 공간에 대한 액세스를 제공하는 것이 일반적이다. 각 프로그램은, 그 프로그램에서 사용하기 위한 명령들과 데이터를 갖는 그 자신의 가상 어드레스 공간을 찾아간다. 그 밖의 인정받는 이점들 중에서, 가상 어드레싱을 이용하는 것에 의해 운영체계는 일 프로그램이 타 프로그램에서 사용한 정보를 액세스하거나 손상시키지 않게 함으로써 메모리 액세스를 제어할 수 있다.
가상 메모리 어드레스에 대해 액세스가 요구될 때, 그 요구된 정보가 상기 물리 메모리나 물리 메모리 캐시로부터 얻어지거나 상기 물리 메모리나 물리 메모리 캐시에 기록될 수 있도록, 우선, 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는 것이 필요하다.
때때로 변환 색인 버퍼(TLB)로서 공지된 캐시는, 상기 어드레스 변환 프로세스의 일부로서 사용되어도 된다. 상기 TLB는, 가상 메모리 어드레스와 물리 메모리 어드레스간에 최근에 또는 통상 사용된 변환들을 저장하고 있다. 그래서, 어드레스 변환 프로세스에서의 제1 단계로서, 상기 TLB를 참고하여 그 TLB가 이미 상기 요구된 어드레스 변환을 갖는지를 검출한다. 상기 요구된 어드레스 변환을 갖지 않는 경우, 예를 들면, 어드레스 변환 정보를 보유하는 소위 페이지 테이블들을 참고하는 것을 포함하는 보다 많이 수반된 변환 프로세스가 사용되어도 되어, 상기 TLB가 상기 요구된 변환으로 채워지게 되는 것이 일반적이다.
다수의 스테이지 MMU들은 일부의 상황에서 사용된다. 이러한 구성에서는, 실제로 2개의 레벨의 변환을 사용한다. 실행 프로그램이나 다른 시스템 모듈 이를테면 그래픽 처리 유닛(GPU)에서 요구한 가상 어드레스(VA)는, 제1 MMU 스테이지에 의해 중간 물리 어드레스(IPA)로 변환된다. 상기 IPA는, 제2 MMU 스테이지에 의해 물리 어드레스(PA)로 변환된다. 다수의 스테이지 변환을 사용하는 이유의 하나는, 동일한 프로세서상에서 실행하는 각각의 "가상 머신들"에서 다중 운영체계(OS)를 사용중일 수도 있을 때 처리하는 정보의 보안을 위한 것이다. 특별한 OS가 상기 VA의 IPA로의 변환에 노출되는 반면에, 하이퍼바이저(상기 가상 머신들의 실행을 감독하는 소프트웨어)만이 상기 스테이지 2(IPA의 PA로의) 변환을 감독한다.
일 구성 예에서 제공하는 메모리 어드레스 변환장치는:
초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 페이지 테이블 액세스 회로;
상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을 저장하는 변환 데이터 버퍼;
상기 변환 데이터 버퍼는:
행들과 열들로 배치된 저장장소들의 어레이;
상기 어레이의 행의 각각의 부분으로부터 정보를 각기 저장하기 위해 복수의 엔트리들을 포함하는 행 버퍼; 및
적어도 상기 초기의 메모리 어드레스에 의존한 키 값에 응답하여, 상기 행 버퍼의 적어도 하나의 키 엔트리-각 키 엔트리가 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-의 각각에 저장된 정보와 상기 키 값을 비교하고, 만약에 있다면, 그 적어도 하나의 키 엔트리의 어느 것이 상기 키 값과 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는(identify) 비교회로; 및
일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을, 출력하는 출력회로를 구비한다.
다른 구성 예에서 제공한 메모리 어드레스 변환장치는:
초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 페이지 테이블 액세스 수단;
상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을 저장하는 변환 데이터 버퍼 수단;
상기 변환 데이터 버퍼 수단은:
행들과 열들로 배치된 저장장소들의 어레이;
상기 어레이의 행의 각각의 부분으로부터 정보를 각기 저장하기 위해 복수의 엔트리들을 포함하는 행 버퍼 수단; 및
적어도 상기 초기의 메모리 어드레스에 의존한 키 값에 응답하여, 상기 행 버퍼의 적어도 하나의 키 엔트리-각 키 엔트리가 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-의 각각에 저장된 정보와 상기 키 값을 비교하고, 만약에 있다면, 그 적어도 하나의 키 엔트리의 어느 것이 상기 키 값과 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는 비교수단; 및
일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을, 출력하는 출력수단을 구비한다.
다른 구성 예에서 제공하는 방법은:
초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 단계;
상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을, 행들과 열들로 배치된 저장장소들의 어레이를 갖는 변환 데이터 버퍼에 저장하는 단계;
상기 어레이의 행의 각각의 부분으로부터 정보를 각기 저장하기 위해 복수의 엔트리들을 버퍼링하는 단계; 및
적어도 상기 초기의 메모리 어드레스에 의존한 키 값에 응답하여, 상기 행 버퍼의 적어도 하나의 키 엔트리-각 키 엔트리가 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-의 각각에 저장된 정보와 상기 키 값을 비교하는 단계;
만약에 있다면, 그 적어도 하나의 키 엔트리의 어느 것이 상기 키 값과 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는 단계; 및
일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을, 출력하는 단계를 포함한다.
본 기술의 또 다른 각각의 국면들 및 특징들은 첨부된 청구항에 의해 명시되어 있다.
본 기술은 아래의 첨부도면에 도시된 것처럼 본 기술의 실시예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 일부 실시예들에 따라 장치를 도시한 것이고;
도 2는 일부 실시예들에 따라 장치를 도시한 것이고;
도 3a 및 3b는 일부 실시예들에 따라 상이한 요구들이 CPU에 의해 어떻게 배분되는지를 총괄적으로 설명하는 것이고;
도 4는 일부 실시예들에 따라 유지 동작을 도시한 것이고;
도 5는 중복 요구들을 처리하는 프로세스를 도시한 것이고;
도 6은 일부 실시예들에 따라 새로운 유지 동작을 수신하는 프로세스 를 도시한 것이고;
도 7은 일부 실시예들에 따라 유지 동작들의 조합을 도시한 것이고;
도 8은 일부 실시예들에 따라 필(fill) 큐의 이용을 도시한 것이고;
도 9는 일부 실시예들에 따라, 상기 필 큐에 대해 참고하는 상기 프로세스를 흐름도 형태로 도시한 것이고;
도 10a는 일부 실시예들에 따라 필 동작과 유지 동작을 수행하는 제1 프로세스를 설명하는 것이고;
도 10b는 일부 실시예들에 따라 필 동작과 유지 동작을 수행하는 제2 프로세스를 설명하는 것이고;
도 11은 일부 실시예들에 따라 유지 동작시 액세스 요구를 수행하는 프로세스를 도시한 것이고;
도 12는 일부 실시예들에 따라 장치의 예를 도시한 것이고;
도 13은 일부 실시예들에 따라 캐시내에 웨이(way)들의 재할당을 도시한 것이고;
도 14는 일부 실시예들에 따라, 포인터를 사용하여 단일의 메모리를 다수의 목적들에 어떻게 할당할 수 있는지를 설명하는 것이고;
도 15는 일부 실시예들에 따라 데이터 및 어드레스 변환들을 동적으로 재할당하는 방법의 예를 도시한 것이고;
도 16은 일부 실시예들에 따라 상이한 할당 정책들의 이용이 어떻게 캐시 웨이들의 분포를 변경하는지를 도시한 것이고;
도 17a는 일부 실시예들에 따라, TLB에서 어드레스용 요구가 어떻게 전송되는지를 도시한 것이고;
도 17b는 일부 실시예들에 따라, 어드레스용 요구를 병렬로 발행하는 것을 도시한 것이고;
도 17c는 일부 실시예들에 따라, 어드레스 변환을 수행하는 것에 의해 그 변환된 어드레스가 제공되게 하고 그 데이터가 페치(fetch)되게 하는 프로세스를 설명하는 것이고;
도 18은 일부 실시예들에 따라 인입(incoming) 요구들을 처리하는 방법을 도시하는 흐름도를 도시한 것이고;
도 19는 데이터 처리장치를 개략적으로 도시한 것이고;
도 20은 어드레스 변환회로와, 변환 데이터의 DRAMDML 저장을 개략적으로 도시한 것이고;
도 21 및 도 22는 개략적인 타이밍도이고;
도 23은 일 방법을 도시하는 개략적인 흐름도이고;
도 24는 어드레스 변환 회로를 개략적으로 도시한 것이고;
도 25는 DRAM을 개략적으로 도시한 것이고;
도 26은 도 25의 상기 DRAM에 데이터 저장을 개략적으로 도시한 것이고;
도 27은 키 값 쌍을 개략적으로 도시한 것이고;
도 28은 해시 생성기를 개략적으로 도시한 것이고;
도 29는 기록회로를 개략적으로 도시한 것이고;
도 30 및 도 31은 각각의 방법들을 도시하는 개략적인 흐름도이다.
도 1은 일부 실시예들에 따라 장치를 도시한 것이고;
도 2는 일부 실시예들에 따라 장치를 도시한 것이고;
도 3a 및 3b는 일부 실시예들에 따라 상이한 요구들이 CPU에 의해 어떻게 배분되는지를 총괄적으로 설명하는 것이고;
도 4는 일부 실시예들에 따라 유지 동작을 도시한 것이고;
도 5는 중복 요구들을 처리하는 프로세스를 도시한 것이고;
도 6은 일부 실시예들에 따라 새로운 유지 동작을 수신하는 프로세스 를 도시한 것이고;
도 7은 일부 실시예들에 따라 유지 동작들의 조합을 도시한 것이고;
도 8은 일부 실시예들에 따라 필(fill) 큐의 이용을 도시한 것이고;
도 9는 일부 실시예들에 따라, 상기 필 큐에 대해 참고하는 상기 프로세스를 흐름도 형태로 도시한 것이고;
도 10a는 일부 실시예들에 따라 필 동작과 유지 동작을 수행하는 제1 프로세스를 설명하는 것이고;
도 10b는 일부 실시예들에 따라 필 동작과 유지 동작을 수행하는 제2 프로세스를 설명하는 것이고;
도 11은 일부 실시예들에 따라 유지 동작시 액세스 요구를 수행하는 프로세스를 도시한 것이고;
도 12는 일부 실시예들에 따라 장치의 예를 도시한 것이고;
도 13은 일부 실시예들에 따라 캐시내에 웨이(way)들의 재할당을 도시한 것이고;
도 14는 일부 실시예들에 따라, 포인터를 사용하여 단일의 메모리를 다수의 목적들에 어떻게 할당할 수 있는지를 설명하는 것이고;
도 15는 일부 실시예들에 따라 데이터 및 어드레스 변환들을 동적으로 재할당하는 방법의 예를 도시한 것이고;
도 16은 일부 실시예들에 따라 상이한 할당 정책들의 이용이 어떻게 캐시 웨이들의 분포를 변경하는지를 도시한 것이고;
도 17a는 일부 실시예들에 따라, TLB에서 어드레스용 요구가 어떻게 전송되는지를 도시한 것이고;
도 17b는 일부 실시예들에 따라, 어드레스용 요구를 병렬로 발행하는 것을 도시한 것이고;
도 17c는 일부 실시예들에 따라, 어드레스 변환을 수행하는 것에 의해 그 변환된 어드레스가 제공되게 하고 그 데이터가 페치(fetch)되게 하는 프로세스를 설명하는 것이고;
도 18은 일부 실시예들에 따라 인입(incoming) 요구들을 처리하는 방법을 도시하는 흐름도를 도시한 것이고;
도 19는 데이터 처리장치를 개략적으로 도시한 것이고;
도 20은 어드레스 변환회로와, 변환 데이터의 DRAMDML 저장을 개략적으로 도시한 것이고;
도 21 및 도 22는 개략적인 타이밍도이고;
도 23은 일 방법을 도시하는 개략적인 흐름도이고;
도 24는 어드레스 변환 회로를 개략적으로 도시한 것이고;
도 25는 DRAM을 개략적으로 도시한 것이고;
도 26은 도 25의 상기 DRAM에 데이터 저장을 개략적으로 도시한 것이고;
도 27은 키 값 쌍을 개략적으로 도시한 것이고;
도 28은 해시 생성기를 개략적으로 도시한 것이고;
도 29는 기록회로를 개략적으로 도시한 것이고;
도 30 및 도 31은 각각의 방법들을 도시하는 개략적인 흐름도이다.
본 설명은, 임의의 조합으로 함께 사용되어도 되는 다수의 잠재적 직교 기술들에 관한 것이다. 도 1은 이하 설명되는 기술들 전부가 동시에 사용되는 장치(100)의 예를 도시한 것이다. 이 장치는 복수의 프로세서들(105a, 105b,...)를 구비하고, 각 프로세서는 출력 공간에서 입력 어드레스의 출력 어드레스로의 변환을 위한 전용 변환 색인 버퍼(110a, 110b,...)를 갖는다. 각 프로세서는, 유지 동작들, 룩업(lookup) 동작들 및 필 동작들을 하나 이상의 입력 포트들(135)을 거쳐 인터커넥트(125)에 송신할 수 있다. 이 동작들 각각은, 상기 인터커넥트(125)와 관련된 (변환 데이터 버퍼로서 작용할 수 있는) 어드레스 스토리지(155)에 관한 것이다. 상기 룩업 동작들은, 출력 공간에서의 출력 어드레스가 제공되는 입력 또는 초기의 어드레스를 포함한다. 상기 필 동작들은, 이러한 변환들을 제공하는데 사용된다. 한편, 유지 큐(145)는, 상기 프로세서(110a)가 상기 유지 동작들이 수행되기를 대기할 필요 없도록 상기 어드레스 스토리지(155)상에서 상기 유지회로(150)에 의해 비동기적으로 수행되는 상기 유지 동작들을 저장한다. 상기 어드레스 스토리지(155)는, 상기 변환 데이터가 실제로 상기 메모리(115)에 저장되어도 되고 또한 소위 페이지 테이블 워크(walk)들이 상기 어드레스 스토리지를 채우기 위해 상기 메모리(115)에 액세스할 수 있는 추가의 TLB에 액세스하는 회로의 형태를 취할 수도 있다. 상기 인터커넥트(125)는, 하나 이상의 출력 포트들(140)을 거쳐 메인 메모리(115)에 접속한다. 그 메인 메모리는 제어기(120)를 거쳐 제어된다. 그 메인 메모리(115)로부터 판독되거나 이 메모리에 기록되는 데이터는, 상기 인터커넥트(125)와 관련되는 캐시(160)에 저장될 수 있다. 캐시를 제공함으로써, 상기 프로세서들(105a, 105b, ...)은, 요구가 상기 인터커넥트(125)로부터 송신되어 상기 메모리 제어기(120)에 의해 처리되어야 하는 경우보다 빠르게 상기 메모리(115)로부터 데이터에 액세스할 수 있다. 상기 캐시(160)로부터 저장은, 어드레스 변환들을 저장하는데 이용 가능한 저장의 양이 상기 어드레스 스토리지 자체(155)의 용량을 초과하여 증가될 수 있도록 상기 어드레스 스토리지(155)에서 사용하기 위해 "도용될(일시적으로 또는 이와는 달리 재할당될)" 수 있다. 상기 유지 큐(145), 어드레스 스토리지(155) 및 캐시(160)의 동작뿐만 아니라 상기 도용된 스토리지의 관리도, 상기 제어회로(130)에 의해 처리된다. 상기 제어회로는, 상기 TLB(110a)로부터 특별한 변환 요구를 위해, 상기 페이지 테이블 워크가 TLB 룩업의 완료전에 시작될 수 있도록 페이지 테이블 워크들과 TLB 액세스들의 타이밍을 제어할 수 있다. 상기 제어기(120)와 상기 제어회로(130)는, 일부의 예들에서 다수의 키 값 쌍들이 상기 메모리(115)의 (상기 메모리(115)의 (미도시된) 행 버퍼에 의해 액세스 가능한) 단일 행의 메모리 셀들에 저장될 수 있도록 그 키 값 쌍들의 형태로 변환 데이터를 갖는 상기 메모리(115)에 저장과 이 메모리로부터의 검색을 감독하기 위해 협력할 수 있다. 상기 메인 메모리(115)와 상기 캐시(160) 자체는 DRAM을 사용하여서 구현될 수 있었다는 것을 주목한다.
비동기 유지
도 2는 일부 실시예들에 따라 일 장치(200)의 일례를 도시한 것이다. 이 장치는, 룩업 동작들 및 유지 동작들(총괄적으로 "요구들"이라고 함)을 제어회로(240)에 제공하는 일 세트의 입력 포트들(210)을 구비한다. 상기 입력 어드레스(룩업 요구들)를 갖는 룩업 동작들은, 이를테면 변환 색인 버퍼(TLB)의 형태를 취할 수 있는 상기 룩업회로(230)에 건네진다. 일부 실시예들에서, 상기 TLB는, DRAM을 거쳐 제공될 수 있다. 유지 동작들(유지 요구들)은, 유지 큐(220)에 건네진다. 이러한 장치(200)는, 저장 시스템에서 비동기 유지를 제공하는데 사용되어도 되고, 또한, 리퀘스터(requester)로부터, 입력 어드레스를 포함하는 룩업 동작과, 유지 동작 중 어느 하나를 수신하는 입력 포트(210); 적어도 하나의 유지 동작의 유지 큐를 저장하는 유지 큐 회로(220); 및 상기 입력 어드레스와 출력 어드레스 공간에서의 출력 어드레스와의 사이에서 변환을 저장하는 어드레스 스토리지(230)를 구비하는, 일 장치(200)의 일례로서 제공되고, 상기 입력 어드레스를 수신하는 것에 응답하여, 상기 출력 어드레스는 상기 유지 큐에 따라 제공되고; 상기 유지 동작을 저장하는 것에 응답하여, 상기 유지 큐 회로는 확인응답이 상기 리퀘스터에 송신되게 한다.
이러한 실시예들에서, 상기 리퀘스터는, 중앙처리유닛(CPU) 등의 프로세서의 형태를 취할 수도 있다. 상기 장치(200)의 입력 포트(210)를 거쳐, 상기 리퀘스터는 입력 어드레스를 포함하는 룩업 동작을 발행할 수 있다. 또한, 상기 리퀘스터는, 상기 입력 포트(210)를 거쳐 유지 요구도 발행할 수 있다. 예를 들면, 상기 유지 동작은, 입력 어드레스들과 출력 어드레스 공간에서의 출력 어드레스들과의 사이에서 변환들을 저장하는, 어드레스 스토리지(230)에서의 엔트리들의 유지를 대상으로 삼을 수 있다. 출력 어드레스 공간에서의 상기 출력 어드레스는, 물리 어드레스(PA) 또는 중간 물리 어드레스(IPA)의 형태를 취할 수 있다. IPA는, 예를 들면 가상 어드레스(VA)와 물리 어드레스(PA)와의 사이에서 부분적으로 변환하는데 사용될 수 있다.
2개의 추가의 동작에 의해 상기 장치(200)는 비동기적으로 유지 동작들을 수행할 수 있다. 첫째, 수신되는 유지 동작에 응답하여, 상기 유지 동작이 저장되고 상기 유지 큐 회로(220)는 상기 리퀘스터에 확인응답이 역으로 송신되게 한다. 이러한 확인응답은, 즉시(예를 들면, 상기 유지 동작이 완료되기를 대기하지 않고) 송신된다. 그 결과, 상기 리퀘스터는 상기 유지 동작이 수행될 때까지 일시 중지 또는 차단되지 않는다. 그렇지만, 상기 유지 동작이 즉시 수행되지 않으므로, 상기 어드레스 스토리지(230)는 스테일(stale) 데이터가 제공되지 못하게 하는 것이 필요하다. 달리 말하면, 상기 장치(200)는 마치 상기 유지 동작이 수행되어 있던 것처럼 계속 작용해야 한다.
둘째, 입력 어드레스(예를 들면, 변환되는 어드레스)를 수신하는 것에 응답하여, 대응한 출력 어드레스는, 상기 유지 큐 회로(220)에 의해 유지된 상기 큐에 따라 제공된다. 또, 이것은, 큐잉된 유지 동작들이 수행되었다면 회신되지 않을 데이터의 회신을 방지하는 것이 필요하다. 이 프로세스들의 각각을, 아래에 도 3a 및 도 3b를 참조하여 보다 상세히 설명한다.
또한, 도 2에서의 회로는, 상기 입력 어드레스를 수신하는 것에 응답하여 상기 입력 어드레스와의 충돌에 대한 상기 유지 큐를 스캔하는 제어회로(240)의 일례도 제공하고, 이때의 출력 어드레스는 충돌이 있는 경우 미스(miss)를 회신하고 그렇지 않은 경우는 상기 출력 어드레스를 제공함으로써, 상기 큐에 따라 제공된다.
충돌은, 상기 입력 포트(210)에서 제공된 입력 어드레스가 상기 유지 큐(220)에 보유된 유지 동작에 영향을 받을 어드레스에 관계될 때 일어날 수 있다. 달리 말하면, 상기 유지 큐(220)에 보유되는 상기 유지 동작들이 수행되었었다면, 그 입력 어드레스에 대한 상이한 결과가 상기 룩업회로(230)에 저장되었을 것이다. 이러한 충돌이 일어난 결과로서, 또한 스테일 데이터가 회신되지 않게 하도록, TLB 미스는, 상기 입력 어드레스에 응답하여 제공된다. 다음에, 이것에 의해 페이지 워크 프로세스가 시작할 것이고, 이때 정확한 출력 어드레스 검색된다. 충돌이 없을 경우, 상기 출력 어드레스가 제공될 수 있다.
또한, 도 2는 선택된 유지 동작이 상기 유지 큐로부터 수행되게 하는 유지회로(250)의 일례를 도시한 것이다. 상기 유지회로(250)가 유지 동작을 선택할 수 있고, 선택된 유지 동작이 상기 유지 큐 회로(220)에서 유지한 상기 큐로부터 수행되게 하는 방식이 많이 있다. 일부 실시예들에서, 상기 유지회로(250)는, 상기 룩업회로(230)가 그 외에는 비작동될 때 수행되는 유지 동작을 선택한다. 예를 들면, 상기 입력 포트들(210)에서 입력 어드레스가 수신되지 않는 기간이 있으면, 상기 유지회로(250)는, 상기 유지동작들의 하나 이상이 수행되게 하기 위해서 이러한 비작동 시간을 이용할 수 있었다. 일부 실시예들에서, 상기 유지회로(250)에 의해, 계속적으로 유지 동작들은 상기 유지 큐(220)로부터 선택되고 남아 있지 않을 때까지 수행되어도 된다. 일부 실시예들에서는, 유지동작들은, 상기 유지 큐(220)에 추가되고 나서 어떤 기간이 경과되는 경우나, 상기 유지 큐(220)가 가득 찰 때, 수행되도록 예정된다. 그 밖의 큐 선택의 기술들은, 숙련자에게는 공지되어 있을 것이다.
또한, 도 2는 하나 이상의 조건들에 근거하여 상기 유지 큐에서의 복수의 엔트리들을 조합하는 조합회로(260)의 일례도 도시한 것이다. 이러한 프로세스를 도 7을 참조하여 보다 상세히 설명한다.
도 3a 및 도 3b는, 상기 입력 어드레스를 포함하는 인입 룩업동작을 처리하는 프로세스를 총괄적으로 도시한 것이다. 이전에 언급된 것처럼, 상기 출력 어드레스 공간(예를 들면, 물리 어드레스 공간이나 일부/중간 어드레스 공간)에서의 대응한 출력 어드레스는, 상기 유지 큐에 따라 제공된다. 도 3a 및 도 3b는 동시에 설명된다.
이 프로세스는 단계 300에서 시작하여, 예를 들면 가상 어드레스로부터 물리 어드레스까지의 룩업 동작이 수신된다. 이것은, 룩업회로(230)에 송신되는 CPU(310) 등의 리퀘스터로부터 일어난다. 이것은, TLB 룩업의 형태를 취할 수도 있다. 단계 320에서, 상기 룩업회로(230)는, 상기 유지 큐(220)에 액세스하여 검색한다. 그 후, 단계 330에서는, 상기 TLB 룩업으로 상기 유지 큐(220)에 충돌이 있는지를 판정한다. 상기 유지 큐(220)로부터 상기 룩업회로(230)로의 결과는 상기와 같은 충돌이 존재하는 것을 나타내면, 단계 340에서, 상기 룩업회로(230)는 TLB 미스를 발행한다. 이것은 페이저 워크가 일어나게 하여, 일부 실시예들에서는 상기 물리 어드레스를 검색하기 위해서, 상기 CPU(310)에 의해, 또는 페이지 테이블 워커(walker)로서 알려진 전용회로에 의해 시작된다. 그렇지만, 단계 330에서, 상기 유지 큐(220)에 의해 상기 룩업회로(230)에 발행된 상기 결과는 충돌이 존재하지 않는 것을 나타내면, 단계 350에서는, 태그 일치가 있는지를 판정한다. 충돌이 있는지의 여부를 체크하는 것과 병렬로, 단계 360에서는 상기 TLB(230)에서 룩업을 수행하고 나서 단계 350에서는 해당 엔트리들의 태그들을 체크한다. 태그 일치 프로세스는, 상기 룩업회로(230)에서 입력 어드레스가 주어진다면 대응한 출력 어드레스가 있는지를 판정한다. 실제로, 이것은, 통상, (상기 태그라고 하는) 상기 입력 어드레스의 일부와 상기 룩업회로(230)에서의 하나의 엔트리를 일치시킴으로써 일어난다. 이러한 태그가 발견되지 않으면, 단계 340의 프로세스로 진행되어 TLB 미스를 상기 CPU(310) 또는 페이지 워커회로에 역으로 발행한다. 이와는 달리, 일치 태그가 발견되면, 단계 370에서는, 상기 대응한 출력 어드레스를 상기 CPU(310)에 역으로 제공한다. 도 3a에 도시된 것 처럼, 상기 CPU(310)가 유지 동작을 발행할 때, 이것은, 상기 유지 큐(220)에 발행된다. 예를 들면, 그 외에는 상기 룩업회로(230)가 유휴 상태일 때, 상기 유지 큐(220)는, 수행되는 유지 동작을 선택할 수 있다. 그 후, 이것은 상기 룩업회로(230)에 의해 저장된 상기 세트의 변환들에 관해 수행된다. 상기 CPU(310)에서 발행하는 상기 유지 동작에 응답하여 상기 유지 큐(220)는 확인응답을 송신한다는 것을 주목한다. 이에 따라, 상기 CPU(310)는, 상기 유지 동작을 발행하고 그 유지 동작이 수행되기를 대기하기 때문에 차단하거나 일시 중지할 필요가 없다. 대신에, 그 유지 동작이 큐잉되고 나서 편리한 시간에 수행되는 것이 가능하다. 이 때문에, 이 도면들에서는, 리퀘스터로부터, 입력 어드레스를 포함하는 룩업 동작과, 유지 동작 중 어느 하나를 수신하는 단계(300); 적어도 하나의 유지 동작의 유지 큐(220)를 저장하는 단계; 및 상기 입력 어드레스와 출력 어드레스 공간에서의 출력 어드레스와의 사이에서의 변환을 저장하는 단계를 포함하는 방법의 일례를 제공하되, 상기 입력 어드레스를 수신하는 것에 응답하여, 상기 출력 어드레스는 상기 유지 큐(330)에 따라 제공되고; 상기 유지 동작을 저장하는 것에 응답하여, 확인응답이 상기 리퀘스터에 송신되게 한다.
도 4는 일부 실시예들에 따라 유지 동작을 도시한 것이다. 특히, 도 4는, 상기 유지 동작이 상기 어드레스 스토리지(230)에서의 복수의 변환들에 액세스하는 일례를 도시한 것이다. 또한, 도 4는, 상기 유지 동작이 상기 어드레스 스토리지(230)에서의 변환들에 순차로 액세스하는 일례; 및 상기 어드레스 스토리지가 메모리 매핑되도록 구성되고, 상기 유지 동작이 비일시적 액세스들을 사용하여 상기 어드레스 스토리지(230)에서의 변환들에 액세스하는 일례를 도시한 것이다.
비일시적 액세스는, 새로운 엔트리가 그 액세스 때문에 캐시에 인스톨되지 않는 것이다. 예를 들면, 상기 비일시적 액세스들 때문에, 엔트리는 최종 레벨 캐시(LLC)에 저장되지 않는다. 이러한 액션은 유지 동작 때문에 상기 캐시에 불필요한 데이터를 추가하는 것을 피한다. 그러므로, 상기 데이터가 다시 가까운 미래에 사용되지 않아서 다른 유용한 데이터를 퇴거시키지 않아야 한다(그리고 캐시되지 않아야 한다)고 가정한다. 일부 실시예들에서는, 비일시적 액세스를 사용하는 대신에, 규칙적인 액세스를 사용하고, 상기 캐시에 추가된 임의의 결과 엔트리에 상기 엔트리가 보다 쉽게 대체되도록 높은 대체 우선권을 준다.
도 4는 유지 동작이 무효화 동작인 일례를 도시한 것이다. 일부 실시예들에서, 무효화 동작은, 상기 엔트리가 더 이상 사용 가능하지 않은 것을 나타내기 위해 상기 테이블에서의 하나 이상의 엔트리들의 유효 플래그가 만들어지게(예를 들면, 클리어되게) 한다. 이에 따라, 그 엔트리들은, 필요에 따라 그 밖의 엔트리들로 대체될 수 있다. 일부 실시예들에서, 상기 무효화 동작은, 엔트리들이 완전히 삭제되게 한다.
또한, 도 4는, 상기 무효화 동작이, 가상 어드레스, 다양한 가상 어드레스들, 어드레스 공간 식별자, 가상 머신 식별자, 중간 물리 어드레스, 및 물리 어드레스의 하나 이상에 근거하여 상기 어드레스 스토리지(230)에서의 하나 이상의 변환들을 무효화하는 동작인 일례를 도시한 것이다. 그러므로, 상기 무효화는, 그 무효화가 실행되어야 하는 그 엔트리들을 나타내기 위해서, 그 파라미터들 중 하나 이상(임의의 조합)을 사용할 수 있었다. 일부 실시예들에서는, 추가로(또는 대신에) 그 밖의 파라미터들을 사용할 수 있었다.
이러한 구체적인 예에서, 상기 무효화 동작은, 상기 어드레스 공간 식별자(ASID) 또는 가상 머신 식별자(VMID)가 1인 엔트리들을 무효화하는 동작이다. 이것은, 상기 어드레스 스토리지에서의 각 엔트리를 대강 훑어보고, 1인 임의의 엔트리에 대한 ASID와 VMID의 값을 체크함으로써, 이루어진다. 이와 같은 엔트리가 발견되는 경우, 그 엔트리에 대한 유효 플래그는, 상기 엔트리가 더 이상 유효하지 않은 것을 나타내기 위해 클리어된다. 도 4의 상기 예에서, 이것은, 그 유효 플래그를 제로(무효)로 설정함으로써 이루어진다. 무효화 동작이 그 밖의 필드들에 근거하여 수행될 수 있다는 것을 알 것이다. 이 필드는 상기 테이블 자체에 있을 필요가 없고 다른 테이블, 레지스터 또는 플래그를 거쳐 상기 테이블에서의 하나의 엔트리와 관련될 수 있었다는 것을 주목한다. 상기 어드레스 공간 식별자와 가상 머신 식별자는 모두가 상기 테이블의 엔트리들을 그룹들로 분할하기 위해서 사용되는 기술들이다. 특히, 가상 머신 식별자(VMID)는, 다수의 가상 머신들을 갖는 시스템에서 특별한 가상 머신 인스턴스에 속하는 엔트리들을 특정하는데 사용되어도 된다. 마찬가지로, 어드레스 공간은, 각 섹션이 자신의 식별자를 갖는 다수의 섹션들로 분할되어도 된다. 이 기술들은, 심지어, 각 가상 머신이 그의 이용 가능한 메모리를 그 가상 머신에 따라 다수의 상이한 세그먼트들로 분리할 수 있도록, 조합될 수 있다. 예를 들면, 각 어드레스 공간은, 특별한 가상 머신 인스턴스상에서 실행하는 상이한 애플리케이션에 할당될 수 있었다. 이렇게 하여, 상기 어드레스 스토리지(230)에서의 각 엔트리는, 특별한 목적과 관련될 수 있다. 이 때문에, 무효화 동작은, 특별한 목적과 관련된 어드레스들을 대상으로 하고 있을 수 있다. 예를 들면, 무효화 동작은, 예를 들면 특별한 애플리케이션이 종료할 때 특별한 가상 머신상에서 실행하는 그 특별한 애플리케이션과 관련된 어드레스들 전부에 대해 수행될 수 있었다. 마찬가지로, 무효화 동작은, 예를 들어 그 가상 머신이 종료되면, 가상 머신 식별자에만 근거하여 대상으로 삼아질 수 있었다.
위의 문단들로부터 안 것은, 상기 유지 동작이 시간을 소비할 수 있다는 것이다. 이에 따라, 도 2, 3a 및 3b를 참조하여 설명한 상기 장치(200)를 사용함으로써, CPU 등의 리퀘스터가 차단 또는 일시 중지될 필요가 없고 상기 유지 동작이 수행되도록 유지를 비동기적으로 수행하는 것이 가능하다. 상기 유지 동작들이 수행중인 상기 스토리지가 특별히 클 때 특히 중요하다. 상기 유지 동작들이 즉시 수행되지 않으므로, 룩업들과 상기 큐잉된 유지 동작들과의 사이에서 일어날 수 있는 충돌을 해결하는 것이 필요하다. 이것은, 이러한 충돌에 대해 테스트하여, 충돌이 검출되는 경우, 원래의 데이터가 검색되게 함으로써(예를 들면, 페이지 워크가 수행되게 하는 TLB 미스를 발행함으로써) 이루어질 수 있다. 이렇게 하여, 유지 동작들을 갖는 큐는, 유지될 수 있고, 적절한 경우 수행될 수 있다.
다수의 유지 동작들을 동시에 수행하여서 비동기 유지 효율의 향상
도 4는, 상기 선택된 유지 동작이 상기 어드레스 스토리지(230)의 적어도 일부를 통해 주사하는 것과 충족되는 조건에 응답하여 액션을 수행하는 것을 포함하는 일례를 도시한 것이고; 그 주사하는 동안에, 상기 유지회로(250)는, 다른 조건이 충족되는 것에 응답하여 다른 액션을 수행하고; 상기 다른 액션과 상기 다른 조건은 상기 유지 큐로부터 수행되는 다른 유지 동작과 대응한다.
이러한 특별한 예에서 고려할 수 있는 것은, 제1 유지 동작이 ASID가 인 경우 무효화하기 위해 존재한다는 것이다. 상기 VMID가 1인 경우 무효화를 수행하는 제2 유지 동작이 있을 수도 있다. ASID가 1인 경우의 엔트리들에 대한 상기 룩업회로(230)에서의 각 엔트리를 통한 제1 주사를 수행하는 대신에, 상기 VMID가 1인 경우의 상기 룩업회로(230)의 각 엔트리를 통한 제2 주사를 수행한다. 단일의 주사는, 각 엔트리를 체크하여 ASID 또는 VMID의 그것의 값이 1인지를 판정하는 경우 수행될 수 있다. 이렇게 하여, 상기 룩업회로(230)의 상기 엔트리들을 통한 단일의 주사만이 요구되고, 이것은 상기 유지 동작들의 오버헤드를 감소시키는데 사용될 수 있다. 이에 따라, 다수의 유지 동작들은, 보다 효율적으로 수행될 수 있다. 상기 액션과 상기 다른 액션이 동일할 수 있었다는 것을 알 것이다. 마찬가지로, 상기 조건과 상기 다른 조건도 동일할 수 있었다.
ASID 또는 VMID의 재사용을 인지하여서 비동기 유지 효율의 향상
도 5는 상기 유지 큐에서 중복 유지 동작과 중복하는 상기 어드레스 스토리지(230)에서의 하나의 엔트리에 관한 상기 입력 어드레스에 응답하여, 상기 장치(200)가 상기 중복하는 유지 동작을 우선순위를 정하도록 구성된 일례를 도시한 것이다.
특별한 애플리케이션이나 가상 머신이 종료할 때, ASID값이 그 애플리케이션과 관련되거나 VMID값이 그 가상 머신과 관련되는 상기 TLB 엔트리들은, 무효화되어야 한다. 동일한 ASID/VMID용 요구들이 수신되게 시작하면, 그것이 의미하는 것은 상기 TLB가 새로운 엔트리들로 채워져야 할 것이다는 것이다. 그렇지만, 이것은, 상기 유지 동작이 수행되기 전에는 발생할 수 없다. 따라서, 룩업 동작(예를 들면, 변환 요구)이 상기와 같은 유지 동작과 중복할 때, 상기 유지 동작을 촉진시키는 것이 바람직할 수도 있다.
도 5는, 이러한 향상을 위해 조정되어 있는 도 3b에 제시된 흐름도와 유사한 흐름도를 도시한 것이다. 그 프로세스는 도 3b와 관련지어 설명된 것처럼 진행된다. 그렇지만, 단계 330에서, 유지 충돌이 검출되면, 단계 500에서는 상기 충돌이 일어나는 상기 유지 동작이 특별한 ASID 또는 VMID를 대상으로 삼은 무효화인지를 판정한다. 무효화가 아닐 경우, TLB 미스가 발행되는 경우 이전처럼 단계 340의 프로세스로 진행된다. 그렇지 않은 경우, 단계 510에서는, 상기 유지 동작들 우선권을 높인다. 이에 따라, 상기 유지 동작은 보다 빠르게 수행된다. 일부 실시예들에서는, 상기 유지 동작의 상기 우선권을, 수행되는 다음 유지 동작이 수행되도록 최고의 레벨까지 높인다. 그 후, 단계 340의 프로세스로 진행되어 TLB 미스가 수행됨으로써, 페이지 워크를 야기한다.
풀(full) 유지 큐에 응답하여서 비동기 유지 효율의 향상
도 6의 흐름도는, 상기 유지 큐가 가득 찰 때 상기 유지 동작을 수신하는 것에 응답하여, 상기 유지회로가 상기 선택된 유지 동작을 수행하도록 구성되는 예들에 관한 것이다. 특히, 도 6은, 상기 선택이, 수행되는데 최소의 시간이 걸릴 상기 유지 큐에서의 유지 동작을 기초로 하는 예들에 관한 것이다.
일부 인스턴스들에서, 유지 동작은 상기 유지 동작들(220)의 큐가 이미 가득 찰 때 수신되어도 된다. 이러한 경우에, 상기 리퀘스터는, 상기 공간으로서 상기 시간이 상기 큐(220)내에서 이용 가능할 때까지 차단되거나 일시 중지될 수 있었다. 이것을 처리하는 방식의 하나는, 예를 들면 상기 유지 큐(220)에 보유된 상기 유지 동작들 중 하나를 상기 유지회로(250)가 즉시 수행하는 것이고, 일부 실시예들에서, 상기 유지회로(250)는, 수행되는 상기 유지 큐(220)로부터 가장 빠른 유지 동작을 선택하고 즉시 그 동작을 수행한다. 예를 들면, 도 6에 도시된 것처럼, 단계 600에서는 유지 동작을 수신한다. 단계 610에서는, 상기 유지 큐(220)가 가득 찼는지 아닌지를 판정한다. 가득 차지 않은 경우, 단계 670의 프로세스로 진행되어 그 새로운 유지 동작은 상기 큐에 추가된다. 그렇지 않은 경우, 단계 620에서는, 상기 유지 큐(220)내에 보유된 상기 유지 동작들의 다음 유지 동작이 페치되는 루프를 시작한다. 단계 630에서는, 이러한 유지 동작은 지금까지 판정된 가장 빠른 유지 동작보다 빠른지를 판정한다. 디폴트로서, 유지 동작이 아직 검사되지 않고 있으면, 이것은 진실일 것이다. 어떠한 경우에도, 이러한 조건이 충족되면, 단계 640에서는, 검사중인 현재의 유지 동작을 현재의 가장 빠른 동작으로서 설정한다. 그 후, 단계 650의 프로세스로 진행되어 검사중인 현재의 유지 동작이 단계 630에서 보다 빠르지 않으면, 단계 650의 프로세스로 직접 진행된다. 단계 650에서는, 상기 유지 큐(220)로부터 검사되는 유지 동작이 보다 많은지를 판정한다. 보다 많을 경우, 단계 620의 프로세스로 역으로 진행되어 다음 유지 동작을 페치한다. 보다 많지 않을 경우, 단계 660에서는, 현재의 가장 빠른 동작을 수행한다. 그 후, 단계 670에서는, 단계 600에서 수신되었던 상기 새롭게 수신된 유지 동작을, 상기 유지 큐(220)에 추가한다.
유지 동작들을 조합하여서 비동기 유지 효율의 향상
도 7은 하나 이상의 조건들에 근거한 상기 유지 큐에서의 복수의 엔트리들을 조합하는 조합회로(260)의 일례를 도시한 것이다. 예를 들면, 일부 실시예들에서, 상기 조합회로(260)는, 상기 어드레스 스토리지(230)에서의 인접한 어드레스들을 조합한다. 예를 들면, 상기 어드레스가 인접하는 경우 동일한 ASID와 VMID에 관계되는 엔트리들. 이렇게 하여, 상기 유지 동작들의 큐는, 인접한 어드레스들에 관계되는 복수의 엔트리들을 다양한 어드레스들에 관계되는 단일의 엔트리로 대체함으로써, 컴팩션(compaction)될 수 있다.
일부 실시예들에서, 상기 하나 이상의 조건들은, (i) 중복하는 또는 인접한 VA/IPA가 병합될 수 있는 것; (ii) VA에 의한 무효화는 상기 VA가 상기 ASID에 속하는 경우 ASID에 의한 중복 무효화에 의해 포괄되는 것; (iii) IPA에 의한 무효화는 상기 IPA가 상기 VMID에 속하는 경우 VMID에 의한 중복 무효화에 의해 포괄되는 것; 및 (iv) ASID에 의한 무효화는 상기 ASID가 상기 VMID에 속하는 경우 VMID에 의한 무효화에 의해 포괄되는 것으로 이루어진다. 이 조건들은, VA가 관련된 ASID를 갖고, ASID가 관련된 VMID를 갖고, IPA가 관련된 VMID를 갖는 관계를 기초로 한다.
도 7의 상기 예를 생각하여, 상기 큐의 동작은 초기에 5개이다. 제1의 2개의 동작들은, 동일한 ASID(1)와 동일한 VMID(1)와 관계되고 상기 어드레스들이 인접하기(0×1121이 0×1122에 인접하기) 때문에, 단일의 동작으로 병합될 수 있다. 이 때문에 조건 (i)도 적용한다. 그러므로, 이 동작들은 단일의 무효화 동작으로 대체될 수 있고, 이 단일의 무효화 동작은, 상기 ASID가 1이고 VMID가 1인 경우의 0×1121 내지 0×1122의 범위내의 상기 어드레스들을 무효화하는 것으로 목적으로 한다. 마찬가지로, 상기 초기의 유지 동작 큐의 다음의 2개의 동작들도, 동일한 ASID(2) 및 VMID(1)를 대상으로 하고 또한 인접한 어드레스들(0×009D는 0×009E에 인접한다)에 관계된다. 이에 따라, 이들은, 2의 ASID와 1의 VMID에 대한 0×009D 내지 0×009E의 범위를 무효화하기 위해 단일의 유지 동작을 생성하기 위해서 컴팩션될 수 있다. 이에 따라, 상기 컴팩션된 유지 큐는 3개의 엔트리를 갖는다. 본 예에서, 상기 유지 동작들의 각각은 우선권과 관련되었다. 본 예에서, 새로운 엔트리의 상기 우선권은, 조합되었던 상기 유지 동작들의 우선권들의 최고와 같다. 이렇게 하여, 유지 동작은, 그 밖의 동작들과 조합되기 때문에 우선권에 있어서 감소하지 않는다. 그 밖의 실시예들에서, 상기 우선권은, 새로운 동작을 구성하는 상기 동작들 전부 사이에서 평균화될 수 있다. 그 밖의 선택사항들은 이용 가능하고 숙련자에게 알려질 것이라는 것을 알 것이다.
이에 따라, 상기 유지 큐(220)는 컴팩션될 수 있음에 따라서, 상기 리퀘스터를 일시 중지시키거나 차단시키지 않고 다른 유지 동작들이 상기 유지 큐(220)에 추가될 수 있다는 것을 알 수 있다. 상기 컴팩트 프로세스는 어떠한 유지 동작도 손실되지 않게 한다. 상기 조합 프로세스는 단지 엔트리들을 함께 합병시킬 뿐이다.
필 큐의 이용에 의한 비동기 유지 효율의 향상
도 8은 상기 어드레스 스토리지(230)에서의 새로운 변환을 위한 적어도 하나의 필 동작을 저장하는 필 큐 회로(800)의 일례를 도시한 것이고, 이때, 입력 포트(210)는 상기 필 동작을 수신하도록 구성되고; 상기 유지 큐에서 중복 유지 동작과 적어도 일부가 중복하는 상기 필 동작에 응답하여, 상기 필 큐 회로(800)는 상기 필 동작을 저장하고, 상기 필 동작이 완전히 상기 유지 동작과 중복하면 상기 유지 동작이 상기 유지 큐로부터 제거되고, 그렇지 않으면, 상기 중복 유지 동작의 우선권이 증가된다.
새로운 엔트리가 상기 어드레스 스토리지(230)에 추가될 때, 예를 들면 페이지 테이블 워크가 일어났을 때, 진행중 유지 동작과 충돌이 있을 수도 있다. 이것이 일어날 수 있었던 경우의 일례는, 특정한 매핑으로 채울 필(fill)이 후속하는 특별한 ASID에 따라 무효화를 수행하는 것을 유지 동작이 대상으로 삼는 경우이다. 다른 예에서, 특별한 VA에 따른 무효화와 동일한 VA에 대한 필은, 유사한 시간에서 발행될 수 있었다. 이 경우에, 상기 무효화는 드롭(drop)될 수 있고 상기 엔트리들은 직접 채워질 수 있다.
상기 필 동작이 저장될 수 있는 필 큐(800)를 설치함으로써, 상기 필 동작은, 상기 충돌 유지 동작이 처리되는 그런 시간이 될 때까지 지연될 수 있다. 충돌중인 상기 유지 동작이 보다 빠르게 해결되게 하도록, 상기 충돌(즉, 중복) 유지 동작의 우선권은 증가될 수 있다. 도 8에 도시된 것처럼, 필 동작이 수신될 때, 상기 필 큐(800)에 초기에 송신된다. 상기 룩업회로(230)가 TLB의 형태를 취하는 경우, 상기 필 큐(800) 자체는, 보다 작은 TLB의 형태를 취할 수 있었다. 여기서, 상기 동작이 상기 룩업회로(230)에 직접 진행될 수 있는지의 여부, 또는 상기 동작이 상기 필 큐(800)에 보유되어야 하는지의 여부를 판정하기 위해서, 상기 유지 큐를 사용하여 참고가 일어난다. 이렇게 판정하는 프로세스는, 도 9에 대해 보다 상세히 나타내어져 있다. 상기 충돌 유지 동작들이 완료되었으면, 그 유지 동작과 충돌하였던 어떠한 엔트리들도 상기 필 큐(800)로부터 상기 룩업회로(230)에 증가된다. 마찬가지로, 상기 유지 큐(220)에 입력하는 유지 동작들은, 기존의 필 동작들이 상기 유지 동작에 영향을 받는 것을 보장하도록, 상기 필 큐(800)를 참고한다. 일부 실시예들에서, 상기 유지 동작은, 상기 필 동작이 수행되어 있던 그러한 시간이 될 때까지 진행 가능하지 않을 수도 있다. 마찬가지로, 입력 어드레스가 룩업 동작의 일부로서 제공될 때, 이것은 상기 룩업회로(230)뿐만 아니라 상기 필 큐(800)에 대해서도 체크되어도 된다.
도 9는 상기 필 큐(800) 예를 들면, 상기 유지 큐(220)로부터 일어나는 상기 참고 프로세스의 일례를 도시한 것이다. 단계 900에서는, 필 동작을 수신한다. 단계 910에서는, 상기 유지 큐(220)를 참고한다. 단계 920에서는, 상기 유지 큐에서의 상기 엔트리들 중 어느 하나와 상기 필 동작과의 사이에 중복이 있는지를 판정한다. 예를 들면, 상기 유지 동작들 중 어느 하나가 수신된 상기 필 동작에 영향을 미칠 가능성을 갖는지를 판정하여도 된다. 이와 같은 중복이 존재하지 않으면, 단계 930에서는 상기 필 동작을 수행한다. 이에 따라, 상기 룩업회로(230)의 하나 이상의 엔트리들이 갱신된다. 그 후, 역으로 단계 900의 프로세스로 진행된다. 이와는 달리, 중복이 검출되면, 단계 940에서는, 상기 필 동작을 상기 필 큐(800)에 추가하고 상기 충돌 유지 동작의 상기 우선권을 증가시킨다. 또, 그 후, 단계 900의 프로세스로 되돌아간다.
이러한 프로세스는 유지 동작 후 상기 필 동작을 수행하는 도 10a에 도시되어 있다. 본 예에서 가정한 것은, 상기 유지 동작이, 상기 어드레스 스토리지(230)의 상기 엔트리들 중 어느 하나가 영향을 받게 되지 않는다는 것이다. 그렇지만, 상기 유지 동작을 수행하였다면, 이후 수행되는 상기 필 동작은, 굵은 선으로 도시된 새로운 엔트리가 추가하게 된다.
그러므로, 도 10a는, (예를 들면, 주사되는 상기 엔트리들의 일부로서) 상기 중복 유지 동작이 완료되는 것에 응답하여, 상기 필 동작이 상기 어드레스 스토리지(230)상에서 수행되는 일례를 도시한 것이다. 대안으로서, 도 10b는 상기 유지 동작이 수행되므로 상기 필 동작이 상기 어드레스 스토리지(230)상에서 수행되는 일례를 도시한 것이다. 특히, 상기 유지 동작은, 상기 어드레스 스토리지(230)의 엔트리들을 통해 주사한다. 상기 필 동작에 의해 새로운 엔트리가 삽입될 장소상에서 상기 필 동작을 수행한 후, 상기 필 동작이 수행됨에 따라서, 새로운 엔트리를 삽입한다. 그 후, 나머지 상기 유지 동작은 나머지 엔트리들에 관해 수행될 수 있다. 이렇게 하여, 상기 유지 동작은 상기 필 동작에 영향을 미치지 않는데, 그 이유는 상기 필 동작이 일어날 상기 엔트리에 상기 유지 동작이 영향을 미친 후 상기 필 동작이 일어나기 때문이다. 이러한 해결방법은, 다수의 동작들이 동시에 스토리지에서의 동일한 공간상에서 수행된다는 점에서 집약성(locality)의 원리에서 이익을 얻는다. 이것은, 상기 필 동작이 수행될 상기 엔트리를 위치시키기 위해서 상기 어드레스 스토리지(230)의 상기 엔트리들의 각각을 통해 재주사할 필요성을 피할 수 있다.
요구들 중간 유지를 허용하여서 비동기 유지 효율의 향상
도 11은 상기 선택된 유지 동작이 상기 어드레스 스토리지(230)의 적어도 일부를 통해 주사하는 것과 조건이 충족되는 것에 응답하여 액션을 수행하는 것을 포함하는 일례를 제공하고, 상기 필 동작은, 입력 어드레스에 관한 필 동작을 수신하는 것에 응답하여, 상기 입력 어드레스가 상기 선택된 유지 동작에 대해 이미 주사되어 있는 상기 어드레스 스토리지(230)의 일부와 대응할 때, 수행된다.
이에 따라, 유지 동작이 수행중이지만, 입력되는 입력 어드레스에 응답하여 동시에 출력 어드레스가 제공되는 것을 허가하는 것이 가능할 수도 있다. 특히, 이미 상기 유지 동작이 실행되어 있는 상기 어드레스 스토리지(230)의 일부는 액세스 불가능하다고 생각될 수 있다. 이렇게 하여, 입력 어드레스가, 상기 선택된 진행중 유지 동작에 대해 이미 주사되어 있는 상기 어드레스 스토리지(230)의 엔트리에 관계할 경우에는, 대응한 출력 어드레스를 제공할 수 있다. 또는, 상기 입력 어드레스가 상기 선택된 유지 동작에 대해 주사되지 않은 상기 어드레스 스토리지(230)의 일부에 관계하는 경우나, 상기 입력 어드레스가 상기 어드레스 스토리지(230)에서 상기 엔트리들 중 어느 하나에 관계하지 않은 경우에, 상기 리퀘스터에 역으로 미스가 제공된다. 이에 따라, 변환들이 제공되도록 상기 유지 동작이 완료되는 것이 필요하지 않다. 따라서, 미스를 제공하는 대신에, 상기 변환 결과가 제공되어도 된다. 카운터(1000)는, 상기 유지 동작이 수행되어 있는 상기 어드레스 스토리지(230)에서의 포인트를 추적하도록 구성된다. 비교기는, 상기 어드레스 스토리지(230)의 상기 일부가 상기 유지 동작에 의해 이미 주사되어 있는 필 동작이나 상기 룩업동작에 영향을 미칠지의 여부를 판정하는데 사용될 수 있다.
이 때문에, 도 2 및 도 11은, 복수의 엔트리들을 저장하고, 상기 복수의 엔트리들의 적어도 일부를 주사함으로써 선택된 엔트리에 대한 검색을 수행하도록 구성된 저장회로(230); 상기 검색의 일부로서 계속 주사되는 상기 저장회로(230)의 일부에 대한 표시를 저장하는 참조회로(1000); 및 상기 참조회로에서 나타낸 것처럼 상기 검색의 일부로서 계속 주사되는 상기 저장회로(230)의 상기 일부에서 없는 상기 복수의 엔트리들 중 하나에 응답하여 상기 복수의 엔트리들 중 상기 하나에 영향을 미칠 동작을 수행하는 처리회로(240)를 구비하는 장치의 일례도 제공한다. 이 경우에, 계속 주사되는 상기 저장회로(230)의 상기 일부는, 상기 검색동안에 갱신되는 상기 카운터(1000)에 의해 가리켜진다. 이때, 일부 실시예들에서, 가능한 엔트리들의 서브세트만이, 심지어 처음부터 상기 검색 프로세스의 일부다. 예를 들면, 상기 저장회로(230)가, 상기 엔트리가 어디에 위치되는지를 대략 판정하는 해시 테이블을 활용하는 경우, 엔트리들의 서브세트만이 상기 일치 엔트리를 찾기 위해서 검색되어야 한다. 이렇게 하여, 예를 들면, 검색이 수행중인 동안에도 엔트리들이 저장회로에 삽입될 수 있다.
스토리지 도용
도 12는 처리소자(1220)가 입력 어드레스들을 상기 입력 포트(1210)에 제공하는 일부 실시예들에 따라 장치(1200)를 도시한 것이다. 그 입력 어드레스는, 상기 입력 어드레스와 상기 출력 어드레스 사이의 변환을 출력 공간에 저장하는 변환 색인 버퍼(TLB)(1230)에 제공된다. 출력 어드레스 포트(1240)에 의해 상기 출력 어드레스(또는, 상기 입력 어드레스의 다른 변환)는 그 어드레스에서 메모리(1290)에 액세스하기 위해 출력될 수 있다. 동시에, 상기 처리소자(1220)는, 입력 데이터 포트(1250)를 거쳐 데이터를 수신할 수 있다. (도 12에 도시된 것 등의) 일부 실시예들에서, 상기 입력 데이터 포트는, 상기 메모리(1290)가 액세스될 때 메모리(1290)에서 그 장소에서의 상기 데이터가 상기 장치에 역으로 제공되도록, 상기 메모리(1290)부터 상기 장치(1200)까지이다. 이 데이터는, 예를 들면, DRAM의 지원을 받는, 캐시(1260)에 저장될 수 있다. 끝으로, 상기 데이터가 출력되는 출력 데이터 포트(1270)가 있다. 도 12에 도시된 것 등의 일부 실시예들에서, 상기 데이터 출력 포트가 설치되어 상기 장치(1200)가 그 데이터를 상기 처리소자에 역으로 출력 가능하게 한다. 제어회로(1280)는, 상기 TLB(1230)와 상기 캐시(1260)를 제어하는데 사용된다. 또한, 비록 상기 캐시(1260)가 데이터를 저장하는데 사용되지만, 이 캐시는 일부의 변환들을 저장하는데도 사용된다. 이렇게 하여, 상기 TLB(1230)는, 변환들을 저장하기 위해, 예를 들면, 그 외에는 상기 TLB(1230)가 상기 변환을 저장할 수 없을 때 상기 캐시(1260)로부터 저장 공간을 "도용한다". 또한, 입력 데이터 포트(1250)와 상기 출력 데이터 포트가 존재하는 방식으로 배치될 의무가 없다. 예를 들면, 상기 데이터는, 상기 처리소자(1220)로부터 수신되어 상기 메모리(1290)에 출력될 수 있었다. 실제로, 데이터는, 메모리(1290)로부터 판독 및 이 메모리에 기록되기 때문에 양방향으로 수신 및 출력될 수 있었다. 게다가, 각종 포트들(1210, 1240, 1250, 1270)은, -입력 포트들(1210, 1250)을 함께 또한 출력 포트들(1240, 1270)을 함께 조합하여서, 또는 상기 프로세서 포트들(1210, 1270)을 함께 또한 상기 메모리 포트들(1240, 1250)을 함께 조합하거나 심지어 4개의 포트들(1210, 1240, 1250, 1270) 전부를 함께 조합하여서, 조합될 수 있었다.
따라서, 도 12는, 프로세서 회로(1220)로부터 입력 어드레스를 수신하는 입력 어드레스 포트(1210); 상기 입력 어드레스와 출력 어드레스 공간에서의 상기 출력 어드레스와의 사이에서의 변환을 저장하는 어드레스 스토리지(1230); 상기 출력 어드레스를 출력하는 출력 어드레스 포트(1240); 데이터를 수신하는 입력 데이터 포트(1250); 복수의 장소들 중 하나에 상기 데이터를 저장하는 데이터 스토리지(1260); 데이터 스토리지(1260)에 저장된 상기 데이터를 출력하는 출력 데이터 포트(1270); 및 상기 데이터 스토리지(1260)가 상기 입력 어드레스와 상기 출력 어드레스와의 사이에서의 상기 변환을 저장하게 하고, 상기 어드레스 스토리지와 상기 데이터 스토리지에서 없는 상기 입력 어드레스에 응답하여 페이지 워크가 일어나게 하는 신호를 발행하도록 구성된 입력 제어회로(1280)를 구비하는, 장치(1200)의 일례를 제공한다.
이렇게 하여, 비록 변환들을 위해 이용 가능한 공간의 양이 증가할 수 있을지라도, 그 어드레스 스토리지(1230) 자체의 사이즈는 그대로 이다. 따라서, 상기 어드레스 스토리지(1230)에서의 변환을 검색하는데 걸린 시간은, 크게 변경할 필요는 없다. 특히, 그 변환이 상기 TLB(1230)에 저장된다고 알려지면, 추가의 액세스 시간이 거의 또는 전혀 요구되지 않는다. 이것은, 예를 들면, 상기 변환이 어디서 발견될지에 대해 추론하는데 사용된 예측자(predictor)를 사용하여서 이루어질 수 있었다. 상기 장소가 미지이면, 상기 TLB(1230) 및 캐시(1260)에의 액세스는, 상기 어드레스 스토리지(1230)와 상기 데이터 스토리지(1260)의 양쪽에서 변환이 동시에 룩업되도록 병렬화될 수 있었다. 또, 이것은, 요구된 어떠한 증가된 룩업 시간도 크게 제한할 수 있다.
마찬가지로, 상기 회로 사이즈는 이러한 변경 때문에 크게 증가할 필요는 없다. 특히, 상기 어드레스 스토리지(1230)의 사이즈가 그대로 이고, 이와는 달리 상기와 같은 회로상에 존재할 것으로 예상될지도 모르는 데이터 스토리지(1260)에 상기 변환이 저장되므로, 상기 변환을 저장하기 위해서 "도용되는" 상기 스토리지는, 별도의 하드웨어를 추가할 필요가 없다. 따라서, 상기 장치(1200)의 전반적인 회로 공간이 증가할 필요는 없다. 따라서, 상기 회로 공간을 증가시킬 필요 없이 성능을 향상시킬 수 있다. 또한, 도 12는 상기 데이터 스토리지(1260)와 상기 어드레스 스토리지(1230)가 별개의 메모리들인 일례도 제공한다. 특히, 상기 변환 색인 버퍼(TLB)(1230) 및 상기 데이터 캐시(1260)는, 상기 데이터 회로상에 별개의 디바이스들이다. 일부 실시예들에서, 이 디바이스들의 각각은, 자신의 제어회로(1280) 대신에 자신의 개개의 제어회로 또는, 자신의 제어회로(1280) 뿐만 아니라 자신의 개개의 제어회로도 가질 수 있었다. 그렇지만, 상기 데이터 스토리지와 상기 어드레스 스토리지가 별개의 메모리들일 필요는 없다. 특히, 일부 실시예들에서, 상기 어드레스 스토리지(1230)와 상기 데이터 스토리지(1260)는, 동일한 메모리일 수도 있어서, 다용도로 동일한 메모리의 영역을 모을 수도 있다.
도 13은 상기 복수의 장소들이 n-웨이 세트 연관 메모리의 형태를 취하고; 상기 제어회로(1280)가 상기 n-웨이 중, 하나 이상의 다른 용도에 맞게 고쳐진 웨이들(ways)로 상기 데이터 스토리지(1260)가 상기 변환을 저장하게 하도록 구성된다. 세트 연관 메모리에는, 데이터가 저장되어도 되는 장소들이 많이 있다. 이러한 각 장소를 "웨이"라고 한다. 이것은, 예를 들면, 상기 세트 연관 메모리에서의 저장량이 저장되는 데이터의 세트보다 상당히 적기 때문에, 일어날 수도 있다. 웨이들이 많이 있는 방식으로 상기 메모리를 고안함으로써, 그 메모리의 유연성을 증가시킬 수 있다. 예를 들면, 해시는, 어느 장소에 저장되어야 하는지를 산출하기 위해 상기 어드레스 상에 수행될 수 있었다. 일부의 데이터가 동일한 장소에 저장되기를 원하는 경우에, 다수의 "웨이들"은, 다수의 데이터가 동일한 해시값으로 저장될 수 있도록 제공된다. 일 최극단에서, 메모리는 '직접 매핑되고', 그 경우에 데이터가 저장될 수 있는 장소는 딱 하나가 있다. 그 밖의 범위에서, 상기 메모리는, 데이터가 어디에나 저장될 수 있는 완전 연관이다. 도 13의 상기 예에서, n은 5이어서, 상기 메모리는 5-웨이 연관이다. 따라서, 주어진 데이터의 경우는, 그 데이터가 저장될 수 있는 상이한 장소가 5개 있다. 또한, 각 웨이는, 11개의 상이한 데이터가 각 웨이내에 저장될 수 있는 11개의 인덱스(세트라고 하는 경우도 종종 있음)로 이루어진다. 도 13의 경우에는, (음영처리된) 상기 웨이들 중 2개의 웨이는, 상기 변환 색인 버퍼 TLB(1230)에서 사용할 수 있도록 다른 용도에 맞게 고쳐져 있다. 이 다른 용도에 맞게 고쳐진 웨이들 중 하나에 통상 저장될 데이터는, 그 대신에 다른 나머지 웨이들 중 하나에 할당된다.
상기 데이터 스토리지가 다른 용도에 맞게 고쳐지는 것을 가능하게 하는 다른 웨이는, 어드레스들의 사용에 따른 것이다. 도 14는, 상기 복수의 장소들이 n-웨이 세트 연관 메모리의 형태를 취하고; 상기 제어회로(1280)는 상기 데이터 스토리지(1260)가 상기 메모리의 하나 이상의 다른 용도에 맞게 고쳐진 세트들(1410)에서의 상기 변환을 저장하게 하도록 구성되는, 일례를 도시한 것이다. 본 예에서, 구역 포인터(1400)는, 상기 어드레스 스토리지(1230)에 의해 저장되는 상기 변환들과 상기 데이터 스토리지(1260)에 의해 저장되는 상기 데이터와의 사이의 경계를 표시하는 어드레스를 가리킨다. 본 예에서, 상기 경계는, 상기 데이터 스토리지(1260)내의 세트들이 변환들의 저장을 위해 다른 용도에 맞게 고쳐지므로, 이동중인 것으로서 도시되어 있다. 따라서, 입력(및 출력) 어드레스가 새로운 변환을 작성하기 위해, 상기 처리회로에 의해 제공될 때, 상기 변환은 이 다른 용도에 맞게 고쳐진 영역에 저장될 수 있다. 상기 세트들이 다른 용도에 맞게 고쳐지므로, 상기 데이터 스토리지(1260)에 인덱싱하는데 사용되는 해시 함수는, 더 이상 다른 용도에 맞게 고쳐지지 않은 세트들을 참조하지 않도록 적응시켜야 한다는 것을 알 것이다. 한편, 상기 데이터 스토리지(1260)의 나머지 세트들(1420)은, 데이터를 저장하는데 사용될 수 있다. 이 경계는, 예를 들면, 세트 인덱스에 의해 참조되어도 된다. 이렇게 하여, 도 14는 상기 데이터 스토리지(1260)와 상기 어드레스 스토리지(1230)이 동일한 메모리내에서 상이한 구역들인 일례를 도시한 것이다. 그러므로, 도 14도, 상기 어드레스 스토리지(1410)에서 사용한 구역과 상기 데이터 스토리지(1420)에서 사용한 구역과의 사이의 경계를 나타내기 위해 구역 포인터(1400)의 일례를 제공한다. 나머지 이 설명의 목적상, '어드레스 스토리지'와 '데이터 스토리지'의 용어를 사용할 것이긴 하다, 하지만 이것은 별개의 메모리들이 필요한 것으로서 해석되어서는 안된다. 또한, 아래의 예들이 웨이, 저장장소, 또는 어드레스를 참조할 수도 있긴 하지만, 숙련자들은 웨이들을 다른 용도에 맞게 고치거나 세트들을 다른 용도에 맞게 고치는 용도는 상호교환 가능한 기술들이라는 것을 알 것이다. 이 때문에, 도 14는, 처리회로로부터 입력 어드레스를 수신하는 단계; 상기 입력 어드레스와, 출력 어드레스 공간에서의 출력 어드레스와의 사이에서의 변환을 어드레스 스토리지(1230)에 저장하는 단계; 데이터를 수신하는 단계: 상기 데이터를 데이터 스토리지(1260)에 저장하는 단계; 상기 데이터 스토리지(1260)가 상기 입력 어드레스와 상기 출력 어드레스와의 사이에서의 상기 변환을 저장하게 하는 단계; 및 상기 어드레스 스토리지와 상기 데이터 스토리지에서 없는 상기 입력 어드레스에 응답하여, 페이지 워크가 일어나게 신호를 발행하는 단계를 포함하는 방법을 도시한 것이다.
정책들을 사용한 스토리지의 도용
도 15는 일부 실시예들에 따라 정책의 일례를 도시한 것이다. 구체적으로는, 도 15는, 정책이, 상기 복수의 장소들의 각각에 대해, 데이터와 비교된 변환을 저장하는 프레퍼런스를 나타내는 일례를 도시한 것이다. 이 정책은, 흐름도(1500)의 형태로 도시되어 있다. 단계 1510에서는, 새로운 변환이 수신된다. 단계 1520에서는, 저장장소 w가 상기 변환에 근거하여 결정된다. 이것은, 해시 연산을 수행하는 것, 이를테면 상기 변환의 대상인 사이 입력 어드레스나 상기 출력 어드레스에 관해 모듈러스 연산을 수행하는 것에 근거하여 산출될 수 있었다. 단계 1530에서는, 상기 현재의 어드레스 미스가 상기 저장장소 w(1560)에 대한 값 x보다 큰지를 판정한다. 도 15의 상기 예에서, w에 대한 x의 값은 1000중에서 5다. 이에 따라, 이 경우의 상기 어드레스 미스율이 상기 처리회로(1220)에서 실행한 매 1000개의 명령에 대해 5보다 크면, 단계 1540의 프로세스로 진행되어, 상기 변환이 (예를 들면, 상기 데이터 스토리지 1260)에 저장된다. 그렇지 않으면, 단계 1550에서는, 상기 데이터 미스율이 상기 저장장소 w(1570)에 대한 값 y보다 큰지를 판정한다. 이 경우에, 그 값이 1000중에서 30으로 설정된다. 이에 따라, 상기 데이터 스토리지 미스율이 상기 처리회로(1220)에서 실행한 매 1000개의 명령에 대해 30보다 크면, 단계 1540의 프로세스로 진행되어, 상기 변환이 상기 데이터 스토리지(1260)에 저장된다. 또는, 단계 1555의 프로세스로 진행되어, 상기 어드레스 스토리지 액세스율이 상기 저장장소w(1580)에 대한 값 z보다 큰지를 판정한다. 이 경우에, 그 값은 4중에서 3으로 설정된다. 이에 따라, 상기 어드레스 스토리지에 대한 상기 액세스율이 상기 처리회로(1220)에서 실행한 4개의 명령중 3개보다 큰 경우, 단계 1540의 프로세스로 진행되어, 상기 변환이 상기 데이터 스토리지(1260)에 저장된다. 또는, 단계 1510의 프로세스로 역으로 진행된다. 달리 말하면, 그 변환이 저장되지 않는다. 본 예에서는, 그 변환이, 3개의 조건 중 어느 하나가 충족되기 때문에 상기 데이터 스토리지에 저장된다. 제1 조건은, 상기 어드레스 미스율이 제1 변수x보다 큰 것이다. 본 예에서, x의 값은 상기 처리회로(1220)에서 실행한 1000개의 명령당 5로서 주어진다. 그렇지만, 다른 시스템에서는, 이 값은, 예를 들면 실행된 1000개의 명령당 10개의 미스일 수 있었다. 높은 어드레스 스토리지 미스율은 그 시스템에서 일어나는 비효율성을 나타낼 수 있다. 이에 따라, 상기 어드레스 스토리지 미스율이 특정한 포인트에 도달할 때, 그 시스템의 효율성을 높이기 위해서 변환을 저장하는 것이 보다 바람직해질 수 있다. 상기 변환이 저장되는 순서로 충족될 수 있는 제2 조건은, 상기 데이터 미스율이 변수y 이상인 것이다. 본 예에서, 상기 저장장소w에 대한 상기 변수y는, 실행된 1000개의 명령당 30이다. 그렇지만, 다른 시스템에서는, 이것은 1000개의 명령당 40개의 미스와 같을 수 있었다. 상기 데이터 스토리지에 대한 대다수의 미스들은, 실행되는 상기 명령들에서의 데이터 지역성이 부족하다는 것을 나타낸다. 이에 따라, 통상적으로 데이터의 저장을 위해 사용되는 상기 공간은, 대신에 변환들을 저장함으로써 보다 잘 사용될 수도 있다. 따라서, 상기 데이터 스토리지율이 특정한 포인트에 도달할 때, 그 변환을 저장하는 것이 보다 바람직할 수도 있다. 상기 변환이 저장되는 순서로 충족될 수 있는 제3 조건은, 상기 어드레스 스토리지 액세스율이 변수z 이상인 것이다. 본 예에서, 상기 저장장소w에 대한 상기 변수z가 실행된 4개의 명령당 3과 같다. 큰 액세스율은, 상기 스토리지 디바이스들 중 하나에 대한 경합이 있을 수 있었다는 것을 나타내고, 그 대신에, 이 때문에 데이터를 상기 데이터 스토리지에 저장함으로써 작업량을 확산하는 것이 바람직할 수 있었다.
또한, 도 15는, 대체 정책이 동적으로 설정 가능한 일례를 도시한 것이다. 구체적으로, x, y, z의 값은, 각각, 레지스터 1560, 1270 및 1580에 저장된다. 이렇게 하여, 상기 저장장소에 대한 데이터라기보다는 변환들을 저장하기 위한 상기 프레퍼런스는, 달라질 수 있다. 물론, 저장장소 전부에 걸쳐서 유효하도록 x, y, z에 대한 전체 값들도 설정될 수 있었다는 것을 알 것이다. 또한, 도 15는, 상기 제어회로(1280)는 상기 데이터 스토리지(1260)가 적어도 하나의 제1 조건에 따라 상기 입력 어드레스와 상기 출력 어드레스와의 사이에서 상기 변환을 저장하게 하도록 구성되는 경우의 일례를 제공한다. 구체적으로, 도 15는, 상기 제1 조건이, 상기 어드레스 스토리지(1230)의 미스율, 상기 어드레스 스토리지(1230)의 히트율, 상기 어드레스 스토리지(1230)의 액세스율, 상기 데이터 스토리지(1260)의 미스율, 상기 데이터 스토리지(1260)의 히트율, 및 상기 데이터 스토리지(1260)의 액세스율을 포함하는 리스트로부터 나온 것일 경우의 일례를 제공한다.
일부의 다른 실시예들에서, 단계 1530, 1550 및 1555에서의 조건들은, 소정의 상수미만의 값을 테스트함으로써 반전될 수 있었다는 것을 알 것이다. 단계 1530 및 1550에서의 상기 테스트들의 경우에, 상기 테스트는 소정의 상수미만이라기 보다는 소정의 상수보다 큰 값에 대한 것일 수 있다. 또한, 단계 1555에서 상기 테스트의 경우에, 상기 액세스율은 상기 데이터 스토리지의 액세스율을 고려할 수 있었다. 또한, 대신에 그 밖의 메트릭스를 고려할 수 있었거나, 또는 그 밖의 메트릭스도 고려할 수 있었다. 예를 들면, 사용될 수 있었던 다른 메트릭은, 다수의 클록 사이클들에서 미스들, 히트들 또는 액세스들의 수다.
도 16은, 상기 입력 어드레스와 상기 출력 어드레스와의 사이에서 상기 변환이 상기 데이터 스토리지(1260)의 일부에 저장되게 하도록, 상기 제어회로(1280)가 구성되는 일례를 제공한다. 본 예에서, 상기 데이터 스토리지(1260)는 캐시다. 특히, 상기 데이터 스토리지(1260)는, 5-웨이 연관 캐시이고, 이때의 각 웨이는 11개의 저장장소로 이루어진다. 상기 변환이 저장되는 상기 데이터 스토리지(1260)의 일부는 회색으로 도시되어 있다. 특히, 주목할 것은, 웨이들의 수가 저장장소마다 다르다는 것이다. 예를 들면, 제1 저장장소(1650)는, 그 장소(1650)에 저장하기 위해 변환을 고려할 때 한번에 데이터 스토리지 미스율과 어드레스 스토리지 미스율을 고려하는, 제1 지시자(1600)에 의해 지정된 것처럼, 상기 변환의 저장을 위해 할당된 단일의 웨이만을 갖는다. 제2 저장장소(1660)는, 그 장소(1660)에 저장하기 위해 변환을 고려할 때 다시 데이터 스토리지 미스율과 어드레스 스토리지 미스율을 고려하는, 제2 지시자(1610)에 의해 지정된 것처럼 상기 변환의 저장에 할당된 4개의 웨이를 갖는다. 이렇게 하여, 도 16은, 상기 일부의 사이즈가 적어도 하나의 제2 조건에 의존하는 경우의 일례다. 구체적으로, 도 16은, 상기 어드레스 스토리지(1230)의 미스율, 상기 어드레스 스토리지(1230)의 히트율, 상기 어드레스 스토리지(1230)의 액세스율, 상기 데이터 스토리지(1260)의 미스율, 상기 데이터 스토리지(1260)의 히트율, 및 상기 데이터 스토리지(1260)의 액세스율을 포함하는 리스트로부터 나온 것일 경우의 일례를 도시한 것이다. 상기 데이터 스토리지 미스율과 어드레스 스토리지 미스율이 경시변화를 하므로, 상이한 저장장소는 결국 변환들을 위해 할당된 상이한 저장량이 될 수 있다는 것을 알 것이다. 이것은, 상기 미스율들이 높을 때 한번에 대다수의 변환들이 일어나는 경우, 스토리지는 그 변환들이 메모리에서 어디에 배치되든지 상관없이 그 변환들을 위해 제공될 수 있도록 유연성을 제공한다.
스토리지 액세스 프로세스들의 도용
도 17a는 상기 어드레스 스토리지(1230)에서의 상기 입력 어드레스의 미스에 응답하여, 상기 변환을 위해 상기 데이터 스토리지(1260)에 판독 요구를 송신하는 일례를 도시한 것이다. 특히, 요구는, 상기 TLB(1230)에서 상기 처리회로(1220)로부터 수신된다. 상기 요구는, 대응한 출력 어드레스가 요구되는 입력 어드레스를 포함한다. 이러한 변환이 상기 TLB(1230)에서 발견된 경우, "히트"가 일어나고, 상기 출력 어드레스가 상기 처리회로(1220)에 역으로 전송된다. 발견되지 않은 경우는, "미스"가 일어나고, 상기 요구는, 일부 실시예들에서 라스트 레벨 캐시(LLC)인 상기 캐시(1260)에 전송된다. 여기서, 상기 TLB(1230)에서 사용하기 위해 "도용된" 상기 캐시(1260)의 상기 일부는, 상기 입력 어드레스에 대해 검색된다. "히트"가 일어나는 경우, 상기 요구된 출력 어드레스는 상기 처리회로(1220)에 역으로 전송된다. 그렇지 않은 경우는, "미스"가 일어나고, 상기 캐시(1260)가 LLC인 것으로 인해, 이에 따라 페이지 워크가 수행되게 된다. 상기 TLB(1230) 및 상기 캐시(1260)가 단일의 메모리인 예들에서, 상기 동일한 회로내에서 국소적으로 상기 전송이 일어날 수도 있다는 것을 주목한다. 그렇지만, 이러한 상황들에서, 두번의 검색이 계속 수행되어도 된다-한번은 상기 TLB(1230)에서 사용한 제1 저장장소에 관해 수행되고, 한번은 상기 캐시(1260)에서 주로 사용한 제2 저장장소에 관해 수행된다. 또는, 한번의 검색이 수행되어도 된다. 이 각 예에 있어서, 상기 검색이나 검색들이 실패하였을 경우, 페이지 워크는 상기 처리회로(1220)에 의해 수행된다.
도 17b는 페이지 워크 요구가 발행되면서 상기 판독 요구가 상기 데이터 스토리지(1260)에 병렬로 보내지는 일례를 도시한 것이다. 이에 따라, 상기 TLB(1230)에서 일어나는 미스에 응답하여, 요구는 상기 캐시(1260)에 전송되고 페이지 워크 요구는 상기 관련된 출력 어드레스를 얻기 위해 상기 처리회로(1220)에 의해 동시에 발행될 것이다. 이렇게 하여, 페이지 워크가 필요한 경우, 그것은 상기 캐시(1260)의 추가의 검색에 의해 지연되지 않는다. 이것은, 상기 페이지 워크는, 상기 요구된 출력 어드레스가 상기 캐시(1260)에서 발견될 때나, 상기 처리회로(1220)에 즉시 역으로 회신된 페이지 워크를 수행함으로써, 상기 캐시(1260)가 검색되면서 상기 페이지 워크가 동시에 수행되기 때문이다.
도 17c는, 입력 어드레스에 근거하여 결정되는 상기 출력 어드레스에 응답하여, 상기 장치(1200)가, 상기 출력 어드레스와 관련된 상기 데이터 스토리지(1260)에 저장된 데이터를 페치(fetch)하도록 구성된 일례를 도시한 것이다. 상기 TLB(1230)에서 요구를 수신할 때, 히트가 일어나면, 대응한 출력 어드레스가 상기 처리회로(1220)에 역으로 전송된다. 그 포인트에서, 상기 TLB(1230)에서 상기 캐시(1260)에 데이터 요구를 한다. 상기 캐시(1260)에서 히트가 일어나면, 상기 데이터는 상기 처리회로(1220)에 회신된다. 상기 TLB(1230)에서 상기 요구된 입력 어드레스에 대해 미스가 있으면, 상기 요구는 상기 캐시(1260)에 전송된다. 그 포인트에서, 히트가 있으면, 상기 출력 어드레스는 상기 처리회로(1220)에 역으로 전송되고 내부적으로 상기 캐시(1260)에서 데이터 요구가 이루어진다. 그 후, 상기 데이터 요구에 대해 히트가 있으면, 상기 데이터는 상기 처리회로(1220)에 역으로 전송된다. 이에 따라, 상기 처리회로(1220)에서 이후의 데이터 액세스 요구를 하기 위해 상기 어드레스를 상기 처리회로(1220)에 역으로 전송할 필요가 없다. 대신에, 상기 데이터는, 반드시 상기 처리회로(1220)를 포함하지 않고, 상기 어드레스와 함께 회신될 수 있다. 이것은 어드레스가 전송되고, 상기 처리회로(1220)가 데이터 요구를 발행하고, 상기 데이터 요구가 상기 캐시(1260)에 역으로 전송되는, 시간을 절약한다. 이에 따라, 데이터는 보다 빠르게 검색될 수 있다. 숙련자는, 종래의 방식으로 미스들이 처리된다는 것을 알 것이다.
도 18은 일부 실시예들에 따라 인입 요구들을 처리하는 방법을 도시하는 흐름도(1800)를 도시한 것이다. 상기 스토리지의 도용에 영향을 미치는 방식의 하나는, (예를 들면, 상기 캐시 제어기에게 어드레스를 판독하고 그 판독이 완료될 수 없는 경우 실패를 나타내는 신호를 회신하기 위해 시도하라고 알리는 전용 판독 요구나 가짜(fake) IO 디바이스를 거쳐) 백킹(backing) 스토리지에 대응하지 않는 PA 공간의 범위를 작성하는 것이다. 이러한 메카니즘은, 예를 들면, 상기 제어회로(1280)의 일부나, 상기 TLB(1230) 또는 캐시(1260)용 제어기의 일부일 수 있다. 이에 따라 캐시 가능한 물리적 어드레스 공간의 구역을 어드레스 변환들을 저장하는데 적절한 것으로서 표시할 수 있다. 그렇지만, 그 범위가 지원 받지 않기 때문에, 그것은 실제로 백킹 스토리지(예를 들면, DRAM)에 변환들을 저장하지 않는다. 이렇게 하여, 상기 캐시는, 메모리에 저장된다고 믿어지지만 믿어지지 않는 변환들을 "캐시"하도록 이루어질 수 있다. 요구의 일부로서 제공된 상기 어드레스가 상기 소정의 범위내에 속하면, 상기 요구는 변환용 요구다. 통상, 상기 LLC에 없는 캐시 가능한 데이터에 대한 요구는 상기 데이터가 메모리로부터 페치되게 할 것이지만, 이러한 동작은, 상술한 것처럼 이 범위가 실제로 메모리의 지원을 받지 않기 때문에 백킹 스토어에 대응하지 않는 PA공간의 상기 범위의 경우에, 행해질 수 없다. 따라서, 이러한 요구가 검출될 때, 그 데이터를 메모리로부터 직접 페치할 수 없다. 대신에, 그것은, 페이지 워크가 일어나게 하는 신호(예를 들면, 상기 제어회로 1280에) 발행한다. 일부 실시예들에서, 이것은, 상기 페이지 변환들이 메모리로부터 로딩되게 하고, 그 원하는 어드레스 변환이 그 페이지 변환들로부터 결정되게 한다.
이 때문에, 상기 흐름도(1800)는, 요구가 수신되는 단계 1810에서 시작한다. 그 요구는 어드레스 변환을 위한 것일 수 있거나 데이터를 위한 것일 수 있다. 이 때문에, 그 요구는, 데이터나 변환을 원하는 어드레스를 포함할 것이다. 단계 1820에서는, 룩업을 수행한다. 이 룩업은, 이전에 설명된 것처럼 상기 어드레스 스토리지(1230)와 데이터 스토리지(1260)의 하나 이상에 상기 요구를 이행하려고 한다. 그 원하는 정보가 단계 1830에서 위치되면, 단계 1810의 프로세스로 되돌아가 다음 요구를 수신한다. 또는, 단계 1840의 프로세스로 진행되어 상기 요구가 상기 소정의 범위내에 포함되는지를 판정한다. 상기 소정의 범위내에 포함될 경우, 단계 1850에서는, 페이지 워크가 일어나게 하는 신호를 발행한다. 또는, 단계 1860에서는, 메모리로부터 상기 데이터를 로딩한다. 어느쪽의 경우에나, 단계 1810의 프로세스로 복귀된다. 본 예에서는, 그 소정의 범위가 백킹 스토어에 대응하지 않는 상기 어드레스 공간이라고 생각한다. 그렇지만, 그 밖의 실시예들에서, 단계 1840에서는, 상기 어드레스가 상기 소정의 범위외에 있고 상기 소정의 어드레스 범위가 백킹 스토어에 대응하는 상기 어드레스 공간에 의해 명시될 수 있는지를 테스트할 수 있었다.
이 때문에, 상기 흐름도(1800)는, 상기 어드레스 스토리지(1230)와 상기 데이터 스토리지(1260)에서 상기 변환이 없을 때 그 변환을 위한 요구에 응답하여, 상기 제어회로(1280)가 페이지 워크가 일어나게 하는 신호를 발행하도록 구성되는 장치의 작용을 도시한 것이다.
TLB 룩업 및 페이지 테이블 워크들의 타이밍
도 19는 하나 이상의 처리소자들(PE)(1900), 인터커넥트 회로(1910), 동적 랜덤 액세스 메모리(DRAM)(1920) 및 DRAM 제어기(1930)로 이루어진, 데이터 처리장치의 다른 예를 개략적으로 도시한 것이다. 이것은, 물리 메모리 어드레스들에 따라 액세스 가능한 메모리(1920); 상기 메모리에 액세스하기 위한 가상 메모리 어드레스들을 생성하는 하나 이상의 처리소자들(1900); 및 상기 하나 이상의 처리소자들에서 생성한 초기의 메모리 어드레스들의 상기 메모리에 제공된 물리 메모리 어드레스들로의 변환을 제공하는 메모리 어드레스 변환장치(1915)로 이루어진, 데이터 처리장치의 일례를 제공한다. 일부 예들에서, 페이지 속성들의 속성들, 판독, 기록 및 실행 허가는, 상기 변환 프로세스의 일부로서 얻어져 상기 출력 메모리 어드레스에도 제공될 수 있다. 구성의 예에서, 상기 하나 이상의 처리소자들(1900)은, 상기 처리소자에서 생성한 상기 초기의 메모리 어드레스들의 상기 메모리에 제공된 물리 메모리 어드레스들로의 변환의 세트를 저장하는 각각의 변환 색인 버퍼(1905)를 각각 구비하고; 이 변환 색인 버퍼는 상기 메모리 어드레스 변환장치로부터 상기 변환 색인 버퍼에 의해 저장되지 않은 변환을 요구하도록 구성된다.
도 19의 구성은, 도 20 내지 도 31을 참조하여 설명된 각종 기술들을 개별적으로 또는 조합하여 적용 가능하다.
상기 각 처리소자(1900)는, 상기 DRAM(1920)에서의 메모리 장소들에 액세스할 수 있다. 원리상, 이러한 액세스는, 실제(물리) 메모리 어드레스들을 직접 거칠 수 있다. 그렇지만, 상이한 처리소자들(또는, 일부의 경우에 상기 처리소자들(1900)상에서 실행하는 상이한 운영체계)에 의한 메모리 액세스간의 보안정도와 파티셔닝을 제공하기 위해서, 상기 처리소자들(1900)은, 소위 가상 또는 초기의 메모리 어드레스들에 의해 메모리 어드레스들을 참조한다. 이들은, 상기 DRAM(1920)에서 실제(물리) 메모리 장소들에 액세스하기 위해 출력 또는 물리 메모리 어드레스들로의 변환을 요구한다.
제1 레벨의 변환은, 각 처리소자와 관련된 소위 변환 색인 버퍼(TLB)(1905)에 의해 수행될 수 있다. 상기 TLB(1905)는, 가상 메모리 어드레스들과 물리 메모리 어드레스들과의 사이에서 최근 사용된 변환들을 저장하거가 버퍼링하여, 상기 TLB(1905)에 공급된 가상 메모리 어드레스는 메모리 액세스의 일부가 DRAM(1920)이 되도록 형성하는 물리 메모리 어드레스로 변환된다. 그렇지만, 상기 TLB는, 사이즈가 제한되어 있고, 상기 처리소자(1900)에서 호출할 수도 있는 단일의 가능한 메모리 어드레스 변환마다 저장할 수 없다. 요구된 변환이 상기 TLB(1905)에 없는 경우에, 상기 TLB는, 예를 들면, 상기 인터커넥트 회로(1910)의 일부를 형성하는 변환장치(1915)를 참조한다. 이 변환장치는, 아래에 상세히 설명될 것이고, 상기 요구된 변환을 제공하거나 그렇지 않은 경우 취득하여 상기 TLB(1905)에 역으로 건네져 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하는데 사용될 수 있다.
그러므로, 도 19는, 물리 메모리 어드레스들에 따라 액세스 가능한 메모리(1920);
상기 메모리에 액세스하기 위한 가상 메모리 어드레스들을 생성하는 하나 이상의 처리소자들(1900); 및
상기 하나 이상의 처리소자들에서 생성한 상기 가상 메모리 어드레스들의 상기 메모리에 제공된 물리 메모리 어드레스들로 변환하는 메모리 어드레스 변환장치(1915)로 이루어진,
데이터 처리장치의 일례를 제공한다.
도 20은 상기 변환장치의 동작을 보다 상세히 도시한 것이다.
상기 변환장치(1915)는, 소위 DRAM 지원(backed) TLB를 유지한다. 다시 말하면, 상기 변환장치(1915)는, (상기 DRAM(1920)의 반전된 또는 음영처리된 부분(1921)로서 개략적으로 도시된) 상기 DRAM(1920)에서, 상기 TLB(1905)와 유사하지만 일반적으로 상당히 보다 큰, 변환 데이터를 갖는, 버퍼를 유지한다. 상기 DRAM(1920)에서의 상기와 같은 버퍼를 유지하는 것에 의해, 상기 버퍼는 상기 DRAM 용량, 종종 상기 처리소자들(1900)에 대한 오프칩이 로컬 TLB(1905)를 위해 제공된 전형적인 온칩 정적 RAM(SRAM)보다 훨씬 큰 것이 전형적이기 때문에, 상대적으로 클 수 있다.
그래서, 상기 TLB(1905)에서 요구한 요구된 변환을 취득하려는 첫 시도는, 상기 변환장치(1915)가 상기 DRAM 지원 TLB 데이터를 참고하기 위한 것이다.
그렇지만, 상기 DRAM 지원 TLB는, 비록 로컬 TLB(1905)보다 훨씬 크긴 하지만 제한된 사이즈도 갖는다. 상기 DRAM 지원 TLB에서 특별한 변환을 위한 데이터 발견되지 않는 경우에, 소위 페이지 테이블 워크 프로세스가 실시될 수 있다. 이것은, 현재 허용 가능한 메모리 어드레스 변환들 전부의 최고의 세트를 함께 제공하는 DRAM에도 저장된 소위 페이지 테이블들의 계층을 참고하는 것을 수반한다.
상기 변환장치(1915)는, DRAM 지원 액세스 회로(2010)와 페이지 테이블 워크 액세스 회로(2020)를 제어하는, 제어회로(2000)를 구비한다. 이들의 양쪽은, 상기 DRAM 지원 TLB 액세스 회로(2010)일 경우의 변환 데이터의 인스턴스나, 상기 페이지 테이블 워크 액세스 회로(2020)일 경우 상기 변환이 얻어질 수 있는 페이지 테이블 데이터의 어느 한쪽을 취득하기 위해, 상기 DRAM제어기(1930)를 거쳐 상기 DRAM(1920)의 각각의 부분들을 참고한다. 이 때문에, 상기 제어회로(2000)는, 변환되는 입력된 초기의 메모리 어드레스에 응답하여, 상기 변환 데이터 버퍼로부터 상기 입력된 초기의 메모리 어드레스용 변환 데이터의 검색을 요구하고, 상기 변환 데이터 버퍼로부터 검색하기 위한 상기 요구의 처리의 완료전에, 상기 페이지 테이블 액세스 회로에 의한 상기 입력된 초기의 메모리 어드레스용 변환 데이터의 검색을 시작하기 위한 것이다.
상기 페이지 테이블 워크 액세스 회로(2020)는, 초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와, 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서, 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해, 페이지 테이블 데이터에 액세스하도록 구성된다. 상기 DRAM 지원 TLB는, 상기 가상 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을 저장하는 변환 데이터 버퍼의 일례다.
그것의 동작의 일부로서, 상기 DRAM 지원 TLB 액세스 회로(2010)는, "유효"신호(2015)를 상기 제어회로(2000)에 제공한다. 상기 제어회로(2000)는, 제어와, 일부의 인스턴스들에서는 취소(또는 적어도 최소 개시) 신호들(2005)을 상기 DRAM 지원 TLB 액세스 회로와 상기 페이지 테이블 워크 액세스 회로(2020)에 제공한다. 이것은, 상기 주어진 변환 데이터 또는 상기 변환 데이터 버퍼가 상기 주어진 변환 데이터를 현재 보유하지 않는 것을 나타내는 데이터로 이루어진 응답을 제공함으로써, 상기 변환 데이터 버퍼가 상기 주어진 변환 데이터를 검색하기 위한 요구에 응답하도록 구성되는 일례를 제공한다.
이 신호들의 사용 예들을 아래에 설명한다.
구성 예에서는, 이전에 제안된 구성들에 대해 상기 회로들(2010, 2020)의 동작의 타이밍의 변화들을 제공한다. 이들을 콘텍스트에 배치하기 위해서, 도 21은, 이전에 제안된 TLB 및 변환장치의 동작을 설명하는 개략적인 타이밍도다.
도 21에서의 4개의 수평선은, 상기 로컬 TLB(1905), 상기 DRAM 지원 TLB 액세스 회로(2010), 상기 페이지 테이블 워크 액세스 회로(2020) 및 상기 DRAM(1920) 각각에 의한 동작들을 개략적으로 도시한 것이다. 시간은 도시된 것처럼 좌에서 우로 진행된다.
상기 DRAM 지원 TLB에의 액세스는, 상기 로컬 TLB(1905)가 (스테이지 2100에서) 상기 변환장치(1915)로부터 상기 변환을 요구하도록 상기 로컬 TLB(1905)에서 발견되지 않는 요구된 변환에 의해 촉진된다. 그 이전에 제안된 구성에 있어서, 이것은, 상기 DRAM 지원 TLB 액세스 회로(2010)를 상기 요구된 변환 데이터가 있는지를 검색하기 위해 상기 DRAM에 (스테이지 2105에서) 액세스시킨다. 상기 DRAM(1920)으로부터의 응답은 스테이지 2110으로서 도시되어 있다. 상기 요구된 변환 데이터의 인스턴스가 상기 DRAM 지원 TLB에 발견된다고 하는 "히트"가 있으면, 스테이지 2115로서 그 변환 데이터는 상기 로컬 TLB에 회신되고 프로세스는 종료된다. 히트가 없으면, 상기 DRAM 지원 TLB 액세스 회로는, 상기 제어회로(2000)가 상기 요구된 변환을 얻기 위해 페이지 테이블 워크를 시도하는 상기 페이지 테이블 워크 액세스 회로에 요구(2120)을 발행하도록, 상기 요구된 변환 데이터의 인스턴스가 (상기 "유효" 신호를 설정하지 않음으로써, 또는 그 유효 신호를 "유효하지 않는" 것을 나타내는 상태로 설정함으로써) 이용 가능하지 않는 것을 상기 제어회로(2000)에 나타낸다. 확립된 기술들을 사용하여, 페이지 테이블 워크는, 변환을 얻기 위해 상기 요구된 페이지 테이블들의 계층에 액세스하기 위해서 다수의 연속 메모리 액세스들(2125)을 포함한다. 그 결과는, 스테이지 2130에서 제공된 상기 요구된 변환이 스테이지 2135에서 결국 상기 로컬 TLB(1905)에 송신되어, 프로세스가 종료되는 것이다.
스테이지 2160에 의해 도시되지만, 도 21의 시간 임계 경로의 일부를 형성하지 않는 것처럼, 상기 입력된 초기의 메모리 어드레스에 대한 상기 변환 데이터가 현재 상기 변환 데이터 버퍼에 의해 보유되지 않을 때, 상기 제어회로는, 상기 페이지 테이블 액세스 회로로부터 수신된 상기 입력된 초기의 메모리 어드레스에 대한 상기 변환 데이터를, DRAM에서 상기 변환 데이터 버퍼에 저장하도록 구성된다.
상기 이전에 제안된 예에서, 상기 페이지 테이블 워크는 상기 DRAM 지원 TLB 룩업이 실패하거나 미스할 때까지 개시되지 않기 때문에, 최악의 경우에는 2100에서 상기 로컬 TLB(1905)에 의한 상기 초기의 요구와 상기 요구된 변환 데이터를 수신하는 상기 로컬 TLB 1905와 사이에 긴 지연(2150)이 있을 수 있다.
이에 반해서, 도 22는 본 개시내용의 예들에 따른 구성 예를 개략적으로 도시한 것으로, 여기서 상기 제어회로는 상기 DRAM 지원 TLB로부터 요구된 변환 데이터의 인스턴스의 검색을 요구하고, 상기 DRAM 지원 TLB로부터의 검색에 대한 그 요구의 처리의 완료전에, 상기 페이지 테이블 워크 액세스 회로(2010)에 의해 동일한 변환 데이터의 검색을 개시하도록 구성된다.
일부 예들에서, 상기 제어회로는, 실질적으로 동시에 프로세스 양쪽을 개시할 수 있다.
그래서, 도 22에 있어서, 상기 로컬 TLB(1905)에 의한 상기 요구(2100) 후, 상기 제어회로(2000)는, DRAM 지원 TLB 룩업(2200)을 개시하고, 실질적으로 동시에, 또는 적어도 그 TLB 룩업의 완료전에, 상기 페이지 테이블 워크 액세스 회로(2020)에 의한 페이지 테이블 워크(2205)를 개시한다. 이 때문에, 프로세스 양쪽은, 동시에 진행된다. 이것은, 페이지 테이블 액세스가 요구되는 상황들에서, 상기 변환 데이터 버퍼 액세스가 실패할 때까지 대기하는 것보다는 "조기에" 상기 페이지 테이블 액세스를 시작함으로써, 대기시간을 절약할 수 있다.
페이지 테이블 액세스의 선택적 조기 종료
그렇지만, 상기 DRAM 지원 TLB 액세스 회로(2010)에 의해 히트가 있으면, 선택사항으로 상기 페이지 테이블 워크가 종료될 수 있다(스테이지 2210에서 개략적으로 도시됨). 이것은 요구사항이 아니고, 실제로 상기 페이지 테이블 워크에 대해 완료시킬 수 있었고, 이 경우에, 발생할 모든 것은, 동일한 변환 데이터가 상기 페이지 테이블부터로도 검색될 것이다. 그렇지만, TLB 히트의 경우에 2210에서 상기 페이지 테이블 워크를 종료함으로써, (더 이상 발생하지 않는 나머지 상기 페이지 테이블 워크에 관한) 절전이 이루어질 수 있을 가능성이 있다.
DRAM 지원 TLB 히트의 경우에, 이후의 프로세스는 도 21과 유사하고, 2215에서 상기 요구된 변환 데이터의 인스턴스는 로컬 TLB에 제공된다.
그렇지만, 상기 DRAM 지원 TLB에 미스가 있으면, 상기 페이지 테이블 워크는 2220부터 상기 페이지 테이블 워크로부터 얻어진 상기 요구된 변환의 상기 로컬 TLB(1905)에의 스테이지 2225에서의 제공까지 계속된다. 이 경우, 그 변환을 제공하는 전체 대기시간이나 기간은 2232로서 도시되어 있고, 상기 페이지 테이블 워크를 조기에, 예를 들면 상기 DRAM 지원 TLB 룩업이 시작되었던 것과 같은 시간에, 또는 적어도 상기 DRAM 지원 TLB 룩업의 완료전에, 시작하는 것에 의해, 도 21에 도시된 구성에 대한 기간(2230)으로서 개략적으로 도시된 시간 절약이 있다.
또, 스테이지 2260에 의해 도시된 것이지만, 도 22의 시간 임계 경로의 일부를 형성하지 않는 것처럼, 상기 입력된 초기의 메모리 어드레스에 대한 상기 변환 데이터가 현재 상기 변환 데이터 버퍼에 의해 보유되지 않을 때, 상기 제어회로는, 상기 페이지 테이블 액세스 회로로부터 수신된 상기 입력된 초기의 메모리 어드레스에 대한 상기 변환 데이터를, DRAM에서 상기 변환 데이터 버퍼에 저장하도록 구성된다.
도 23은 상기 설명한 것에 적절한 방법을 도시하는 개략적인 흐름도다.
단계 2300에서, 페이지 테이블 데이터는, 초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 액세스된다.
여기서, 그 초기의 메모리 어드레스 공간은 가상 메모리 어드레스 공간일 수 있었고, 상기 출력 메모리 어드레스 공간은 물리 메모리 어드레스 공간일 수 있었다. 그렇지만, 일부의 그 밖의 구성에서는, 소위 중간 물리 어드레스를 사용하여, 일부의 경우에는 소위 하이퍼바이저에서 IPA를 PA로 변환하도록 개개의 운영체계로부터, 상기 변환 프로세스나 적어도 그 변환 프로세스의 전체 범위를 숨긴다. 여기서 설명된 것들과 같은 원리들은, VA를 PA로 변환; VA를 IPA로 변환; 및/또는 IPA를 PA로 변환 중 어느 하나에 관계될 수 있다.
그러므로, 각종 실시예들이 예상되고, 그것의 전부나 어느 하나는, 아래의 이 기술들을 사용하여 구현될 수 있다:
상기 초기의 메모리 어드레스 공간이 가상 메모리 어드레스 공간이고, 상기 출력 메모리 어드레스 공간이 물리 메모리 어드레스 공간이며; 또는
상기 초기의 메모리 어드레스 공간이 중간 물리 메모리 어드레스 공간이고, 상기 출력 메모리 어드레스 공간이 물리 메모리 어드레스 공간이며; 또는
상기 초기의 메모리 어드레스 공간이 가상 메모리 어드레스 공간이고, 상기 출력 메모리 어드레스 공간이 중간 물리 메모리 어드레스 공간이다.
멀티스테이지 변환 구성에서, 이 기술들은, 상기 변환 스테이지들 중 하나 이상에 사용될 수 있었다.
다시 도 23에 있어서, 단계 2310에서, 상기 초기의 메모리 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들은 상기 DRAM 지원 TLB 등의 변환 데이터 버퍼에 저장된다.
단계 2320에서, 상기 로컬 TLB(1905)로부터 수신된 것 등의 변환되는 입력된 초기의 메모리 어드레스에 응답하여, 상기 변환 데이터는, 상기 DRAM 지원 TLB 등의 상기 변환 데이터 버퍼로부터의 검색을 위해 요구된다.
그 후, 단계 2330에서, 상기 변환 데이터 버퍼로부터의 검색을 위한 상기 요구의 처리의 완료전에, 검색은 상술한 상기 회로(2020) 등의 페이지 테이블 액세스 회로에 의해 상기 입력된(요구된) 초기의 메모리 어드레스에 대한 상기 변환 데이터에 관해 시작된다.
실제로, 단계 2340에서, 상기 요구된 데이터가 상기 DRAM 지원 TLB로부터 성공적으로 검색되면, 상술한 것처럼 선택사항인 단계 2350은, 상기 DRAM 지원 TLB 등의 상기 변환 데이터 버퍼로부터 상기 입력된 초기의 메모리 어드레스에 대한 상기 변환 데이터의 검색에 응답하여 상기 페이지 테이블로부터 상기 입력된 초기의 메모리 어드레스에 대한 상기 변환 데이터의 검색의 취소를 시작하는 것을 포함할 수 있다. 이것은, 일부의 인스턴스들에서, 상기 페이지 테이블 액세스의 적어도 일부를 피함으로써 절전할 수 있다.
그렇지 않으면, 상기 DRAM 지원 TLB로부터 상기 데이터를 성공적으로 검색하지 못한 인스턴스들에 있어서, 상기 요구된 변환 데이터는, 단계 2360에서 상기 페이지 테이블 워크 메카니즘에 의해 얻어지고, 상기 DRAM 지원 TLB에 저장되어도 된다.
상기 단계 2320, 2330은 도 23에서 직렬로 도시되어 있지만, (페이지 테이블 액세스가 필요할 것이라고 판명되는 경우 잠재적으로 개선된 전체 대기시간을 절약하는) 일부 예들에서 상기 제어회로는 상기 변환 데이터 버퍼로부터 상기 입력된 초기의 메모리 어드레스에 대한 변환 데이터의 검색을 요구하면서 실질적으로 동시에 상기 페이지 테이블 액세스 회로에 의해 상기 입력된 초기의 메모리 어드레스에 대한 변환 데이터의 검색을 시작하도록 구성될 수 있다. 달리 말하면, 상기 단계 2320, 2330은, 실질적으로 동시에 일어날 수 있다. 원리상, 상기 단계 2330은, 심지어 상기 2개의 단계 중 첫번째의 단계로서 시작될 수도 있다. 그렇지만, 상기 실시예들의 가장 넓은 국면은, 상기 변환 데이터 버퍼 룩업의 완료전에 상기 페이지 테이블 액세스를 시작하여, 그래도 대기시간을 절약할 수 있다는 것을 예상한다.
예측의 도출
이제 도 24로 가면, 일부 예들에서, 상기 제어회로(2000)는, 상기 입력된 초기의 메모리 어드레스가 현재 상기 변환 데이터 버퍼에 의해 보유되는지의 여부의 예측을 도출하도록 구성된다. 이러한 예측을 도출하여 이용할 수 있는 방식들을 아래에 설명한다.
일반적인 용어로, 상기 요구된 변환이 상기 DRAM 지원 TLB에 의해 보유될 가능성이 높은지의 여부에 대해 예측하면, 그 페이지 테이블 룩업을 지연시키거나 피하는 것이 가능할 수 있다. 그 밖의 예들에서, 페이지 테이블 액세스가 요구될 가능성이 높다고 예측하면, 상기 DRAM 지원 TLB 룩업을 피하거나 지연시키는 것이 가능할 수도 있다. 이 인스턴스들 중 어느 한족은 절전할 수 있다. 그렇지만, 그 예측이 잘못되면, 그들은 상기 시스템의 전체 대기시간을 도 21과 같은 대기시간으로 되돌림으로써 대기시간 페널티를 도입할 수 있다. 달리 말하면, 상기 예측이, 상기 입력된 초기의 메모리 어드레스가 현재 상기 변환 데이터 버퍼에 의해 보유되는 적어도 제1 역치 가능성을 나타낼 때, 상기 제어회로는, 상기 변환 데이터 버퍼로부터 응답을 수신할 때까지 상기 페이지 테이블 액세스 회로에 의해 상기 입력된 초기의 메모리 어드레스에 대한 변환 데이터의 검색의 시작을 지연하도록 구성된다. 그 밖의 예들에서는, 상기 예측이, 상기 입력된 초기의 메모리 어드레스가 현재 상기 변환 데이터 버퍼에 의해 보유되는 제2 역치 가능성미만인 것을 나타낼 때, 상기 제어회로는, 변환되는 입력된 초기의 메모리 어드레스들의 인스턴스들의 서브세트에 대해서만 상기 변환 데이터 버퍼로부터 상기 입력된 초기의 메모리 어드레스에 대한 변환 데이터의 검색을 요구하도록 구성된다.
앞에 언급된 것처럼, 상기 제어회로(2000)는, 상기 DRAM(1920)에서 보유한 데이터를 액세스하기 위해 상기 버퍼 룩업회로(2010)와 상기 페이지 테이블 워크 액세스 회로(2020)를 제어한다. 상기 버퍼 룩업회로(2010)는, 이용 가능성 신호(2015)를 상기 제어회로(2000)에 제공하여 상기 DRAM 지원 TLB 룩업이 성공적이었나 아니었나를 표시한다. 실시예들에서, 그 이용 가능성 신호는, 또한, 카운터 회로(2400)를 구성하는 하나 이상의 카운터들에 (도 24에서) 제공된다. 상기 카운터 회로(2400)는, 상기 변환 데이터 버퍼에 의한 응답들 중에서, 상기 이용 가능성 신호가 상기 응답이 상기 요구된 변환 데이터를 포함하였다고 나타낸 응답의 인스턴스들과 상기 요구된 변환 데이터가 현재 상기 변환 데이터 버퍼에 의해 보유되지 않은 것을 나타내는 (네가티브 이용 가능성 표시(2015) 등의) 데이터를 포함하는 응답의 인스턴스들과의 상대적 수들을 검출하도록 구성된다.
그러므로, 상기 제어회로는, 상기 변환 데이터 버퍼에 의한 응답들 중에서, 상기 요구된 변환 데이터를 포함하는 응답의 인스턴스들과 상기 요구된 변환 데이터가 현재 상기 변환 데이터 버퍼에 의해 보유되지 않은 것을 나타내는 데이터를 포함하는 응답의 인스턴스들과의 상대적 수들을 검출하는, 카운터 회로를 구비하여도 된다.
일부 예들에서, 상기 카운터 회로(2400)는, 상기 요구된 변환 데이터(포지티브 이용 가능성 신호 2015)를 제공하는 상기 변환 데이터 버퍼에 응답하여 (증분 등의) 일 극성의 카운트 값을 변경하고, 또한, 상기 버퍼 룩업 회로(2010)가 상기 요구된 변환 데이터를 현재 상기 변환 데이터 버퍼에서 보유하지 않은 네가티브 이용 가능성 표시(2015) 등의 데이터를 제공한다고 말하는, 상기 데이터를 보유하지 않는 상기 변환 데이터 버퍼에 응답하여 (감분 등의) 타 극성의 카운트 값을 변경하는, 회로를 구비한다. 반대의 극성 중 어느 한쪽은 각 경우에 사용되어도 되고, 증분량과 감분량은 서로 다를 수 있고 +/-1이 아닐 필요가 있다. 달리 말하면, 증분의 크기는 감분의 크기와 같을 필요는 없다.
비교기(2410)는, 상기 카운트 값들과 제1 역치 THR1 및 제2 역치 THR2와 비교한다. 일부 예들에서, 상기 카운터는, 상기 카운트 값이 상부 카운트 한계치를 초과하거나 0 등의 하부 카운트 한계치 아래로 가지 않게 제약되도록 포화 카운터일 수 있다.
상기 카운터 회로(2400)는, 하나의 카운터나, 그 밖의 예들에서는 메모리 어드레스 트랜잭션의 하나 이상의 카테고리들에 대한 상대적 수들을 검출하는 다수의 카운터들을 구비할 수 있어, 상기 예측은 그 현재의 트랜잭션의 카테고리화에 보다 잘 일치될 수도 있다. 카테고리들 예들의 리스트는, 하기의 카테고리로 이루어진 상기 리스트로부터 선택된 하나 이상을 포함할 수 있다:
· (예를 들면, 상기 변환 요구의 일부를 형성하는 가상 머신 식별자에 의해 나타낸 것처럼) 상기 변환을 요구하는 가상 머신을 나타내는 카테고리;
· (예를 들면, 상기 변환 요구의 일부를 형성하는 어드레스 공간 식별자에 의해 나타낸 것처럼) 복수의 초기의 어드레스 공간들 중에서 초기의 어드레스 공간을 나타내는 카테고리;
· (예를 들면, 상기 변환 요구의 일부를 형성하는 프로그램 카운터 값에 의해 나타낸 것처럼) 상기 변환을 요구하는 프로세서의 프로그램 카운터를 나타내는 카테고리; 및
· 상기 변환이 요구되는 상기 초기의 어드레스를 나타내는 카테고리.
상기 역치 THR 1, THR 2 중 하나는, 상부 역치 등의 제1 역치 가능성을 나타내는 값이어도 된다. 상기 예측 또는 카운트 값이 적어도 상기 제1 역치 가능성을 나타낼 때, 이것은, 결국, 상기 입력된 초기의 메모리 어드레스가 현재 상기 변환 데이터 버퍼에 의해 보유되는 가능성을 나타내고, 상기 제어회로(2000)는 상기 변환 데이터 버퍼로부터 응답을 수신할 때까지 상기 페이지 테이블 워크 액세스 회로(2020)에 의해 그 입력된 초기의 메모리 어드레스에 대한 변환 데이터의 검색의 시작을 지연시키도록 구성된다. 그래서, 이러한 역치를 사용하여, 그 동작은 도 21에 개략적으로 도시된 것으로 복귀할 수 있다. 상기 예측이 정확한 인스턴스들에서, 이것은 도 22의 동작들에 대해 절전한다. 상기 예측이 잘못된 인스턴스들에서, 그 대기시간은 도 21보다 더 나쁘지는 않다. 상기 예측은, 상기 DRAM 지원 TLB에서 충족하는 (일반적으로 또는 전체적으로, 또는 상기 다수의 카운터들에 의해 커버된 카테고리나 카테고리들의 특별한 값에 대해) 최근의 변환 요구들의 카운트된 수에 대해 일어나는 적어도 상부 역치를 기초로 한다.
현재 상기 변환 데이터 버퍼에서 상기 입력된 초기의 메모리 어드레스를 보유하는 보다 낮은 가능성을 표현하는 제2 역치 가능성은, 보다 낮은 카운트 값으로 표현되고, -상기 카운트 또는 해당 카운트가 상기 제2 역치미만일 경우- 이것은, 변환되는 입력된 초기의 메모리 어드레스들의 인스턴스들의 서브세트에 대해서만 상기 변환 데이터 버퍼로부터 상기 입력된 초기의 메모리 어드레스에 대한 상기 변환 데이터의 검색을 상기 제어회로가 요구하게 하는 것을 일으킨다. 일부 예들에서, 이것은, 전혀 인스턴스들이 아닐 수 있지만, 이에 따라, 상기 가능성이 성공적인 TLB 룩업들의 카운트에 의해 결정되면, 상기 DRAM 지원 TLB에서 보유하는 상기 데이터의 증가된 카운트나 증가된 가능성을 검출할 때 곤란해질 수 있었다. 달리 말하면, 상기 DRAM 지원 TLB는 상기 카운트가 상기 하부 역치 아래로 떨어질 때 더 이상 사용되지 않으면, 이것은 상기 DRAM 지원 TLB가 상기 요구된 변환을 보유할 가능성이 결코 다시 증가할 수 없는 상황을 일으킬 수 있었다. 그 잠재적인 문제를 해결하기 위해서, 선택사항으로 N이 1보다 큰 정수인 모듈로 N 단위로 1부터 N까지 반복적으로 변환 데이터 액세스의 인스턴스들을 카운트 업하는 추가의 카운터(2420)는, 상기 비교기(2420)에서 나오는 상기 가능성 정보를 신호(2430)에 의해 오버라이드 하여 강제로 (예를 들면, 상기 예측 메카니즘을 동일한 동작의 일부로서 리세트하는) 상기 룩업회로(2010)에 의해 DRAM 지원 TLB 룩업을 하게 할 수 있다. 달리 말하면, 상기 서브세트는, 변환되는 입력된 초기의 메모리 어드레스들의 N개의 인스턴스들에 1일 수 있고, 이때 N은 1보다 큰 정수다.
그러므로, 상술한 것처럼 상기 제2 역치의 이용은, 상기 예측이, 상기 입력된 초기의 메모리 어드레스가 현재 상기 변환 데이터 버퍼에서 보유하는 상기 제2 역치 가능성미만을 나타낼 때, 상기 제어회로는 상기 변환 데이터 버퍼로부터 상기 입력된 초기의 메모리 어드레스에 대한 변환 데이터의 검색을 요구하지 않도록 구성된 구성의 일례를 제공한다.
상기 DRAM에 저장
도 25는 저장장소들의 어레이를 제공하기 위해 동적 랜덤 액세스 메모리의 일례를 제공하는, 도 19의 상기 DRAM(1920)의 구성 예의 국면들을 개략적으로 도시한 것이다.
상기 DRAM(1920)은, 행렬들로 배치된 저장장소들(2505)의 어레이(2500), 행 버퍼(2510), 열 다중화기(2515) 및 행 디코더(2520)를 구비한다. DRAM의 경우, 각 저장장소(2505)는 비트셀들의 그룹으로 이루어지고, 각 비트셀은, 상기 대응한 저장장소(2505)로 표현된 전체 값의 하나의 비트에 대응한 1 또는 0을 표현하도록 선택적으로 충전 또는 방전될 수 있는 커패시터를 구비한다.
상기 DRAM(1920)에의 액세스들은, 2개의 스테이지에서 실시된다. 제1 스테이지에서, 행 어드레스(2525)를 지정하는 활성화 코맨드가 발행된다. 상기 행 디코더(2520)는 대응한 행(2535)을 활성화하여, 상기 대응한 행의 상기 저장장소들(2505)의 각각에 저장된 정보를 상기 행 버퍼(2510)에 가져온다. 제2 스테이지에서, 열 어드레스(2530)는, 상기 열 다중화기(2515)를 제어하여 액티브 행내의 상기 지정된 열에 대응한 상기 행 버퍼(2510)의 엔트리를 선택하고, 그 엔트리로부터 판독된 정보를 판독 데이터로서 출력하거나 기록 코맨드를 구비한 기록 데이터에 근거한 그 엔트리에서의 상기 데이터를 갱신하는, 실제의 판독/기록 코맨드에 부수된다. 기록 동작에 대해서, 상기 행 버퍼(2510)에의 기록들은, 대응한 저장장소(2505)에도 역으로 전파되어도 된다. 다수의 판독/기록 동작은, 동일한 액티브 행내에서, 그 행이 상기 행 버퍼(2510)와 상기 액티브 행(2535)의 연결을 닫고, 상기 액티브 행(2535)의 상기 저장장소들이 갱신되어 있어 상기 행 버퍼(2510)에의 어떠한 기록들도 반영하도록 보장하고, 다른 행이 상기 액티브 행으로서 선택되게 준비된 상기 행 버퍼(2510)를 리세트하는, 프리차지 코맨드를 사용하여 상기 행이 닫혀지기 전에, 수행되어도 된다.
이 때문에, 여기서 상술한 것과 같은 DRAM 지원 변환 데이터의 일례는, 선택된 행에 액세스하고 그 선택된 행으로부터 상기 행 버퍼에 정보를 전달하는 액세스 회로(이를테면 상기 행 디코더)를 구비한다. 구성 예들에서 상기 동적 랜덤 액세스 메모리는, 각기 1미만 행의 엔트리들의 데이터 버스트들에서의 데이터를 판독하고, 키 값에 대응한 상기 행 버퍼의 일부를 송신하도록 구성된다. 일반적으로, 구성 예들에서, 상기 DRAM은, 데이터 버스트들에서의 데이터를 통신하고, 단지 그 제공된 키에 대응한 상기 행 버퍼의 상기 일부를 송신하도록만 구성된다. "버스트들"이란, 상기 DRAM이 상기 데이터 어레이로부터 어떻게 데이터를 판독하는지라기 보다는 상기 DRAM이 어떻게 통신하는지를 서술하는 것을 주목한다. 이러한 기술을 사용하여 키가 일치된 후에 상기 요구된 데이터를 출력할 수 있다.
도 26은, 도 25의 상기 메모리로부터, 특히 본 문맥에서는 도 25로부터 상기 메모리의 액티브 행(2535)으로부터 검색된 데이터가 로딩되어 있고 상기 메모리 어레이의 행의 각각의 부분으로부터 정보를 저장하는 복수의 엔트리들을 포함하는 상기 행 버퍼(2510)로부터, 변환 데이터를 검색하기 위한 기술의 동작을 개략적으로 도시한 것이다.
키 값(2600)은, 변환되는 적어도 상기 가상 메모리 어드레스에 좌우된다. 그 행 버퍼는, 키의 다수의 세트들, 세트(2610) 등의 값 데이터를 갖는다. 상기 행 버퍼 K1,K2,K3,K4에서의 각 키 값은, 각각의 값 엔트리 V1,V2,V3,V4와 관련된다. 상기 저장된 키 값들 K1...K4로서 상기 가상 메모리 어드레스들에 관해 동일한 종속성을 사용하여 새로운 키 값(2600)을 얻음으로써, 비교회로(2620)는, 그 키 값(2600)을, 상기 행 버퍼(2510)의 적어도 하나의 키 엔트리 K1...K4에 저장된 정보를 비교하고, 각 키 엔트리는 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 키 값 엔트리 V1...V4를 갖는다. 이렇게 하여, 상기 비교회로(2620)는, 만약에 있다면, 상기 적어도 하나의 키 엔트리의 어느 것이 상기 키 값(2600)에 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정할 수 있다.
회로(2634)는 상기 4개의 비교회로(2620)의 출력들(2632)을 상기 출력회로(2630)의 동작을 제어하는 포맷으로 조합하고, 이 출력회로는, 일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을 출력하도록, 상기 비교출력들(2632)의 제어하에 상기 값 엔트리들 V1...V4 중 하나를 출력 값(2640)으로서 출력한다.
상기 값 엔트리는, 도 27을 참조하여 아래에 설명된 것처럼 상기 요구된 변환을 제공한다.
이 때문에, 도 19, 20 및 25와 함께 취해진 도 26은, 초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 페이지 테이블 액세스 회로(2020); 상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을 저장하는 변환 데이터 버퍼(2010, 1920)로서, 행렬들로 배치된 저장장소들의 어레이(2505)와, 상기 어레이의 행의 각각의 부분으로부터 정보를 각각 저장하는 복수의 엔트리들(2610)을 포함하는 행 버퍼(2510)로 이루어진, 상기 변환 데이터 버퍼(2010, 1920)를, 구비하는 메모리 어드레스 변환장치(1915); 및 적어도 상기 초기의 메모리 어드레스에 의존한 키 값(2600)에 응답하여 상기 키 값을, 상기 행 버퍼의 적어도 하나의 키 엔트리 K1-K4의 각각에 저장된 정보와 비교하고-각 키 엔트리는 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-, 만약에 있다면, 상기 적어도 하나의 키 엔트리의 어느 것이 상기 키 값에 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는 비교회로(2620); 및 일치 키 엔트리가 있을 때, 적어도, 상기 일치 키 엔트리 K1-K4와 관련된 상기 값 엔트리V1-V4에서의 상기 출력 메모리 어드레스의 상기 표현을 출력하는 출력회로(2630)의 일례를 제공한다.
실시예들은, 단일의 메모리 액세스를 사용하여 DRAM 지원 변환 데이터 버퍼에서의 변환 데이터를 액세스하는 것에 대한 효율적인 메카니즘을 제공할 수 있어, (예를 들면, 해싱된 초기의 메모리 어드레스에 의해, 또는 상기 초기의 메모리 어드레스의 일부에 따라 액세스될 수도 있는) 요구된 행이, 잠재적으로 단일의 메모리 액세스로서 액세스되고 나서, 그 행의 콘텐츠들은 그 행이 상기 요구된 변환을 갖는지를 검출하기 위해 상기 초기의 메모리 어드레스에 의존한 키 값과 비교된다. 이것은, DRAM에의 메모리 액세스들이 잠재적으로 상대적으로 느려서 단지 하나의 이러한 액세스만을 필요로 하는 것이 바람직할 수 있으므로, 그 변환을 검색하기 위해 상기 대기시간과 메모리 트래픽을 잠재적으로 감소시킬 수 있다. 상기 메모리 행에 저장된 변환 데이터용 키 값 구성을 제공함으로써, 다수의 변환들은, 단일의 해싱된(또는 다른 종속성) 초기의 메모리 어드레스에 의해 액세스된 행에 저장될 수 있어, 상기 DRAM 지원 변환 데이터 버퍼에의 저장 효율을 향상시킬 수 있다. 특히, 상기 초기 메모리 어드레스의 적어도 일부에 관해 해싱된 또는 다른 종속성을 사용하는 것에 의해, 메모리 행이 효과적으로 상기 초기의 메모리 어드레스를 위해 보류될 수 있다. 실시예들에서, 상기 DRAM 행에 대한 상기 인덱스는 해시(또는)(VFN, VMID, ASID)(의 일부)이고, 동일한 것이 그 키에 해당된다. 상기 DRAM행 및 키의 조합은, 특정한 튜플(VFN, VMID, ASID)에 독특해야 한다. 해싱된 값의 예에 의해, 초기의 메모리 어드레스들에 대한 메모리 행들의 분포는 랜덤화(또는 의사 랜덤화)될 수 있다. 상기 메모리 행이 가득 차고(잠재적으로 다른 초기의 메모리 어드레스들도 거기를 가리킬 수 있기 때문이다) 새로운 변환이 (예를 들면, 상기 입력된 가상 메모리 어드레스에 대한 상기 변환 데이터가 현재 상기 변환 데이터 버퍼에 의해 보유되지 않아서, 상기 제어회로가 상기 페이지 테이블 액세스 회로로부터 수신된 상기 입력된 가상 메모리 어드레스에 대한 상기 변환 데이터를 상기 변환 데이터 버퍼에 저장하도록 구성될 때) 저장될 필요가 있으면, 빅팀(victim) 삭제회로는, 선택된 행이 (예를 들면, 동일한 해싱/종속성을 사용하여 상기 판독동작에서와 같이 행을 선택함으로써, 미사용된 키 및 값 엔트리들과 상기 선택된 행에서의 값 엔트리들을 제공하는) 상기 변환 데이터를 저장하는데 불충분한 미사용된 용량을 갖는 상기 검출회로에 의한 검출에 응답하여, (예를 들면, 상기 메모리 제어기의 제어하에 상기 행 자체에 또는 다른 메모리나 메모리 구역에 저장된 정보에 근거한 대체 정책을) 겹쳐쓰기 위해 상기 선택된 행에서의 키 엔트리와 관련 값 엔트리를 선택하는데 사용될 수 있다. 선택기준의 예는, 최소 최근 액세스 키 값과 일치 엔트리; 키 값과 일치 엔트리의 랜덤 또는 의사랜덤 선택; 가장 최근에 액세스되지 않은 키 값과 일치 엔트리; 및 상기 선택된 행에 대한 선입선출 선택으로 이루어진 리스트로부터 선택된 하나 이상을 포함할 수 있다.
구성 예에서, 상기 키 값은, 상기 변환을 요구하는 가상 머신을 나타내는 데이터; 복수의 가상 어드레스 공간들 중에서 초기의 어드레스 공간을 나타내는 데이터; 및 상기 변환이 요구되는 상기 초기의 어드레스를 나타내는 데이터로 이루어진 리스트로부터 선택된 하나 이상에 의존할 수 있다. 그러므로, 이 기술들을 사용하여, 상기 키 값은 상기 관련된 값에서 제공한 상기 요구된 변환을 명시할 수 있다.
도 27은 키, 값 쌍을 개략적으로 도시한 것으로, 여기서 상기 키는, 가상 머신 식별자(VMID), 어드레스 공간 식별자(ASID), 적어도 프레임의 해상도 또는 페이지 사이즈에 대한 상기 초기의 메모리 어드레스를 명시하는 가상 프레임 수(VFN)의 적어도 일부의 연결을 포함하고, 상기 값은, 본 예에서 적어도 프레임의 해상도 또는 페이지 사이즈에 대한 상기 출력 어드레스를 명시하는 물리적 프레임 수와, 또한 이 예들에서 상기 변환과 관련된 판독/기록/실행 또는 다른 예의 허가 등을 규정하는 하나 이상의 속성들과의 연결을 포함한다. 이 때문에, 상기 키 값은, 실시예들에서, 상기 변환을 요구하는 가상 머신을 나타내는 데이터; 복수의 가상 어드레스 공간들 중에서 가상 어드레스 공간을 나타내는 데이터; 및 상기 변환이 요구되는 상기 가상 어드레스를 나타내는 데이터로 이루어진 리스트로부터 선택된 하나 이상에 의존한다.
이 필드들에 대한 데이터 사이즈들의 예는 다음과 같다:
이 때문에, 각 키-값 쌍은 (예를 들면) 16바이트를 차지하고, 이러한 4개의 쌍들이 예시 64바이트 메모리 행에 저장되게 한다.
메모리 장소들의 상기 어레이의 행을 선택하는 면에서, 소위 해시 생성기(2800)(도 28)가 사용될 수 있어, 상기 변환 데이터 버퍼는, 상기 초기의 메모리 어드레스의 일부에 따라 상기 어레이의 행을 선택하는 행 선택회로; 및 그 선택된 행에 액세스하고 그 선택된 행으로부터 상기 행 버퍼(2510)에 정보를 전달하는 액세스 회로(2520, 도 25)를 구비한다. 주어진 특별한 예에서, 상기 행 선택회로는, 상기 행이 상기 해시 값에 따라 선택되도록 적어도 상기 가상 메모리 어드레스의 일부를 표현하는 입력 데이터(2810)로부터 해시 값을 생성하도록 구성된 상기 해시 생성기(2800) 등의 해시 생성기를 구비한다. 위에 언급된 것처럼, 구성 예에서, 상기 DRAM 행에 대한 상기 인덱스는, 해시(또는)(VFN, VMID, ASID)(의 일부)이고, 동일한 것이 그 키에 해당된다. 상기 DRAM행 및 키의 조합은, 특정한 튜플(VFN, VMID, ASID)에 독특해야 한다.
도 29는 상기 DRAM 지원 변환 데이터 버퍼를 제공하는 상기 메모리 버퍼에 데이터를 기록하는 회로를 개략적으로 도시한 것이다. 기록 프로세스는, 상기 입력된 가상 메모리 어드레스에 대한 상기 변환 데이터가 현재 상기 변환 데이터 버퍼에 의해 보유되지 않을 때, 상기 제어회로가 상기 페이지 테이블 액세스 회로로부터 수신된 상기 입력된 가상 메모리 어드레스에 대한 상기 변환 데이터를 상기 변환 데이터 버퍼에 저장하도록 구성된다는 점에서, 도 23의 상기 단계 2360)로 표현된 것과 같은 상황들에서 일어난다. 도 29의 구성은, 여기서 기재된 상기 키-값 구조가 사용되는 경우에 그 기록을 처리한다. 도 29의 회로는, 도 28의 상기 구성을 사용하여, 행을 선택하고, 상기 행 어드레스(2525)를, 상기 초기의 메모리 어드레스나 그 행 어드레스의 적어도 일부에 따라, 채우는 행 선택기(2900)를 구비한다. 이것은, 상기 변환 데이터 버퍼에서 변환 데이터의 저장을 위해, 상기 행 선택회로가 상기 변환 데이터의 인스턴스트에 대한 상기 초기의 메모리 어드레스의 적어도 상기 일부에 따라 상기 어레이의 행을 선택하도록 구성되는 일례를 제공한다.
상기 선택된 행은, 처리를 위해 상기 행 버퍼(2510)에 이동된다. 검출기(2920)는, 상기 선택된 행에서의 상기(키, 엔트리들)의 전부가 차지되는지를 검출하고, 그럴 경우, 빅팀 선택 및 삭제회로(2930)는 상기 현재의 엔트리들 중 가장 오래된 엔트리를 삭제하는 등의 빅팀 선택 프로세스를 사용하여 삭제를 위한 상기 현재의 엔트리들 중 하나를 선택한다. 저장회로(2940)는 상기 새로운(키, 값) 쌍을 상기 행 버퍼(2510)에 기록하고 나서, 상기 행 버퍼는 상술한 것처럼 상기 메모리 어레이에 역으로 복사된다.
이 때문에, 상기 구성 예는 상기 선택된 행에 변환 데이터를 저장하는 기록회로(2920, 2930, 2940)의 일례를 제공하고, 상기 기록회로는, 상기 변환 데이터를 저장하기 위해 상기 선택된 행이 미사용된 키 엔트리들과 값 엔트리들을 갖는지를 검출하는 검출기 회로(2920); 상기 변환 데이터를 저장하기 위해 상기 선택된 행이 불충분한 미사용된 용량을 갖는 상기 검출기 회로에 의한 검출에 응답하여 겹쳐쓰기 위한 상기 선택된 행에서의 키 엔트리와 관련된 값 엔트리를 선택함으로써, 미사용된 키 및 값 엔트리들과 상기 선택된 행에서의 값 엔트리들을 제공하는 빅팀 삭제 회로(2930); 및 상기 미사용된 키 및 값 엔트리들에 대한 상기 변환 데이터를 상기 선택된 행에 저장하는 저장회로(2940)를 구비한다. 예들에 있어서, 상기 빅팀 삭제회로는, 최소 최근 액세스된 키 값과 일치 엔트리로 이루어진 리스트로부터 선택된 하나 이상의 빅팀 선택 기준에 따라 키 엔트리와 관련된 값 엔트리를 선택하도록 구성된다. 상기 빅팀 삭제회로는, 빈 공간을 이용 가능하게 하도록 상기 키 값과 일치 엔트리를 능동적으로 삭제할 수 있거나, 단순히 상기 선택된 데이터의 상기 새로운 데이터에 의한 상기 겹쳐쓰기를 제어할 수 있다.
이 프로세스는 도 30의 개략적인 흐름도로 표현되고, 이 흐름도에서, 단계 3000에서는, 상기 변환을 위한 상기 초기의 또는 가상의 메모리 어드레스의 적어도 일부에 따라 행이 선택된다. 단계 3010에서는, 그 행의 콘텐츠를 상기 행 버퍼(2510)에 로딩한다. 단계 3020에서는, 상기 선택된 행에서 키, 값 쌍에 대한 이용 가능한 빈 공간이 있으면, 제어는 단계 3040으로 이동한다. 그렇지 않으면, 단계 3030에서는, (빅팀)의 키, 값 쌍을 삭제를 위해 선택하고 삭제한다. 그 후, 단계 3040에서는 그 새로운 엔트리를 상기 행에서 상기 빈 공간에 기록하고, 단계 3050에서는 상기 행을 상기 메모리에 라이트 백(write back)한다. 이때, 이 라이트 백은, 상기 DRAM 제어기의 정책에 따라 지연될 수 있다. 그렇지만, 그것은, 차후 일부의 포인트에서 저장 어레이에 라이트 백될 것이다.
도 31은,
(단계 3100에서) 초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 단계;
(단계 3110에서) 상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을, 행들과 열들로 배치된 저장장소들의 어레이를 갖는 변환 데이터 버퍼에 저장하는 단계;
(단계 3120에서) 상기 어레이의 행의 각각의 부분으로부터 정보를 각기 저장하기 위해 복수의 엔트리들을 버퍼링하는 단계; 및
(단계 3130에서) 적어도 상기 초기의 메모리 어드레스에 의존한 키 값에 응답하여, 상기 행 버퍼의 적어도 하나의 키 엔트리(예를 들면, 적어도 2개의 키 엔트리)-각 키 엔트리가 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-의 각각에 저장된 정보와 상기 키 값을 비교하는 단계를 포함하는,
요약 방법을 표현하는 개략적인 흐름도다.
상기 단계 3130에서의 상기 비교 결과, 상기 행이 상기 요구된 변환을 갖지 않으면, 제어는, 상기 "유효" 신호가 상기 제어기(2000)에 의해 설정된 "이용 불가능한" 것을 나타내도록 설정되는 단계 3140으로 이동한다. 그렇지 않으면, 상기 방법은,
(단계 3150에서) 만약에 있다면, 그 적어도 하나의 키 엔트리의 어느 것이 상기 키 값과 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는 단계; 및
(단계 3160에서) 일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을, 출력하는 단계로서,
계속된다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 명시된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 명시된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 명시된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 변형을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.
Claims (14)
- 초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 페이지 테이블 액세스 회로;
상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을 저장하는 변환 데이터 버퍼;
상기 변환 데이터 버퍼는:
행들과 열들로 배치된 저장장소들의 어레이;
상기 어레이의 행의 각각의 부분으로부터 정보를 각기 저장하기 위해 복수의 엔트리들을 포함하는 행 버퍼; 및
적어도 상기 초기의 메모리 어드레스에 의존한 키 값에 응답하여, 상기 행 버퍼의 적어도 하나의 키 엔트리-각 키 엔트리가 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-의 각각에 저장된 정보와 상기 키 값을 비교하고, 만약에 있다면, 그 적어도 하나의 키 엔트리의 어느 것이 상기 키 값과 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는, 비교회로; 및
일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을, 출력하는 출력회로를 구비하는, 메모리 어드레스 변환장치.
- 제 1 항에 있어서,
상기 변환 데이터 버퍼는,
상기 초기의 메모리 어드레스의 적어도 일부에 따라 상기 어레이의 행을 선택하는 행 선택회로; 및
상기 선택된 행에 액세스하고 그 선택된 행으로부터 상기 행 버퍼에 정보를 전달하는 액세스 회로를 구비하는, 메모리 어드레스 변환장치.
- 제 2 항에 있어서,
상기 행 선택회로는, 상기 초기의 메모리 어드레스의 적어도 일부로부터 해시 값을 생성하고, 그 해시 값에 따라 상기 행을 선택하도록 구성되는, 메모리 어드레스 변환장치.
- 제 1 항에 있어서,
상기 키 값은,
상기 변환을 요구하는 가상 머신을 나타내는 데이터;
복수의 가상 어드레스 공간들 중에서 초기의 어드레스 공간을 나타내는 데이터; 및
상기 변환이 요구되는 상기 초기의 어드레스를 나타내는 데이터로 이루어진
리스트로부터 선택된 2개 이상에 의존하는, 메모리 어드레스 변환장치.
- 제 1 항에 있어서,
상기 입력된 가상 메모리 어드레스에 대한 상기 변환 데이터가 현재 상기 변환 데이터 버퍼에 의해 보유되지 않을 때, 상기 제어회로는, 상기 페이지 테이블 액세스 회로로부터 수신된 상기 입력된 가상 메모리 어드레스에 대한 상기 변환 데이터를, 상기 변환 데이터 버퍼에 저장하도록 구성되는, 메모리 어드레스 변환장치.
- 제 5 항에 있어서,
변환 데이터의 상기 변환 데이터 버퍼에의 저장을 위해, 상기 행 선택회로는, 변환 데이터의 그 인스턴스에 대한 상기 초기의 메모리 어드레스의 적어도 상기 일부에 따라 상기 어레이의 행을 선택하도록 구성되는, 메모리 어드레스 변환장치.
- 제 6 항에 있어서,
상기 선택된 행에 변환 데이터를 저장하는 기록회로를 구비하고, 상기 기록회로는,
상기 변환 데이터를 저장하기 위해 상기 선택된 행이 미사용된 키 엔트리들과 값 엔트리들을 갖는지를 검출하는 검출기 회로;
상기 변환 데이터를 저장하기 위해 상기 선택된 행이 불충분한 미사용된 용량을 갖는 상기 검출기 회로에 의한 검출에 응답하여 겹쳐쓰기 위한 상기 선택된 행에서의 키 엔트리와 관련된 값 엔트리를 선택함으로써, 미사용된 키 및 값 엔트리들과 상기 선택된 행에서의 값 엔트리들을 제공하는 빅팀 삭제 회로; 및
상기 미사용된 키 및 값 엔트리들에 대한 상기 변환 데이터를 상기 선택된 행에 저장하는 저장회로를 구비하는, 메모리 어드레스 변환장치.
- 제 7 항에 있어서,
상기 빅팀 삭제회로는,
최소 최근 액세스된 키 값과 일치 엔트리;
키 값과 일치 엔트리의 랜덤 또는 의사랜덤 선택;
가장 최근에 액세스되지 않은 키 값과 일치 엔트리; 및
상기 선택된 행에 대한 선입선출 선택으로 이루어진,
리스트로부터 선택된 하나 이상의 빅팀 선택 기준에 따라, 키 엔트리와, 관련된 값 엔트리를 선택하고 삭제하도록 구성되는, 메모리 어드레스 변환장치.
- 제 1 항에 있어서,
저장장소들의 상기 어레이를 제공하는 동적 랜덤 액세스 메모리를 구비하는, 메모리 어드레스 변환장치.
- 제 9 항에 있어서,
상기 동적 랜덤 액세스 메모리는, 각기 1미만 행의 엔트리들의 데이터 버스트들에서의 데이터를 통신하고, 키 값에 대응한 상기 행 버퍼의 일부를 송신하도록 구성되는, 메모리 어드레스 변환장치.
- 물리 메모리 어드레스들에 따라 액세스 가능한 메모리;
상기 메모리에 액세스하기 위한 가상 메모리 어드레스들을 생성하는 하나 이상의 처리소자들; 및
상기 하나 이상의 처리소자들에서 생성한 초기의 메모리 어드레스들의 상기 메모리에 제공된 물리 메모리 어드레스들로의 변환을 제공하는 청구항 1에 따른 메모리 어드레스 변환장치를 구비하는, 데이터 처리장치.
- 제 11 항에 있어서,
상기 하나 이상의 처리소자들은, 상기 처리소자에서 생성한 상기 초기의 메모리 어드레스들의 상기 메모리에 제공된 물리 메모리 어드레스들로의 변환의 세트를 저장하는 각각의 변환 색인 버퍼를 각각 구비하고; 이 변환 색인 버퍼는 상기 메모리 어드레스 변환장치로부터 상기 변환 색인 버퍼에 의해 저장되지 않은 변환을 요구하도록 구성되는, 데이터 처리장치.
- 초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 페이지 테이블 액세스 수단;
상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을 저장하는 변환 데이터 버퍼 수단;
상기 변환 데이터 버퍼 수단은:
행들과 열들로 배치된 저장장소들의 어레이;
상기 어레이의 행의 각각의 부분으로부터 정보를 각기 저장하기 위해 복수의 엔트리들을 포함하는 행 버퍼 수단; 및
적어도 상기 초기의 메모리 어드레스에 의존한 키 값에 응답하여, 상기 행 버퍼의 적어도 하나의 키 엔트리-각 키 엔트리가 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-의 각각에 저장된 정보와 상기 키 값을 비교하고, 만약에 있다면, 그 적어도 하나의 키 엔트리의 어느 것이 상기 키 값과 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는 비교수단; 및
일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을, 출력하는 출력수단을 구비하는, 메모리 어드레스 변환장치.
- 초기의 메모리 어드레스 공간에서의 초기의 메모리 어드레스와 출력 어드레스 공간에서의 대응한 출력 메모리 어드레스와의 사이에서 어드레스 변환을 명시하는 변환 데이터를 검색하기 위해 페이지 테이블을 액세스하는 단계;
상기 초기의 어드레스 공간의 서브세트에 대해, 상기 변환 데이터의 하나 이상의 인스턴스들을, 행들과 열들로 배치된 저장장소들의 어레이를 갖는 변환 데이터 버퍼에 저장하는 단계;
상기 어레이의 행의 각각의 부분으로부터 정보를 각기 저장하기 위해 복수의 엔트리들을 버퍼링하는 단계; 및
적어도 상기 초기의 메모리 어드레스에 의존한 키 값에 응답하여, 상기 행 버퍼의 적어도 하나의 키 엔트리-각 키 엔트리가 적어도 대응한 출력 메모리 어드레스의 표현을 저장하기 위한 관련된 값 엔트리를 갖는다-의 각각에 저장된 정보와 상기 키 값을 비교하는 단계;
만약에 있다면, 그 적어도 하나의 키 엔트리의 어느 것이 상기 키 값과 일치하는 정보를 저장하는 일치 키 엔트리인지를 특정하는 단계; 및
일치 키 엔트리가 있을 때, 적어도 상기 일치 키 엔트리와 관련된 상기 값 엔트리에서의 상기 출력 메모리 어드레스의 상기 표현을, 출력하는 단계를 포함하는, 방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GR20160100608 | 2016-11-29 | ||
GR20160100608 | 2016-11-29 | ||
GR20170100521 | 2017-11-22 | ||
GR20170100521 | 2017-11-22 | ||
PCT/GB2017/053588 WO2018100363A1 (en) | 2016-11-29 | 2017-11-29 | Memory address translation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190087500A true KR20190087500A (ko) | 2019-07-24 |
KR102482516B1 KR102482516B1 (ko) | 2022-12-29 |
Family
ID=60629736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197017550A KR102482516B1 (ko) | 2016-11-29 | 2017-11-29 | 메모리 어드레스 변환 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10853262B2 (ko) |
KR (1) | KR102482516B1 (ko) |
CN (1) | CN109983538B (ko) |
WO (1) | WO2018100363A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11243891B2 (en) * | 2018-09-25 | 2022-02-08 | Ati Technologies Ulc | External memory based translation lookaside buffer |
CN109582598B (zh) * | 2018-12-13 | 2023-05-02 | 武汉中元华电软件有限公司 | 一种基于外部存储实现高效查找哈希表的预处理方法 |
CN114218132B (zh) * | 2021-12-14 | 2023-03-24 | 海光信息技术股份有限公司 | 信息预取方法、处理器、电子设备 |
US20230401160A1 (en) * | 2022-06-09 | 2023-12-14 | Microsoft Technology Licensing, Llc | Address translation prefetching for input/output devices |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140208156A1 (en) * | 2010-01-28 | 2014-07-24 | Naveen Muralimanohar | Memory access methods and apparatus |
US20150220436A1 (en) * | 2013-03-14 | 2015-08-06 | Intel Corporation | Power Efficient Level One Data Cache Access With Pre-Validated Tags |
US20150278091A1 (en) * | 2014-03-28 | 2015-10-01 | Intel Corporation | Method and apparatus for implementing a heterogeneous memory subsystem |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4622631B1 (en) | 1983-12-30 | 1996-04-09 | Recognition Int Inc | Data processing system having a data coherence solution |
US4905188A (en) | 1988-02-22 | 1990-02-27 | International Business Machines Corporation | Functional cache memory chip architecture for improved cache access |
US5526504A (en) * | 1993-12-15 | 1996-06-11 | Silicon Graphics, Inc. | Variable page size translation lookaside buffer |
JPH07287668A (ja) | 1994-04-19 | 1995-10-31 | Hitachi Ltd | データ処理装置 |
US5960463A (en) | 1996-05-16 | 1999-09-28 | Advanced Micro Devices, Inc. | Cache controller with table walk logic tightly coupled to second level access logic |
US5915262A (en) | 1996-07-22 | 1999-06-22 | Advanced Micro Devices, Inc. | Cache system and method using tagged cache lines for matching cache strategy to I/O application |
US5946718A (en) | 1997-05-30 | 1999-08-31 | National Semiconductor Corporation | Shadow translation look-aside buffer and method of operation |
US6182266B1 (en) | 1997-09-12 | 2001-01-30 | Lucent Technologies, Inc. | Self-auditing protection method for sorted arrays |
US6349362B2 (en) | 1998-08-31 | 2002-02-19 | International Business Machines Corporation | Scheme to partition a large lookaside buffer into an L2 cache array |
US6535949B1 (en) | 1999-04-19 | 2003-03-18 | Research In Motion Limited | Portable electronic device having a log-structured file system in flash memory |
EP1182567B1 (en) | 2000-08-21 | 2012-03-07 | Texas Instruments France | Software controlled cache configuration |
US6697909B1 (en) * | 2000-09-12 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for performing data access and refresh operations in different sub-arrays of a DRAM cache memory |
US6851070B1 (en) | 2001-08-13 | 2005-02-01 | Network Appliance, Inc. | System and method for managing time-limited long-running operations in a data storage system |
JP4026753B2 (ja) | 2002-07-25 | 2007-12-26 | 株式会社日立製作所 | 半導体集積回路 |
US7810067B2 (en) | 2002-08-30 | 2010-10-05 | Sap Aktiengesellschaft | Development processes representation and management |
US7171539B2 (en) | 2002-11-18 | 2007-01-30 | Arm Limited | Apparatus and method for controlling access to a memory |
US20050021925A1 (en) | 2003-07-25 | 2005-01-27 | Clark Lawrence T. | Accessing in parallel stored data for address translation |
US20050080934A1 (en) | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
US7181556B2 (en) | 2003-12-23 | 2007-02-20 | Arm Limited | Transaction request servicing mechanism |
US7433364B2 (en) | 2003-12-24 | 2008-10-07 | Intel Corporation | Method for optimizing queuing performance |
US8151082B2 (en) | 2007-12-06 | 2012-04-03 | Fusion-Io, Inc. | Apparatus, system, and method for converting a storage request into an append data storage command |
GB2451668A (en) | 2007-08-08 | 2009-02-11 | Advanced Risc Mach Ltd | Error correction in a set associative cache |
US9087102B2 (en) | 2007-10-09 | 2015-07-21 | International Business Machines Corporation | Adaptive query processing infrastructure |
WO2010095182A1 (ja) * | 2009-02-17 | 2010-08-26 | パナソニック株式会社 | マルチスレッドプロセッサ及びデジタルテレビシステム |
US8131889B2 (en) * | 2009-11-10 | 2012-03-06 | Apple Inc. | Command queue for peripheral component |
US8510511B2 (en) * | 2009-12-14 | 2013-08-13 | International Business Machines Corporation | Reducing interprocessor communications pursuant to updating of a storage key |
US8756377B2 (en) | 2010-02-02 | 2014-06-17 | Arm Limited | Area and power efficient data coherency maintenance |
US9606867B2 (en) | 2014-06-05 | 2017-03-28 | International Business Machines Corporation | Maintaining data storage in accordance with an access metric |
GB2479780B (en) * | 2010-04-22 | 2018-04-04 | Advanced Risc Mach Ltd | Preload instruction control |
US8935506B1 (en) | 2011-03-31 | 2015-01-13 | The Research Foundation For The State University Of New York | MemX: virtualization of cluster-wide memory |
TWI521343B (zh) | 2011-08-01 | 2016-02-11 | Toshiba Kk | An information processing device, a semiconductor memory device, and a semiconductor memory device |
KR20130078455A (ko) * | 2011-12-30 | 2013-07-10 | 삼성전자주식회사 | 메모리 특성 정보를 저장하는 반도체 메모리 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 반도체 메모리 장치의 동작방법 |
US9081706B2 (en) | 2012-05-10 | 2015-07-14 | Oracle International Corporation | Using a shared last-level TLB to reduce address-translation latency |
US8924832B1 (en) | 2012-06-26 | 2014-12-30 | Western Digital Technologies, Inc. | Efficient error handling mechanisms in data storage systems |
US9129071B2 (en) | 2012-10-24 | 2015-09-08 | Texas Instruments Incorporated | Coherence controller slot architecture allowing zero latency write commit |
US9208102B2 (en) | 2013-01-15 | 2015-12-08 | Qualcomm Incorporated | Overlap checking for a translation lookaside buffer (TLB) |
US9229854B1 (en) | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
TWI526838B (zh) * | 2013-02-27 | 2016-03-21 | 東芝股份有限公司 | 記憶體裝置 |
US9218383B2 (en) | 2013-03-15 | 2015-12-22 | International Business Machines Corporation | Differentiated secondary index maintenance in log structured NoSQL data stores |
US10210096B2 (en) | 2013-10-01 | 2019-02-19 | Ampere Computing Llc | Multi-stage address translation for a computing device |
US9535614B2 (en) | 2013-11-21 | 2017-01-03 | Sandisk Technologies Llc | Temperature based flash memory system maintenance |
US20150161057A1 (en) * | 2013-12-05 | 2015-06-11 | Qualcomm Incorporated | System and method for providing client-side address translation in a memory management system |
CN104731569B (zh) * | 2013-12-23 | 2018-04-10 | 华为技术有限公司 | 一种数据处理方法及相关设备 |
US9293188B2 (en) * | 2014-02-03 | 2016-03-22 | Advanced Micro Devices, Inc. | Memory and memory controller for high reliability operation and method |
GB2529180B (en) | 2014-08-12 | 2021-07-14 | Advanced Risc Mach Ltd | Arbitration and hazard detection for a data processing apparatus |
US11531624B2 (en) | 2015-02-06 | 2022-12-20 | Arm Limited | Address translation in a data processing apparatus |
GB2538054B (en) | 2015-04-28 | 2017-09-13 | Advanced Risc Mach Ltd | Data processing apparatus, controller, cache and method |
US20160365137A1 (en) * | 2015-06-11 | 2016-12-15 | Broadcom Corporation | Pre-Emphasis and Equalization for DRAM |
US9626300B2 (en) | 2015-07-27 | 2017-04-18 | Google Inc. | Address caching in switches |
US9678788B2 (en) | 2015-11-10 | 2017-06-13 | International Business Machines Corporation | Enabling poll/select style interfaces with coherent accelerators |
US20170162235A1 (en) | 2015-12-02 | 2017-06-08 | Qualcomm Incorporated | System and method for memory management using dynamic partial channel interleaving |
US10061707B2 (en) | 2015-12-26 | 2018-08-28 | Intel Corporation | Speculative enumeration of bus-device-function address space |
US9846652B2 (en) | 2016-03-31 | 2017-12-19 | Intel Corporation | Technologies for region-biased cache management |
EP3264317B1 (en) | 2016-06-29 | 2019-11-20 | Arm Ltd | Permission control for contingent memory access program instruction |
US10380032B2 (en) | 2017-03-09 | 2019-08-13 | Internatinoal Business Machines Corporation | Multi-engine address translation facility |
JP2019016135A (ja) | 2017-07-06 | 2019-01-31 | 富士通株式会社 | 情報処理システム、情報処理システムの制御プログラム及び情報処理システムの制御方法 |
US11232037B2 (en) | 2017-10-23 | 2022-01-25 | Seagate Technology Llc | Using a first-in-first-out (FIFO) wraparound address lookup table (ALT) to manage cached data |
-
2017
- 2017-11-29 CN CN201780072373.1A patent/CN109983538B/zh active Active
- 2017-11-29 WO PCT/GB2017/053588 patent/WO2018100363A1/en active Application Filing
- 2017-11-29 US US16/342,644 patent/US10853262B2/en active Active
- 2017-11-29 KR KR1020197017550A patent/KR102482516B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140208156A1 (en) * | 2010-01-28 | 2014-07-24 | Naveen Muralimanohar | Memory access methods and apparatus |
US20150220436A1 (en) * | 2013-03-14 | 2015-08-06 | Intel Corporation | Power Efficient Level One Data Cache Access With Pre-Validated Tags |
US20150278091A1 (en) * | 2014-03-28 | 2015-10-01 | Intel Corporation | Method and apparatus for implementing a heterogeneous memory subsystem |
Also Published As
Publication number | Publication date |
---|---|
CN109983538A (zh) | 2019-07-05 |
CN109983538B (zh) | 2023-06-16 |
WO2018100363A1 (en) | 2018-06-07 |
US20190243778A1 (en) | 2019-08-08 |
US10853262B2 (en) | 2020-12-01 |
KR102482516B1 (ko) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10929308B2 (en) | Performing maintenance operations | |
US10474580B2 (en) | Memory management supporting huge pages | |
JP2554449B2 (ja) | キャッシュ・メモリを有するデータ処理システム | |
KR20170100003A (ko) | 가상 주소들을 사용하여 액세스된 캐시 | |
KR102482516B1 (ko) | 메모리 어드레스 변환 | |
US7039768B2 (en) | Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions | |
CN112416817B (zh) | 预取方法、信息处理装置、设备以及存储介质 | |
CN105814549A (zh) | 具有主高速缓存器和溢出fifo高速缓存器的高速缓存器系统 | |
CN114217861A (zh) | 数据处理方法及装置、电子装置和存储介质 | |
US20110167223A1 (en) | Buffer memory device, memory system, and data reading method | |
US5479629A (en) | Method and apparatus for translation request buffer and requestor table for minimizing the number of accesses to the same address | |
CN112527395B (zh) | 数据预取方法和数据处理装置 | |
US10831673B2 (en) | Memory address translation | |
JP5699854B2 (ja) | 記憶制御システムおよび方法、置換方式および方法 | |
US8356141B2 (en) | Identifying replacement memory pages from three page record lists | |
US20020188805A1 (en) | Mechanism for implementing cache line fills | |
US7543113B2 (en) | Cache memory system and method capable of adaptively accommodating various memory line sizes | |
US10866904B2 (en) | Data storage for multiple data types | |
CN110046107B (zh) | 存储器地址转换装置和方法 | |
US20050033920A1 (en) | Cache structure and methodology | |
GR20180200044U (el) | Μεταφραση διευθυνσεων μνημης | |
GR20180200051U (el) | Μεταφραση διευθυνσεων μνημης | |
GR20180200050U (el) | Πραγματοποιηση λειτουργιων συντηρησης | |
GR20180200062U (el) | Αποθηκευτικος χωρος δεδομενων για πολλαπλους τυπους δεδομενων | |
JP2014209392A (ja) | リプレースメントデータメモリ装置、中央演算装置及びリプレースメントデータ処理用プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for 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 |