KR100881810B1 - 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구 - Google Patents
외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구 Download PDFInfo
- Publication number
- KR100881810B1 KR100881810B1 KR1020077015663A KR20077015663A KR100881810B1 KR 100881810 B1 KR100881810 B1 KR 100881810B1 KR 1020077015663 A KR1020077015663 A KR 1020077015663A KR 20077015663 A KR20077015663 A KR 20077015663A KR 100881810 B1 KR100881810 B1 KR 100881810B1
- Authority
- KR
- South Korea
- Prior art keywords
- address
- memory
- entries
- segment
- entry
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/04—Arrangements for selecting an address in a digital store using a sequential addressing device, e.g. shift register, counter
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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]
-
- 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
- G06F2212/651—Multi-level translation tables
-
- 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/652—Page size control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
본 발명에 의하면, 세그먼트 테이블의 각각의 엔트리는 메모리의 다른 세그먼트를 나타내고, 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 외부 주소의 제 1 부분을 포인터로서 사용하고; 페이지 테이블 내의 각각의 엔트리는 메모리 내의 물리적 주소의 적어도 일부분을 포함하고 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을 페이지 테이블 내의 복수의 엔트리들 중 하나 이상에 대한 참조로서 이용하며; 적어도 부분적으로 번역된 물리적 주소를 외부 주소에 대한 메모리로 얻기 위해 외부 주소의 제 2 부분을 페이지 테이블 내의 엔트리들 중 하나로의 포인터로서 이용하는 방법들 및 장치들이 제공된다.
세그먼트 테이블, 엔트리, 메모리, 포인터, 물리적 주소
Description
본 발명은 주소를 외부 메모리 공간으로부터 프로세서의 메모리 공간으로 번역하기 위한 방법 및 장치에 관한 것이다.
최근에, 최첨단 컴퓨터 어플리케이션(application)들은 실시간 멀티미디어 기능을 포함하기 때문에, 더 빠른 컴퓨터 프로세싱(processing) 데이터 처리에 대한 한없는 요망이 있어 왔다. 그래픽 어플리케이션들은, 바람직한 시각 효과를 얻기 위해 상대적으로 짧은 기간에서의 많은 양의 데이터 접근들, 데이터 연산들, 및 데이터 조작들을 요구하기 때문에 프로세싱 시스템에 대한 요구사항이 가장 높은 어플리케이션들에 속한다. 이러한 어플리케이션들은, 초당 수천 메가비트(megabits)의 데이터와 같은 극히 빠른 프로세싱 속도를 필요로 한다. 일부 프로세싱 시스템들은 빠른 프로세싱 속도를 얻기 위해 단일 프로세서를 이용하지만, 멀티프로세서 아키텍쳐(architecture)들을 이용하는 프로세싱 시스템들도 있다. 멀티프로세서 시스템들에서는, 복수의 부 프로세서들이 요망된 프로세싱 결과들을 얻기 위해 병렬로 (또는 적어도 협력하여) 동작할 수 있다.
이러한 어플리케이션들을 실행하기에 적합한 프로세싱 시스템은 하나 이상의 프로세서들 및 메모리를 포함할 수 있다. 일부 프로세싱 시스템들에서는, 데이터를 (또 다른 프로세싱 시스템, CCD 등과 같은) 외부 시스템으로부터 프로세싱 시스템의 메모리로 전송하는 것이 바람직하다. 외부 시스템에 대하여 가시적인 메모리 공간은 프로세싱 시스템의 메모리 공간에 대하여 번역될 수 있기 때문에, 프로세싱 시스템의 메모리로의 데이터의 전송과 관련된 외부 시스템의 메모리 주소들을 번역하는 것이 필요하다.
본 발명의 하나 이상의 실시형태들은, 외부 시스템으로부터의 데이터가 프로세싱 시스템의 메모리 내에 저장되도록 프로세싱 시스템에서 사용하기 위한 외부 시스템의 주소들을 번역하는 향상된 기술을 고려한다.
하나 이상의 실시형태들에 따르면, 프로세싱 시스템은 프로세서, 메모리, 및 (바람직하게는 하드웨어에서 실시되는) 주소 번역기를 포함한다. 메모리는 다수의 세그먼트(segment)들로 분할될 수 있고, 각각의 세그먼트는 복수의 페이지들로 분할될 수 있다. 각각의 세그먼트 내의 페이지 크기가 지정될 수 있지만, 균일한 것이 바람직하다. 프로세서에서 실행되는 프로그램은 세그먼트 테이블 및 페이지 테이블을 초기설정한다. 세그먼트 테이블 내의 각각의 엔트리(entry)의 최상위 비트(MSB; most significant bit)는 페이지 크기를 정의하고, 세그먼트 테이블 내의 각각의 엔트리의 최하위 비트(LSB; least significant bit)는 페이지 테이블 내의 기준 위치를 정의한다. 페이지 테이블 내의 각각의 기준 위치는 공유 메모리의 주소들의 페이지에 대응하는 복수의 엔트리들 내의 시작 엔트리이다. 페이지 테이블 내의 각각의 엔트리는 공유 메모리 내의 물리적 주소들의 최상위 비트를 나타낸다.
외부 주소 공간의 연속 영역은, 프로세서로의 시스템 호출을 이용하여 영역을 등록함으로써 메모리의 세그먼트에 매핑(mapping)될 수 있다. 각각의 외부 주소에 대하여, 기준 값은 제 1 중간 주소를 얻기 위해 추가될 수 있다. 제 1 중간 주소의 최상위 비트는 세그먼트 테이블 내의 엔트리를 가리키는 포인터(pointer)로서 이용된다. 제 1 중간 주소의 나머지 비트는 제 2 중간 주소로서 이용된다. 세그먼트 테이블 내의 엔트리의 최상위 비트(즉, 페이지 크기)는 물리적 주소의 페이지 오프셋(offset)에 이용되는 제 2 중간 주소의 최하위 비트 수를 정의한다. 세그먼트 테이블의 엔트리의 나머지 비트는 페이지 테이블 내의 시작 엔트리를 가리키는 포인터로서 이용된다. 제 2 중간 주소의 나머지 비트(즉, 제 2 중간 주소의 최상위 비트)는 페이지 테이블 내의 시작 엔트리로부터의 오프셋을 이용하여 페이지 테이블 내의 엔트리를 가리키는 포인터로서 이용된다. 페이지 테이블의 엔트리의 내용들은 물리적 주소의 최상위 비트로서 이용되고, 제 2 중간 주소의 최하위 비트는 물리적 주소의 최하위 비트로서 이용되어 엔트리를 증가시킨다.
하나 이상의 추가적인 실시형태들에 따르면, 본 방법은, 제 1 중간 주소를 생성하기 위해 기준 주소를 외부 주소에 추가하는 단계; 세그먼트 테이블의 각각의 엔트리는 메모리의 다른 세그먼트를 나타내고, 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 제 1 중간 주소의 제 1 부분을 이용하는 단계; 페이지 테이블 내의 각각의 엔트리는, 메모리 내의 물리적 주소의 적어도 일부분을 포함하고, 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을 페이지 테이블 내의 복수의 엔트리들 중 하나 이상에 대한 참조로서 이용하는 단계; 및 적어도 부분적으로 번역된 물리적 주소를 외부 주소에 대한 메모리로 얻도록 제 1 중간 주소의 제 2 부분의 일부 또는 모두를 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하는 단계를 포함한다.
제 1 중간 주소의 제 1 부분을 이용하는 단계는 제 1 중간 주소의 제 1 부분의 최상위 비트를 세그먼트 테이블을 가리키는 포인터로서 이용하는 단계를 포함한다.
본 방법은: 제 2 중간 주소를 생성하기 위해 제 1 중간 주소의 제 2 부분을 이용하는 단계; 및 제 2 중간 주소의 적어도 일부분을 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하는 단계를 또한 포함한다. 세그먼트 테이블의 선택된 엔트리의 비트 수(바람직하게는 최상위 비트)는 제 2 중간 주소의 비트들을 분할하는 데에 이용될 수 있다. 세그먼트 테이블의 선택된 엔트리의 비트 수는 바람직하게는 제 2 중간 주소의 최하위 비트 수를 식별하는 데에 이용된다.
제 2 중간 주소의 최상위 비트는 바람직하게는 페이지 테이블 내의 참조된 엔트리들 중 하나를 선택하기 위해 포인터로서 이용된다. 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분은 외부 주소에 대해 번역된 물리적 주소의 일부분을 생성하도록 이용된다. 제 2 중간 주소의 최하위 비트는, 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분을 증가시키도록 이용되어, 외부 주소에 대하여 번역된 물리적 주소를 생성한다.
세그먼트 테이블의 선택된 엔트리의 일부분은, 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹의 최상위 엔트리를 가리킨다. 제 2 중간 주소의 최상위 비트는, 페이지 테이블 내의 참조된 엔트리들 중 하나를 선택하기 위해 그룹의 최상위 엔트리로부터의 오프셋으로서 이용되는 것이 바람직하다.
하나 이상의 또 다른 실시형태들에 따르면, 기구는: 제 1 중간 주소를 생성하기 위해 기준 주소를 외부 주소에 추가하도록 동작가능한 가산 회로; 및 룩업(look-up) 회로를 포함한다. 룩업 회로는 바람직하게는 (i) 세그먼트 테이블의 각각의 엔트리는 메모리의 다른 세그먼트를 나타내고, 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 제 1 중간 주소의 제 1 부분을 포인터로서 이용하고, (ii) 페이지 테이블 내의 각각의 엔트리는 메모리 내의 물리적 주소의 적어도 일부분을 포함하고, 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을 페이지 테이블 내의 복수의 엔트리들 중 하나 이상에 대한 참조로서 이용하며, (iii) 외부 주소에 대해 메모리로 적어도 부분적으로 번역된 물리적 주소를 얻도록, 제 1 중간 주소의 제 2 부분의 일부 또는 모두를 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하도록 동작가능하다.
하나 이상의 또 다른 실시형태들에 따르면, 기구는: 제 1 중간 주소를 생성하도록 기준 주소를 외부 주소에 추가하는 수단; 세그먼트 테이블의 각각의 엔트리는 메모리의 다른 세그먼트를 나타내고, 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 제 1 중간 주소의 제 1 부분을 포인터로서 이용하는 수단; 페이지 테이블 내의 각각의 엔트리는 메모리 내의 물리적 주소의 적어도 일부분을 포함하고, 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을 페이지 테이블 내의 복수의 엔트리들 중 하나 이상에 대한 참조로서 이용하는 수단; 및 외부 주소에 대해 메모리로 적어도 부분적으로 번역된 물리적 주소를 얻도록 제 1 중간 주소의 제 2 부분의 일부 또는 모두를 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하는 수단을 포함한다.
하나 이상의 또 다른 실시형태들에 따르면, 기구는: 메모리에 결합될 수 있는 적어도 하나의 프로세서; 및 외부 장치로부터 수신된 가상 주소를 메모리 내의 물리적 주소로 번역하도록 동작가능한 주소 번역 회로를 포함한다. 상기 적어도 하나의 프로세서는 주소 번역 회로에 의해 이용가능한 세그먼트 테이블 및 페이지 테이블을 생성하도록 동작가능하며; 세그먼트 테이블은 각각이 메모리의 다른 세그먼트를 나타내는 복수의 엔트리들을 포함하고; 페이지 테이블은, 각각이 메모리 내의 물리적 주소의 적어도 일부분을 가지고 메모리의 세그먼트들 중 하나 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하는 복수의 엔트리들을 포함한다.
주소 번역 회로는: 바람직하게는 제 1 중간 주소를 생성하도록 기준 주소를 가상 주소에 추가하며; 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 제 1 중간 주소의 최상위 비트를 포인터로서 이용하고; 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을, 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹의 최상위 엔트리를 가리키는 포인터로서 이용하도록 동작가능하다. 주소 번역 회로는: 바람직하게는 (i) 제 2 중간 주소를 생성하기 위해 제 1 중간 주소의 최하위 비트를 이용하는 것; (ii) 페이지 테이블 내의 참조된 엔트리들 중 하나를 선택하기 위해 제 2 중간 주소의 최상위 비트를 그룹의 최상위 엔트리로부터의 오프셋으로서 이용하는 것; (iii) 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분을 이용하여 물리적 주소의 일부분을 생성하는 것; 및 (iv) 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분을 증가시키기 위해 제 2 중간 주소의 최하위 비트를 이용하여 물리적 주소를 생성하는 것 중 적어도 하나로 동작가능하다.
하나 이상의 또 다른 실시형태들에 따르면, 저장 매체는, 프로세싱 시스템이: 제 1 중간 주소를 생성하기 위해 기준 주소를 외부 주소에 추가하는 동작; 세그먼트 테이블의 각각의 엔트리가 메모리의 다른 세그먼트를 나타내고, 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 제 1 중간 주소의 제 1 부분을 포인터로서 이용하는 동작; 페이지 테이블 내의 각각의 엔트리는 메모리 내의 물리적 주소의 적어도 일부분을 포함하고 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 페이지 테이블 내의 선택된 엔트리는 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하고, 세그먼트 테이블의 선택된 엔트리의 적어도 최하위 비트를 선택된 엔트리를 가리키는 포인터로서 이용하는 동작; 및 외부 주소에 대해 메모리로 적어도 부분적으로 번역된 물리적 주소를 얻기 위해 제 1 중간 주소의 제 2 부분의 일부 또는 모두를, 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하는 동작을 행할 수 있게 하는 프로그램을 저장한다.
다른 실시형태들, 특징들, 장점들 등은 본 발명의 상세한 설명이 첨부된 도면과 결합하여 당업자에게 명확해질 것이다.
본 발명의 다양한 실시형태들을 도시하기 위해, 바람직한 형태들이 도면에 도시되지만, 본 발명은 도시된 것과 동일한 배열들 및 수단들에 제한되지 않는다.
도 1은 본 발명의 하나 이상의 실시형태들에 따라 채택된 프로세싱 시스템의 구조를 도시하는 블록도이고;
도 2는 도 1의 시스템에 의해 수행되는 주소 번역을 도시하는 개념도이며;
도 3은, 본 발명의 하나 이상의 실시형태들에 따라 도 1의 프로세싱 시스템의 하나 이상의 기능들을 실행하는 데에 적합한 구조를 도시하는 블록도이고;
도 4는, 본 발명의 하나 이상의 실시형태들에 따라 도 1의 프로세싱 시스템에 의해 수행되는 동작들을 도시하는 부분 블록도 및 부분 순서도이며;
도 5는, 본 발명의 하나 이상의 실시형태들에 따라 도 1의 프로세싱 시스템에 의해 수행되는 프로세스 단계들을 도시하는 순서도이고;
도 6은, 본 발명의 하나 이상의 실시형태들에 따라 도 1의 프로세싱 시스템에 의해 수행되는 프로세스 단계들을 도시하는 순서도이며;
도 7은, 본 발명의 하나 이상의 실시형태들에 따라 채택된 2개 이상의 부 프 로세서들을 가지는 멀티프로세싱 시스템의 구조를 도시하는 다이어그램이고;
도 8은, 본 발명의 하나 이상의 실시형태들을 실시하는 데에 이용되는 바람직한 프로세서 요소(PE; processor element)를 도시하는 다이어그램이며;
도 9는, 본 발명의 하나 이상의 실시형태들에 따라 채택된 도 8의 시스템의 예시적 부 프로세싱 유닛(SPU; sub-processing unit)의 구조를 도시하는 다이어그램이고;
도 10은, 본 발명의 하나 이상의 실시형태들에 따라 채택된 도 8의 시스템의 예시적 프로세싱 유닛(PU; processing unit)의 구조를 도시하는 다이어그램이다.
동일한 도면부호들은 동일한 구성요소들을 가리키는 도면과 관련하여, 도 1a는 본 발명의 하나 이상의 특징들을 수행하는 데에 적합한 프로세싱 시스템(100)을 도시한다. 간결하고 명확하게 하기 위해, 도 1의 블록도는 기구(100)를 도시하면서 참조되고 설명되지만, 상기 설명은 방법의 다양한 실시형태들에 동등하게 적용될 것이다.
시스템(100)은 버스(bus; 106)에 의해 서로 결합한 프로세싱 시스템(102) 및 외부 시스템(104)을 포함한다. 프로세싱 시스템(102)은 버스(114)에 의해 서로 결합한 하나 이상의 프로세서(108), 메모리(110), 및 주소 번역 회로(112)를 포함한다. 시스템(100)은 또한 다른 장치들을 포함할 수 있지만, 간결함과 명확함을 위해 생략한다.
프로세서(108)는, 데이터를 메모리(110)로부터 요청할 수 있는 임의의 공지 기술들을 이용하고, 요망된 결과를 얻기 위해 데이터를 조작하여 실시될 수 있다. 예를 들어, 프로세서(108)는 표준 마이크로프로세서들, 분산 마이크로프로세서 등을 포함하여 소프트웨어 및/또는 펌웨어(firmware)를 실행할 수 있는 임의의 공지된 마이크로프로세서들을 이용하영 실시될 수 있다. 예를 들어, 프로세서(108)는, 그레이 스케일(gray scale) 정보, 색상 정보, 텍스쳐(texture) 데이터, 다각형 정보, 비디오 프레임 정보 등을 포함하여, 픽셀 데이터와 같은 데이터를 요청하고 조작할 수 있는 그래픽 프로세서일 수 있다.
일부 프로세싱 상황에서, 외부 시스템(104)은 데이터를 메모리(110)로부터/로 판독하거나 기록하려고 한다. 이와 관련하여, 주소 번역 회로(112)는 바람직하게는 외부 시스템(104)으로부터 수신된 가상 주소(상이한 메모리 공간의 외부 주소)를 메모리(110)의 물리적 주소로 번역하도록 동작가능하다. 실제로, 외부 시스템(104)은 메모리(110)와 동일한 메모리 공간에서 동작하지 않으므로, 주소 번역이 주소 번역 회로(112)에 의해 수행된다.
도 2를 참조하면, 메모리(110)는 바람직하게는 세그먼트 0, 세그먼트 1, 세그먼트 2 등과 같은 다수의 세그먼트들로 분할가능하다. 각각의 세그먼트는 바람직하게는 복수의 페이지들로 분할가능하다. 메모리(110)가 자신의 물리적 공간을 가지는 반면에, 외부 시스템(104)은 메모리(110)의 물리적 공간과 같은 일대일 대응 동일 공간(one-for-one identical space)이 아닌 가상 공간 0과 같은 가상 공간 내에서 동작한다. 주소 번역 회로(112)는 가상 공간 0의 주소들(120)을 메모리(110)의 물리적 주소(122)로 변환하도록 동작가능하다. 하나 이상의 외부 시스템들이 있 을 수 있기 때문에, 주소 번역 회로(112)는 가상 공간 1과 같은 다른 가상 공간들의 주소들(124)을 메모리(110)의 물리적 주소들(126)로 번역하도록 동작가능하다.
도 3은 주소 번역 회로(112)가 어떻게 실시되는지의 예를 도시하는 블록도이다. 본 실시형태에서, 주소 번역 회로(112)는 디지털 신호 프로세서(DSP; digital signal processor; 118)에 결합한 임의 접근 메모리(RAM; random access memory; 116)와 같은 메모리를 포함한다. DSP(118)는 RAM(116) 내에 저장된 프로그램에 따른 동작들을 수행하도록 동작가능하고, 프로그램은 DSP가 주소 번역 기능을 수행하게 한다. 프로세서(108)는 바람직하게는 주소 번역을 돕기 위해 주소 번역 회로(112), 특히 RAM(116)에 결합한다.
프로세서(108)는 바람직하게는 DSP(118)에서 실행되는 프로그램에 의한 사용을 위해 특정 데이터를 초기화하도록 동작가능하다. 데이터는 바람직하게는 (도 4에 잘 도시되어 있는) 세그먼트 테이블(206) 및 페이지 테이블(208)을 포함한다. 세그먼트 테이블(206)은 바람직하게는 각각이 메모리(110)의 다른 세그먼트를 나타내는 복수의 엔트리들을 포함한다. 페이지 테이블(208)은 바람직하게는 각각이 메모리(110) 내의 물리적 주소의 적어도 일부분을 가지는 복수의 엔트리들(208B)을 포함한다. 페이지 테이블(208)의 엔트리들(208B) 각각은 메모리(110)의 세그먼트들 중 하나 내의 페이지를 나타내는 엔트리들(208A)의 일 그룹에 속한다.
이하에서, 도 4 내지 6을 참조하여, 주소 번역 회로(112)의 동작을 더욱 상세히 설명한다. 도 4는, 주소 번역 회로(112)가 바람직하게 수행하도록 동작가능한 기능들의 다양한 조합들을 도시하는 부분 블록도 및 부분 순서도이다. 도 5 내지 6 은, 주소 번역을 행하도록 시스템(100)에 의해 수행되는 프로세스 단계들을 도시하는 순서도들이다. 동작 300에서, 메모리(110) 내의 각각의 세그먼트의 페이지 크기가 예를 들어 외부 시스템(104)에 의해 지정된다. 이것은 외부 시스템(104)으로부터 프로세서(108)로의 시스템 호출에 의해 달성될 수 있다. 페이지 크기가 지정될지라도, 페이지 크기는 페이지마다 그리고 세그먼트마다 균일한 것이 바람직하다.
동작 302에서, 프로세서(108)는 바람직하게는 세그먼트 테이블(206) 및 페이지 테이블(208)을 초기화한다. 이것은, 지정된 페이지 크기, 세그먼트들의 크기와 개수 등과 일치하는 세그먼트 테이블(206) 및 페이지 테이블(208) 내의 엔트리들 각각에 대한 값들을 입력하는 동작을 포함한다.
동작 304에서, 프로세싱 시스템(102)은 외부 주소( 또는 가상 주소)를 외부 시스템(104)으로부터 수신한다. 다시, 이러한 주소는, 데이터를 프로세싱 시스템(102)의 메모리(110)로부터 판독하거나, 데이터를 메모리(110)로 기록하는 요청과 관련된다. 주소 번역 회로(112)는 바람직하게는 외부 주소(202)를 수신하고 기준 주소( 또는 오프셋)를 외부 주소에 추가하여 제 1 중간 주소(204)를 생성한다(동작 304). 다음으로, 주소 번역 회로(112)는, 바람직하게는 세그먼트 테이블(206)의 복수의 엔트리들 중 하나를 선택하기 위해, 제 1 중간 주소(204)의 제 1 부분(204A)을 포인터로서 이용한다. 바람직하게는, 주소 번역 회로(112)는 제 1 중간 주소(204)의 최상위 비트(MSB; most significant bit; 204A)를 세그먼트 테이블(206)을 가리키는 포인터로서 이용한다. 그러므로 일반적으로 외부 주소(202)의 제 1 부분은 세그먼트 테이블(206)의 엔트리들 중 하나를 선택하는 데에 이용된다.
제 1 중간 주소(204)의 나머지 비트(204B)는 제 2 중간 주소(210)를 생성하기 위해 주소 번역 회로(112)에 의해 이용되는 것이 바람직하다(동작 308). 세그먼트 테이블(206) 내의 각각의 엔트리는 바람직하게는 메모리(110)의 각각의 세그먼트 내의 페이지 크기를 나타내는 비트 수(206A)를 포함한다. 도시된 것처럼, 이러한 비트는 바람직하게는 세그먼트 테이블(206) 내의 각각의 엔트리의 최상위 비트이다. 세그먼트 테이블(206)의 선택된 엔트리의 최상위 비트(206A)는 바람직하게는 제 2 중간 주소(210)의 비트를 분할하도록 이용된다. 특히, 선택된 엔트리의 최상위 비트(206A)는 바람직하게는 제 2 중간 주소(210)의 최하위 비트(210B) 수를 식별하는 데에 이용된다. 이것은 또한 제 2 중간 주소(210)의 최상위 비트(210A)를 정의한다. 이하에서 더욱 상세히 논의되는 것처럼, 제 2 중간 주소(210)의 최하위 비트(210B)는 물리적 주소(212)의 페이지 오프셋을 정의하는 데에 이용된다(동작 310).
다음으로, 세그먼트 테이블(206)의 선택된 엔트리의 적어도 일부분은 페이지 테이블(208)의 복수의 엔트리들(208B)의 하나 이상을 참조하도록 주소 번역 회로(112)에 의해 이용되는 것이 바람직하다. 바람직하게는, 세그먼트 테이블(206)의 선택된 엔트리의 나머지 비트(206B)는, 메모리(110)의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들(208A)의 일그룹의 시작 위치 또는 최상위 엔트리를 가리키도록 이용된다. 다음으로, 주소 번역 회로(112)는 바람직하게는 제 2 중간 주소(210)의 적어도 일부분을 페이지 테이블(208) 내의 참조된 엔트리들(208A) 중 하나를 가리키는 포인터로서 이용한다. 제 2 중간 주소(210)는 제 1 중간 주소(204) 의 일부분(204B)에 의해 생성되기 때문에, 주소 번역 회로(112)는 제 1 중간 주소(204)의 일부분(204B)의 적어도 일부분을 페이지 테이블(208) 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하도록 고려될 수 있다. 그러나 더욱 구체적으로, 제 2 중간 주소(210)의 최상위 비트(210A)는, 바람직하게는 페이지 테이블(208) 내의 참조된 엔트리들 중 하나의 엔트리(208B)를 선택하기 위해 페이지 테이블(208) 내의 그룹의 최상위 엔트리로부터의 오프셋으로서 이용된다(동작 314).
다음으로, 주소 번역 회로(112)는 번역된 외부 주소에 대하여 물리적 주소(212)의 일부분을 생성하기 위해 페이지 테이블(208) 내의 선택된 엔트리(208B) 내의 물리적 주소의 일부분을 사용하도록 동작가능한 것이 바람직하다. 더욱 구체적으로, 페이지 테이블(208)의 선택된 엔트리(208B) 내의 물리적 주소의 일부분은 바람직하게는 물리적 주소(212)의 최상위 비트를 나타낸다(동작 316). 다음으로, 주소 번역 회로(112)는 물리적 주소(212A)의 일부분을 증가시키도록 제 2 중간 주소(210)의 최하위 비트(210B)를 사용하여 물리적 주소(212)를 생성하도록 동작가능하다. 그러므로 제 2 중간 주소(210)의 최하위 비트(210B)는 물리적 주소(212)의 최하위 비트(212B)로서 사용된다(동작 318). 여기서, 프로세싱 시스템(102)은 메모리(110)의 판독 및/또는 기록 동작을 수행하도록 물리적 주소(212)를 이용한다.
바람직하게는, 본 발명의 듀얼(dual) 테이블 방법은 페이지 크기의 유연성 및 세그먼트 크기 정렬의 용이성을 고려한다. 그러므로 세그먼트의 적절한 정렬은 내부 메모리 공간(110) 내의 데이터 적중 확률을 증가시킨다.
도 7은 본 발명의 하나 이상의 추가적인 실시형태들을 실시하기에 적합한 멀 티프로세싱 시스템(100A)을 도시한다. 시스템(100A)은 로컬 메모리(local memory; 104A-D)들과 관련된 복수의 프로세서들(102A-D) 및 버스(108)에 의해 연결된 공유 메모리(106)를 포함한다. 공유 메모리(106)는 또한 주 메모리 또는 시스템 메모리로서 칭해질 수 있다. 프로세서들(102) 각각은 유사한 구성 또는 다른 구성일 수 있다.
도시되지 않았을 지라도, 이상에서 논의된 것처럼 시스템(100A)은 바람직하게는 주소 번역 회로(112)를 포함한다.
로컬 메모리들(104)은 바람직하게는 각각의 프로세서들(102)로서 동일 칩(동일 반도체 기판) 상에 위치하고; 그러나, 로컬 메모리들(104)은, 바람직하게는 하드웨어 캐시 메모리 기능을 실시하는 온-칩 또는 오프-칩 하드웨어 캐시 회로들, 캐시 레지스터들, 캐시 메모리 제어기 등이 없다는 점에서 종래의 하드웨어 캐시 메모리들이 아니다.
프로세서들(102)은 바람직하게는 프로그램 실행 및 데이터 조작을 위해 (프로그램 데이터를 포함하는) 데이터를 시스템 메모리(106)로부터 버스(108)를 거쳐 각각의 로컬 메모리들(104)로 복사하기 위해 데이터 접근 요청들을 제공한다. 데이터 접근을 실시하기 위한 메커니즘은 바람직하게는 직접 메모리 접근 제어기(DMAC; direct memory access controller; 도시되지 않음)를 이용하여 실시된다. 각각의 프로세서의 DMAC는 바람직하게는 본 발명의 다른 특징들과 관련하여 이상에서 논의된 것처럼 실질적으로 동일한 능력을 가진다.
시스템 메모리(106)는 고 대역 메모리 접속(도시되지 않음)을 통하여 프로세 서들(102)에 연결된 동적 임의 접근 메모리(DRAM; dynamic random access memory)인 것이 바람직하다. 시스템 메모리(106)는 바람직하게는 DRAM일지라도, 메모리(106)는 정적 임의 접근 메모리(SRAM; static random access memory), 자기 임의 접근 메모리(MRAM; magnetic random access memory), 광 메모리, 홀로그래픽 메모리 등과 같은 다른 수단들을 이용하여 실시된다.
각각의 프로세서(102)는, 바람직하게는 논리 명령들이 파이프라인 형태로 처리되는 프로세싱 파이프라인을 이용하여 실시된다. 파이프라인이, 명령들이 처리되는 임의의 개수의 단계들로 분할될지라도, 파이프라인은 일반적으로 하나 이상의 명령들을 추출하는 것, 명령들을 해독하는 것, 명령들 사이의 종속성들을 검사하는 것, 명령들을 배포하는 것, 및 명령들을 실행하는 것을 포함한다. 이와 관련하여, 프로세서들(102)은 명령 버퍼, 명령 해독 회로, 종속성 검사 회로, 명령 배포 회로, 및 실행 스테이지(stage)들을 포함한다.
프로세서들(120)의 DMAC들은, 바람직하게는 프로세서들(102) 중 하나에 의해 배포된 단일 DMA 명령에 반응하여 공유 메모리(106)와 하나 이상의 로컬 메모리들(104) 사이의 복수의 데이터 블록들의 전송을 행하도록 동작가능하다. 이를 위하여, 프로세서들(102), 로컬 메모리들(104), DMAC들 등은 바람직하게는 도 1 내지 3에 관하여 이상에서 논의된 것처럼 실질적으로 동일한 기능을 포함한다. 예를 들어, 각각의 프로세서는 로컬 메모리(104) 내의 하나 이상의 리스트들(120)을 설립하도록 동작가능하고, DMA 명령은 리스트(120A) 내의 엔트리(122A)와 같은 적어도 하나의 엔트리를 지정하며, DMAC는 이러한 엔트리(122A)에 접근하고, 전송을 위한 대응하는 데이터 블록을 식별하도록 엔트리(122A) 내에 지정된 시작 주소와 크기를 이용하여 데이터 블록 전송들을 시작한다.
하나 이상의 실시형태들에서, 프로세서들(102), 로컬 메모리들(104), 및 DMAC들(160)은 공통된 반도체 기판 상에 배치된다. 하나 이상의 또 다른 실시형태들에서, 공유 메모리(106)는 또한 공통된 반도체 기판 상에 배치되거나 또는 분리되어 배치된다.
하나 이상의 변형된 실시형태들에서, 하나 이상의 프로세서들(102)은 다른 프로세서들(102)에 작용적으로 결합되고 버스(108)를 거쳐 공유 메모리(106)에 결합될 수 있는 주 프로세서로서 동작한다. 주 프로세서는 데이터의 프로세싱을 다른 프로세서들(102)에 의해 예정하고 조정한다. 그러나 다른 프로세서들(102)과 달리, 주 프로세서는 공유 메모리(106) 및 프로세서들(102)의 하나 이상의 로컬 메모리들(104) 중 적어도 하나로부터 얻어진 데이터를 캐시하도록 동작가능한 하드웨어 캐시 메모리에 결합한다. 주 프로세서는, DMA 기술들과 같은 임의의 공지된 기술들을 이용하여 프로그램 실행 및 데이터 조작을 위해 시스템 메모리(106)로부터 버스(108)를 거쳐 캐시 메모리로 (프로그램 데이터를 포함하는) 데이터를 복사하는 데이터 접근 요청들을 제공한다.
이제, 본 명세서에서 논의된 하나 이상의 특징들을 수행하기에 적합한 멀티프로세서 시스템을 위한 바람직한 컴퓨터 아키텍쳐에 대하여 설명하겠다. 하나 이상의 실시형태들에 따르면, 멀티프로세서 시스템은 게임 시스템들, 가정 단말기들, PC 시스템들, 서버 시스템들 및 워크스테이션들과 같은 미디어-리치 어플리케이션 들의 독립형 및/또는 분산 프로세싱에 동작가능한 단일-칩 방법으로서 실시될 수 있다. 게임 시스템들 및 가정 단말기들과 같은 일부 어플리케이션들에서, 실시간 연산이 필요하다. 예를 들어, 실시간 분산 게임 어플리케이션에서, 하나 이상의 네트워킹 영상 압축풀기, 3D 컴퓨터 그래픽, 오디오 생성, 네트워크 통신, 물리적 시뮬레이션, 및 인공 지능 프로세스들은 사용자에게 실시간 경험의 환영을 제공하기에 충분히 빠르게 실행되어야 한다. 그러므로 멀티프로세서 시스템 내의 각각의 프로세서는 짧고 예견가능한 시간에 태스크들을 완료하여야 한다.
이를 위하여, 이러한 컴퓨터 아키텍쳐에 따라서, 멀티프로세싱 컴퓨터 시스템의 모든 프로세서들은 공통된 컴퓨팅 모듈( 또는 셀)로부터 구성된다. 이러한 공통된 컴퓨팅 모듈은 일관된 구조를 가지고 바람직하게는 동일한 명령 세트 아키텍쳐를 이용한다. 멀티프로세싱 컴퓨터 시스템은, 하나 이상의 고객들, 서버들, PC들, 이동 컴퓨터들, 게임 기계들, PDA들, 셋톱 박스(set top box)들, 기구들, 디지털 텔레비젼들 및 컴퓨터 프로세서들을 이용하는 다른 장치들로 형성될 수 있다.
복수의 컴퓨터 시스템들은 또한 요망된다면 네트워크의 구성요소들일 수 있다. 일관된 모듈 구조는 멀티프로세싱 컴퓨터 시스템에 의해 어플리케이션들 및 데이터의 효율적인 고속 프로세싱을 가능하게 하고, 네트워크가 이용된다면, 네트워크를 통한 어플리케이션들 및 데이터의 고속 전송을 가능하게 한다. 이러한 구조는 다양한 크기들 및 프로세싱 능력의 네트워크의 구성요소들의 형성 및 이러한 구성요소들에 의한 처리를 위한 어플리케이션들의 준비를 단순화한다.
도 8을 참조하면, 기본 프로세싱 모듈은 프로세서 요소(PE; processor element; 500)이다. PE(500)는 I/O 인터페이스(502), 프로세싱 유닛(PU; processing unit; 504), 및 복수의 부 프로세싱 유닛들(508), 즉 부 프로세싱 유닛(508A), 부 프로세싱 유닛(508B), 부 프로세싱 유닛(508C), 및 부 프로세싱 유닛(508D)을 포함한다. 로컬 (또는 내부) PE 버스(512)는 데이터 및 어플리케이션들을 PU(504), 부 프로세싱 유닛들(508) 및 메모리 인터페이스(511) 사이에서 데이터 및 어플리케이션들을 전송한다. 로컬 PE 버스(512)는 통상의 아키텍쳐를 가질 수 있고 또는 패킷 교환 네트워크(packet-switched network)로서 이용될 수 있다. 패킷 교환 네트워크로서 이용된다면, 많은 하드웨어를 필요로 하는 반면에 이용가능 대역폭이 증가한다.
PE(500)는 디지털 논리를 이용하는 다양한 방법들을 이용하여 구성될 수 있다. 그러나 PE(500)는 실리콘 기판 상에 CMOS(complementary metal oxide semiconductor)를 이용하는 단일 집적 회로로서 구성된다. 기판들을 위한 선택적인 재료들은 갈륨 아시나이드, 갈륨 알루미늄 아시나이드 및 다양한 도펀트들을 이용하는 다른 소위 III-B 화합물들을 포함한다. PE(500)는 또한 초전도 재료, 예를 들어 RSFQ(rapid single-flux-quantum) 논리를 이용하여 실시될 수 있다.
PE(500)는 고대역 메모리 접속(516)을 통하여 공유 (주) 메모리(514)와 관련된다. 메모리(514)는 바람직하게는 동적 임의 접근 메모리(DRAM; dynamic random access memory)일지라도, 정적 임의 접근 메모리(SRAM; static random access memory), 자기 임의 접근 메모리(MRAM; magnetic random access memory), 광 메모리, 홀로그래픽 메모리 등과 같은 다른 수단을 이용하여 실시된다.
PU(504) 및 부 프로세싱 유닛들(508)은, 각각 바람직하게는 메모리 인터페이스(511)와 결합하여 DRAM(514)과 PE(500)의 부 프로세싱 유닛들(508) 및 PU(504) 사이의 데이터 전송을 도우는 직접 메모리 접근 DMA 기능을 포함하는 메모리 흐름 제어기(MFC; memory flow controller)에 연결된다. DMAC 및/또는 메모리 인터페이스(511)는 부 프로세싱 유닛들(508) 및 PU(504)에 대하여 통합되거나 분리되어 배치될 수 있다. 실제로, DMAC 기능 및/또는 메모리 인터페이스(511) 기능은 부 프로세싱 유닛들(508) 중 하나 이상(바람직하게는 모두) 및 PU(504)와 통합될 수 있다. DRAM(514)은 PE(500)에 대하여 통합되거나 분리되어 배치될 수 있다. 예를 들어, DRAM(514)은 도시된 것처럼 오프-칩으로 배치될 수 있고 또는 DRAM(514)은 통합된 형태로 온-칩으로 배치될 수 있다.
PU(504)는 예를 들어 데이터 및 어플리케이션들의 독립형 프로세싱이 가능한 표준 프로세서일 수 있다. 동작에서, PU(504)는 바람직하게는 부 프로세싱 유닛들에 의해 데이터 및 어플리케이션들의 프로세싱을 예정하고 조정하는 것이 바람직하다. 부 프로세싱 유닛들은 바람직하게는 SIMD(single instruction multiple data) 프로세서들이다. PU(504)의 제어 하에서, 부 프로세싱 유닛들은 병렬 및 독립적인 방식으로 이러한 데이터 및 어플리케이션들의 프로세싱을 수행한다. PU(504)는, RISC(reduced instruction-set computing) 기술을 이용하는 마이크로프로세서 아키텍쳐인 파워피씨 코어(PowerPC core)를 이용하여 실시되는 것이 바람직하다. RISC는 간단한 명령들의 조합을 이용하여 더욱 복잡한 명령들을 수행한다. 그러므로 프로세서에 대한 타이밍은 더욱 간단하고 빠른 동작들에 근거하여 마이크로프로세서 가 주어진 클록 속도에 대하여 더 많은 명령들을 수행할 수 있게 한다.
PU(504)는 부 프로세싱 유닛들(508)에 의해 데이터 및 어플리케이션들의 프로세싱을 예정하고 조정하는 주 프로세싱 유닛의 역할을 하는 부 프로세싱 유닛들(508) 중 하나에 의해 실시된다. 게다가 프로세서 요소(500) 내에서 실시된 하나 이상의 PU가 있을 수 있다.
모듈 구조에 따라서, 특정 컴퓨터 시스템에 의해 이용되는 PE들(500)의 개수는 시스템에 의해 요구되는 프로세싱 능력에 근거한다. 예를 들어, 서버는 4개의 PE들(500)을 이용하고, 워크스테이션은 2개의 PE들(500)을 이용하며, PDA는 하나의 PE(500)를 이용한다. 특정 소프트웨어 셀의 프로세싱에 할당된 PE(500)의 부 프로세싱 유닛들의 개수는 셀 내의 프로그램들 및 데이터의 복잡함과 크기에 의존한다.
도 9는 부 프로세싱 유닛(SPU; sub-processing unit; 508)의 바람직한 구조 및 기능을 도시한다. SPU(508) 아키텍쳐는 바람직하게는 (다양한 어플리케이션들에서 높은 평균 성능을 달성하도록 고안된) 범용 프로세서들과 (단일 어플리케이션에서 높은 성능을 달성하도록 고안된) 전용 프로세서들 사이의 공간을 채운다. SPU(508)는 게임 어플리케이션들, 미디어 어플리케이션들, 광대역 시스템들 등에서 높은 성능을 달성하고 실시간 어플리케이션들의 프로그래머들이 고도로 제어할 수 있도록 고안된다. SPU(508)의 일부 능력들은, 그래픽 지오메트리 파이프라인들(graphics geometry pipelines), 표면 재분할, 패스트 푸리에 변환들(Fast Fourier Transforms), 영상 프로세싱 키워드들(image processing keywords), 스트림 프로세싱(stream processing), MPEG 암호화/해독, 암호화, 해독, 장치 드라이버 확장, 모델링, 게임 물리, 콘텐츠 생성, 및 오디오 합성 및 프로세싱을 포함한다.
부 프로세싱 유닛(508)은 2개의 기본 기능 유닛들, 즉 SPU 코어(510A) 및 메모리 흐름 제어기(MFC; memory flow controller; 510B)를 포함한다. MFC(510B)가 시스템의 SPU 코어(510A)와 DRAM(514) 사이의 데이터 전송들과 관련된 기능들을 수행하더라도 SPU 코어(510A)는 프로그램 실행, 데이터 조작 등을 수행한다.
SPU 코어(510A)는 로컬 메모리(550), 명령 유닛(IU; instruction unit; 552), 레지스터들(registers; 554), 하나 이상의 부동 소수점 실행 스테이지들(floating point execution stages; 556) 및 하나 이상의 고정 소수점 실행 스테이지들(fixed point execution stages; 558)을 포함한다. 로컬 메모리(550)는 바람직하게는 SRAM과 같은 단일 포트 임의 접근 메모리(single-ported random access memory)를 이용하여 실시된다. 대부분의 프로세서들은 캐시들을 이용하여 메모리로의 지연을 감소시키는 반면에, SPU 코어(510A)는 캐시가 아닌 상대적으로 작은 로컬 메모리(550)를 이용한다. 실제로, 실시간 어플리케이션들( 및 본 명세서에서 언급된 다른 어플리케이션들)의 프로그램들에 대한 일관되고 예견가능한 메모리 접근 지연을 제공하도록, SPU(508A) 내의 캐시 메모리 아키텍쳐는 바람직하지 않다. 캐시 메모리의 캐시 적중/부적중 특성들은 수 사이클들로부터 수백 사이클들로 변화하는 휘발성 메모리 접근 시간을 일으킨다. 이러한 휘발성은 예를 들어 실시간 어플리케이션 프로그래밍에서 바람직한 접근 타이밍 예측성을 감소시킨다. 지연 숨김은 DMA 전송들을 데이터 연산과 오버래핑(overlapping)함으로써 로컬 메모리 SRAM(550) 내에서 달성될 수 있다. 이것은 실시간 어플리케이션들의 프로그래밍에 대한 고도의 제어를 제공한다. DMA 전송들과 관련된 지연 및 명령 오버헤드가 캐시 부적중에 기여하는 지연의 오버헤드를 초과함에 따라, SRAM 로컬 메모리 방법은, DMA 전송 크기가 충분히 크고 예견가능할 때(예를 들어, DMA 명령이 데이터가 필요하기 전에 배포될 수 있을 때) 장점이 있다.
부 프로세싱 유닛들(508) 중 주어진 하나에서 실행되는 프로그램이 로컬 주소를 이용하여 관련된 로컬 메모리(550)를 참조하지만, 로컬 메모리(550)의 각각의 위치는 전체 시스템의 메모리 맵 내의 실 주소(RA; real address)에 할당된다. 이것은 프리빌리지 소프트웨어(Privilege Software)가 로컬 메모리(550)를, 하나의 로컬 메모리(550)와 또 다른 로컬 메모리(550) 사이의 DMA 전송들을 행하는 프로세스의 유효 주소(EA; effective address)로 매핑할 수 있게 한다. PU(504)는 또한 유효 주소를 이용하여 로컬 메모리(550)에 직접 접근할 수 있다. 바람직한 실시형태에서, 로컬 메모리(550)는 556 킬로바이트의 스토리지(storage)를 포함하고, 레지스터들(552)의 용량은 128×128 비트이다.
SPU 코어(504A)는, 논리 명령들이 파이프라인 형태로 처리되는 프로세싱 파이프라인을 이용하여 실시되는 것이 바람직하다. 파이프라인이 명령들이 처리되는 임의의 개수의 스테이지들로 분할될지라도, 파이프라인은 일반적으로 하나 이상의 명령들을 추출하는 것, 명령들을 해독하는 것, 명령들 사이의 종속성들을 검사하는 것, 명령들을 배포하는 것, 및 명령들을 실행하는 것을 포함한다. 이와 관련하여 IU(552)는 명령 버퍼, 명령 해독 회로, 종속성 검사 회로, 및 명령 배포 회로를 포함한다.
명령 버퍼는, 바람직하게는 추출됨에 따라 로컬 메모리(550)에 연결되고 임시로 명령들을 저장하도록 동작가능한 복수의 레지스터들을 포함한다. 명령 버퍼는, 바람직하게는 모든 명령들이 레지스터들을 그룹으로서 실질적으로 동시에 남기도록 동작한다. 명령 버퍼가 임의의 크기일지라도, 2개 또는 3개의 레지스터들보다 더 크지 않은 크기인 것이 바람직하다.
일반적으로, 해독 회로는 명령들을 중지시키고, 대응하는 명령의 기능을 수행하는 논리적 마이크로-동작들을 생성한다. 예를 들어, 논리적 마이크로-동작들은 산술 및 논리 동작들을 지정하고, 로컬 메모리(550), 레지스터 소스 연산수들 및/또는 즉시 데이터 연산수들로의 동작들을 로드하고 저장한다. 해독 회로는, 또한 명령이 타겟 레지스터 주소들(target register address), 구조적 자원들, 기능 유닛들 및/또는 버스들과 같은 명령이 어느 자원들을 사용하는 지를 가리킨다. 해독 회로는, 또한 자원들이 필요한 명령 파이프라인 스테이지들을 가리키는 정보를 공급한다. 명령 해독 회로는, 바람직하게는 명령 버퍼의 레지스터들의 개수와 같은 다수의 명령들을 실질적으로 동시에 해독하도록 동작가능하다.
종속성 검사 회로는 주어진 명령의 연산수들이 파이프라인의 다른 명령들의 연산수들에 종속하는지 여부를 결정하는 테스팅(testing)을 수행하는 디지털 논리를 포함한다. 그렇다면, 주어진 명령은, 이러한 다른 연산수들이 (예를 들어, 다른 명령들이 실행을 완료할 수 있게 함으로써) 갱신될 때까지 실행되어서는 안된다. 종속성 검사 회로는 해독 회로(112)로부터 동시에 발송되는 복수의 명령들의 종속성들을 결정하는 것이 바람직하다.
명령 배포 회로는, 명령들을 부동 소수점 실행 스테이지들(556) 및/또는 고정 소수점 실행 스테이지들(558)로 배포하도록 동작가능하다.
레지스터들(554)은 128-엔트리 레지스터 파일과 같은 상대적으로 큰 통합된 레지스터 파일로서 실시되는 것이 바람직하다. 이것은, 레지스터 재명명(renaming)을 필요로 하지 않는 깊게 파이프라인된 고주파 실시형태들이 레지스터 기근을 방지할 수 있게 한다. 하드웨어 재명명은 전형적으로 프로세싱 시스템에서 상당한 부분의 영역 및 파워(power)를 소비한다. 결과적으로, 유리한 동작이, 지연들이 소프트웨어 루프 언롤링(software loop unrolling) 또는 다른 인터리빙(interleaving) 기술들에 의해 피복될 때 달성된다.
바람직하게는 SPU 코어(510A)는, 하나 이상의 명령이 클록 사이클 당 배포되도록 수퍼 스칼라 아키텍쳐이다. SPU 코어(510A)는 바람직하게는 (2개 또는 3개의 명령들이 클록 사이클 당 배포되는 것을 의미하는) 2 내지 3과 같은 명령 버퍼로부터의 동시 명령 발송들의 개수에 대응하는 정도로 수퍼스칼라로서 동작하는 것이 바람직하다. 필요한 프로세싱 능력에 의존하여, 다소의 부동 소수점 실행 스테이지들(556) 및 고정 소수점 실행 스테이지들(558)이 이용된다. 바람직한 실시형태에서, 부동 소수점 실행 스테이지들(556)은 초당 320억 부동 소수점 동작들(32 GFLOPS; 32 billion floating point operations per second)의 속도로 동작하고, 고정 소수점 실행 스테이지들(558)은 초당 320억 동작들(32 GOPS; 32 billion operations per second)의 속도로 동작한다.
MFC(510B)는 바람직하게는 버스 인터페이스 유닛(BIU; bus interface unit; 564), 메모리 관리 유닛(MMU; memory management unit; 562), 및 직접 메모리 접근 제어기(DMAC; direct memory access controller; 560)를 포함한다. DMAC(560)를 제외하면, MFC(510B)는 바람직하게는 SPU 코어(510A)와 버스(512)와 비교할 때 반 주파수(반 속도)로 실행되어 저전력 손실 디자인 목적을 충족시킨다. MFC(510B)는 버스(512)로부터 SPU(508)로 오는 데이터 및 명령들을 취급하도록 동작가능하고, DMAC에 대한 주소 번역을 제공하며, 데이터 일관성에 대한 스누프-동작(snoop-operation)을 행한다. BIU(564)는 버스(512) 및 MMU(562) 및 DMAC(560) 사이의 인터페이스를 제공한다. 그러므로 (SPU 코어(510A) 및 MFC(510B)를 포함하는) SPU(508) 및 DMAC(560)는 물리적 그리고/또는 논리적으로 버스(512)에 연결된다.
MMU(562)는 바람직하게는 (DMA 명령들로부터 취해진) 유효 주소들을 메모리 접근에 대한 실 주소들로 번역하도록 동작가능하다. 예를 들어, MMU(562)는 고위 비트(higher order bits)의 유효 주소를 실 주소 비트로 번역한다. 그러나 저위 주소 비트(lower-order address bits)는 바람직하게는 번역할 수 없고, 실 주소를 형성하고 메모리로의 접근을 요청하도록 사용하기 위해 논리적이고 물리적으로 고려된다. 하나 이상의 실시형태들에서, MMU(562)는 64-비트 메모리 관리 모델에 근거하여 실시되고, 4K-, 64K-, 1M-, 및 16M- 바이트 페이지 크기들과 256MB 세그먼트 크기들을 가진 264 바이트의 유효 주소 공간을 제공한다. 바람직하게는, MMU(562)는 DMA 명령들에 대해 265 바이트의 가상 메모리 및 242 바이트(4 테라바이트(TeraBytes))의 물리적 메모리를 지지하도록 동작가능하다. MMU(562)의 하드웨어는 8-엔트리, 전체 결합 SLB, 256-엔트리, 4웨이 세트 결합 TLB, 및 하드웨어 부적 중 TLB 취급에 사용되는 TLB용 4×4 RMT(Replacement Management Table)를 포함한다.
DMAC(560)는, 바람직하게는 SPU 코어(510A), 및 PU(504) 및/또는 다른 SPU들과 같은 하나 이상의 다른 장치들로부터 DMA 명령들을 관리하도록 동작가능하다. 다음의 3개의 카테고리의 DMA 명령들이 있다: 로컬 메모리(550)로부터 공유 메모리(514)로 데이터를 이동시키도록 동작가능한 풋(Put) 명령들; 데이터를 공유 메모리(514)로부터 로컬 메모리(550)로 이동시키도록 동작하는 겟(Get) 명령들; 및 SLI 명령들 및 동기화 명령들을 포함하는 스토리지 컨트롤(Storage Control) 명령들. 동기화 명령들은 원자 명령들을 포함하고, 신호 명령들 및 전용 배리어(dedicated barrier) 명령들을 송신한다. DMA 명령들에 반응하여, MMU(562)는 유효 주소를 실 주소로 번역하고 실 주소는 BIU(564)로 전송된다.
SPU 코어(510A)는 바람직하게는 채널 인터페이스 및 데이터 인터페이스를 사용하여 DMAC(560) 내의 인터페이스와 통신한다(DMA 명령들, 상태 등을 송신한다). SPU 코어(510A)는 DMA 명령들을 채널 인터페이스를 통하여 DMAC(560) 내의 DMA 대기행렬로 발송한다. DMA 명령이, DMA 대기행렬 내에 있다면 DMAC(560) 내의 배포 및 완료 논리에 의해 취급된다. DMA 명령에 대한 모든 버스 트랜색션(transaction)들이 종료될 때, 완료 신호가 채널 인터페이스를 거쳐 SPU 코어(510A)로 보내진다.
도 10은 PU(504)의 바람직한 구조 및 기능을 도시한다. PU(504)는 2개의 기본 기능 유닛들, PU 코어(504A) 및 메모리 흐름 제어기(MFC; memory flow controller; 504B)를 포함한다. PU 코어(504A)는 프로그램 실행, 데이터 조작, 멀 티프로세서 관리 기능들 등을 수행하고, MFC(504B)는 시스템(100)의 PU 코어(504A) 및 메모리 공간 사이의 데이터 전송들과 관련된 기능들을 수행한다.
PU 코어(504A)는 L1 캐시(570), 명령 유닛(572), 레지스터들(574), 하나 이상의 부동 소수점 실행 스테이지들(576) 및 하나 이상의 고정 소수점 실행 스테이지들(578)을 포함한다. L1 캐시는 공유 메모리(106), 프로세서들(102), 또는 메모리 공간의 다른 부분들로부터 MFC(504B)를 통하여 수신된 데이터에 대한 데이터 캐싱 기능을 제공한다. PU 코어(504A)는 바람직하게는 수퍼파이프라인(superpipeline)으로서 실시되기 때문에, 명령 유닛(572)은 바람직하게는 추출, 해독, 종속성 검사, 배포 등을 포함하는 많은 단계들을 가진 명령 파이프라인으로서 실시된다. PU 코어(504A)는 또한 바람직하게는 하나 이상의 명령이 클록 사이클 당 명령 유닛(572)으로부터 배포되는 수퍼스칼라 구성이다. 높은 프로세싱 능력을 달성하기 위해, 부동 소수점 실행 스테이지들(576) 및 고정 소수점 실행 스테이지들(578)은 파이프라인 구성으로 복수의 스테이지들을 포함한다. 필요한 프로세싱 능력에 의존하여, 다소의 부동 소수점 실행 스테이지들(576) 및 고정 소수점 실행 스테이지들(578)이 이용된다.
MFC(504B)는 버스 인터페이스 유닛(BIU; bus interface unit; 580), L2 캐시 메모리, 캐시불능 유닛(NCU; non-cachable unit; 584), 코어 인터페이스 유닛(CIU; core interface unit; 586), 및 메모리 관리 유닛(MMU; memory management unit; 588)을 포함한다. MFC(504B)의 대부분이 PU 코어(504A) 및 버스(108)와 비교하여 반 주파수(반 속도)로 실행되어 저전력 손실 디자인 목적들을 만족시킨다.
BIU(580)는 버스(108)와 L2 캐시(582)와 NCU(584) 로직 블록들 사이의 인터페이스를 제공한다. 이를 위하여, BIU(580)는 전체 일관 메모리 동작들을 수행하도록 버스(108)에서 슬레이브(slave) 장치뿐만 아니라 마스터(master)로서 작동한다. BIU(580)는 마스터 장치로서 L2 캐시(582) 및 NCU(584) 대신에 서비스를 위한 버스(108)로의 로드/저장 요청들을 받는다. BIU(580)는, 버스(108)로 보내질 수 있는 전체 개수의 명령들을 제한하는 명령들에 대한 흐름 제어 메커니즘을 실시한다. 버스(108)에 대한 데이터 동작들은 8개의 비트들을 취하도록 디자인되므로, BIU(580)는 바람직하게는 약 128 바이트 캐시-라인들로 디자인되며 일관성 및 동기화 입도(granularity)는 128KB이다.
L2 캐시 메모리(582)( 및 지지 하드웨어 논리)는 바람직하게는 512KB의 데이터를 캐시하도록 디자인된다. 예를 들어, L2 캐시(582)는 캐시가능 로드들/저장들, 데이터 사전추출들, 명령 추출들, 명령 사전추출들, 캐시 동작들, 및 배리어 동작들을 취급한다. L2 캐시(582)는 바람직하게는 8-웨이 세트 결합 시스템이다. L2 캐시(582)는 6 캐스트아웃 대기행렬들을 매칭시키는 6 재로드 대기행렬들(예를 들어, 6 RC 기계들), 및 8(64-바이트 폭) 저장 대기행렬들을 포함한다. L2 캐시(582)는 L1 캐시(570) 내의 데이터의 일부 또는 전부의 백업(backup) 복사본을 제공하도록 동작한다. 바람직하게는, 이것은 프로세싱 노드들이 핫-스와프(hot-swap)되는 복구 상태에서 유용하다. 이러한 구성은 또한 L1 캐시(570)가 더 적은 포트들을 가지고 더욱 빠르게 동작할 수 있게 하고, (요청들이 L2 캐시(582)에서 정지하기 때문에) 더 빠른 캐시-투-캐시(cache-to-cache) 전송들을 허용한다. 이러한 구성은 또한 캐 시 일관성 관리를 통과시키는 메커니즘을 L2 캐시 메모리(582)로 제공한다.
NCU(584)는 CIU(586), L2 캐시 메모리(582), 및 BIU(580)와 원활히 상호작용하고, 일반적으로 PU 코어(504A)와 메모리 시스템 사이의 캐시 불능 동작들에 대한 대기행렬/버퍼링 회로로서 기능한다. NCU(584)는, 바람직하게는 캐시-금지 로드/저장들, 배리어 동작들, 및 캐시 일관성 동작들과 같은 L2 캐시(582)에 의해 취급되지 않는 PU 코어(504A)와의 모든 통신들을 취급한다. NCU(584)는 바람직하게는 반 속도로 실행되어 상술한 전력 손실 목적들을 충족시킨다.
CIU(586)는 MFC(504B)와 PU 코어(504A)의 경계에 배치되고, 실행 스테이지들(576, 578), 명령 유닛(572), 및 MMU 유닛(588)으로부터 오고 L2 캐시(582) 및 NCU(584)로 가는 요청들에 대한 경로설정, 조정(arbitration), 및 흐름 제어 포인트로서 동작한다. PU 코어(504A) 및 MMU(588)는 바람직하게는 최고 속도로 실행되고, L2 캐시(582) 및 NCU(584)는 2:1 속도 비로 동작가능하다. 그러므로 주파수 경계가 CIU(586) 내에 존재하고, CIU(586)의 기능들 중 하나는 2개의 주파수 영역들 사이에서 요청들을 전송하고 데이터를 재로드하기 때문에 주파수 교차를 적절히 취급한다.
CIU(586)는 다음의 3개의 기능 블록들로 이루어진다: 로드 유닛, 저장 유닛, 및 재로드 유닛. 게다가, 데이터 사전추출 기능은 CIU(586)에 의해 수행되고 바람직하게는 로드 유닛의 기능부이다. CIU(586)는: 바람직하게는 (i) 로드 및 저장 요청들을 PU 코어(504A) 및 MMU(588)로부터의 로드 및 저장 요청들을 수신하고; (ii) 최고 속도 클록 주파수로부터의 요청들을 반 속도로 변환하며(2:1 클록 주파수 변 환); (iii) L2 캐시(582)로의 캐시가능 요청들을 경로설정하고 NCU(584)로의 캐시불능 요청들을 경로설정하며; (iv) L2 캐시(582) 및 NCU(584)로의 요청들 사이를 공정하게 조정하고; (v) 요청들이 타겟 윈도우에 수신되고 유출이 방지되도록 L2 캐시(582) 및 NCU(584)로의 발송을 통해 흐름 제어를 제공하며; (vi) 로드 복귀 데이터를 수신하고 실행 스테이지들(576, 578), 명령 유닛(572) 또는 MMU(588)로 경로설정하고; (vii) 스누프 요청들을 실행 스테이지들(576, 578), 명령 유닛(572), 또는 MMU(588)로 보내며; (viii) 로드 복귀 데이터 및 스누프 트래픽(snoop traffic)을 반 속도로부터 최고 속도로 변환한다.
MMU(588)는 바람직하게는 제 2 레벨 주소 번역 기능에 의해 PU 코어(540A)에 대한 주소 번역을 제공한다. 제 1 레벨의 번역은 MMU(588)보다 더 작고 빠른 분리된 명령 및 (실 주소 번역에 효과적인) 데이터 ERAT 배열들에 의해 PU 코어(504A)에서 제공되는 것이 바람직하다.
바람직한 실시형태에서, PU(504)는 64-비트 실시형태를 가지면서 46GHz, 10F04로 동작한다. (하나 이상의 전용 레지스터들이 더 작을지라도) 레지스터들은 바람직하게는 64 비트 길이이고 유효 주소들은 64 비트길이이다. 명령 유닛(570), 레지스터들(572) 및 실행 스테이지들(574 및 576)은 바람직하게는 파워피씨 기술을 이용하여 실시되고 (RISC) 연산 기술을 달성한다.
이러한 컴퓨터 시스템의 모듈 구조에 관한 추가적인 세부사항들은 미국특허공보 제6,526,491호에서 발견된다.
본 발명의 적어도 하나의 추가적인 실시형태에 따르면, 이상에서 기술된 방 법들 및 장치들은 도면들에 도시된 적합한 하드웨어를 이용하여 달성된다. 이러한 하드웨어는 표준 디지털 회로와 같은 임의의 공지 기술들, 소프트웨어 및/또는 펌웨어 프로그램들을 실행하도록 동작가능한 임의의 공지 프로세서들, 및 프로그램가능 리드 온리 메모리(PROM; programmable read only memory)들, 프로그램가능 배열 논리 장치(PAL; programmable array logic device)들 등과 같은 하나 이상의 프로그램가능 디지털 장치들 또는 시스템들을 이용하여 실시된다. 게다가, 도면들에 도시된 기구들이 특정 기능 블록들로 분할되는 것으로 도시될지라도, 이러한 블록들은 분리된 회로에 의해 실시되고 그리고/또는 하나 이상의 기능 유닛들로 결합한다. 게다가, 본 발명의 다양한 실시형태들은, 운반성 및/또는 분배를 위한 (플로피 디스크, 메모리 칩 등과 같은) 적합한 저장 매체에 저장되는 소프트웨어 및/또는 펌웨어 프로그램에 의해 실시된다.
본 발명이 특정 실시형태들과 관련하여 기술되었을지라도, 이러한 실시형태들은 본 발명의 원리들 및 응용들을 단지 예시한 것에 지나지 않는다. 많은 변형들이 예시적인 실시형태들에 행해지고 다른 배열들은 첨부된 청구범위에 의해 정해진 본 발명의 사상과 범위로부터 벗어나지 않게 고안된다.
본 발명은 주소를 외부 메모리 공간으로부터 프로세서의 메모리 공간으로 번역하기 위한 기술에 적용될 수 있다.
Claims (28)
- 제 1 중간 주소를 생성하기 위해 기준 주소를 외부 주소에 추가하는 단계;세그먼트 테이블(segment table)의 각각의 엔트리(entry)는 메모리의 다른 세그먼트를 나타내고, 상기 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 상기 제 1 중간 주소의 제 1 부분을 이용하는 단계;페이지 테이블(page table) 내의 각각의 엔트리는, 상기 메모리 내의 물리적 주소의 적어도 일부분을 포함하고, 상기 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 상기 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을 페이지 테이블 내의 복수의 엔트리들 중 하나 이상에 대한 참조로서 이용하는 단계; 및상기 메모리 내에 존재하며 상기 외부 주소에 대해 번역된 물리적 주소의 적어도 일부분을 획득하기 위하여 상기 제 1 중간 주소의 제 2 부분의 일부 또는 모두를 상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터(pointer)로서 이용하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서, 상기 제 1 중간 주소의 제 1 부분을 이용하는 단계는, 상기 제 1 중간 주소의 제 1 부분의 최상위 비트(most significant bits)를 상기 세그먼트 테이블을 가리키는 포인터로서 이용하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 항 또는 제 2 항에 있어서, 상기 세그먼트 테이블의 각각의 엔트리는 각각의 세그먼트 내의 페이지 크기를 나타내는 비트 수를 포함하는 것을 특징으로 하는 방법.
- 제 3 항에 있어서, 상기 비트 수는 상기 세그먼트 테이블의 선택된 엔트리의 최상위 비트인 것을 특징으로 하는 방법.
- 제 1 항에 있어서,제 2 중간 주소를 생성하기 위해 상기 제 1 중간 주소의 제 2 부분을 이용하는 단계; 및상기 제 2 중간 주소의 적어도 일부분을 상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서, 상기 제 2 중간 주소의 비트를 분할하기 위해 상기 세그먼트 테이블의 선택된 엔트리의 비트 수를 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 6 항에 있어서, 상기 비트 수는 상기 세그먼트 테이블의 선택된 엔트리의 최상위 비트인 것을 특징으로 하는 방법.
- 제 6 항에 있어서, 상기 제 2 중간 주소의 최하위 비트(least significant bits) 수를 식별하기 위해, 상기 세그먼트 테이블의 선택된 엔트리의 비트 수를 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 8 항에 있어서, 상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 선택하기 위해 상기 제 2 중간 주소의 최상위 비트를 포인터로서 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 9 항에 있어서, 상기 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분을 이용하여, 상기 외부 주소에 대하여 상기 번역된 물리적 주소의 일부분을 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 10 항에 있어서, 상기 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분을 증가시키도록 상기 제 2 중간 주소의 최하위 비트를 이용하여 상기 외부 주소에 대하여 상기 번역된 물리적 주소를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 11 항에 있어서, 상기 제 2 중간 주소의 최하위 비트는 상기 번역된 물리 적 주소의 최하위 비트인 것을 특징으로 하는 방법.
- 제 5 항 내지 제 12 항 중 어느 한 항에 있어서, 상기 세그먼트 테이블의 선택된 엔트리의 일부분은, 상기 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹 중 최상위 엔트리를 가리키는 것을 특징으로 하는 방법.
- 제 13 항에 있어서, 상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 선택하기 위해 상기 제 2 중간 주소의 최상위 비트를 상기 그룹의 최상위 엔트리로부터의 오프셋(offset)으로서 이용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 세그먼트 테이블의 각각의 엔트리는 메모리의 다른 세그먼트를 나타내고, 상기 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 외부 주소의 제 1 부분을 포인터로서 이용하는 단계;페이지 테이블 내의 각각의 엔트리는, 상기 메모리 내의 물리적 주소의 적어도 일부분을 포함하고, 상기 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 상기 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을 상기 페이지 테이블 내의 복수의 엔트리들 중 하나 이상에 대한 참조로서 이용하는 단계; 및상기 외부 주소에 대해 상기 메모리로 적어도 부분적으로 번역된 물리적 주소를 얻도록, 상기 외부 주소의 제 2 부분을 상기 페이지 테이블 내의 엔트리들 중 하나를 가리키는 포인터로서 이용하는 단계;상기 외부 주소의 제 2 부분을 이용하여 제 1 중간주소를 생성하는 단계; 및상기 제 1 중간 주소의 적어도 일부분을 상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 중간 주소를 생성하기 위해 기준 주소를 외부 주소에 추가하도록 동작가능한 가산 회로; 및(i) 세그먼트 테이블의 각각의 엔트리는 메모리의 다른 세그먼트를 나타내고, 상기 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 상기 제 1 중간 주소의 제 1 부분을 포인터로서 이용하고, (ii) 페이지 테이블 내의 각각의 엔트리는 상기 메모리 내의 물리적 주소의 적어도 일부분을 포함하고, 상기 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 상기 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을 상기 페이지 테이블 내의 복수의 엔트리들 중 하나 이상에 대한 참조로서 이용하며, (iii) 상기 외부 주소에 대해 상기 메모리로 적어도 부분적으로 번역된 물리적 주소를 얻도록, 상기 제 1 중간 주소의 제 2 부분의 일부 또는 모두를 상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하도록 동작가능한 룩업 회로(look-up circuit)를 포함하는 것을 특징으로 하는 장치.
- 제 1 중간 주소를 생성하도록 기준 주소를 외부 주소에 추가하는 수단;세그먼트 테이블의 각각의 엔트리는 메모리의 다른 세그먼트를 나타내고, 상기 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 상기 제 1 중간 주소의 제 1 부분을 포인터로서 이용하는 수단;페이지 테이블 내의 각각의 엔트리는 상기 메모리 내의 물리적 주소의 적어도 일부분을 포함하고, 상기 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 상기 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을 상기 페이지 테이블 내의 복수의 엔트리들 중 하나 이상에 대한 참조로서 이용하는 수단; 및상기 외부 주소에 대해 상기 메모리로 적어도 부분적으로 번역된 물리적 주소를 얻도록 제 1 중간 주소의 제 2 부분의 일부 또는 모두를 상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하는 수단을 포함하는 것을 특징으로 하는 장치.
- 메모리에 결합될 수 있는 적어도 하나의 프로세서; 및외부 장치로부터 수신된 가상 주소를 상기 메모리 내의 물리적 주소로 번역하도록 동작가능한 주소 번역 회로를 포함하는 기구로서,상기 적어도 하나의 프로세서는 상기 주소 번역 회로에 의해 이용가능한 세그먼트 테이블 및 페이지 테이블을 생성하도록 동작가능하며; 상기 세그먼트 테이블은 각각이 상기 메모리의 다른 세그먼트를 나타내는 복수의 엔트리들을 포함하고; 상기 페이지 테이블은, 각각이 상기 메모리 내의 물리적 주소의 적어도 일부분을 가지고 상기 메모리의 세그먼트들 중 하나 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하는 복수의 엔트리들을 포함하며;상기 주소 번역 회로는 제 1 중간 주소를 생성하도록 기준 주소를 상기 가상 주소에 추가하며; 상기 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 상기 제 1 중간 주소의 최상위 비트를 포인터로서 이용하고; 상기 세그먼트 테이블의 선택된 엔트리의 적어도 일부분을, 상기 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹의 최상위 엔트리를 가리키는 포인터로서 이용하도록 동작가능한 것을 특징으로 하는 장치.
- 삭제
- 제 18 항에 있어서, 상기 주소 번역 회로는 제 2 중간 주소를 생성하기 위해 상기 제 1 중간 주소의 최하위 비트를 이용하도록 동작가능한 것을 특징으로 하는 장치.
- 제 20 항에 있어서, 상기 주소 번역 회로는, 상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 선택하기 위해 상기 제 2 중간 주소의 최상위 비트를 상기 그룹의 최상위 엔트리로부터의 오프셋으로서 이용하도록 동작가능한 것을 특징으로 하는 장치.
- 제 21 항에 있어서, 상기 주소 번역 회로는, 상기 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분을 이용하여 상기 물리적 주소의 일부분을 생성하도록 동작가능한 것을 특징으로 하는 장치.
- 제 22 항에 있어서, 상기 주소 번역 회로는, 상기 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분을 증가시키도록 상기 제 2 중간 주소의 최하위 비트를 이용하여 상기 물리적 주소를 생성하도록 동작가능한 것을 특징으로 하는 장치.
- 프로세싱 시스템이:제 1 중간 주소를 생성하기 위해 기준 주소를 외부 주소에 추가하는 동작;세그먼트 테이블의 각각의 엔트리가 메모리의 다른 세그먼트를 나타내고, 상기 세그먼트 테이블 내의 복수의 엔트리들 중 하나를 선택하기 위해 상기 제 1 중간 주소의 제 1 부분을 포인터로서 이용하는 동작;페이지 테이블 내의 각각의 엔트리는 상기 메모리 내의 물리적 주소의 적어도 일부분을 포함하고 상기 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하며, 상기 페이지 테이블 내의 선택된 엔트리는 상기 메모리의 선택된 세그먼트 내의 페이지를 나타내는 엔트리들의 일 그룹에 속하고, 상기 세그먼트 테이블의 선택된 엔트리의 적어도 최하위 비트를 상기 선택된 엔트리를 가리키는 포인터로서 이용하는 동작; 및상기 외부 주소에 대해 상기 메모리로 적어도 부분적으로 번역된 물리적 주소를 얻기 위해 상기 제 1 중간 주소의 제 2 부분의 일부 또는 모두를, 상기 페이 지 테이블 내의 참조된 엔트리들 중 하나를 가리키는 포인터로서 이용하는 동작을 행할 수 있게 하는 프로그램을 저장한 저장 매체.
- 제 24 항에 있어서, 상기 제 1 중간 주소의 제 1 부분을 포인터로서 이용하는 동작은, 상기 제 1 중간 주소의 제 1 부분의 최상위 비트를 상기 세그먼트 테이블을 가리키는 포인터로서 이용하는 동작을 포함하는 것을 특징으로 하는 프로그램을 저장한 저장 매체.
- 제 24 항 또는 제 25 항에 있어서,제 2 중간 주소를 생성하기 위해 상기 제 1 중간 주소의 제 2 부분을 이용하는 동작; 및상기 페이지 테이블 내의 참조된 엔트리들 중 하나를 선택하기 위해, 상기 제 2 중간 주소의 최상위 비트를 상기 그룹의 최상위 엔트리로부터의 오프셋으로서 이용하는 동작을 더 행할 수 있게 하는 것을 특징으로 하는 프로그램을 저장한 저장 매체.
- 제 26 항에 있어서, 상기 페이지 테이블 내의 선택된 엔트리 내의 물리적 주소의 일부분을 상기 물리적 주소의 최상위 비트로서 이용하는 동작을 더 행할 수 있게 하는 것을 특징으로 하는 프로그램을 저장한 저장 매체.
- 제 27 항에 있어서, 상기 제 2 중간 주소의 최하위 비트를 상기 물리적 주소의 최하위 비트로서 이용하는 동작을 더 행할 수 있게 하는 것을 특징으로 하는 프로그램을 저장한 저장 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/011,784 US7707385B2 (en) | 2004-12-14 | 2004-12-14 | Methods and apparatus for address translation from an external device to a memory of a processor |
US11/011,784 | 2004-12-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070089998A KR20070089998A (ko) | 2007-09-04 |
KR100881810B1 true KR100881810B1 (ko) | 2009-02-03 |
Family
ID=35999519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077015663A KR100881810B1 (ko) | 2004-12-14 | 2005-12-14 | 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7707385B2 (ko) |
EP (1) | EP1846829B1 (ko) |
JP (1) | JP2006172474A (ko) |
KR (1) | KR100881810B1 (ko) |
CN (1) | CN100549984C (ko) |
WO (1) | WO2006064961A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135187B2 (en) | 2011-01-31 | 2015-09-15 | Samsung Electronics Co., Ltd. | Apparatus and method for protecting memory in multi-processor system |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060155955A1 (en) * | 2005-01-10 | 2006-07-13 | Gschwind Michael K | SIMD-RISC processor module |
US20080065855A1 (en) * | 2006-09-13 | 2008-03-13 | King Matthew E | DMAC Address Translation Miss Handling Mechanism |
US7986327B1 (en) | 2006-10-23 | 2011-07-26 | Nvidia Corporation | Systems for efficient retrieval from tiled memory surface to linear memory display |
US7805587B1 (en) * | 2006-11-01 | 2010-09-28 | Nvidia Corporation | Memory addressing controlled by PTE fields |
KR101416879B1 (ko) * | 2008-10-06 | 2014-08-07 | 삼성전자주식회사 | 비휘발성 메모리의 동작 방법 |
US8549182B2 (en) * | 2010-06-23 | 2013-10-01 | International Business Machines Corporation | Store/store block instructions for communicating with adapters |
GB2493340A (en) * | 2011-07-28 | 2013-02-06 | St Microelectronics Res & Dev | Address mapping of boot transactions between dies in a system in package |
US9626288B2 (en) * | 2013-08-14 | 2017-04-18 | Skyera, Llc | Address translation for a non-volatile memory storage device |
CN105404597B (zh) * | 2015-10-21 | 2018-10-12 | 华为技术有限公司 | 数据传输的方法、设备及系统 |
US10176109B2 (en) * | 2017-04-20 | 2019-01-08 | Oracle International Corporation | Permuted memory access mapping |
CN110362509B (zh) * | 2018-04-10 | 2024-04-12 | 北京忆恒创源科技股份有限公司 | 统一地址转换方法与统一地址空间 |
WO2021072721A1 (zh) * | 2019-10-17 | 2021-04-22 | 华为技术有限公司 | 一种地址翻译方法及装置 |
CN112000593B (zh) * | 2020-07-31 | 2022-03-25 | 瑞芯微电子股份有限公司 | 一种PCIe设备管理方法及其运行系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4385352A (en) | 1973-05-16 | 1983-05-24 | Compagnie Internationale Pour L'informatique Cii-Honeywell Bull (Societe Anonyme) | Addressing of operands within a segment utilizing segment descriptors |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR130806A (ko) * | 1973-11-21 | |||
GB1498116A (en) | 1974-04-18 | 1978-01-18 | Honeywell Inf Systems | Data processing systems |
IT1049588B (it) | 1974-09-17 | 1981-02-10 | Siemens Ag | Dispositivo per eseguire operazioni di immissione emissione in un impanto elaboratore di dati funzionante con formulazione di in dirizzi virtuali |
US4356549A (en) * | 1980-04-02 | 1982-10-26 | Control Data Corporation | System page table apparatus |
FR2515404B1 (fr) | 1981-10-28 | 1987-06-26 | France Etat | Ensemble de gestion de la memoire d'un processeur |
AU597363B2 (en) | 1987-05-22 | 1990-05-31 | Honeywell Bull Inc. | Present bit recycle and detect logic for a memory management unit |
JPS6417138U (ko) | 1987-07-22 | 1989-01-27 | ||
EP0464333A3 (en) | 1990-07-03 | 1992-07-29 | International Business Machines Corporation | Virtual memory |
EP0506236A1 (en) * | 1991-03-13 | 1992-09-30 | International Business Machines Corporation | Address translation mechanism |
JPH087717B2 (ja) * | 1991-09-03 | 1996-01-29 | 富士通株式会社 | 動的アドレス変換処理装置 |
US5428759A (en) | 1992-03-30 | 1995-06-27 | Unisys Corporation | Associative memory system having segment and page descriptor content-addressable memories |
JPH06231047A (ja) * | 1993-02-05 | 1994-08-19 | Fujitsu Ltd | アドレス変換方法および装置 |
US5555387A (en) * | 1995-06-06 | 1996-09-10 | International Business Machines Corporation | Method and apparatus for implementing virtual memory having multiple selected page sizes |
US5652872A (en) | 1994-03-08 | 1997-07-29 | Exponential Technology, Inc. | Translator having segment bounds encoding for storage in a TLB |
US5644755A (en) * | 1995-02-24 | 1997-07-01 | Compaq Computer Corporation | Processor with virtual system mode |
US5752275A (en) * | 1995-03-31 | 1998-05-12 | Intel Corporation | Translation look-aside buffer including a single page size translation unit |
US6088780A (en) * | 1997-03-31 | 2000-07-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address |
JP2000148665A (ja) | 1998-11-17 | 2000-05-30 | Nec Eng Ltd | データ処理装置 |
US6349380B1 (en) * | 1999-03-12 | 2002-02-19 | Intel Corporation | Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor |
US6738889B2 (en) * | 1999-07-12 | 2004-05-18 | International Business Machines Corporation | Apparatus and method for providing simultaneous local and global addressing with hardware address translation |
WO2002057923A1 (fr) * | 2001-01-19 | 2002-07-25 | Sony Corporation | Dispositif de commande de protection de la memoire |
US6526491B2 (en) | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
-
2004
- 2004-12-14 US US11/011,784 patent/US7707385B2/en active Active
-
2005
- 2005-12-14 CN CNB2005800430121A patent/CN100549984C/zh not_active Expired - Fee Related
- 2005-12-14 WO PCT/JP2005/023429 patent/WO2006064961A1/en active Application Filing
- 2005-12-14 EP EP05819727.8A patent/EP1846829B1/en not_active Not-in-force
- 2005-12-14 KR KR1020077015663A patent/KR100881810B1/ko not_active IP Right Cessation
- 2005-12-14 JP JP2005360940A patent/JP2006172474A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4385352A (en) | 1973-05-16 | 1983-05-24 | Compagnie Internationale Pour L'informatique Cii-Honeywell Bull (Societe Anonyme) | Addressing of operands within a segment utilizing segment descriptors |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135187B2 (en) | 2011-01-31 | 2015-09-15 | Samsung Electronics Co., Ltd. | Apparatus and method for protecting memory in multi-processor system |
Also Published As
Publication number | Publication date |
---|---|
CN101080701A (zh) | 2007-11-28 |
EP1846829B1 (en) | 2013-07-03 |
KR20070089998A (ko) | 2007-09-04 |
JP2006172474A (ja) | 2006-06-29 |
EP1846829A1 (en) | 2007-10-24 |
US20060129786A1 (en) | 2006-06-15 |
CN100549984C (zh) | 2009-10-14 |
US7707385B2 (en) | 2010-04-27 |
WO2006064961A1 (en) | 2006-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100881810B1 (ko) | 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구 | |
JP4346612B2 (ja) | 情報処理方法および装置 | |
EP1861790B1 (en) | Methods and apparatus for virtualizing an address space | |
JP3802042B2 (ja) | キャッシュメモリ実装方法および装置、キャッシュメモリシステム | |
JP4322259B2 (ja) | マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置 | |
EP1839165B1 (en) | Methods and apparatus for hybrid dma queue and dma table | |
US7689784B2 (en) | Methods and apparatus for dynamic linking program overlay | |
JP4243318B2 (ja) | ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置 | |
JP4219369B2 (ja) | プロセッサシステム内においてスタックを分離して管理する方法および装置 | |
US20060259733A1 (en) | Methods and apparatus for resource management in a logically partitioned processing environment | |
US7818724B2 (en) | Methods and apparatus for instruction set emulation | |
JP2006172468A (ja) | システム内部のデータ転送を処理する装置および方法 | |
JP4583327B2 (ja) | 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置 | |
US20060179275A1 (en) | Methods and apparatus for processing instructions in a multi-processor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130111 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20140107 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20150105 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |