KR101131376B1 - 파션-프리 멀티-소켓 메모리 시스템 아키텍쳐 - Google Patents
파션-프리 멀티-소켓 메모리 시스템 아키텍쳐 Download PDFInfo
- Publication number
- KR101131376B1 KR101131376B1 KR1020090027790A KR20090027790A KR101131376B1 KR 101131376 B1 KR101131376 B1 KR 101131376B1 KR 1020090027790 A KR1020090027790 A KR 1020090027790A KR 20090027790 A KR20090027790 A KR 20090027790A KR 101131376 B1 KR101131376 B1 KR 101131376B1
- Authority
- KR
- South Korea
- Prior art keywords
- processors
- memory
- processor
- data
- page
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 173
- 238000000034 method Methods 0.000 claims abstract description 43
- 239000000872 buffer Substances 0.000 claims description 41
- 238000009877 rendering Methods 0.000 claims description 6
- 230000005055 memory storage Effects 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- 230000009977 dual effect Effects 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000003860 storage Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000000302 molecular modelling Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012876 topography Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
처리량 어플리케이션(throughput application)들을 위한 메모리 대역폭을 증가시키는 기술이 개시된다. 일 실시예에서, 특히 처리량 어플리케이션들에 대하여 메모리 액세스 클럭의 반 사이클에 하나 이상의 메모리 저장 영역 사이의 페이지들을 파이프라이닝함으로써 상호접속 트레이스(interconnect trace) 또는 핀 카운트(pin count)를 증가시키지 않고 메모리 대역폭이 증가될 수 있다.
대역폭, 처리량 어플리케이션, 파이프라인, 핀 카운트,
Description
본 발명의 실시예들은 일반적으로 정보 처리 분야에 관한 것으로, 보다 구체적으로는 멀티 소켓 메모리 인터페이스 분야에 관한 것이다.
보다 많은 어플리케이션들이 멀티 프로세싱 시스템 및 마이크로 프로세서들의 병렬 프로세싱 능력의 이점을 계속해서 취함에 따라 보다 큰 메모리 대역폭을 용이하게 할 필요가 증가하고 있다. 병렬 어플리케이션들은 그래픽 어플리케이션, 금융 어플리케이션, 의료 및 생체기술 어플리케이션, 또는 예를 들어 SIMD(single-instruction multiple-data) 인스트럭션을 통해 많은 데이터 세트를 동시에 동작시키는 것과 관련된 임의의 다른 어플리케이션을 포함할 수 있다. 어느 정도까지는, 보다 전통적이고 순차적인 중앙 처리 장치(CPU) 워크로드들은, 그들이 동작하는 데이터 구조들의 사이즈에 따라, 보다 큰 메모리 대역폭 및 데이터 버스 사이즈를 요구하거나 아니면 그로부터 이익을 얻을 수도 있다.
그래픽 어플리케이션은, 예를 들어 텍스쳐링 동작을 수행하거나 또는 3차원(3D) 그래픽 장면을 렌더링하는 것과 병렬로 다각형 또는 다각형들의 다수 픽셀 들에 대해 다른 영향을 미치는 경향이 있다. 몇몇 텍스쳐의 사이즈 또는 다른 많은 데이터 구조들은 이 데이터를 신속하게 검색 및 저장하기 위해 하나 이상의 메모리 저장 영역(예를 들어, DRAM)에 대해 하나 이상의 프로세서들로부터의 높은 대역폭을 요구하거나 아니면 이에 대한 필요성을 생성할 수 있다. 몇몇 종래 기술은 하나 이상의 프로세서 또는 프로세싱 코어들로부터 하나 이상의 메모리로의 다수의 핀 또는 버스 트레이스들을 증가시킴으로써 보다 큰 메모리 대역폭을 제공하고자 한다. 대역폭을 증가시키기 위해 오프-패키지 버스폭과 같은 상호접속 폭들을 증가시키는 것은 시스템 비용에 악영향을 줄 수 있고, 보다 일반적인 목적의 컴퓨팅 시스템들에 시스템 적용가능성을 제한할 수 있다.
몇몇 종래 기술에서는, 각 데이터 핀의 (스위칭 주파수를 증가시키는 것에 비해) 대역폭을 증가시키고/시키거나 더 많은 데이터 핀을 패키지에 부가함으로써 메모리 대역폭을 증가시킬 수 있다. 그러나, (예를 들면, 핀을 더 많이 부가함으로써) 버스폭 증가를 통해 대역폭을 증가시키는 것 및/또는 버스 주파수를 증가시키는 것에는 실제로(예를 들어, 경제적으로) 한계가 있다.
시스템 대역폭을 더 증가시키기 위해, 몇몇 종래 기술은 각 프로세서에 할당된 대응 메모리를 갖는 다수의 프로세서를 이용할 수 있다. 이것은 전형적으로 높은 대역폭 버스에 의해 상호접속된 프로세서와 할당된 메모리 사이의 쌍을 생성한다. 프로세서/메모리 쌍들은 그 후 다른 버스에 의해 서로 접속될 수도 있는데, 이것은 추가의 핀을 요구할 수도 있지만, 대응 메모리로부터 각 프로세서에 의해 페치된 데이터의 공유를 지원하는 대역폭을 갖지 않을 수도 있다. 하나의 메모리 로부터의 하나의 프로세서에 의해 액세스된 정보를 적절한 방식으로 다른 프로세서와 공유시킬 때의 어려움 때문에, 어플리케이션들은 프로세서/메모리 쌍들 간의 어플리케이션에 의해 행해지는 작업을 분할하고자 할 수 있다. 어플리케이션 분할은 상당한 레이턴시를 피하기 위해 어플리케이션 개발자가 적합한 프로세서/메모리 쌍 내에 데이터를 저장하여 액세스하는 것을 확인할 필요가 있기 때문에 어플리케이션 개발자에게 상당한 부담을 줄 수 있다. 어플리케이션에 코드/데이터 분할과 같은 제약을 둠으로써, 어플리케이션 개발 비용을 증가시키고, 휴대성을 저해하고, 이러한 어플리케이션들이 시장에서 더 성공하는 것을 방해할 수 있다.
유사한 요소에는 유사한 참조 번호를 부기한 첨부 도면을 참조하여 본 발명의 실시예들이 예로서 설명되지만 이에 제한되지 않는다.
본 발명의 실시예들은 병렬 또는 "처리량" 어플리케이션을 처리할 수 있는 것을 포함하는 프로세싱 디바이스 및 시스템에 관한 것이다. 몇몇 실시예들은 3D 그래픽 어플리케이션과 같은 어플리케이션을 위해 메모리 액세스를 처리하기 위한 적어도 2개의 프로세싱 유닛(예를 들어, 그래픽 프로세서), 및 적어도 2개의 프로세싱 유닛에 각각 접속된 DRAM 디바이스와 같은 적어도 2개의 저장 구조를 포함할 수 있고, 적어도 2개의 저장 구조 각각은 각 메모리로부터 판독된 데이터의 폭에 대응하는 저장 폭(예를 들어, 16 비트)을 갖는 정보를 저장하는 하나 이상의 버퍼를 포함하거나 그와 관련된다. 일 실시예에서, 각 버퍼가 분할되고, 폭이 구성가 능하고, 또는 다른 경우 2개의 상이한 프로세서들에 연결(예를 들어, 그들 각각의 메모리 컨트롤러를 경유)되는데, 여기서 각 버퍼의 일부분(예를 들어, 절반)은 하나의 프로세서에 제공될 데이터를 저장하고, 다른 부분(예를 들어, 절반)은 적어도 하나의 다른 프로세서에 연결되어, 각 프로세서가 각 메모리로부터 정보를 동시에 액세스할 수 있다. 일 실시예에서, 버퍼들의 일부의 수는 그로부터 데이터를 액세스하는 프로세서의 수에 기초하여 구성가능하다.
2 이상의 저장 구조들에 각 프로세서 액세스를 제공함으로써, 어플리케이션 소프트웨어는 2 이상의 저장 구조에 정보를 저장하여 그로부터 정보를 액세스할 수 있으므로, 프로그램 데이터 및 기타 정보가 저장되고 액세스되는 소프트웨어에 유연성을 제공한다. 또한, 본 발명의 실시예들은 특정 프로세서에 대응하는 것 이외의 다른 메모리 구조로부터의 정보를 소프트웨어가 액세스하게 할뿐만 아니라 각 프로세서의 메모리 인터페이스 대역폭을 최대화하면서 그렇게 할 수도 있다.
본 발명의 실시예들은 소프트웨어 어플리케이션들이 다수의 프로세서에 대응하는 다수의 저장 구조 내의 정보를 액세스하여 저장할 수 있게 한다. 이것은 일부 경우에 있어서, SIMD 또는 MIMD(multiple-instruction-multiple-data) 동작을 이용하는 병렬 인스트럭션 또는 어플리케이션을 처리할 때, 각 SIMD 또는 MIMD 동작이 배치되는 특정 메모리 구조에 관계없이, 다수의 메모리 구조로부터 오퍼랜드 데이터 요소들을 액세스할 수 있기 때문에 도움이 될 수 있다. 이는 많은 정보에 대해 동시에 동작을 행할 수 있는 3D 그래픽 또는 금융 어플리케이션 등의 어플리케이션에 특히 도움이 될 수 있다. 그러나, 마찬가지로 다수의 상이한 위치에 저 장될 수 있는 정보를 이용하는 몇몇 전통의, 보다 순차적인 CPU 어플리케이션에 대해서도 유용할 수 있다.
몇몇 실시예에서, "페이지"와 같은 세그먼트들에 따라 메모리가 조직되거나 액세스되는 경우, 그 페이지에 액세스하는 프로세서들(또는 메모리 인터페이스 로직)은 특정 메모리 구조의 페이지 사이즈 또는 조직을 프로세서나 메모리 컨트롤러의 페이징 사이즈 또는 스킴에 매핑하는 구조(예를 들어 "페이지 테이블")를 유지할 수 있다. 예를 들어, 일 실시예에서, 프로세서 또는 메모리 컨트롤러는 특정 메모리의 물리적 페이지를, 프로세서 또는 메모리 컨트롤러가 페이지를 액세스하는 프로그램에 응답하여 오픈하거나 클로즈할 수 있는, 가상 페이지의 세트 넘버 상에 매핑할 수 있다.
몇몇 실시예들에서, 각 프로세서 또는 메모리 인터페이스는 다른 프로세서 메모리 인테페이스에 의해 제어되거나 아니면 그에 대응할 수 있는 다른 메모리 구조에 액세스할 수 있기 때문에, 각 프로세서 또는 메모리 컨트롤러의 페이지 상태들(오픈/클로즈) 사이의 일관성(coherency)을 유지하기 위해 프로세서/메모리 컨트롤러들 사이의 일부 통신이 바람직할 수 있다. 일 실시예에서, n-와이드 상호접속(여기서 'n'은 채널/핀/레인/트레이스의 가변 수(1 이상)를 나타낼 수 있음)을 이용하여 각종 프로세서나 메모리 컨트롤러들 사이에 페이지 상태를 통신할 수 있기 때문에, 하나의 프로세서는 다른 프로세서가 액세스할 필요가 있을 수 있는 메모리의 페이지를 클로즈하지 않는다. 하나 이상의 메모리를 액세스하는 각종 프로세서 또는 메모리 컨트롤러들 사이에 페이지 상태를 통신함으로써, 불필요한 페이 지 오픈 또는 클로즈 동작이 회피될 수 있기 때문에, 각종 프로세서나 메모리 컨트롤러들 사이의 액세스 성능이 향상된다. 또한, 일부 실시예들에서, n-와이드 상호접속은 적당하지 않은 핀, 전력, 또는 기타 리소스들을 요구하지 않도록 비교적 낮은 대역폭일 수 있다.
유리하게는, 본 발명의 실시예들은 데이터가 저장되어 있거나 저장될 메모리 디바이스에 관계없이 다수의 프로세서에서 어플리케이션이 실행하게 할 수 있다. 이것은 예를 들어 하나의 그래픽 프로세서가 픽셀의 스크린의 절반을 렌더링하고 다른 그래픽 프로세서가 나머지 절반을 렌더링하는 그래픽 어플리케이션에서 특히 유용하다. 이 상황에서, 경계에 해당하는 삼각형들이 필터링될 때 레이턴시를 유발할 수 있는데, 그 이유는, 하나의 프로세서가 하나의 메모리로부터 인접하는 텍실(texil) 정보(대응 프로세서의 절반의 스크린 상의 텍실에 해당)를 액세스할 필요가 있을 것이고, 다른 프로세서는 다른 메모리로부터 인접하는 텍실 정보(대응 프로세서의 절반의 스크린 상의 텍실에 해당)를 액세스할 필요가 있을 것이기 때문이다. 이러한 상황에서, 대응하지 않는 메모리로부터의 정보를 필요로 하는 프로세서는, 프로세서들 사이에서 비교적 높은 대역폭 버스를 요구하는 대역폭을 소비하는 요청 프로세서에게 정보를 리턴할 필요가 있는 대응 프로세서를 통해 정보를 요청할 필요가 있을 수 있다. 아니면, 소프트웨어 개발자는 매우 어렵겠지만 특히 크로스-보더 삼각형(cross-border triangle)을 렌더링할 때 데이터를 저장하는 장소에 제한을 가해야 할 것이다.
한 프로세서가 프레임을 렌더링하고 다른 프로세서가 후속 프레임을 렌더링 하는 마찬가지의 상황이 존재한다. 특히, 반사와 같은 영향은 바로 선행하는 프레임으로부터의 정보에 의존하는 경우가 있다. 이 경우, 이전 프레임(하나의 프로세서/메모리 쌍에 대응)으로부터 현재 프레임(다른 프로세서/메모리 쌍에 대응)에서 정보가 요구되기 때문에 (상술한) 분할된 프레임을 다루는 경우와 동일한 레이턴시 문제점이 존재할 수 있다. 본 발명의 실시예들은, 일부 종래 기술의 대역폭 문제점 없이, 그리고 대응하는 데이터가 저장되는 장소를 알거나 고려하는 소프트웨어 없이, 분할 프레임 렌더링 예 및 교대 프레임 렌더링 예와 같은 상황을 처리할 수 있다. 이것은, 일 실시예에서, 본 발명의 일부 실시예에서 사용된 프로세서들이 사용되는 메모리들 사이에서 교대 방식으로 (정보의 페이지와 같은) 정보를 자동적으로(OS 또는 어플리케이션의 도움 없이) 저장하고, 메모리로부터 데이터를 액세스하기 위해 제공된 어드레스로부터 정보를 검색하는 사실로 인해 가능하다.
일 실시예에서, 페이지 테이블은 소프트웨어에 의해 제공된 어드레스를 처리량 어플리케이션을 실행하기 위해 사용되는 2개의 프로세서들에 대응하는 2개의 메모리들 내의 위치들에 매핑한다. 특히, 페이지 테이블은 2개의 메모리 내의 교대 위치에 저장된 정보의 어드레스들을 포함하는 테이블의 엔트리들을 액세스하기 위해 어드레스 비트를 이용한다. 따라서, 소프트웨어가 정보를 저장하거나 액세스하면, 페이지 테이블은 요청 소프트웨어(OS 또는 어플리케이션)가 정보를 실제로 저장하는 장소를 알거나 고려하지 않고 적절한 메모리에의 액세스를 자동 라우팅한다. 이러한 방식으로, 정보가 교대 방식으로 양 메모리로부터 버스트 속도로 액세스될 수 있기 때문에 각 프로세서의 메모리 인터페이스의 대역폭을 최대화하고 비 교적 높은 대역폭 버스를 회피하여 크로스-메모리/프로세서 액세스를 지원할 수 있다.
일부 실시예들에서, 다수의 프로세서들은 일관성 필터(coherency filter)를 사용하는 것에 의한 것과 같은 효율적인 방법으로 요청을 관리함으로써 요청 어플리케이션에 데이터를 제공할 수 있다. 일 실시예에서, 일관성 필터는 하나 이상의 일관성 테이블들 또는 하나 이상의 프로세서들에 대응하고 그에 의해 액세스가능한 다른 구조를 포함할 수 있어, 하나의 프로세서 상에서 실행되는 어플리케이션에 의한 데이터의 요청이, 그 프로세서가, 다른 프로세서에 의해 (예를 들어, 프로세서의 캐시, 버퍼 또는 다른 구조에서, 프로세서의 대응하는 메모리에서 현재 오픈된 페이지에 대해) 현재 액세스할 수 있는 데이터의 어드레스를 나타내는 테이블을 액세스하도록 할 수 있다. 요청된 데이터의 가장 최신 버전이 다른 프로세서의 캐시에 존재하면, 요청을 수신하는 프로세서는, 요청된 데이터를 요청 어플리케이션으로 되돌리기 위해 다른 프로세서에 신호를 알릴 수 있거나 또는 요청을 수신하는 프로세서는 n-와이드 프로세서간 상호접속을 통해 프로세서로부터 데이터를 검색할 수 있다. 일부 실시예들에서, 각각의 프로세서는, 각각의 프로세서가 프로세서 소켓에 대응할 수 있는, 다수의 프로세서들을 포함할 수 있다.
일부 실시예들에서, 상술된 기술들은 2, 3, 8 또는 그보다 많은 프로세서들 또는 코어들을 갖는 프로세서들 또는 시스템들에 적용될 수 있다. 또한, 본 발명의 실시예들은 범용 컴퓨터들, 그래픽 게임 콘손들, 그래픽 카드 어플리케이션들 등을 포함하는, 다수의 상이한 시스템 또는 처리 구성들 또는 어플리케이션에 적용 될 수 있다. 일 실시예에서, 본원에 개시된 기술들은 금융 어플리케이션들, 의료 어플리케이션들, 이미징 어플리케이션들 등과 같은, 3D 그래픽 또는 다른 어플리케이션들을 동작하는 하나 이상의 프로세서들을 포함한다. 다른 실시예들에서, 본원에 개시된 기술들은 순차적이거나 또는 더 전통적인 워크로드들을 운영하기 위한 범용 CPU와 관련하여 사용될 수 있다. 또 다른 실시예들에서, 본원에 개시된 기술들은 전통적인 CPU 및 그래픽 특정 로직("CPU+GPU")을 포함하는 프로세서들과 같은, 전통적인 CPU 워크로드들 및 처리량 어플리케이션들 둘 다를 운영하도록 설계된 하이브리드 프로세서들과 관련하여 사용될 수 있다. 일 실시예에서, 본원에 개시된 기술들은 SIMD 인스트럭션들을 수행할 수 있고, 그래픽 텍스쳐 샘플링 로직과 같은 병렬-어플리케이션 특정 로직과 함께 상호접속에 연결된 다수의 CPU 프로세서 코어들을 갖는 하나 이상의 프로세서들과 관련하여 사용된다.
도 1은 본 발명의 적어도 일 실시예가 이용될 수 있는 마이크로프로세서를 도시한다. 도 1은 전통적인 CPU 어플리케이션들, 처리량 어플리케이션들(예를 들어, 3D 그래픽 어플리케이션들) 또는 전통적인 CPU 및 처리량 어플리케이션들의 조합에 대해 사용될 수 있는 프로세서를 도시한다. 프로세서(100)는 링 상호접속(130)을 따라 구성된, 다수의 프로세서 코어들(100-1 내지 100-N), 전용 처리량 어플리케이션 하드웨어(110)(예를 들어, 그래픽 텍스쳐 샘플링 하드웨어), 메모리 인터페이스 로직(120)을 포함한다. 일부 실시예들에서, 프로세서(100)는 각각의 코어(100-1 내지 100-N) 내의 캐시들(101-1 내지 101-N)로부터의 정보를 포함하는 하나 이상의 최종-레벨 캐시들(135)을 포함할 수 있다. 일 실시예에서, 하나 이상의 프로세싱 코어들(100-1 내지 100-N)은 SIMD 동작들을 수행할 수 있다.
일 실시예에서, 메모리 컨트롤러는 그래픽 DRAM(105)과 같은 DRAM을 포함할 수 있는 프로세서(100)의 외측에 위치된 인터페이스 메모리를 포함할 수 있다. 일 실시예에서, 메모리 인터페이스는 16비트와 같은 소정의 폭을 가질 수 있고, 2KB와 같은 소정의 사이즈의 메모리 페이지들을 액세스할 수 있다. 하나보다 많은 프로세서(100)가 다른 프로세서 또는 메모리 컨트롤러에 의해 또는 그에 대응하여 제어되는 DRAM과 같은 하나 이상의 메모리들을 액세스할 수 있는 시스템들에서, 프로세서(100)는, 다양한 메모리들을 액세스하는 다양한 프로세서들 사이의 페이지 상태 일관성을 유지하기 위해, 상이한 프로세서 또는 메모리 컨트롤러에 또는 그로부터 정보를 통신하고, 수신하며 처리하는 로직(140)을 포함할 수도 있다. 일 실시예에서, 로직(140)은, 프로세서(100)와 동일 메모리를 액세스할 수 있는 다른 프로세서들 또는 메모리 컨트롤러들의 페이지 상태를 해석하는 페이지 테이블과 관련하여 일부 제어 또는 디코드 로직과 함께 레지스터 또는 다른 저장 영역을 포함할 수 있다. 프로세서(100)는 메모리의 페이지를 클로즈하거나 또는 메모리의 새로운 페이지를 오픈하는지를 결정하기 위해 이러한 일관성 정보를 사용할 수 있다. 또한, 프로세서(100)는 메모리의 소정의 페이지들의 상태를, 프로세서(100)와 동일한 메모리를 액세스하는 다른 프로세서들 또는 메모리 컨트롤러들에 통신할 수 있다.
일부 실시예들에서, 그래픽 텍스쳐들과 같은 정보, 또는 상대적으로 다량의 메모리 대역폭을 요구하는 다른 정보는, 정보가 저장되는 메모리에 대해 의식하거 나 또는 고려하는 어플리케이션 소프트웨어 없이 다른 프로세서(도시되지 않음)에 대응하는 다른 메모리로부터 액세스될 수 있다. 일 실시예에서, 시스템의 메모리 인터페이스는, DRAM 또는 DRAM의 어레이(예를 들어, DIMM)과 같은 적어도 2개의 메모리 저장 구조들에 어드레스들을 제공함으로써, 그리고 제1 메모리에서 프로세서로 데이터 폭의 제1 부분을 공급함과 동시에 제1 메모리에서 제2 프로세서로 데이터 폭의 제2 부분을 공급하는 한편, 제2 메모리의 데이터 폭의 제1 부분을 제1 프로세서에 그리고 제2 메모리의 데이터 폭의 제2 부분을 제2 프로세서에 공급함으로써 그의 유효 대역폭을 혼합할 수 있다.
일부 실시예들에서, 프로세서(100)는 도 1에 도시된 것보다 많거나 적은 수의 메모리 컨트롤러들을 포함할 수 있다. 또한, 도 1의 메모리 컨트롤러들은 프로세서(100)의 내부에 있을 수 있거나 또는 프로세서(100)의 외부에 있을 수 있다. 도 2는, 예를 들어, 일 실시예에 따른, 메모리 컨트롤러들이 그들 각각의 프로세서들 외부에 있는 듀얼 소켓 시스템을 도시하는 블록도이다.
구체적으로, 도 2는 메모리들(220 및 225)을 각각 제어하는 대응하는 메모리 컨트롤러들(210 및 215)에 연결된 프로세서(200 및 205)를 도시한다. 도 2에 도시된 바와 같이, 프로세서(200 및 205) 각각은 상호접속들(203, 207, 213 및 217)을 통해 메모리 컨트롤러들(210 및 215)과 통신한다. 또한, 프로세서들(200 및 205)은 링크(208)를 통해 페이지 상태 정보를 통신한다. 일 실시예에서, 어드레스들이 메모리들(220 및 225)에 제공되고, 그에 응답하여, 메모리의 내부, 메모리의 외부 또는 메모리 컨트롤러들의 내의 하나 이상의 버퍼들(320, 235, 240 및 245)에 어드 레싱된 위치들로부터 각각의 메모리로부터 데이터 워드가 판독된다. 일 실시예에서, 데이터 워드는 16비트이지만, 프로세서/메모리 컨트롤러/메모리 데이터버스의 폭에 따라 다른 사이즈일 수 있다. 일 실시예에서, 하나 이상의 버퍼들이 두 부분들(예를 들어, 이등분)로 구성되어, 프로세서(200)는 메모리 컨트롤러(210)에 대응하는 버퍼들(230 및 235) 중 하나의 절반을 판독함과 동시에 프로세서(200)는 메모리 컨트롤러(215)에 대응하는 버퍼들(240 및 245) 중 하나의 절반을 판독하는 한편, 프로세서(205)는 메모리 컨트롤러(210)에 대응하는 버퍼들(230 및 235) 중 하나의 나머지 절반 및 메모리 컨트롤러(215)에 대응하는 버퍼들(240 및 245) 중 하나의 나머지 절반을 판독한다.
일 실시예에서, 버퍼들은 버퍼들이 대응하는 메모리를 액세스할 수 있는 다수의 프로세서들에 대응하는 다수의 부분들로 분할되도록 구성될 수 있다. 예를 들어, 버퍼들은 듀얼 프로세서 시스템에서 절반, 쿼드(quad)-프로세서 시스템에서 1/4, 옥탈(octal)-프로세서 시스템에서 1/8 등으로 분할하도록 구성될 수 있다. 일 실시예에서, 로직은 시스템의 메모리를 액세스하는 프로세서들의 수를 검출하고, 그에 응답하여 버퍼들을 자동적으로(동적으로) 분할하는데 사용될 수 있다.
일 실시예에서, 각각의 메모리 컨트롤러에 대응하는 2개의 버퍼들 중 하나가 판독된 후, 메모리 컨트롤러들 각각에 대한 제2 버퍼는, 다음 클록 에지(edge) 동안 유사한 방식으로 즉시 판독될 수 있는 한편, 다음 데이터 워드는 메모리 컨트롤러들(210 및 215) 중 하나에 대응하는 이전에 판독된 버퍼로, 메모리들로부터 판독된다. 이러한 프로세스는 무한 수의 사이클 동안 계속되어, 데이터는 (더블-펌프 형 인터페이스의 경우에) 각각의 사이클 또는 각각의 반-사이클에서, 프로세서들(200 및 205)에 의해 메모리들 둘 다로부터 연속 판독(또는 그에 연속 기입)될 수 있다. 일 실시예에서, 각각의 메모리의 다수의 페이지들이 동시에 오픈된 채 남아있을 수 있어, 각각의 액세스에 대해 새로운 페이지 클로즈/오픈 사이클이 수행될 필요는 없다. 그러나, 새로운 페이지가 오픈될 필요가 있다면, 프로세서들 중 하나는 링크(208)를 통해 페이지가 클로즈되거나 또는 오픈될 것을 다른 것에게 알려, 예를 들어, 프로세서들 중 하나에 의해 사용되는 페이지가 클로즈되지 않는다. 이러한 방법으로, 2개의 프로세서들의 페이지 상태는 일관성을 유지할 수 있다.
메모리 컨트롤러들(210 및 215)은 일 실시예에서, 프로세서들(200 및 205)의 내부에 있을 수 있다. 도 3은 일 실시예에 따른, 메모리 컨트롤러들이 그들 각각의 프로세서들(300 및 305)의 내부에 있는 듀얼 소켓 시스템을 도시하는 블록도이다. 일 실시예에서, 버퍼들(330, 335, 340 및 345)은 DIMM 회로 보드 상에서와 같이, 메모리들(320 및 325) 내부 또는 메모리들의 외부 중 하나에 위치된다. 일 실시예에서, 도 2를 참조하여 개시된 기술들과 동일한 방식으로, 정보는 메모리들(320 및 325)에 기입되거나 또는 그로부터 판독될 수 있다.
도 4는 도 2 또는 도 3과 연관된 타이밍도를 도시하고, 그에 따라 적어도 하나의 실시예가 수행될 수 있다. 일 실시예에 따르면, 도 4는 각각의 메모리로부터 도 2 및 3에 도시된 각각의 프로세서로 통신된 데이터 절반에 대응하는 데이터 신호들(410, 415, 420 및 425) 및 어드레스(401, 405)를 도시한다. 도 4로부터 분명 해질 바와 같이, 본 발명의 실시예들은 데이터가 각각의 반 클록 사이클 동안, 또는 일부 실시예들에서, 각각의 클록 사이클 동안 판독되는 것을 용이하게 할 수 있다.
도 4의 타이밍도에 도시된 기술들은 2개의 상이한 메모리들로부터 판독하는 2개보다 많은 프로세서들을 수용하도록 확장될 수 있다. 도 5는 본 발명의 적어도 하나의 실시예가 수행될 수 있는 쿼드-소켓 시스템을 도시한다. 도 5의 쿼드-소켓 시스템에서, 임의의 프로세서(500-1 내지 500-4)는 임의의 메모리(510-1 내지 510-4)로부터 동시에 판독될 수 있어, 소프트웨어 어플리케이션은 데이터가 위치되는 곳에 대해 고려할 필요가 없다.
도 6은 일 실시예에 따른, 도 5의 쿼드-소켓 시스템에 대응하는 타이밍도를 도시한다. 일 실시예에 따르면, 도 6은 각각의 메모리로부터 도 5에 도시된 각각의 프로세서로 통신된 데이터 절반에 대응하는 데이터 신호들(610, 615, 620, 625, 630, 635, 640 및 645) 및 어드레스(601, 602, 603, 605)를 도시한다. 도 6으로부터 명백해지는 바와 같이, 본 발명의 실시예들은 데이터가 각각의 반 클록 사이클 동안 또는 일부 실시예들에서, 각각의 클록 사이클 동안 판독되는 것을 용이하게 할 수 있다는 것은 사실이다.
도 7은 본 발명의 적어도 하나의 실시예를 수행하기 위해 이용될 수 있는 동작들의 흐름도이다. 일 실시예에서, 동작(701) 시, 제1 프로세서 및 제2 프로세서 또는 대응하는 메모리 컨트롤러 각각으로부터 상이한 메모리들(예를 들어, 캐시, DRAM 등)로 두 개의 어드레스들이 제공된다. 동작(705) 시, 제1 폭의 정보는, 메 모리들에 제공되고, 제1 및 제2 메모리들에 각각 대응하는 제1 및 제2 버퍼 각각에 일시적으로 저장된 어드레스들이 가리키는 각 메모리 내의 위치로부터 검색된다. 이 시점에, 동작 710에서는, 제1 프로세서/메모리 컨트롤러는 제1 버퍼의 절반 및 제2 버퍼의 절반을 동시에 판독할 수 있고, 제2 프로세서는 제1 및 제2 버퍼들의 다른 절반들을 동시에 판독할 수 있다. 동작 715에서, 프로세서들이 제1 및 제2 버퍼들로부터 데이터를 판독하고 있는 동안에, 제1 및 제2 프로세서/메모리 컨트롤러로부터 제1 및 제2 메모리들로의 어드레스가 가리키는 다른 위치로부터 제2 폭의 정보가 검색되고, 제1 및 제2 메모리에 각각 대응하는 제3 및 제4 버퍼에 각각 일시적으로 저장된다. 동작 720에서, 제1 프로세서/메모리 컨트롤러는 제3 버퍼의 절반 및 제4 버퍼의 절반을 동시에 판독할 수 있고, 제2 프로세서는 제3 및 제4 버퍼들의 다른 절반들을 동시에 판독할 수 있다.
동작들은 데이터의 전체 페이지 길이 동안, 또는 일부 실시예들에서, 더 길게, 연속하여 반복될 수 있고, 여기서, 후속 페이지들은 판독 동작들의 액세스 레이트에 영향을 주지 않고 오픈될 수 있다. 또한, 일부 실시예들에서, 2개의 상이한 메모리의 각각에 대응하는 2개의 버퍼보다 적거나 많이 있을 수 있다. 일 실시예에서, 제1 및 제2 폭의 데이터는 각각 16 비트이다. 그러나, 다른 실시예들에서, 제1 및 제2 폭의 데이터는 더 크거나 더 작을 수 있다. 또한, 일부 실시예들에서, 전술한 동작들은 4개, 8개, 또는 임의 수의 프로세서 또는 메모리 디바이스로 확장될 수 있다. 일 실시예에서, 각각의 프로세서는 그래픽 프로세서이지만, 일부 실시예들에서, 프로세서들 중 전부 또는 일부는 범용 프로세서들 또는 범용 프로세서와 그래픽 프로세서의 일부 조합일 수 있다. 전술한 동작들은, 일 실시예에서, 그래픽 어플리케이션들, 금융 어플리케이션들, 분자 모델링 어플리케이션들, 또는 다수의 데이터 요소들에 대한 동작들/인스트럭션들을 동시에 수행하는 것을 포함하는 다른 어플리케이션들과 같은 처리량 어플리케이션들의 성능을 개선하기 위해 이용될 수 있다.
본 발명의 실시예들은 게이밍 콘솔 및 범용 컴퓨터 플랫폼을 포함한 다양한 구성의 다양한 플랫폼에서 이용될 수 있다. 또한, 다양한 실시예들과 함께 이용되는 프로세서들 및 메모리들은 특정 시스템 또는 어플리케이션의 요구 및 제약에 따라, 다수의 방법으로 구성될 수 있다.
도 8은 적어도 일 실시예가 이용될 수 있는 듀얼 소켓 시스템의 구성을 도시하는 블록도이다. 도 8은 프로세서들(801 및 805)이 메모리들(810, 815, 820 및 825)에 연결되어 있는 것을 예시하고 있다. 도 8의 구성은 일부 어플리케이션들에서 수용가능하거나 바람직할 수 있는 회로 기판의 다수 층에서 교차(crossing) 상호접속부(830, 835)를 라우팅하는 것을 수반할 수 있다.
도 9는 적어도 일 실시예가 이용될 수 있는 듀얼 소켓 시스템의 다른 구성을 도시하는 블록도이다. 도 9는 2개의 프로세서(901, 905)가 4개의 메모리(910, 915, 920, 925)에 연결되어 있는 것을 도시하고 있다. 도 9에 도시된 구성은 다수 층에서 상호접속부들을 라우팅하는 것을 수반하지 않을 수 있는데, 그 이유는 교차 상호접속부들이 존재하지 않기 때문이다. 플랫폼 또는 어플리케이션의 요구에 따라 다른 구성들이 이용될 수 있다. 또한, 본 발명의 실시예들은 다수의 상이한 상 호접속 토포그래피, 구성, 프로토콜 등을 갖는 다수의 상이한 시스템에서 이용될 수 있다.
도 10은 예를 들어, 본 발명의 일 실시예가 이용될 수 있는 공유 버스 컴퓨터 시스템(예를 들어, FSB(front-side-bus) 컴퓨터 시스템)을 도시한다. 임의의 프로세서(1001, 1005, 1010 또는 1015)는 프로세서 코어들(1023, 1027, 1033, 1037, 1043, 1047, 1053, 1057) 중 하나 내의 또는 하나와 연관되는 임의의 로컬 레벨 1(L1) 캐시 메모리(1020, 1025, 1030, 1035, 1040, 1045, 1050, 1055)로부터의 정보에 액세스할 수 있는 비대칭 코어들(성능, 전력, 동작 전압, 클록 속도, 또는 ISA가 상이함)을 포함할 수 있다. 또한, 임의의 프로세서(1001, 1005, 1010, 또는 1015)는 칩셋(1065)을 통해 시스템 메모리(1060)로부터 또는 공유된 레벨 2(L2) 캐시들(1003, 1007, 1013, 1017) 중 어느 하나로부터의 정보에 액세스할 수 있다.
본 발명의 실시예들은 도 10에 도시된 프로세서들 또는 에이전트들 중 임의의 것에 존재할 수 있다. 예를 들어, 로직(1019)은 임의의 또는 모든 프로세서들(1023, 1027, 1033, 1037, 1043, 1047, 1053, 1057) 내에 포함되어, 적어도 일 실시예의 양태들을 수행할 수 있다. 특히, 로직(1019)은, 페이지가 다른 에이전트에 의해 현재 액세스되고 있는지 여부에 따라, 메모리의 페이지를 오픈하거나 클로즈할지 여부를 판단하기 위해 시스템의 다른 에이전트들로부터 신호들을 검출, 전송 및 해석하는 데 이용될 수 있다. 다른 실시예들에서, 로직(1019)은 다수 에이전트 사이에 분배된다. 또 다른 실시예들에서, 로직(1060)은 소프트웨어, 하드웨 어, 또는 그의 일부 조합을 포함할 수 있다.
도 10에 도시된 FSB 컴퓨터 시스템 이외에, 점대점(P2P) 상호접속 시스템들 및 링 상호접속 시스템들을 포함한, 다른 시스템 구성들이 본 발명의 다양한 실시예와 함께 이용될 수 있다. 예를 들어, 도 11의 P2P 시스템은 여러 개의 프로세서를 포함할 수 있는데, 2개의 프로세서(1170, 1180)만이 예로서 도시된다. 프로세서들(1170, 1180)은 각각 메모리(112, 114)와 접속하기 위해 로컬 메모리 컨트롤러 허브(MCH)(1172, 1182)를 포함할 수 있다. 프로세서들(1170, 1180)은 점대점(PtP) 인터페이스 회로들(1178, 1188)을 이용하여 PtP 인터페이스(1150)를 통해 데이터를 교환할 수 있다. 프로세서들(1170, 1180)은 각각 점대점 인터페이스 회로들(1176, 1194, 1186, 1198)을 이용하여 개별 PtP 인터페이스들(1152, 1154)을 통해 칩셋(1190)과 데이터를 교환할 수 있다. 칩셋(1190)은 또한 고성능 그래픽 인터페이스(1139)를 통해 고성능 그래픽 회로(1138)와 데이터를 교환할 수 있다.
본 발명의 실시예들은 도 11 내의 임의의 프로세서 또는 에이전트에 포함될 수 있다. 예를 들어, 로직(1199)은 적어도 일 실시예의 양태들을 수행하기 위해 프로세서들(1170, 1180) 중 어느 하나 또는 둘다 내에 포함될 수 있다. 특히, 로직(1199)은 페이지가 현재 다른 에이전트에 의해 액세스되어 있는지 여부에 따라, 메모리의 페이지를 오픈하거나 클로즈할지 여부를 판단하기 위해 시스템의 다른 에이전트들로부터 신호들을 검출, 전송 및 해석하는 데 이용될 수 있다. 다른 실시예들에서, 로직(1199)은 다수 에이전트들 사이에 분배된다. 또 다른 실시예들에서, 로직(1099)은 소프트웨어, 하드웨어, 또는 그의 일부 조합을 포함할 수 있다.
많은 상이한 유형의 프로세싱 디바이스들은 이러한 프로세스 재할당 기술들의 이용으로부터 이득이 있을 수 있다. 예를 들어, 프로세싱 유닛들(600-1 내지 600-N)은 범용 프로세서들(예를 들어, 마이크로프로세서들)일 수 있거나, 또는 다중 코어(단일 다이 상(on a single die)) 마이크로프로세서를 위한 마이크로프로세서 코어들일 수 있다. 대안적으로, 다수의 병렬 유닛 또는 코어와 함께 시스템에서 이용될 수 있는 디지털 신호 프로세서들, 그래픽 프로세서들, 네트워크 프로세서들, 또는 임의 유형의 특수 목적용 프로세서는 프로세싱 유닛들 사이에서 천이하는 열(또는 전력) 자극(motivated) 프로세스로부터 이득을 얻을 수 있다. 프로세싱 유닛들 또는 프로세서들은 동일할 수 있거나, 또는 적어도 부분적인 기능 오버랩을 가질 수 있다. 즉, 각각의 프로세싱 유닛은 하나보다 많은 프로세싱 유닛 또는 프로세서 상에서 실행될 수 있는 적어도 일부(전부가 아닌 경우) 프로세스들이 존재하도록 하는 인스트럭션들 또는 명령들의 일부 공통 세트를 갖는다. 다른 실시예들에서, 프로세싱 유닛들은 상이한 성능, 트랜지스터의 수, 전력 소비 또는 열 특성, 클록 주파수, 또는 ISA 중 임의의 것 또는 조합을 갖는 것과 같이 많이 비대칭일 수 있다.
적절한 프로세싱 및 요청된 데이터의 반환을 용이하게 하기 위해, 적어도 일 실시예는 어플리케이션에 의해 요청되는 데이터를 검색하는 최선의(예를 들어, 가장 빠른) 방법을 결정하기 위해 일관성(coherency) 필터를 포함할 수 있다. 예를 들어, 일 실시예에서, 일관성 필터는 엔트리들이 시스템의 임의의 프로세서 또는 프로세서들에 의해 현재 액세스 가능한 데이터에 관한 정보를 포함하는 일관성 테 이블을 포함할 수 있다. 일 실시예에서, 프로세서를 위한 일관성 테이블은 시스템의 다른 프로세서의 캐시, 버퍼, 또는 다른 저장 구조체 내에 이용가능할 수 있는 데이터를 나타내는 어드레스의 목록을 포함하여, 어플리케이션이 데이터를 요청할 때, 프로세서는 먼저 그의 일관성 테이블을 검사하여 다른 프로세서가 현재 그 데이터를 갖고 있는지를 알아볼 수 있다. 그렇다면, 데이터는 프로세서간 n-와이드 상호접속(inter-processor n-wide interconnect)을 거쳐서 데이터를 검색하는 것에 의해 그 요청을 서비스하는 프로세서에 의해 검색될 수 있다. 테이블은 일 실시예에서 단지 어느 하나의 프로세서의 캐시/버퍼 등에서 이용가능한 데이터의 일부를 나타내기 때문에(사실상, 테이블은 거기에 포함된 정보의 양이 변화할 수 있음), n-와이드 프로세서간 상호접속에서의 트래픽은 일관성 테이블(들)의 사이즈 또는 정보에 따라 감소 또는 적어도 제어될 수 있다.
도 12는 일관성 필터를 포함하는, 본 발명의 일 실시예가 이용될 수 있는 시스템을 도시한다. 도 12에서, 프로세서(1205)에서 실행되는 어플리케이션 또는 쓰레드(thread)(1240)가 프로세서(1205)에 어드레스를 제공하는 것에 의해 데이터를 요청할 수 있다. 프로세서(1205)는 그 다음에 프로세서 또는 프로세서에 의해 액세스 가능한 일부 메모리에 저장된 일관성 테이블(1245)에 액세스하여, 요청된 데이터가 현재 프로세서(1200) 내의 버퍼 또는 캐시 내에 있는지 여부를 판단할 수 있다. 예를 들어, 테이블이 요청된 데이터가 현재 프로세서(1200)에서 이용가능함을 나타내는 경우, 프로세서(1205)는 상호접속(1208)을 거쳐서 프로세서(1200)로부터 데이터를 검색할 수 있어, 가장 적절한 가능한 방식으로 프로그램에 데이터를 제공할 수 있다. 일 실시예에서, 테이블은 프로세서(1205)에 어플리케이션 또는 쓰레드(1240)에 의해 제공된 어드레스의 일부분에 의해 참조된다. 또한, 적어도 일 실시예에서, 상이한 테이블(또는 동일한 테이블)은 시스템의 각각의 프로세서에 대응하고, 다른 프로세서에서 찾을 수 있는 각각의 요청된 어드레스를 위해 테이블 내에 엔트리를 생성하는 것에 의해 유지된다. 또한, 각각의 엔트리는 데이터가 다른 프로세서 내에서 찾아볼 수 없을 때를 나타내는 정보를 포함할 수 있거나, 그 엔트리가 완전히 제거될 수 있다. 다양한 일관성 테이블 유지 방식 및 알고리즘은 상호접속(1208)을 거쳐서 프로세서들 사이에 공유될 정보를 추적하는 데 이용될 수 있다.
적어도 일 실시예의 하나 이상의 양태들은 머신에 의해 판독될 때, 머신으로 하여금, 본원에 개시된 기술들을 수행하는 로직을 제조하게 하는 프로세서 내의 다양한 로직을 나타내는 머신 판독 가능한 매체에 저장된 대표 데이터에 의해 구현될 수 있다. "IP 코어들"로 알려진 이러한 표현들은, 유형의 머신 판독가능한 매체("테이프")에 저장되고, 다양한 고객들 또는 제조 설비들에 제공되어, 실제로 로직 또는 프로세서를 만드는 제조 머신들 내로 로딩된다.
그러므로, 마이크로 아키텍처 메모리 영역 액세스들을 처리하는(directing) 방법 및 장치가 설명되었다. 전술한 설명은 한정적이 아니라 예시적인 것으로 의도된다는 것을 이해할 것이다. 많은 다른 실시예들은 전술한 설명을 읽고 이해함으로써, 이 기술분야의 당업자에게 명백할 것이다. 따라서, 본 발명의 영역은 첨부된 특허청구범위가 부여하는 등가물들의 전 범위와 함께, 첨부된 특허청구범위를 참조하여 결정되어야 한다.
도 1은 본 발명의 적어도 일 실시예가 이용될 수 있는 멀티 프로세서 시스템의 블록도.
도 2는 일 실시예에 따른, 메모리 컨트롤러들이 그들 각각의 프로세서들 외부에 있는 듀얼 소켓 시스템을 도시하는 블록도.
도 3은 일 실시예에 따른, 메모리 컨트롤러들이 그들 각각의 프로세서 내부에 있는 듀얼 소켓 시스템을 도시하는 블록도.
도 4는 일 실시예에 따른, 도 2 및 도 3의 듀얼 소켓 시스템에 대응하는 타이밍도를 도시하는 도면.
도 5는 일 실시예에 따른, 쿼드 소켓 시스템을 도시하는 블록도.
도 6은 일 실시예에 따른, 도 5의 쿼드 소켓 시스템에 대응하는 타이밍도를 도시하는 도면.
도 7은 본 발명의 적어도 일 실시예를 수행하기 위해 이용될 수 있는 동작들의 흐름도.
도 8은 적어도 일 실시예가 이용될 수 있는 듀얼 소켓 시스템의 구성을 도시하는 블록도.
도 9는 적어도 일 실시예가 이용될 수 있는 듀얼 소켓 시스템의 다른 구성을 도시하는 블록도.
도 10은 적어도 일 실시예가 이용될 수 있는 공유 상호접속 시스템을 도시하는 도면.
도 11은 본 발명의 적어도 일 실시예가 이용될 수 있는 점대점 상호접속 컴퓨터 시스템을 도시하는 도면.
도 12는 본 발명의 일 실시예가 이용될 수 있는 시스템을 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
100 : 프로세서
100-1 ~ 100-N : 프로세싱 코어
101-1 ~ 101-N : 캐시
120 : 메모리 인터페이스 로직
135 : 최종-레벨 캐시
Claims (30)
- 적어도 두 개의 메모리에 연결된 적어도 두 개의 프로세서를 포함하고,상기 적어도 두 개의 프로세서 중 제1 프로세서는 상기 적어도 두 개의 메모리 중 제1 메모리에 저장된 데이터의 제1 부분 및 상기 적어도 두 개의 메모리 중 제2 메모리에 저장된 데이터의 제2 부분을 클럭 신호 기간의 제1 부분 내에 판독하고,상기 적어도 두 개의 프로세서 중 제2 프로세서는 상기 적어도 두 개의 메모리 중 제1 메모리에 저장된 데이터의 제3 부분 및 상기 적어도 두 개의 메모리 중 제2 메모리에 저장된 데이터의 제4 부분을 상기 클록 신호 기간의 제1 부분 내에 판독하는 것인 장치.
- 제1항에 있어서,상기 제1 메모리에 연결되어, 상기 제1 메모리로부터 상기 데이터의 제1 및 제3 부분이 판독된 후 상기 데이터의 제1 및 제3 부분을 저장하는 제1 버퍼를 더 포함하는 장치.
- 제2항에 있어서,상기 제2 메모리에 연결되어, 상기 제2 메모리로부터 상기 데이터의 제2 및 제4 부분이 판독된 후 상기 데이터의 제2 및 제4 부분을 저장하는 제2 버퍼를 더 포함하는 장치.
- 제3항에 있어서,상기 제1 프로세서는 상기 제1 버퍼의 제1 부분으로부터 상기 데이터의 제1 부분을 판독하고, 상기 제2 버퍼의 제3 부분으로부터 상기 데이터의 제3 부분을 판독하는 것인 장치.
- 제4항에 있어서,상기 제2 프로세서는 상기 제1 버퍼의 제2 부분으로부터 상기 데이터의 제2 부분을 판독하고, 상기 제2 버퍼의 제4 부분으로부터 상기 데이터의 제4 부분을 판독하는 것인 장치.
- 제1항에 있어서,상기 적어도 제1 및 제2 프로세서에 연결되어 상기 적어도 제1 및 제2 메모리에 대응하는 페이지 상태 정보(page state information)를 통신하는 상호접속 버스(interconnect bus)를 더 포함하는 장치.
- 제1항에 있어서,상기 데이터의 제1, 제2, 제3 및 제4 부분은 각각 동일한 비트 폭(bit width)을 갖는 장치.
- 제1항에 있어서,상기 적어도 제1 및 제2 프로세서는 3D(three-dimensional) 그래픽 연산들을 수행하는 것인 장치.
- 제1항에 있어서,상기 제1 클럭 기간의 제1 부분은 상기 제1 클럭 기간의 절반인 장치.
- 제1항에 있어서,상기 제1 클럭 기간의 제1 부분은 1 클럭 기간인 장치.
- 페이지 상태 정보를 제2 프로세서에 제공하는 제1 로직을 포함하고,상기 페이지 상태 정보는 제1 메모리의 제1 페이지가 클로즈(closed)될 것인지의 여부를 포함하고, 상기 제1 로직은, 상기 제2 프로세서가 상기 제1 페이지로부터의 정보에 액세스할 것임을 가리키는 경우에, 상기 제1 페이지가 클로즈되는 것을 방지하는 것인 프로세서.
- 제11항에 있어서,SIMD(single-instruction-multiple-data) 인스트럭션들을 수행하는 실행 로직(execution logic)을 더 포함하는 프로세서.
- 제11항에 있어서,상기 페이지 상태 정보는 상기 제1 및 제2 프로세서 사이에서 전용 상호접속 버스를 통하여 통신되는 것인 프로세서.
- 제11항에 있어서,상기 제2 프로세서로부터 페이지 상태 정보를 수신하는 제2 로직을 더 포함하고, 상기 페이지 상태 정보는 제2 메모리의 제2 페이지가 클로즈될 것인지의 여부를 포함하고, 상기 제2 프로세서는, 상기 프로세서가 상기 제2 페이지로부터의 정보에 액세스할 경우에, 상기 제2 페이지가 클로즈되는 것을 방지하는 것인 프로세서.
- 제14항에 있어서,상기 프로세서 및 상기 제2 프로세서는 각각 상기 제1 및 제2 메모리로부터의 정보에 병렬로 액세스하는 프로세서.
- 제14항에 있어서,상기 프로세서 또는 상기 제2 프로세서 중 하나의 프로세서가 제3 페이지의 정보에 액세스할 경우, 상기 제1 메모리 내에서 상기 제3 페이지가 오픈(open)되게 하는 제3 로직을 더 포함하는 프로세서.
- 제11항에 있어서,3D 그래픽 렌더링 로직을 더 포함하는 프로세서.
- 제17항에 있어서,상기 제2 프로세서는 3D 그래픽 렌더링 로직을 포함하는 프로세서.
- 복수의 메모리에 연결된 복수의 프로세서 - 상기 복수의 프로세서 각각은 상기 복수의 메모리 각각에 병렬로 액세스함 -; 및상기 복수의 프로세서에 연결되어 상기 복수의 프로세서 사이에서 페이지 상태 정보를 통신하는 복수의 상호접속 버스 - 상기 페이지 상태 정보는 상기 복수의 메모리의 각각의 페이지가 클로즈될 것인지의 여부를 포함하고, 각각의 프로세서는 다른 프로세서가 액세스하려고 하는 자신의 메모리의 페이지가 클로즈되는 것을 방지함 -를 포함하는 시스템.
- 제19항에 있어서,상기 복수의 프로세서 각각에 연결된 복수의 메모리 컨트롤러를 더 포함하는 시스템.
- 제20항에 있어서,상기 복수의 메모리 컨트롤러는 상기 복수의 프로세서 각각으로부터의 액세스들을 상기 복수의 메모리로 라우팅하는 것인 시스템.
- 제19항에 있어서,각각의 프로세서는 상기 복수의 메모리 각각으로부터 1/N 비트 폭의 데이터 워드를 액세스하며, "N"은 상기 복수의 프로세서의 개수에 대응하는 시스템.
- 제22항에 있어서,상기 복수의 메모리 각각은 상기 복수의 프로세서에 의해 병렬로 액세스되는 데이터를 저장하기 위한 버퍼에 연결되는 시스템.
- 제23항에 있어서,상기 버퍼는 16비트를 동시에 저장하는 것인 시스템.
- 멀티 프로세서 시스템에 의해 수행되는 방법으로서,메모리의 복수의 페이지를 오픈하는 단계 - 각 페이지는 상이한 메모리 내에 있음 -;상기 메모리의 복수의 페이지 각각으로부터 데이터에 액세스하여 복수의 프로세서에 상기 데이터를 병렬로 제공하는 단계;상기 메모리의 복수의 페이지 중 적어도 하나를 클로즈하도록 요청하는 단계 - 상기 요청하는 단계는 상기 메모리의 적어도 하나의 페이지를 제어하지 않는 상기 복수의 프로세서 중 하나의 프로세서로부터 상기 메모리의 적어도 하나의 페이지를 제어하는 상기 복수의 프로세서 중 다른 프로세서로 요청하는 것임 -; 및상기 복수의 프로세서 중 어떤 프로세서도 상기 메모리의 복수의 페이지 중 적어도 하나의 페이지에 액세스하고 있지 않은 경우 상기 페이지를 클로즈하기 위한 요청을 허가하는 단계를 포함하는 방법.
- 제25항에 있어서,상기 복수의 프로세서로 상기 요청의 표시(indication)를 통신하는 단계를 더 포함하는 방법.
- 제26항에 있어서,상기 표시는 상기 복수의 프로세서에 연결된 복수의 전용 상호접속 버스를 통하여 상기 복수의 프로세서에 통신되는 방법.
- 제27항에 있어서,상기 복수의 프로세서는 상기 복수의 메모리로부터의 데이터를 액세스하기 위한 복수의 메모리 컨트롤러를 포함하는 방법.
- 제27항에 있어서,상기 복수의 메모리는 상기 복수의 프로세서에 의해 상기 데이터가 액세스될 때까지 상기 데이터를 일시적으로 저장하는 복수의 버퍼를 포함하는 방법.
- 제25항에 있어서,상기 복수의 프로세서는 그래픽 프로세서인 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090027790A KR101131376B1 (ko) | 2008-03-31 | 2009-03-31 | 파션-프리 멀티-소켓 메모리 시스템 아키텍쳐 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/059,193 | 2008-03-31 | ||
KR1020090027790A KR101131376B1 (ko) | 2008-03-31 | 2009-03-31 | 파션-프리 멀티-소켓 메모리 시스템 아키텍쳐 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090104777A KR20090104777A (ko) | 2009-10-06 |
KR101131376B1 true KR101131376B1 (ko) | 2012-04-04 |
Family
ID=41534546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090027790A KR101131376B1 (ko) | 2008-03-31 | 2009-03-31 | 파션-프리 멀티-소켓 메모리 시스템 아키텍쳐 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101131376B1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4495567A (en) * | 1981-10-15 | 1985-01-22 | Codex Corporation | Multiprocessor/multimemory control system |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US6425063B1 (en) * | 1998-10-05 | 2002-07-23 | Mattson Bjoern Axel | Method and arrangement for memory management |
KR20060100143A (ko) * | 2005-03-16 | 2006-09-20 | 삼성전자주식회사 | 다수개의 프로세서들에 억세스 가능한 메모리 장치를 갖는시스템 |
-
2009
- 2009-03-31 KR KR1020090027790A patent/KR101131376B1/ko not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4495567A (en) * | 1981-10-15 | 1985-01-22 | Codex Corporation | Multiprocessor/multimemory control system |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US6425063B1 (en) * | 1998-10-05 | 2002-07-23 | Mattson Bjoern Axel | Method and arrangement for memory management |
KR20060100143A (ko) * | 2005-03-16 | 2006-09-20 | 삼성전자주식회사 | 다수개의 프로세서들에 억세스 가능한 메모리 장치를 갖는시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR20090104777A (ko) | 2009-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10181171B2 (en) | Sharing resources between a CPU and GPU | |
JP6417344B2 (ja) | 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法 | |
US9292900B2 (en) | Partition-free multi-socket memory system architecture | |
US7680988B1 (en) | Single interconnect providing read and write access to a memory shared by concurrent threads | |
US8645638B2 (en) | Shared single-access memory with management of multiple parallel requests | |
US8108625B1 (en) | Shared memory with parallel access and access conflict resolution mechanism | |
US8595425B2 (en) | Configurable cache for multiple clients | |
US8982140B2 (en) | Hierarchical memory addressing | |
KR101131376B1 (ko) | 파션-프리 멀티-소켓 메모리 시스템 아키텍쳐 |
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: 20150227 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |