KR20070022386A - 클러스터드 프로세서들에서의 통신 병렬처리트레이드-오프의 동적 관리 - Google Patents

클러스터드 프로세서들에서의 통신 병렬처리트레이드-오프의 동적 관리 Download PDF

Info

Publication number
KR20070022386A
KR20070022386A KR1020077000423A KR20077000423A KR20070022386A KR 20070022386 A KR20070022386 A KR 20070022386A KR 1020077000423 A KR1020077000423 A KR 1020077000423A KR 20077000423 A KR20077000423 A KR 20077000423A KR 20070022386 A KR20070022386 A KR 20070022386A
Authority
KR
South Korea
Prior art keywords
clusters
interval
cluster
cache
program
Prior art date
Application number
KR1020077000423A
Other languages
English (en)
Inventor
라지브 바라스브라모니안
산드야 드와르카다스
다비드 알보네시
Original Assignee
유니버시티 오브 로체스터
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 유니버시티 오브 로체스터 filed Critical 유니버시티 오브 로체스터
Priority to KR1020077000423A priority Critical patent/KR20070022386A/ko
Publication of KR20070022386A publication Critical patent/KR20070022386A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

병렬로 동작하는 다수의 클러스터들을 가진 프로세서에 있어서, 사용중인 클러스터들의 수는 다이나믹하게 변할 수 있다. 각 프로그램 페이즈의 시작시에, 구간에 대한 구성 옵션(configuration option)이 실행되어 최적 구성을 결정하고, 이 최적 구성은 다음 페이즈 변경이 검출될 때까지 사용된다. 최적 명령 구간은 최소 구간으로 시작하고 낮은 안정율에 도달할 때까지 그것을 2배로 함으로써 결정된다.
클러스터, 프로세서, 구성 옵션, 최적 명령 구간, 최소 구간

Description

클러스터드 프로세서들에서의 통신 병렬처리 트레이드-오프의 동적 관리{Dynamically managing the communication-parallelism trade-off in clustered processors}
관련 출원의 참조
본 출원은 2004년 6월 8일자로 출원된 미국 임시 특허 출원 제 60/577,607 호의 이익을 청구하며, 그 출원의 개시내용은 본 출원에 그 전체가 참조된다.
정부 소유권의 설명
본 발명에 이르는 연구는 NSF 허여 EIA-0080124, CCR-9811929, CCR-9988361, CCR-0219848, 및 ECS-0225413에 의해; AFRL 협약 F29601-00-K-0182하의 DARPA/ITO에 의해; 및 협력 동의서 DE-FC03-92SF 19460하의 관성 밀폐 융합의 에너지청의 미국분과에 의해 부분적으로 지원된다. 정부는 본 발명의 특정 권리를 갖는다.
발명의 분야
본 발명은 클러스터드 프로세서의 동작을 관리하는 방법에 관한 것으로, 특히 클러스터드 프로세서에서 통신-병렬처리 트레이드-오프를 다이나믹하게 관리하는 방법에 관한 것이다.
관련 기술의 설명
현대의 프로세서들에 대한 공통 애플리케이션들로부터 많은 양의 명령-레벨 병렬처리(instruction-level parallelism; ILP)의 추출은 많은 기능 유닛들 및 많은 온-칩 구조들 예컨대 이슈 큐들(issue queues), 레지스터 파일들, 캐시들, 및 분기 예측기들(branch predictors)의 사용을 필요로 한다. CMOS 프로세스 기술들이 계속 감소함에 따라, 와이어 지연들이 우세해 지고 있다(로직 지연들에 비해). 이것은, 더 빠른 클록 속도들을 향한 지속적인 경향과 결합되어, 정규의 온-칩 구조들(캐시들, 레지스터 파일들 등)을 액세스하기 위한 사이클들의 시간을 증가시킨다. 이것은 사이클 당 명령들(instructions per cycle; IPC)의 성능을 열화시킬 뿐만 아니라, 그것은 또한 다중 파이프라인 스테이지들로의 액세스를 중단시키는 다양한 설계 문제들을 제기한다. 설계자에게 이용가능한 트랜지스터들의 수를 증가시킴에도 불구하고, 그것은 미래의 프로세스 기술들에서 클록 속도를 떨어뜨리고, 스케일러빌러티(scalability)를 제한하는, 설계 복잡도를 증가시키지 않고 ILP 추출을 돕는 대형의 모놀리식 구조들을 설계하는 것을 점점 더 곤란하게 하고 있다.
이들 설계과제들에 대한 가능성 있는 해결방법은 클러스터드 마이크로아키텍처(clustered microarchitecture)이며, 여기서 주요 프로세서 리소스들은 다수의 클러스터들을 가로질러 분배되고, 이들 각각은 이슈 큐들, 레지스터 파일들, 및 기능 유닛들의 서브세트를 포함한다. 이와 같은 설계에 있어서, 명령 리네임시에, 각 명령은 클러스터들 중 하나로 보내진다. 이슈 큐들 및 레지스터 파일들의 사이즈 및 대역폭 요건들을 감소시키게 되면, 이들 사이클-시간 임계 구조들의 액세스 시간들이 크게 감소되고, 그것에 의해 더 빠른 클록을 허용한다. 이들 구조들의 단순 화는 또한 이들 설계 복잡도를 감소시킨다.
클러스터드 마이크로아키텍처의 관심이 가는 특징은 차세대 프로세서를 제조함에 있어서 감소된 설계 노력이다. 단일 클러스터의 설계가 크게 단순화될 뿐만 아니라, 단일 클러스터 코어가 설계되면, 이들 코어들보다 더 많은 코어가 트랜지스터 예산이 증가함에 따라 낮은 설계 비용(프론트 엔드 대역폭을 포함해서)을 위한 프로세서에 놓일 수 있다. 더 많은 클러스터들을 부가하면 잠재적으로 PC 성능을 개선시킬 수 있는 데 그 이유는 각 프로그램이 함께 작동할 더 많은 리소스들을 가지기 때문이다. 각 개개의 클러스터의 구현이 변화지 않기 때문에 이렇게 해도 클록 속도에 대한 영향은 혹시 있다해도 아주 작다. 또, 대형의 클러스터드 프로세서내의 리소스들이 단일 스레드에 의해 유효하게 사용될 수 없을지라도, 클러스터드 프로세서에 대한 다수의 스레드들의 스케쥴링은 전체 명령 스루풋(overall instruction throughput)을 상당히 증가시킬 수 있다. 상대적으로 낮은 설계 복잡도 및 스레드-레벨 병렬처리(thread-level parallelism)를 이용할 가능성은 극히 매력적인 옵션 시대에 10억개의 트랜지스터로 높게 클러스터된 프로세서를 제작한다.
클러스터드 마이크로아키텍처들의 주요 문제점은 동일한 리소스들을 갖는 모놀리식 설계에 비해 이들의 감소된 IPC에 있다. 단일 클러스터내의 종속 명령들이 연속 사이클로 발행될지라도, 잉여 클러스터간 바이패스 지연들은 상이한 클러스터들에 놓인 종속 명령들이 연속 사이클로 발행되는 것을 방지한다. 모놀리식 프로세서들은 모든 기능 유닛들 중에서 단일-사이클 바이패스를 허용하도록 잠재적으로 훨씬 느린 클록을 사용할 수 있지만, 클러스터드 프로세서가 더 빠른 클록을 허용하여 몇 개의 기능 유닛들간의 사이클들에서 추가 레이턴시들을 도입한다. 클러스터드 설계는 IPC 열화가 클록 속도 개선을 상쇄시키지 않으면 실용적인 옵션이다.
O.35μ 기술에서의 Alpha 21264과 같은 현대의 프로세서들은 이미 한정된 클러스터드 설계를 채용하는 데, 여기서 정수 도메인은, 예를 들면, 2개의 클러스터들로 분할된다. 다수의 최근 연구들은 명령들을 클러스터들에 보내기 위해 발견법들(heuristics)의 설계를 개척해 왔다. 이들 진보에도 불구하고, 이들 연구들로부터의 결과들은 다음과 같은 이유들 때문에 가까운 미래에 재고려될 필요성이 있을 것이다.
1. 와이어 지연들의 성장하는 우수성 및 증가하는 클록 속도들의 경향으로 인해, 각 클러스터 코어에서의 리소스들이 이전 연구들에서 취해진 것들에 비해 상당히 감소될 필요가 있을 것이다.
2. 더욱 큰 트랜지스터 예산들 및 스레드-레벨 병렬처리를 이용하는 잠재력으로 인해 이전 연구들에서 취해진 것보다 더 많은 클러스터들이 다이 위에 존재할 것이다.
3. 가장 먼 2개의 클러스터들간에 데이터를 통신하기 위한 사이클들의 수는 와이어 지연 문제로 인해 증가할 것이다. 게다가, 통신 지연들은 이종이므로, 제작자 및 소비자 노드들의 위치에 따라 변할 것이다.
4. 데이터 캐시는 증가된 상호접속 비용들 및 다른 클러스터 리소스들과 약분할 수 있도록 캐시를 스케일링하기 위한 바람으로 인해 가장 최근의 연구들에 의 해 취해진 중앙집중형 캐시와 달리, 클러스터들 사이에 분배될 필요가 있을 것이다.
많은 수의 클러스터들의 사용은 다중-스레디드 작업부하에 대한 총 스루풋을 증대시키지만, 단일-스레디드 프로그램의 성능에 대한 충격은 명백하지 않다. 상기 경향들의 누적된 효과는 클러스터드 프로세서들이 이전 모델들에서 취해진 것보다 훨씬 더 통신 제한적이 될 것이라는 것이다. 칩상의 클러스터들의 수가 증가함에 따라, 스레드에 이용가능한 리소스들의 수도 증가하여, 실행중인 명령들의 더 큰 윈도를 지원하고 그것에 의해 더 많은 디스턴트 명령-레벨 병령처리(ILP)가 이용될 수 있게 한다. 동시에, 다양한 명령 및 프로그램의 데이터는 더 넓은 온-칩 공간 위에 분포되게 된다. 데이터가 여러 클러스터들에 걸쳐 빈번하게 통신되어야 한다면, 이러한 증가된 통신으로부터의 성능 페널티(performance penalty)는 추가 리소스들에 의해 이용된 병렬처리로부터 얻어진 어떠한 이익도 상쇄시킬 수 있다.
클러스터드 프로세서들에 기초한 다수의 제안들이 과거 10년에 걸쳐 있어 왔다. 이들은 할당된 리소스들의 종류, 명령 스티어링 발견법(steering heuristics), 및 크로스-클러스터 통신(cross-cluster communication)에 대한 의미론(semantics)이 다르다. 캐시는 모든 이들 모델들에서 중앙집중형 구조이다. 이들 연구들은 적당한 통신 비용들을 갖는 작은 수의 전체 클러스터들을 가정한다.
많은 최근의 연구의 주요내용은 다수의 구성 옵션들 및 실행시 적당한 구성을 취하는 알고리즘들을 갖는 하드웨어 유닛들을 고려한다. 많은 이들 알고리즘들은, 이들이 명령들의 고정 구간 또는 사이클들에 걸쳐 다양한 통계치들을 모니터하 고 그 정보에 기초하여 구성을 결정하는 구간-기반(interval-based)이다. 서브루틴 경계들에서의 적응은 고정 명령 구간들을 이용하는 것보다 더 효과적일 수 있다.
다양한 최근의 연구들은 프로그램 페이즈의 요건들로의 하드웨어의 다이나믹 튜닝을 위한 런-타임 알고리즘들(run-time algorithms)을 제안한다. 대부분의 이들 기술들은 구간-기반 알고리즘을 사용하는 데, 여기서 과거 몇 구간들에 대한 측정들은 후속 구간들에 대한 구성의 선택을 설명하고, 여기서 구간은 커밋된 명령들의 소정수이다.
미래 세대의 프로세서들은 와이어 지연들의 고비용으로 인해 더 낮은 IPC들의 문제가 있을 수 있다.
발명의 요약
본 발명의 목적은 종래 기술의 문제점들을 극복하는 것이다.
상기 및 다른 목적들을 달성하기 위해, 본 발명은 상기 경향들의 면에서 개선된 단일-스레디드 성능에 대해 통신 병렬처리 트레이드-오프를 최적화하는 다이나믹하게 튜닝가능한 클러스터드 아키텍처에 관한 것이다. 밸런스(balance)가 스레드에 이용가능한 클러스터들의 총수의 서브세트만을 채용함으로써 실행된다.
우리의 결과들은 클러스터들 수의 함수로서의 성능 경향이 이들에 존재하는 디스턴트 ILP의 등급에 의존하여 상이한 프로그램들에 대해 변하는 것을 보인다. 그러므로, 우리는 임의의 프로그램 페이즈에 대해 최적수의 클러스터들을 식별하고 하드웨어를 프로그램의 요건들에 매칭시키는 다이나믹 알고리즘들을 개발시켜 왔다. 우리는 어떤 프로그램 포인트에서 활성 클러스터들의 수를 변경하는 알고리즘들을 제시하고 과거의 약간의 구간들에 대해 성능 히스토리를 고려하는 단순 알고리즘은 종종 대부분의 이용가능한 성능 개선을 낳는다는 것을 보인다. 그러나, 이와 같은 알고리즘은 재구성을 위한 단위 기회들을 놓치고, 우리는 이들 놓친 기회들을 목표로 하는 시도에서 더 많은 하드웨어에 투자하는 다른 기술들을 제시한다. 단순한 구간-기반 알고리즘은 11%의 전체 개선을 제공하고, 미세 단위 기술들은 가장 양호한 정적 구조에 비해 15%의 개선을 제공할 수 있다.
단일-스레디드 성능을 개선하기 위해 주어진 프로그램 페이즈에 대한 클러스터들의 서브세트를 디스에이블링하는 것은 다른 유리한 결과를 가진다. 전체 클러스터들은 이들의 공급 전압을 오프로 할 수 있고, 그럼으로써 누설 에너지를 크게 저감시킬 수 있고, 이것은 모놀리식 프로세서에서는 가능하지 않을 수 있는 기술이다. 대안으로, 이들 클러스터들은 다른 스레드들(이들사이에서 분할됨)에 의해 사용될 수 있고, 그럼으로써 최적 단일 및 다중스레디드 스루풋의 목표를 동시에 달성할 수 있다.
우리는 축소 프로세스 기술들 및 미래의 클러스터드 프로세서들의 설계시의 우세한 와이어 지연들의 영향들을 제시 및 평가하였다. 증가하는 칩 밀도들의 이점을 취하기 위해 클러스터들의 수를 증가시키는 것은 다수의 스레드들을 지원할 수 있는 프로세서의 능력을 개선시킬 수 있지만, 단일 스레드의 성능은 악영향을 받을 수 있다. 이것은 이와 같은 프로세서들이 크로스-클러스터 통신 비용들에 의해 제한받기 때문이다. 이들 비용들은 프로세서가 많은 수의 클러스터들로 스케일링되기 때문에 명령-레벨 병렬처리의 임의의 증가된 추출에 큰 영향을 주는 경향이 있을 수 있다. 우리는 규칙적인 구간들에서 검색 기반 접근방식을 이용하여 클러스터들의 수를 다이나믹하게 선택하는 것은 단일 스레드에 대한 통신 병렬처리 트레이드-오프에 효과적이라는 것을 입증했다. 그것은 거의 모든 프로그램에 응용가능하고 우리의 기본 아키텍쳐에 비해 11%의 평균 성능 개선을 낳는다. 미세 단위 페이즈 변경들을 이용하기 위해, 추가의 하드웨어가 운용되어, 15%의 전체 개선을 허용한다. 일반적으로 8.3 클러스터들이 재구성 스킴에 의해 디스에이블되므로, 단일-스레디드 모드에서 다량의 누설 에너지를 절약할 가능성이 있다. 다중-스레디드 작업부하의 스루풋은 또한 각 스레드에 클러스터들의 세트를 다이나믹하게 전용시킴으로써 크로스-스레드 간섭을 회피함으로써 개선될 수 있다. 우리는 다수의 관심있는 프로세서 모델들에 대한 우리의 결과들의 유효성을 입증했고, 따라서 미래 프로세서들에서 통신-병렬처리 트레이드-오프 관리의 중요성을 강조한다.
우리의 것은 가변-길이 명령 구간의 중요성을 식별하고 이것을 선택 알고리즘에 통합하는 제 1 제안이다. 우리는 또한 먼저 분기 경계들에서 아주 미세한 재구성을 검사하고 그것을 구간-기반 스킴들과 대조하는 것이다. 우리의 것은 먼저 단일 프로세스 기술에 초점을 맞추고 더 많은 리소스들을 추가하는 효과를 시험하는 제 1의 연구에 있다. 클러스터드 프로세서 모델은 통신과 병렬처리 간의 명백한 트레이드-오프를 드러내고, 그것은 그 자신을 저비용의 재구성에 용이하게 적응시킬 수 있다.
본 발명의 최선의 실시예 및 그의 변형예들이 도면을 참조하여 설명될 것이다.
도 1 및 도 2는 최선의 실시예가 구현될 수 있는 2개의 클러스터드 프로세서를 나타낸 블록도.
도 3은 고정된 클러스터 구조들에 대한 IPC(instructions per cycle)성능을 나타낸 그라프.
도 4는 기본 경우들 및 구간-기반 스킴들에 대한 IPC 성능을 나타낸 그라프.
도 5는 기본 경우들, 검색을 하는 구간-기반 알고리즘, 및 2개의 미세 단위 검색 스킴의 IPC 성능을 나타낸 그라프.
도 6은 분산형 캐시를 갖는 프로세서 모델에 대한 다이나믹 구간-기반 메카니즘들에 대한 IPC 성능을 나타낸 그라프.
도 7은 그리드 상호접속(grid interconnect)을 갖는 프로세서에 대한 다이나믹 구간-기반 메카니즘의 IPC 성능을 나타낸 그라프.
최선의 실시예의 상세한 설명
본 발명의 최선 실시예 및 그의 변형예들이 도면을 참조하여 상세히 설명되며, 도면에 있어서 같은 참조 번호들은 명세서 전체에 걸쳐 같은 요소들을 가리킨다.
우리는 초기 연구에서 일반적으로 사용되어 온 베이스라인 클러스터드 프로세서 모델(baseline clustered processor model)의 기술로 시작한다. 이와 같은 모 델은 4개의 클러스터들(102)(각각 102-1, 102-2, 102-3, 102-4)을 갖는 100으로 도 1에 도시되어 있다. 4개의 클러스터들(102)의 상류에는 명령 캐시(104), 분기 예측기(branch predictor; 106), 명령 페치 캐시(108), 스티어링 레지스터 리네임 유닛(110), 및 리오더 버퍼(reorder buffer; 112)가 있다. 각 클러스터(102) 내에는 이슈 큐(issue queue; 114), 레지스터 파일(116), 및 기능 유닛들(118)이 있다. 클러스터들(102)의 하류에는 로드/스토어 큐(LSQ)(120) 및 데이터 캐시(122)가 있다.
분기 예측기(106) 및 명령 캐시(104)는 종래의 프로세서에서와 똑같이 중앙집중 구조들이다. 스티어링 레지스터 리네임 유닛(110)에서의 레지스터 리네임시에, 각각의 명령은 특정 클러스터에 할당된다. 각 클러스터(102)는 그 자신의 이슈 큐(114), 레지스터 파일(116), 한 세트의 기능 유닛들(118), 및 그 자신의 로컬 바이패스 네트워크(local bypass network)를 가진다. 클러스터내의 결과들의 바이패싱은 추가의 사이클들을 취하지 않는다(즉, 동일 클러스터에서의 의존 명령들은 연속 사이클로 발행할 수 있다). 그러나, 소모 명령(consuming instruction)이 생성기(producer)와 동일한 클러스터에 있지 않으면, 그것은 그 결과가 2개의 클러스터들을 가로질러 통신될 때까지 추가 사이클들을 대기해야 한다.
종래의 클러스터드 프로세서는 클러스터들(102) 중에 걸쳐 레지스터 파일(116), 이슈 큐(114), 및 기능 유닛들(118)만을 분배한다. 데이터 캐시(122)는 중앙에 배치된다. 다른 구조가 클러스터들에 캐시를 분배하므로, 설계를 더 스케일러블할 수 있게 하지만, 또한 실현 복잡도를 증가시킨다. 양 구성들은 설계 옵션들에 매력적이므로, 우리는 양 구조들에 대해 다이나믹 튜닝 효과를 평가한다.
전통적인 클러스터드 설계들에 있어서, 로드 및 스토어가 준비되면, 이들은 중앙집중 로드-스토어 큐(centralized load-store queue; LSQ)(120)에 삽입된다. 여기로부터, 스토어들은 이들이 커미티될 때 중앙집중 L1 캐시에 전송되고 로드들은 초기의 스토어들과 충돌하지 않는 것으로 알려질 때 발행된다. LSQ는 어떤 클러스터에서의 로드가 다른 클러스터들 중 어느 하나로부터의 초기 스토어와 충돌할 수 있기 때문에 중앙집중화된다.
우리가 연구하고 있는 적극적인 프로세서 모델들에 있어서, 캐시는 매 사이클마다 다수의 요청들을 서비스해야 한다. 고대역 캐시를 구현하기 위한 효율적인 방법은 그것이 워드-인터리브되게 하는 것이다. 4-웨이 워드-인터리브된 캐시(4-way word-interleaved cache)에 있어서, 데이터 어레이는 4개의 뱅크들로 분할되고 각 뱅크는 매 사이클마다 하나의 요청을 서비스할 수 있다. 폼 4N(form 4N)의 워드 어드레스들을 갖는 데이터는 뱅크 0에 스토어되고, 폼 4N+1의 워드 어드레스들을 갖는 데이터는 뱅크 1에 스토어되는, 등등이다. 이와 같은 구조는 4개의 최대 대역을 지원하고 뱅크에 대한 충돌들을 최소화하는 데 도움을 준다.
중앙집중형 캐시를 갖는 프로세서에 있어서, 로드 레이턴시(load latency)는 중앙집중형 캐시와 로드를 발행하는 클러스터 사이의 거리에 의존한다. 우리의 연구에서, 우리는 중앙집중 LSQ와 캐시는 클러스터(102-1)와 공동 위치되는 것으로 가정한다. 그러므로, 클러스터(102-1)로부터 생기는 로드는 어떤 통신 비용도 경험하지 않는다. 클러스터(102-2)로부터 생기는 로드는 어드레스를 LSQ에 전송하는데 하나의 사이클을 취하고, 데이터를 다시 얻는데 다른 사이클을 취한다(클러스터들 사이의 각 홉(hop)은 하나의 사이클을 취하는 것으로 가정한다). 유사하게, 클러스터(102-3)는 각 로드에 대해 4개의 사이클들의 총 통신 비용을 경험한다. 이것은 캐시 RAM 룩업을 수행하는 데 필요한 수 사이클들에 대한 추가이다.
스티어링 발견법(steering heuristics)이 논의될 것이다. 클러스터드 설계는 더 빠른 클록을 허용하지만, 클러스터간 통신(inter-cluster communication) 및 로드 불균형(load imbalance) 때문에 괄목할만한 IPC 열화를 자초한다. 스마트 명령 스티어링을 갖는 이들 페널티들을 최소화하는 것은 많은 최근 연구들의 초점이었다. 우리는 명령의 대부분의 오퍼랜드들을 생성하는 클러스터로 명령(및 그 지정 레지스터)을 보내는 효과적인 스티어링 발견법을 이용한다. 이슈 큐 점유(issue queue occupancy)에서의 불균형이 보여지는 환경하에서 또는 타이(tie)가 있는 경우에, 명령들은 최소 로드 클러스터로 보내진다. 로드 불균형을 검출하기 위해 적절한 임계치를 추출함으로써, 이와 같은 알고리즘은 또한 Mod_N 및 First_Fit와 같은 다른 제안된 스티어링 발견법을 근사킬 수도 있다. 전자는 하나의 클러스터에 N개의 명령들을 보낸 후 그것의 이웃으로 보냄으로써 로드 불균형을 최소화한다. 후자는 명령들을 그것의 이웃으로 보내기 전에 하나의 클러스터를 채움으로써 통신을 최소화한다. 우리는 경험적으로 로드 밸런스를 위해 최적 임계값을 결정한다. 게다가, 우리의 스티어링 발견법은 또한 중요한 소스 오퍼랜드를 생성하는 클러스터에 대한 높은 우선순위를 부여하기 위해 중요도 예측기(criticality predictor)를 이용한다. 따라서, 우리의 발견법은 스티어링 메카니즘들에서 이 기술의 상태를 나타낸다.
높게 클러스터된 프로세서에 있어서 중앙집중형 캐시는 그것이 높은 대역폭을 지원해야 하고 요청하는 클러스터들까지의 그것의 평균 거리가 증가하기 때문에, 주요 병목현상이 있을 수 있다. 그러므로, 분산형 캐시 모델은 매력적인 설계 옵션을 나타낸다.
N-클러스터 시스템에 있어서, 우리는 L1 캐시는 N개의 워드-인터리브된 뱅크들로 나누어지는 것으로 가정한다. 각 뱅크는 그 자신의 클러스터와 연관지워 진다. LSQ는 또한 상이한 클러스터에 걸쳐 분할된다. 도 2의 예는 4개의 클러스터들을 갖는 구조를 나타낸다. 도 2의 프로세서 모델(200)은 각 클러스터(202)가 분산된 LSQ(220) 및 분산된 데이터 캐시(222)를 포함하는 점에서 도 1의 프로세서 모델(100)과 다르다. 또한, 뱅크 예측기(209)가 제공된다. 다양한 뱅크들이 워드-인터리브되기 때문에, 이들은 상호 배타적 데이터를 캐시하고 이들 사이에 어떠한 캐시 간섭 프로토콜도 필요로 하지 않는다. 스티어링 메카니즘의 목표는 대응하는 메모리 어드레스를 캐시하는 클러스터로 로드 또는 스토어를 보내는 것이다. 우리는 캐시의 분산된 속성으로부터 생기는 추가의 스티어링 복잡도에 대해 이하에 논의한다.
L2 캐시는 클러스터 1(202-1)과 계속 공동 배치되고 이 클러스터와 연관된 것 이외의 L1 캐시 뱅크들의 어느 하나에서의 미스(miss)는 홉들(hops)의 수에 의존하여 추가 레이턴시를 초래한다.
프로세스 기술들이 감소하고 클러스터들의 수가 증가하기 때문에, 통신 지연 및 클러스터들간의 상호접속 토폴러지에 주의를 기우려야 한다. 크로스-클러스터 통신은 클러스터들에 걸쳐 레지스터값을 통신할 때 또는 캐시를 액세스할 때에도 프론트-엔드에서 발생한다. 전자는 매사이클마다 발생하기 때문에, 우리는 이러한 목적을 위한 별도의 네트워크 및 다시 프론트-엔드로의 분기 오예측을 통신함에 있어서의 모델 비균일 디스패치 레이턴시들 및 추가 레이턴시를 가정한다. 후자의 2개(캐시 및 레지스터 대 레지스터 통신)는 레지스터들에/레지스터로부터의 데이터 전송을 포함하므로, 우리는 동일한(별도의) 네트워크가 이용되는 것으로 가정한다.
최선의 실시예에 있어서, 우리는 그것의 낮은 실시 복잡도때문에 링 상호접속에 집중한다. 각 클러스터는 2개의 다른 클러스터들에 직접 접속한다. 우리는 임의의 2개의 노들들간의 홉들의 최대수가 8인, 16개의 클러스터 시스템이 32개의 전체 링크들(한 사이클에 32개의 전체 전달을 허용하는)을 가지는 것을 뜻하는, 2개의 단방향 링들(unidirectional rings)을 가정한다.
이하, 우리의 감도 분석의 일부로서, 우리는 또한 그리드 상호접속의 결과들을 보이는 데, 이 그리드 상호접속은 높은 실시 비용을 가지지만 높은 성능을 가진다. 클러스터들은 2차원 어레이로 구성된다. 각 클러스터는 4개의 다른 클러스터들까지 직접 접속된다. 16개의 클러스터들에 대해, 48개의 전체 링크들이 있으며, 홉들의 최대 수는 6이므로, 전체 통신 비용을 감소시킨다.
우리의 시뮬레이터는 Alpha AXP 명령 세트에 대해 Simplescalar-3.0에 기초하고 있다. 시뮬에이터는 Alpha 21264를 닮은 마이크로아키텍처를 나타내도록 변형되어 왔다. 레지스터 업데이트 유닛(register update unit; RUU)은 이슈 큐들(issue queues), 물리 레지스터 파일들, 및 리오더 버퍼(reorder buffer; ROB)로 분해된다. 이슈 큐 및 물리 레지스터 파일은 또한 정수 및 부동 소수점으로 분할된다. 따라서, 우리의 연구에서의 각 클러스터는 그 자신 정수 및 부동 소수점으로 분해된다. 메모리 계층(memory hierarchy)은 또한 상세히 모델링된다(워드-인터리브 액세스, 버스 및 포트 컨텐션, 라이트백 버퍼 등을 포함).
이 기본 프로세서 구조는 클러스터된 마이크로아키텍처를 모델링하기 위해 변경된다. 미래의 기술들에 와이어-지연 제약 프로세서(wire-delay constrained processor)를 표현하기 위해, 각 클러스터 코어는, 30개의 물리 레지스터들(각각 정수 및 부동소수점), 및 15개의 발행 큐 엔트리(각각 정수 및 부동소수점)의 각각의 유형 중 하나의 기능 유닛을 가지는 것으로 가정하였다. 많은 명령들이 이용 가능한 기능 유닛들의 수로서 한 사이클에서 발행될 수 있다. 우리는 상호접속에 대한 각 홉은 단일 사이클을 취하는 것으로 가정한다. 우리는 트레이스 캐시를 모델링하지 않지만, 우리는 명령들은 한번에 2개의 기본 블록들까지 페치될 수 있다고 가정했다. 중요한 시뮬레이션 패러미터들이 하기 표 1에 요약된다.
표 1
Figure 112007001615486-PCT00001
우리의 연구는 미래의 와이어-제한 기술에 초점을 맞추고 우리는 0.035μ에 대한 예측들에 따라 레이턴시들을 추출한다. 우리는 캐시 구조에 대한 액세스 시간 들을 추정하기 위해 CACTI-3.0를 사용했다. 심플스칼라(simplescalar)로, 우리는 가장 좋은 기본 경우들을 결정하기 위해 상이한 사이즈 및 포트 패러미터들(및 그러므로 상이한 레이턴시들)을 갖는 캐시 구조들을 시뮬레이팅했다. 이들 패러미터들은 하기 표 2에 요약된다. 중앙집중형 캐시는 4웨이 워드 인터리브 32kB 캐시에 대해 최선의 성능을 낳았다. 이와 같은 캐시는 사이클 당 4개의 액세스들의 대역폭 및 6사이클의 액세스 타임을 가진다. 최선의 분산형 캐시 구조는 각 클러스터에 단일 포트 4사이클 16kB 뱅크를 갖는다.
표 2
Figure 112007001615486-PCT00002
벤치마크 세트로서, 우리는 4개의 SPEC2k 정수 프로그램들, 3개의 SPEC2k FP 프로그램, 및 UCLA Mediabench제의 2개의 프로그램들을 사용했다. 이들 프로그램들에 대한 상세들은 하기 표 3에 나열된다. 상기 프로그램들은 고 및 저 IPC 코드들 및 메모리, 분기 오예측, 등에 의해 제한되는 것을 포함한 다양한 프로그램 유형들의 혼합을 나타낸다. 이들 프로그램들의 대부분은 제 1의 20억개의 명령들을 통해 빠르게 보내져서 측정들이 이루어지기 전에 다양한 프로세서 구조들을 워밍하기 위해 상세히 시뮬레이팅된다. 우리는 진보적인 프로세서 모델을 시뮬레이팅하지만, 모든 우리의 벤치마크 프로그램들의 모두는 고 IPC를 가지지 않는다. 진보된 프로세서 설계는 고 IPC 코드들을 실행할 필요성에 의해 그리고 다수의 스레드들을 지원할 필요성에 의해 동기가 부여됨을 주목하라. 양 경우에 있어서, 단일 저-IPC 스레드의 신속한 완성 또한 중요하므로, 벤치마크 세트에 이와 같은 프로그램들을 포함시킬 필요성이 있다.
표 3
Figure 112007001615486-PCT00003
간단히 하기 위해, 우리는 중앙집중형 캐시 및 링 상호접속을 갖는 16-클러스터 모델에 대한 우리의 초기 분석에 초점을 맞춘다. 도 3은 프로그램을 위한 클러스터의 고정 서브세트를 통계적으로 이용하는 효과를 나타낸다. 클러스터들의 수를 증가시키면 중앙집중형 캐시로부터의 로드/스토어 명령의 평균 거리 및 최악의 경우의 클러스터간 바이패스 지연을 증가시킴으로써, 전체 통신 비용에 큰 영향을 미친다. 증가된 로드/스토어 레이턴시가 통신 오버헤드를 지배하는 것을 나타내는, 11%만큼의 레지스터 대 레지스터 통신 개선 성능을 위한 제로 코스트(zero cost)를 가정하면서, 31%만큼의 로드들 및 스토어들의 개선된 성능을 위한 제로 클러스터간 통신 비용을 가정한다. 이 레이턴시는 캐시에 가장 가까운 클러스터로 로드/스토어 명령들을 보내서 감소시킬 수 있지만, 이것은 로드 불균형 및 레지스터 통신을 증가시킬 수 있다. 16-클러스터 시스템에서의 클러스터간 레지스터 통신을 위한 평균 레이턴시는 4.1 사이클이었다. 동시에, 더 많은 클러스터들을 이용하면 더 많은 기능 유닛, 레지스터들, 및 이슈 큐 엔트리들을 갖는 프로그램을 제공하고 따라서, 그것이 진행중인 명령들의 더 큰 윈도의 디스패치를 허용한다. 이들 2개의 충돌하는 힘들 중 우세한 힘에 의존하여, 클러스터들의 수가 증가됨에 따라 성능은 개선되거나 악화된다. djpeg (JPEG decoding from Mediabench), swim, mgrid, 및 galgel (loop-based floating-point programs from SPEC2K)과 같은 디스턴트 ILP를 갖는 프로그램들은 많은 리소스들을 이용하는 것으로부터 이익을 얻는다. 한편, 저 분기 예측 정밀도들을 갖는 대부분의 정수 프로그램들은 진행중의 명령들의 더 넓은 윈도를 이용할 수 없다. 그러므로, 리소스들을 증가시키는 것은 단지 추가 통신 비용 때문에 성능을 열화시킨다. 이것은 클러스터드 프로세서에서 지금까지 발견되지 않은 현상이다(부분적으로 극히 몇몇의 연구들은 4개 이상의 클러스터들을 찾았고 부분적으로 초기 연구들은 중앙집중형 캐시를 액세스하는 데 통신 비용이 없는 것으로 가정했기 때문이다).
우리의 목표는 프로그램에 클러스터들을 다이나믹하게 할당하여 프로그램의 요구들에 대한 하드웨어를 튜닝하는 것이다. 이것은 디스에이블된 클러스터들에 대해 명령 디스패치를 허용하지 않기 위해 스티어링 발견법을 변경하여 달성될 수 있 다. 환언하면, 디스에이블링은 어떠한 새로운 명령들도 클러스터에 할당하지 않는 것과 같은 것이다. 디스에이블된 클러스터들에 이미 할당된 명령들은 완료가 허용되어 클러스터의 자연스런 드레인으로 이어진다.
각 프로그램 페이즈의 시작에서, 우리는 PC들의 기록 및 구간에 대한 각 구성 옵션을 실행한다. 우리는 이후 최고의 IPC를 갖는 구성을 추출하고 그것을 다음 페이즈 변경이 검출될 때까지 사용한다. 이와 같은 메카니즘은 다수의 구간들에 걸쳐 균일한 성능을 유지하기 위한 프로그램들의 능력에 크게 의존한다. 우리는 부동소수점(floating-point) 프로그램들은 일반적으로 이러한 거동을 보이고, 정수 프로그램들은 더 많은 변형들(variability)을 보인다는 것을 발견했다. 초기 연구들은 고정 구간 길이들을 취하였지만, 우리는 이것은 다수의 프로그램들에 대해 매우 불량한 성능을 가져온다는 것을 발견했다. 그러므로, 적당한 구간 길이를 추출하는 것은 구성 선택 알고리즘의 성공에 기본적인 사항이다(클러스터들의 수 이외에 프로세서의 다른 양상들의 구성에 두루 적용될 수 있다.
상이한 구간들에 걸쳐 프로그램 거동의 다양성을 연구하기 위해, 우리는 규칙적인 10K 명령 구간들에서 다양한 통계들의 트레이스를 발생하기 위해 10억의 명령들에 대한 프로그램들 각각을 실행했다. 우리는 프로그램 페이즈 - IPC, 분기 주파수, 및 메모리 레퍼런스들의 주파수를 정의하기 위해 3개의 메트릭들을 사용했다. 각 프로그램 페이즈의 시작에서, 제 1 구간동안 수집된 통계치들이 참조로서 사용되었다. 각각의 후속 구간에 있어서, 그 구간에 대한 3개의 메트릭들이 참조점들과 유사하다면, 상기 구간은 '안정한(stable)" 것으로 명령되었다. 3개의 메트릭 들 중 어느 하나가 상당히 다르면, 우리는 그 구간은 '불안정(unstable)'로서 선언했고 새로운 프로그램 페이즈를 시작했다. 이러한 분석은 많은 구간 길이들에 대해 행해졌다. 구간 길이에 대한 불안정율은 '불안정", 즉 페이즈 변화의 발생 빈도로 고려된 구간의 백분율이다. 우리의 연구에서, 우리는 구성들이 대부분의 관심이 있는 경우들을 포함했기 때문에 가능한 구성들의 한정된 서브세트들(2, 4, 8, 및 16 클러스터들)을 단지 개척하기에 충분했다는 것을 발견했다. 5%의 불안정율은 15%이하의 구간들이 차선의 최적 구성들에 있는 것을 보장한다.
아래의 표 4는 우리의 프로그램들 각각에 대해 5%이하의 허용가능한 불안정율을 부여하는 최소 구간 길이를 나타낸다. 거기서 알 수 있는 것과 같이, 가장 좋은 것으로서 나나타는 구간 길이들은 10K 내지 40M 사이에서 변한다. 우리는 또 10K 명령들의 고정 구간 길이에 대한 불안정율을 나타낸다. 명백하게, 이 구간 길이는 다수의 프로그램들에 대해 불량하게 작동하고 상당히 허용불가능한 성능으로 이어진다. 대부분의 프로그램들은 보통 거친 충분한 구간 길이에 대한 구간들에 걸쳐 일관성 있는 거동을 나타내어 구간-기반 스킴을 매우 강하게 하고 보편적으로 응용가능하게 한다. 심지어 파서(parser)와 같은 프로그램은 그 거동이 입력 데이터에 기초하여 극적으로 변하고, 큰 40M 명령 구간에 대해 낮은 불안정율을 가진다.
표 4
Figure 112007001615486-PCT00004
런-타임에서 최적 명령 구간 길이에 도착하기 위해, 우리는 단순한 알고리즘을 사용한다. 우리는 최소 명령 구간으로 시작한다. 불안정율이 너무 높으면, 우리는 상기 구간의 사이즈를 배로 늘리고 우리가 낮은 불안정율을 경험하거나 미리 정해진 한계(즉, 10억 명령)에 도달할 때까지 이것을 반복한다. 우리가 상기 한계에 도달하면, 우리는 선택 알고리즘을 채용하는 것을 중지하고 가장 많이 추출되었던 구성을 취출한다.
일단 우리가 구간 길이를 취출하면, 우리는 그 구간 길이에 영원히 남을 필요가 없다. 이 프로그램은 하나의 큰 마이크로페이즈로부터 완전히 다른 최적 명령 구간을 가질 수 있는 다른 것으로 이동할 수 있다. 이것을 다루기 위해, 우리는 페이즈 검출 알고리즘들을 계층적으로 구축하는 것을 계속한다. 거친 입도(즉, 모두 천억개의 명령들)로 통계치를 검색하는 알고리즘이 새로운 마이크로페이즈의 검출을 트리거할 수도 있고, 이 지점에서, 우리는 10K 구간 길이를 갖는 선택 알고리즘을 다시 시작할 수 있고 다시 전체에 걸쳐 최적 구간 길이를 발견할 수 있다.
완성도를 위해, 이하에 나열하는 코드에 있어서, 우리는 구간 길이를 선택하고, 페이즈들을 검출하고, 런-타임시 최상의 구성을 선택하는 우리의 알고리즘을 기술한다. 상기 페이즈의 시작시, 제 1 구간에서 수집된 통계치들은 미래의 통계치를 비교하고 페이즈 변화를 검출하는 기준점으로서 기능한다. 분기 및 메모리 기준 빈도들은 마이크로아키텍처-의존 패러미터들이고 검색 프로세스 동안에조차 페이즈 변화들을 검출하는 데 이용될 수 있다. 검색 후, 최상의 수행 구성이 취해지고 그것의 IPC가 또한 기준으로서 사용된다. 페이즈 변경은 분기들의 수, 메모리 기준들의 수 또는 IPC가 기준점과 상당히 다르면 시그널링된다. 때때로, 거동이 이전 페이즈의 거동으로 돌아가는 구간(아마도 분기 오예측의 버스트 또는 캐시 미스들에 의해 야기되는) 동안 IPC 특성들에 약간의 변경이 있다. 이러한 시나리오에서 필요없는 검색을 방지하기 위해, 우리는 IPC 측정들(num ipc 변화 패러미터를 갖는)에서 약간의 노이즈를 허용한다. 추가로, 페이즈 변경들이 빈번하면, 불안정 변수가 증분되고 결국 구간 길이가 두배로 된다.
클러스터들 수의 다이나믹 선택을 위한 런-타임 알고리즘
초기화들 및 정의들:
interval_length = 10K; (알고리즘(algo)을 불러오기 전에 관련된 명령들의 수)
discontinue_algorithm = FALSE; (이것이 설정되면, 더이상 재구성이 다음 마이크로페이즈까지 시도되지 않는다)
have_reference_point = FALSE; (새로운 페이즈에서의 제 1 구간은 미래의 구간들을 비교하기 위한 기준점을 제공한다)
significant_change_in_ipc; (이것은 현재의 구간에서의 IPC가 10%이상만큼 기준점에서의 IPC와 다르면 설정된다)
significant_change_in_memrefs; (이것은 현재의 구간에서의 메모리 기준이 interval_length/100이상만큼 기준점과 다르면 설정된다)
significant_change_in_branches ; (significant_change_in_memrefs과 유사)
num_ipc_variations = 0; (이것은 significant_change_in_ipc이 있었던 횟수를 나타냄)
stable_state = FALSE; (이것은 모든 구성이 검색된 후에만 설정된다)
num_clusters; (활성 클러스터들의 수)
instability = 0; (페이즈 변경 빈도를 나타내는 수)
THRESHl = THRESH2 = 5; THRESH3 = 1O억개의 명령들;
천억개의 명령들마다 통계치를 검사.
If (new macrophase)
Initialize all variables;
If (not discontinue_algorithm)
Execute the following after every interval_length instructions;
If (have_reference_point)
If (significant_change_in_memrefs or significant_change_in_branches or significant_change_in_ipc and num_ipc_variations > THRESHl) )
have_reference_point = stable_state = FALSE;
num_ipc_variations = 0;
num_clusters = 4;
instability = instability + 2;
if (instability > THRESH2 )
interval_length = interval_length * 2;
instability = 0;
if (interval_length > THRESH3 )
Pick most popular configuration; discontinue_algorithm = TRUE;
else
if (significant_change_in_ipc)
if ( stable_state) num_ipc_variations - num_ipc__variations + 2 ;
else
num_ipc_variations = MAX (-2,num_ipc_variations-0.125);
instability = instability - 0.125;
else
have_reference_point = TRUE;
Record branches and memrefs.
If (have_reference_point and not stable_state)
record IPC;
num_clusters = num_clusters * 2;
if (num_clusters > 16 )
pick the best performing configuration;
make its IPC the IPC_reference_point;
stable_state = TRUE;
런-타임 재구성의 이러한 전체 프로세스는 하드웨어 이벤트 카운터들로부터의 지원을 받는 소프트웨어로 구현될 수 있다. 후속 구성에 대한 결정을 내리기 전에 다양한 하드웨어 카운터들을 검사하는 로-오버헤드 소프트웨어 루틴(low-overhead software routine)(소프트웨어 TLB 미스 핸들링에 사용되는 것과 같은)은 모든 구간에서 불려진다. 알고리즘은 약 100개의 어셈블리 명령들에 이르고, 단지 이들의 일부가 각각 불려질 때 실행된다. 10K 명령들의 최소 구간 길이에 대해서조차, 이것은 1%보다 휠씬 적은 오버헤드에 이른다. 소프트웨어로 선택 알고리즘을 구현하면 더 많은 유연성을 허용하고 애플리케이션-특정 알고리즘들에 대한 가능성을 연다. 마이크로페이즈들에서 변경들을 검출하는 고차 레벨들에서의 알고리즘은 휠씬 낮은 오버헤드를 갖는다. 알고리즘은 전부 소프트웨어로 실행되므로, 대부분의 프로그램 특정 상태는 하드웨어 레지스터들과 대조적으로 메모리에 존재한다. 그러므로, 이벤트 카운터들과는 떨어져, 추가의 상태가 컨텍스트 스위치(context switch)에 세이브되어 복원되지 않아야 한다.
결과들이 주어질 것이다. 도 4에 있어서, 제 3 바(bar)는 각 프로그램 페이즈의 시작시에 검색을 하는 구간-기반 선택 메카니즘을 이용하는 효과를 나타낸다. 기준점들로서, 제 1의 2개의 바들은 4개 및 16개의 클러스터들을 갖는 정적 구조들을 나타낸다. 우리는 거의 모든 경우들에서, 다이나믹 스킴은 최상의 정적 구성의 성능을 근사함에 있어서 매우 양호한 일을 한다. 적은 안정성(galgel, mgrid, swim)을 갖는 부동소수점 프로그램들에 있어서, 다이나믹 스킴은 프로그램 요건들에 하드웨어를 용이하게 매칭시킨다. 정수 프로그램들에 있어서, 대부분의 경우들에, 상기 구간 사이즈가 부적절할 경우 초기 불안정 기간이 있다. 우리의 초기 분석과 일치하여, 구간 사이즈는 그것이 5%이하의 불안정율을 허용하는 것에 놓일 때까지 증가된다. 파서(parser)에 있어서, 시뮬레이션 구간은 다이나믹 스킴이 요구된 40M 명령 구간에 놓일 수 있을만큼 충분히 길지 않았다.
djpeg에 있어서, 그것은 작은 불안정율을 허용할 수 있을만큼 크도록 구간 사이즈에 대한 구간들의 수를 취한다. 게다가, 구간 길이가 크므로, 재구성을 위한 많은 기회들을 놓친다. ILP 특성들이 다른 각 구간 내에 작은 페이즈들이 있다. 이들 2개의 이유들때문에, 다이나믹 스킴은 djpeg를 위한 16개의 클러스터들을 갖는 고정의 정적 구조의 성능에 이르지 못한다.
gzip의 경우에 있어서, 다수의 장기의 페이즈들이 있은데, 몇몇은 디스턴트 ILP 특성들을 가지며, 나머지들은 적은 양의 디스턴트 ILP를 갖는다. 다이나믹 스킴은 언제라도 최상의 구성을 취하므로, 그 성능은 심지어 최상의 정적의 고정 구조보다 더 양호다. 일반적으로, 16개의 클러스터들의 8.3이 벤치마크 세트에 걸쳐 언제라도 디스에이블되었다. 어떠한 다른 워크로드도 없는 경우, 이들 미사용된 클러스트들에 공급 전압이 턴오프될 수 있다는 가정하에 이것은 누설 에너지를 많이 절약할 수 있다. 마찬가지로, 다중-스레디드 워크로드에 있어서, 단일-스레드 성능을 최적화한 후에도, 8개이상의 클러스터들이 여전히 다른 스레드들에 사용되도록 남아있다.
전체적으로, 검색을 하는 다이나믹 구간-기반 스킴은 가장 좋은 정적의 고정 구조보다 약 11% 더 좋을 수 있다. 그것은 또한 강건하다. 즉 그것은 이들 구간들에 걸친 거동이 상당히 일치하도록 거칠고 충분한 구간 길이가 보통 있을 수 있기 때문에 우리의 벤치마크 세트에서 모든 프로그램에 적용한다. 그러나, 불리한 면은 상대적으로 짧은 페이즈들을 목표로 하는 불안정성에 있다. 우리는 보다 작은 초기 구간 길이들로 실험했지만, 다이나믹 스킴은 이들 작은 구간 길이들에서 큰 불안정성과 충돌하고, 그러므로, 구간 길이들은 바로 전의 큰 값으로 증가되었다는 것을 발견했다. 이것은 측정들이 구간 사이즈가 감소되기 때문에 더 많이 노이즈하게 되고, 구간들에 걸쳐 동일한 프로그램 메트릭들을 검출하고 그에 상응하여 임의의 페이즈에 대한 가장 좋은 구성을 식별하는 것이 더 어렵다는 사실에 의해 야기된다.
이들 문제들을 줄이기 위해, 우리는 다른 구간-기반 스킴을 시도했다. 각 프로그램 페이즈의 시작시에 다양한 구성들을 검색하는 대신에, 우리는 구간에 대한 16-클러스터 구성을 사용했고 이용가능한 디스턴트 ILP의 등급에 기초하고, 우리는 다음의 페이즈가 변할 때까지 후속 구간들에 대한 4 또는 16-클러스터 구성 중 어느 하나를 선택했다(우리의 초기 결과들은 2개의 최선의 의미있는 구성들이 있다는 것을 나타내고 가장 좋은 경우들을 포함한다). 명령은 ROB에서 가장 오래된 명령보다 더 젊은 적어도 120개의 명령들이 있다면 디스턴트(distant)로서 마킹된다. 발행(issue) 시에, 상기 명령은 그것이 디스턴트이면 그 ROB 엔트리에 한 비트를 설정한다. 커미티(commit) 시에, 이 비트는 '디스턴트 ILP의 등급(degree of distant ILP)'을 증가시키기 위해 사용된다. 각 클러스터가 30개의 물리적 레지스터들을 가지므로, 4개의 클러스터들은 약 120개의 실행중인 명령들을 지원하기에 충분하다. 하나의 구간에서 발행된 디스턴트 명령들의 수가 특정 임계치를 초과하면, 그것은 16개의 클러스터들이 이용가능한 디스턴트 ILP를 이용하는 데 요구될 수 있다는 것을 나타낸다. 우리의 실험들에서, 우리는 1000의 구간 길이에 대해 160의 임계치를 사용한다. 검색 페이즈가 없기때문에, 하드웨어는 프로그램 페이즈 변경에 신속하게 반응하고 더 미세한 입도에서의 재구성은 의미를 갖게 된다. 그러므로, 우리는 작은 고정 명령 구간들에 초점을 맞추고 실행시에 구간 길이를 증가시키는 시도를 하지 않는다. 그러나 결정은 검색 대신에 프로그램 메트릭들에 기초하므로, 약간의 정밀도와 타협한다. 더욱이, 구간 길이가 작으면 작을수록, 페이즈 변화에 대한 반응이 더 빨라지지만, 측정들의 노이즈가 커져, 약간의 부정확한 결정들을 낳는다.
도 4는 또한 3개의 상이한 고정 구간 길이들의 메카니즘에 대한 결과들을 나타낸다. 1K 명령들의 구간 길이는 정밀도와 페이즈 변경들에 대한 신속한 반응간에 최선의 트레이드-오프를 제공한다. 일반적으로, 그것은 최상의 정적 기본 경우에 비해 같은 11%의 개선을 나타낸다. 그러므로, djpeg과 같은 프로그램에 있어서, 그것은 검색을 하는 구간-기반 스킴보다 훨씬 양호(21%)한데 그 이유는 상이한 요건들을 갖는 작은 페이즈들을 목표로 하는 능력 때문이다. 불행하게도, 그것은 galgel 및 gzip과 같은 프로그램들에서 성능 히트(performance hit)를 취하는 데 그 이유는 작은 구간-길이 및 노이지 측정들이 빈번한 페이즈 변경들 및 부정확한 판정을 낳기 때문이다.
이것의 주된 이유들 중 하나는 연속하는 1000개의 명령 구간들에서 실행되는 기본 블록들이 항상 동일한 것이 아니라는 사실이다. 그 결과, 빈번한 페이즈 변경들이 시그널링되고 각각의 새로운 페이즈 변경은 16개의 클러스터들을 갖는 구간을 생성하여, 디스턴트 ILP를 결정하는 데 도움을 준다. 이러한 문제를 줄이기 위해, 우리는 기본 블록 경계들에서 미세 단위 재구성 스킴을 시험한다.
미세 입도에서의 재구성을 허용하기 위해, 우리는 잠재적인 위상 변경으로서 모든 분기를 생각한다. 우리는 분기가 고도의 디스턴트 ILP에 의해 추종되는지의 여부를 결정할 필요가 있고, 이 경우, 디스패치는 자유롭게 계속되어야 하고 그렇 지 않으면, 디스패치는 제 1의 4개의 클러스터들만으로 제한되어야 한다. 여러 구성들을 검색하는 것은 각 분기의 노이지 측정들을 낳는 조사의 상이한 스테이지들에서 많은 이웃하는 분기들로 될 가능성이 있기 때문에 실현가능한 옵션이 아니다. 그러므로, 우리가 충분한 정보를 가질 때까지, 우리는 16개의 클러스터들에 대한 디스패치를 취하고 모든 분기를 추종하는 디스턴트 ILP 특성들을 계산한다. 이것이 재구성 테이블을 업데이트하는 데 이용되어 동일한 분기를 나중에 만날 때, 그것은 정확한 수의 클러스터들을 취할 수 있다. 우리가 테이블에서 엔트리를 갖지 않는 분기를 만나면, 우리는 16개의 클러스터 구조를 취하여 우리는 디스턴트 ILP의 등급을 결정할 수 있다.
분기가 디스턴트 ILP에 의해 추종되는지의 여부를 결정하기 위해 4개의 클러스터들이 대략 120개의 명령들을 지원할 수 있다고 가정하면, 우리는 분기를 추종하는 360개의 커밋된 명령들 중 얼마나 많은 것이 이들이 발행될 때 디스턴트이었는가를 식별할 필요가 있다. 따라서, 4개 또는 16개의 클러스터들 중 어느 하나가 적당할 수 있다. 이러한 계산을 실행하기 위해, 우리는 360개의 최후의 커밋된 명령들의 디스턴트 ILP 속성을 계속 추적한다. 단일 카운터가 36개의 명령들의 이 큐로 들어가고 떠나는 명령들에 의해 업데이트될 수 있어 디스턴트 ILP의 런닝 카운트(running count)가 유지될 수 있다. 분기가 우연히 이들 360개의 명령들 중 가장 오래된 것이면, 그것의 디스턴트 ILP의 등급은 카운터에 값으로 표시된다.
이웃하는 분기들로부터의 약간의 간섭이 여전히 있을 수 있다. 메카니즘을 더 강건하게 하기 위해, 우리는 재구성 테이블에서 분기에 대한 엔트리를 생성하기 전에 동일 분기의 다수의 인스턴트들에 대한 거동을 샘플링한다. 게다가, 우리는 특정 분기들에 대해서만 변경을 시도함으로써 재구성 입도를 미세 조정할 수 있다. 예를 들면, 우리는 최상의 성능은 우리가 모든 제 5 분기에 대해서만 변경을 시도했을 때 달성되었다는 것을 발견했다. 우리는 또한 서브루틴 콜(subroutine calls) 및 리턴들에서만 변경을 시도하는 메카니즘에 대한 결과들을 보인다. 우리는 이하에 그 알고리즘을 형식화한다:
모든 N번째 분기에 대한 알고리즘
모든 N번째 분기에서, 재구성 테이블을 참조.
엔트리가 발견되면, 어드바이스된 구성으로 변경.
그렇지 않으면, 16개의 클러스터들을 사용.
360개의 커밋된 명령의 큐로부터 분기를 제거하는 동안,
이 분기의 M개의 샘플들이 보여지면,
테이블을 업데이트하지 않음.
그렇지 않으면,
최근 샘플을 기록.
이것이 M번째 샘플이면,
어드바이스된 구성을 계산.
그렇지 않으면,
어드바이스된 구성이 16개의 클러스터이다.
바로 전에 기술된 접근방식의 불리한 면은 초기 측정들이 미래의 거동을 기 술한다는 사실이다. 분기를 추종하는 코드의 속성은 프로그램 과정 전체 걸쳐 변경될 수 있다. 특히 단지 4개의 클러스터들이 사용되고 디스턴트 ILP의 등급이 분명하지 않으면, 이와 같은 변경을 검출하는 것은 항상 용이한 것이 아닐 수 있다. 이러한 상황을 다루기 위해, 우리는 주기적인 간격들로 재구성 테이블을 상기시킬 수 있다. 우리는 10M 명령들마다 테이블을 재구성하면 무시할 수 있는 오버헤드들이 생긴다는 것을 반견했다.
도 5에 있어서, 기본 경우들 및 검색을 하는 구간-기반 스킴 이외에, 우리는 2개의 미세 단위 재구성 스킴들에 대한 IPC들을 나타낸다. 먼저 5번째 분기마다 재구성을 시도하고 각 분기에 대해 10개의 샘플들을 수집한 후 테이블에 엔트리를 생성한다. 에어리어싱 효과를 제거하기 위해, 거의 모든 경우들에, 훨씬 적은 테이블 작업들이 또한 이용될 수 있지만, 우리는 큰 16K-엔트리 테이블을 사용한다. 제 2 스킴은 모든 서브루틴 콜 및 리턴에서 변경들을 시도하고, 3개의 샘플들을 사용한다. 도면은 페이즈 변경들에 신속하게 반응할 수 있는 능력은 djpeg, cjpeg, crafty, parser, 및 vpr과 같은 프로그램들에 성능 개선을 가져온다는 것을 나타낸다. 구성들간의 변경들의 최대 수는 크래프티(crafty)(150만)을 위해 관측되었다. 검색을 갖지 않는 구간-기반 스킴들에서와는 달리, 불안정성이 노이지 측정들에 의해 생기지 않는다. 그러나, gzip는 구간-기반 스킴에 의해 달성되는 성능과 매칭하지 않는다. 이것은 분기를 추종하는 코드의 속성은 프로그램 과정 전체에 걸쳐 변경되기 때문이다. 그러므로, 미래를 위한 구성을 추출하기 위해 초기 측정들을 이용하는 우리의 정책은 항상 정밀한 것은 아니다. 동일한 거동이 galgel의 더 적은 범위까지 관측된다. 일반적으로, 미세 단위 스킴은 구간-기반 스킴들에서 보여진 11%의 개선에 비해, 기본 경우에 대해 15%의 개선을 낳는다.
이들 결과들로부터, 우리는 검색을 하는 구간-기반 스킴들은 구현하기 쉽고, 강건하고, 대부분의 속도증가를 가능하게 한다. 거친 구간 길이를 취출하는 그들의 경향때문에, 다수의 재구성 기회들을 놓친다. 연속하는 작은 구간들에 걸친 노이지 측정들 때문에 작은 구간 길이를 선택하는 것은 이것에 대한 해결방법이 아니다. 미세 단위 재구성을 허용하기 위해, 우리는 재구성 포인트들로서 기본 블록 경계들을 추출하고 미래의 거동을 예측하기 위해 초기 측정들을 사용한다. gzip를 제외하고, 이와 같은 접근방법은 많은 정밀도와 타협하지 않고 하드웨어는 프로그램의 요구들에 신속하게 적응할 수 있다. 그러나, 이러한 추가의 4% 개선을 얻기 위해, 우리는 약간의 적지않은 양의 하드웨어 - 예측들의 추적을 유지하기 위한 테이블 및 디스턴트 ILP 메트릭을 유지하기 위한 로직을 운용해야 한다.
분산형 캐시 모델이 먼저 클러스터드 LSQ 구현에 대해 설명된다. 분산형 캐시 모델에서, 유효 어드레스는 메모리 명령이 리네임될 때 알려지지만, 이때 그것은 대응하는 데이터를 캐시하는 클러스터로 보내질 수 있다. 그러나, 유효 어드레스는 일반적으로 리네임 시에 알려져 있지 않고, 이 메모리 동작이 액세스하고 있는 뱅크를 우리가 예측할 것을 요구한다. 이러한 예측에 기초하여, 명령은 클러스터들 중 하나로 보내진다. 일단 유효 어드레스가 계산되면, 적절한 복구 동작이 뱅크 오예측의 경우에 취해져야 한다.
동작이 로드되면, 복구는 간단하다. 즉 유효 어드레스가 정확한 클러스터에 보내지고, 여기서 메모리 충돌들이 LSQ에서 해결되고, 데이터는 캐시 뱅크로부터 페치되고, 요구하는 클러스터로 복귀된다. 메모리 동작이 스토어라면, 오지시는 정확도 문제를 낳는다. 상이한 클러스터에서의 로드는 동일한 어드레스에 잘못 지시된 스토어의 존재를 알지 못한 상태에서 진행될 수 있다. 이러한 문제를 다루기 위해, 우리는 다음과 같은 정책을 도입한다. 리네임하는 동안, 유효 어드레스가 알려지지 않은 스토어가 특정 클러스터(여기서 그것의 유효 어드레스가 계산된다)에 할당되지만 동시에, 더미 슬롯(dummay slot)이 또한 다른 클러스터들에서 생성된다. 다른 클러스터들에서의 더미 슬롯 뒤의 후속 로드들은 잠재적으로 충돌을 일으킬 수 있는 미해결된 어드레스를 갖는 초기의 스토어가 있기 때문에 진행이 방지된다. 유효 어드레스가 계산되면, 정보는 모든 클러스터들에 방송되고, 하나를 제외한 모든 LSQ들내의 더미 슬롯들이 제거된다. 방송은 레지스터를 위한 상호접속에 대한 트래픽 및 캐시 데이터(우리가 모델링하고 있는)를 증가시킨다.
뱅크 예측에 대해, 초기 작업은 로드 또는 스토어에 의해 액세스되는 뱅크를 예측하기 위해 테이블들과 같이, 분기-예측기의 사용을 제안하였다. 우리의 시뮬레이션에 있어서, 우리는 제 1 레벨에서의 1024 엔트리들 및 제 2 레벨에서의 4096 엔트리들을 갖는 2레벨 뱅크 예측기를 사용한다.
스티어링 발견법에 관해, 분산형 캐시를 갖는 프로세서에 있어서, 상기 스티어링 발견법은 각각의 로드 또는 스토어에 대한 3개의 데이터 의존성 - 2개는 소스 오퍼랜드들 및 데이터를 캐시하는 뱅크 -을 취급해야 한다. 캐시 데이터의 전달이 2개의 통신들(어드레스 및 데이터)을 포함하므로, 로드 또는 스토어가 대응하는 데 이터를 캐시하기 위해 예측되는 클러스터로 보내질 때 성능이 최대로 된다(중앙집중형 캐시 모델에서에서와는 달리, 캐시가 단일 위치에 있지 않기 때문에 그렇게 하는 것은 로드 불균형을 증가시키지 않는다는 점을 주목하라). 그렇게 할지라도, 빈번한 뱅크 오예측 및 스토어 어드레스 방송으로부터의 증가된 트래픽은 성능에 심각하게 영향을 준다. 이들 영향들을 무시하면 29% 만큼의 성능 개선이 있다. 동시에, 캐시 뱅크로부터의 의존성을 다루는 것은 증가된 레지스터 통신을 낳는다. 성능이 27%만큼 개선된 자유 레지스터 통신을 가정한다. 따라서, 레지스터 및 캐시 트래픽은 이와 같은 시스템에서 통신 병목현상에 동등하게 기여한다.
지금까지, 우리의 결과들은 중앙집중형 캐시를 갖는 클러스터드 프로세서를 가정했다. 그러므로, 재구성은 단지 스티어링 발견법으로 하여금 전체 클러스터들의 서브세트에의 디스패치를 허용하는 것이다. 분산형 캐시로, 각각의 클러스터는 그것과 관련된 캐시 뱅크를 갖는다. 데이터는 워드-인터리브 방식으로 이들 캐시 뱅크들에 할당된다. 16개에서 4개의 클러스터들로 감에 따라, 캐시 뱅크들의 수, 그러므로 물리 캐시 라인들로의 데이터의 매핑이 변경된다. 이러한 문제를 해결하기 위해, 최소의 복잡한 해결방법은 L1 데이터 캐시가 L2로 플러시되는 동안 프로세서를 정지시키는 것이다. 다행히도, 뱅크 예측기는 플러시될 필요가 없다. 16개의 클러스터들로, 뱅크 예측기는 4비트 예측을 생성한다. 4개의 클러스터들이 사용될 경우, 예측의 2개의 저순위 비트들은 정확한 뱅크를 나타낸다.
물리 캐시 위치들로의 데이터의 인덱싱이 변하기 때문에, 재구성은 중앙집중형 캐시 모델에서만큼 심리스(seamless)가 아니다. 모든 재구성은 프로세서의 정지 및 캐시플러시를 필요로 한다. 그러므로, 초기 섹션으로부터의 미세 단위 재구성 스킴은 적용되지 않는다. 도 6은 기본 경우들 및 구간-기반 메카니즘에 대한 IPC들을 나타낸다. 제 3 바는 조사 및 10K 명령의 최소 구간 길이를 갖는 스킴을 나타낸다. 제 4 및 제 5 바들은 최상의 구성을 추출하기 위해 디스턴트 ILP 메트릭들의 사용 및 검색을 갖지 않은 구간-기반 스킴을 나타낸다. 분산형 캐시에 대한 시뮬레이션 패러미터들은 표 2에 요약되어 있다. 우리는 결과들의 경향이 중앙집중형 캐시 모델에 대해 전해 보여진 것과 유사함을 알았다. djpeg의 경우를 제외하고, 짧은 구간을 이용하는 재구성으로부터의 이익은 없다. 일반적으로, 검색을 하는 구간-기반 스킴은 기본 경우에 비해 10%의 속도증가를 낳는다.
다이나믹 스킴은 재구성들의 최소화를 시도하므로, 캐시 플러시들이 최소로 유지된다. Vpr은 플러시(400K)로 인해 재기록의 최대 수와 부딪혔고, 이것은 1%만큼 IPC를 느리게 하였다. 일반적으로 이들 플러시들은 0.3%의 IPC 열화를 가져온다.
우리의 결과들은 클러스터들의 수가 2개의 중요한 캐시 구조에 대해 증가되기 때문에 통신 병렬 트레이드-오프가 상이한 프로그램들의 스케일러빌러티에 많은 영향을 준다는 것을 보였다. 이 섹션에서, 우리는 다른 의미있는 기본 경우에의 우리의 다이나믹 재구성 알고리즘의 응용가능성을 확신한다. 통신 등급 및 디스턴트 ILP의 등급에 영향을 주는 주요 패러미터들 중 몇개는 클러스터들간의 상호접속의 선택, 홉의 통신 레이턴시, 각 클러스터에서의 기능 유닛의 수, 및 각 클러스터에 의해 지원될 수 있는 명령들의 수(클러스터 당 레지스터 및 이슈 큐 엔트리들의 수)의 선택에 있다.
도 7은 중앙집중형 캐시 모델을 갖는 그리드 상호접속을 이용하는 효과를 나타낸다. 더 양호한 접속성 때문에, 통신은 병목현상이 적고 16-클러스터 구조의 성능은 4-클러스터 시스템의 성능보다 8% 더 양호하다. 간단히 하기 위해, 우리는 단지 검색을 하는 구간-기반 스킴에 의한 결과들을 나타낸다. 상기 경향은 전에 나타낸 것과 같지만, 통신 페널티는 전술한 것과 같지 않기 때문에, 최상의 기본 경우에 비해 전체적으로 7%만이 개선된다. 미세 단위 재구성 기술들의 사용은 링 상호접속과 정량적으로 유사한 결과들을 낳는다.
우리는 또한 클러스터내에서 여러 리소스들의 사이즈에 대한 결과들의 감도를 연구했다. 우리는 보다 적은 수의 리소스들(클러스터 당 10개의 이슈 큐 엔트리들 및 20개의 레지스터들) 및 더 많은 수의 리소스들(클러스터 당 20개의 이슈 큐 엔트리들 및 40개의 레지스터)을 이용하여 효과를 연구했다. 클러스터 당 아주 적은 리소스들이 있을 경우, 더 많은 클러스터들이 일반적으로 이용가능한 병렬처리를 이용하기 위해 요구된다. 그러므로, 16-클러스터 시스템이 유리한 기본 경우이고 그것에 대한 구간-기반 다이나믹 메카니즘의 개선은 단지 8%이다. 클러스터당 더 많은 리소스들이 있을 경우, 저-ILP 페이즈들에 대해 적은 수의 클러스터들을 이용하는 것이 크게 유리하다. 그 결과, 16-클러스터 기본 경우에 비해 13%의 개선이 있다. 각각의 홉에 대한 통신 비용을 2배로 하면 높은 통신-바운드 16-클러스터 시스템으로 된다. 다이나믹 메카니즘을 채용하고 저-ILP 페이즈들에 대해 보다 적은 클러스터들을 이용함으로써, 23%의 성능 개선이 있음을 알았다.
이들 결과들은, 다이나믹하게 조정가능한 설계가 넓은 범위의 프로세서 패러미터들에 걸쳐 성능을 크게 개선시킬 수 있다는 것을 나타내는 초기의 서브섹션들에서의 구간-기반 스킴에서 보여진 개선과 정량적으로 유사하다. 따라서, 통신-병렬처리 트레이드-오프 및 그의 관리는 미래의 대부분의 프로세서들에서 중요하게 될 가능성이 있다.
이상 최선의 실시예 및 그에 대한 변형예들이 설명되었지만, 본 개시내용을 검토한 이 기술분야에서 숙련된 사람은 다른 실시예들이 본 발명의 범위 내에서 실현될 수 있다는 것을 용이하게 알 수 있을 것이다. 예를 들면, 사용된 알고리즘들의 상세인 수치값들은 한정하기 보다는 예시적인 것이다. 그러므로, 본 발명은 첨부된 청구항들에 의해서만 한정되는 것으로 해석되어야 한다.

Claims (9)

  1. 복수의 클러스터들(clusters)을 포함하는 프로세서를 동작시키는 방법에 있어서,
    (a) 상기 프로세서상에서 프로그램을 동작시키기 위해 상기 클러스터들의 최적 수를 결정하는 단계; 및
    (b) 상기 프로세서로부터의 명령들을 최적수의 상기 클러스터들에만 전송하는 단계;를 포함하는, 프로세서를 동작시키는 방법.
  2. 제 1 항에 있어서,
    단계 (a)는 프로그램의 동작 중 복수회 수행되는, 프로세서를 동작시키는 방법.
  3. 제 2 항에 있어서,
    단계 (a)는 상기 프로그램의 복수의 페이즈들 각각의 시작시에 수행되는, 프로세서를 동작시키는 방법.
  4. 제 3 항에 있어서,
    단계 (a)는:
    (i) 상기 페이즈들 각각에 복수의 구간들을 정의하는 단계;
    (ii) 상기 복수의 구간들중 적어도 하나로부터 프로그램 통계치들(program statistics)을 검출하는 단계; 및
    (iii) 상기 프로그램 통계치들로부터 최적수의 클러스터들을 결정하는 단계;를 포함하는, 프로세서를 동작시키는 방법.
  5. 제 4 항에 있어서,
    단계 (a)(i)는 상기 구간들의 길이를 선택하는 단계를 포함하는, 프로세서를 동작시키는 방법.
  6. 제 5 항에 있어서,
    상기 구간들의 길이는 소정의 초기 구간기간으로 기동시키고 안정한 임계치(stability threshold)에 도달하거나 소정의 최대 구간 길이에 도달할 때까지 상기 소정의 구간 길이를 증가시킴으로써 선택되는, 프로세서를 동작시키는 방법.
  7. 제 3 항에 있어서,
    단계 (a)는:
    (i) 상기 페이즈들 각각에 복수의 구간들을 정의하는 단계;
    (ii) 상기 구간들 중 제 1의 구간 동안 이용가능한 디스턴트 명령-레벨 병렬처리(available distant instruction-level parallelism)의 등급(degree)을 결정하는 단계; 및
    (iii) 상기 이용가능한 디스턴트 명령-레벨 병렬처리의 등급으로부터 최적수의 상기 클러스터들을 결정하는 단계;를 포함하는, 프로세서를 동작시키는 방법.
  8. 제 7 항에 있어서,
    단계 (a)는 모든 N번째 분기에서 수행되고, 여기서 N은 전체 수인, 프로세서를 동작시키는 방법.
  9. 제 7 항에 있어서,
    단계 (a)는 모든 서브루틴 콜(every subroutine call) 및 리턴(return)에서 수행되는, 프로세서를 동작시키는 방법.
KR1020077000423A 2004-06-08 2005-06-08 클러스터드 프로세서들에서의 통신 병렬처리트레이드-오프의 동적 관리 KR20070022386A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020077000423A KR20070022386A (ko) 2004-06-08 2005-06-08 클러스터드 프로세서들에서의 통신 병렬처리트레이드-오프의 동적 관리

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60/577,607 2004-06-08
KR1020077000423A KR20070022386A (ko) 2004-06-08 2005-06-08 클러스터드 프로세서들에서의 통신 병렬처리트레이드-오프의 동적 관리

Publications (1)

Publication Number Publication Date
KR20070022386A true KR20070022386A (ko) 2007-02-26

Family

ID=43654111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077000423A KR20070022386A (ko) 2004-06-08 2005-06-08 클러스터드 프로세서들에서의 통신 병렬처리트레이드-오프의 동적 관리

Country Status (1)

Country Link
KR (1) KR20070022386A (ko)

Similar Documents

Publication Publication Date Title
US8103856B2 (en) Performance monitoring for new phase dynamic optimization of instruction dispatch cluster configuration
Balasubramonian et al. Dynamically managing the communication-parallelism trade-off in future clustered processors
Suleman et al. Accelerating critical section execution with asymmetric multi-core architectures
Pattnaik et al. Opportunistic computing in gpu architectures
Nagarajan et al. A design space evaluation of grid processor architectures
Srikantaiah et al. Adaptive set pinning: managing shared caches in chip multiprocessors
US7490218B2 (en) Building a wavecache
Bolychevsky et al. Dynamic scheduling in RISC architectures
JP2001236221A (ja) マルチスレッドを利用するパイプライン並列プロセッサ
Racunas et al. Partitioned first-level cache design for clustered microarchitectures
Atta et al. STREX: boosting instruction cache reuse in OLTP workloads through stratified transaction execution
Balasubramonian et al. Microarchitectural wire management for performance and power in partitioned architectures
Balasubramonian et al. A dynamically tunable memory hierarchy
Garside et al. Investigating shared memory tree prefetching within multimedia noc architectures
Gibert et al. An interleaved cache clustered VLIW processor
Kogge et al. [2010] facing the exascale energy wall
KR20070022386A (ko) 클러스터드 프로세서들에서의 통신 병렬처리트레이드-오프의 동적 관리
Yuan et al. QEI: Query acceleration can be generic and efficient in the cloud
Balasubramonian Cluster prefetch: tolerating on-chip wire delays in clustered microarchitectures
Pal et al. ReKonf: Dynamically reconfigurable multiCore architecture
Mirian et al. An implementation of a directory protocol for a cache coherent system on FPGAs
Henry et al. Speculative clustered caches for clustered processors
Falahati et al. Cross-Core Data Sharing for Energy-Efficient GPUs
Balasubramonian et al. Microarchitectural trade-offs in the design of a scalable clustered microprocessor
Zhong Architectural and Complier Mechanisms for Accelerating Single Thread Applications on Mulitcore Processors.

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination