KR20060025534A - 합성가능 파이프라인 제어를 위한 방법들 및 장치 - Google Patents

합성가능 파이프라인 제어를 위한 방법들 및 장치 Download PDF

Info

Publication number
KR20060025534A
KR20060025534A KR1020057022507A KR20057022507A KR20060025534A KR 20060025534 A KR20060025534 A KR 20060025534A KR 1020057022507 A KR1020057022507 A KR 1020057022507A KR 20057022507 A KR20057022507 A KR 20057022507A KR 20060025534 A KR20060025534 A KR 20060025534A
Authority
KR
South Korea
Prior art keywords
processor
instruction
designing
custom
instances
Prior art date
Application number
KR1020057022507A
Other languages
English (en)
Other versions
KR100721646B1 (ko
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 가부시키가이샤 소니 컴퓨터 엔터테인먼트
Publication of KR20060025534A publication Critical patent/KR20060025534A/ko
Application granted granted Critical
Publication of KR100721646B1 publication Critical patent/KR100721646B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Advance Control (AREA)

Abstract

본 발명에 따르면, 프로세서를 위해 생성될 맞춤 설계의 재사용가능 부분들을 식별하는 단계를 포함하는, 집적 회로의 프로세서를 설계하는 방법 및 구성이 제공된다. 프로세서는 특정 성능 기준을 만족시키도록 맞춤 설계된다. 이러한 맞춤 설계는 재사용가능 부분들에 대한 매크로들을 맞춤 설계하는 단계, 각각의 매크로의 인스턴스들의 개수를 지정하는 단계, 매크로들에 대한 상호연결들을 제공하는 단계, 및 맞춤 설계된 매크로들을 어셈블링하는 단계를 포함한다.
프로세서, 맞춤 설계, 매크로, 어셈블링, 인스턴스

Description

합성가능 파이프라인 제어를 위한 방법들 및 장치{Methods and apparatus for synthesizable pipeline control}
본 발명은 집적 회로들 및 그의 설계에 관한 것이다.
최근에, 집적 회로 프로세서(processor)들의 설계는 독립형 독점 설계(stand-alone proprietary design)로부터 더 큰 네트워킹 능력, 및 경합하는 설계들 및 레거시 플랫폼들(legacy platforms)을 이용한 정보 처리 상호 운용(interoperability)을 지원하는 설계들로 변화하여 왔다. 이것은 네트워크 서버 컴퓨터들을 이용한 컴퓨터 세계의 재배열과 일치되어 전통적으로 많이 이용해왔던 독립형 PC들을 대체하고 있다.
따라서, 이제는 최고의 독립형 성능을 가진 프로세서를 제공하는 것으로는 부족하다. 프로세서는 언제든지 계산 작업을 하는 데에 능숙해야 하며, 이것은 프로세싱 호출들에 효율적으로 응답하는 것을 의미한다. 다른 판매자에 의해 다양하게 설계된 프로세서들로부터 도착한 호출들을 지원하는 프로세서 설계는, 더 큰 정보 처리 상호 운용을 제공할수록 더 우수할 것이다. 그러나, 그러한 설계들 중에서, 2001년 3월 22일에 출원된 U.S. 특허출원 제09/815,554호에 기술된 것처럼, 네트워크의 프로세서들은, 그 크기가 큰지 또는 작은지, 서버인지 또는 고객인지에 상관없이 공통의 설계 특징들을 공유할 때 더 높은 성능이 성취된다. 그러한 공통의 설계들은 공통의 명령 세트 또는 그의 하부부분들을 가진 공통의 아키텍쳐(architecture), 및 데이터 경로들 및 어드레싱(addressing)에 대한 공통의 설계를 이용한다. 이러한 설계들은, 그래픽스(graphics) 데이터를 제공하고 그리고/또는 처리하는 일들에 대해 높은 실행 비율들을 지원한다. 이러한 설계들은 공유된 설계의 높은 성능 이익들을 증진하면서 정보 처리 상호 운용을 지원한다.
이러한 목적을 위한 프로세서들을 설계함에 있어서, 효율적인 프로세서 구성 및 설계 방법이 요구된다. 상대적으로 짧은 설계 사이클이, 프로세서의 크기 및 프로세서가 지원하는 계산 작업의 크기에 상관없이 실현되어야 한다. 반면에, 각각의 프로세서는 통상의 독립형 프로세서들의 성능에 필적하는 수준으로 높은 성능을 제공해야 한다. 이러한 다른 목적들은, 이하에서 기술되는 것처럼 통상의 설계 방법에 따라 모순되는 것처럼 보인다.
프로세서 설계에 대한 선행 기술은 2개의 방법들, 즉 합성 설계 및 맞춤 설계를 제공한다. 이러한 설계 방법들은 프로세서 기능을 제공하는 프로세서 "코어(core)들", 즉, 집적 회로들(IC(integrated circuit)들 또는 칩(chip)들)의 구성요소들의 설계에 특정 애플리케이션(application)을 제공한다. 시스템 온 칩(system-on-a-chip; SOC)으로 분류된 집적 회로는 프로세서 코어를 가진다.
합성 설계 방법에서는, 도 1에 도시된 것처럼, 처음에 재사용가능 부품 블록들의 라이브러리(library)가 개발되고(S10), 상기 라이브러리는 클록(clock) 속도들 및 목적들의 범위에서 이용하기 위한 많은 다양한 회로들의 설계에 이용될 수 있다. 재사용가능 부품 블록들은 고급 언어, 예를 들어, RTL(register transport level) 기술에 의해 정의된다. 설계자는 그 다음에 프로세서 내에서 사용하기 위한 부품 블록들을 지정함으로써 프로세서 설계를 어셈블링(assembling)한다(S12). 컴파일러(compiler)는 RTL 기술에서 지정된 부품 블록들로부터 회로 배치를 합성한다. 합성 설계는 명령 세트, 파이프라인들의 폭, 및 캐시(cache)의 크기와 같은, 설계 사이클 동안의 프로세서의 본질적인 특징들을 수정하기 위한 유연성을 제공한다. 이러한 수정들은 RTL 기술에서 다른 세트의 재사용가능 부품 블록들을 지정함으로써 행해진다(S14). 합성 설계는 상대적으로 짧은 설계 사이클 내에서 (프리-하드웨어(pre-hardware) 단계에서) 테스팅을 위한 설계들을 제공한다.
맞춤 설계는, 반면에, 상대적으로 긴 설계 사이클을 필요로 한다. 도 2에 도시된 것처럼, 프로세서의 전체 맞춤 설계에서는, 프로세서의 구성요소들은 처음부터 모든 기능 블록들을 포함하여 설계된다(S20). 회로들은 특정 성능 기준을 만족하도록, 즉, 최소 클록 주파수를 지원하도록, 특정 값보다 작은 전력을 소모하도록, 또는 특정 값보다 작은 집적 회로 영역을 차지하도록 수작업으로 만들어진다. 기능 블록들 사이의 배치 및 배선도 상기 성능 기준을 만족하도록 조심스럽게 설계된다(S22). 설계의 각각의 구성요소에 대한 주의 및 뚜렷한 성능 기준 만족으로 인하여, 프로세서를 합성 설계하는 것보다 맞춤 설계하는 것이 4배 더 큰 성능을 달성할 수 있다. 반면에, 맞춤 설계에 대한 수정은, 처음부터 프로세서를 재설계하는 것이 필요하기 때문에(S24) 어려움이 있다.
본 발명의 실시형태에 따르면, 집적 회로의 프로세서를 설계하는 방법이 제공되는데, 상기 방법은 프로세서를 위해 생성될 맞춤 설계의 재사용가능 부분들을 식별하는 단계를 포함한다. 프로세서는 특정 성능 기준을 만족하도록 맞춤 설계된다. 프로세서를 맞춤 설계하는 단계는 재사용가능 부분들을 위한 매크로(macro)들을 맞춤 설계하는 단계, 각각의 매크로의 인스턴스(instance)들의 개수를 지정하는 단계, 매크로들을 위한 상호연결들을 제공하는 단계, 및 맞춤 설계된 매크로들을 어셈블링(assembling)하는 단계를 포함한다.
본 발명의 또 다른 실시형태에 따르면, 집적 회로의 프로세서는 적어도 일부가 맞춤 설계된 복수의 구성요소들을 포함하는, 집적 회로의 프로세서가 제공된다. 맞춤 설계된 상기 구성요소들 중 적어도 일부는, 프로세서의 구성이 프로세서의 각각의 재사용가능 구성요소의 인스턴스들의 개수, 및 재사용가능 구성요소들의 상호연결들에 따라 결정되도록 재사용가능하다.
도 1은 선행 기술에 따른 합성 설계 방법을 도시하는 순서도이다.
도 2는 선행 기술에 따른 맞춤 설계 방법을 도시하는 순서도이다.
도 3은 본 발명의 실시형태에 따른 프로세서의 구성을 도시하는 블록도이다.
도 4는 본 발명의 또 다른 실시형태에 따른 프로세서의 구성을 도시하는 블록도이다.
도 5는 본 발명의 또 다른 실시형태에 따른 프로세서의 구성을 도시하는 세부 블록도이다.
도 6은 본 발명의 실시형태에 따른 프로세서의 싱글 스레드 명령 파이프라인 구성요소(single-threaded instruction pipeline element)의 구조 및 기능을 도시하는 다이어그램이다.
도 7은 본 발명의 실시형태에 따른 프로세서의 사이클-바이-사이클 다중 스레드 명령 파이프라인 구성요소(cycle-by-cycle multithreaded instruction pipeline element)의 구조 및 기능을 도시하는 다이어그램이다.
도 8은 본 발명의 실시형태에 따른 설계 방법을 도시하는 순서도이다.
도 9는 본 발명의 설계 방법 실시형태에 따라 어셈블링된 프로세서의 구성을 도시하는 세부 블록도이다.
본 발명의 실시형태들은 도 3 내지 도 9를 참조하여 기술될 것이다.
도 3은 본 발명의 실시형태에 따른 방법에 의해 설계된 프로세서(10)의 구성을 도시하는 블록도이다. 도 3에 도시된 것처럼, 프로세서는 3개의 기본 구성요소들, LS(local store; 12), 기능 유닛(14), 및 이슈 로직(issue logic; 16)을 포함한다. LS(12)는 적어도 데이터를 버퍼링하도록 기능을 하고 바람직하게는 기능 유닛(14)에 의한 실행을 위한 명령들을 제공한다. 기능 유닛(14)은 OP 비트들의 폭을 가진 피연산자들에 대한 명령들을 실행시킨다. 기능 유닛(14)에 의해 취급되어 질 수 있는 비트들 OP의 개수는 프로세서(10)의 설계에 의해 변화한다. 특정 실시형태에서, 비트들 OP의 개수는 예를 들어, 4, 8, 16, 32 또는 64비트로서 2의 정수배 제곱이다. 기능 유닛(14)은 LS(12)로부터 기능 유닛(14)에 제공된 피연산자에 대한 명령들을 실행시킨다.
이슈 로직(16)은, 실행을 위해 줄을 선 명령들을 기능 유닛(14)을 작동시키는 신호들로 변환한다. 예를 들어, 기능 유닛의 2개의 피연산자들을 곱하는 명령은, 각각이 하나의 피연산자를 1비트의 제 2 피연산자에 의해 결정된 장소로 이동시키는 일련의 작업들로 변환된다. 그 이후에, 이동 작업들의 결과들은 함께 추가된다.
도 4는 본 발명의 실시형태에 따른 방법에 의해 설계된 또 다른 프로세서(20)의 구성을 도시한다. 도 3에 도시된 프로세서(10)처럼, 프로세서(20)는 명령들을, 기능 유닛에 의해 실행을 제어하는 신호들로 변환하기 위한 이슈 로직(26)을 포함한다. 그러나, 프로세서(10)와 달리, 프로세서(20)는 복수의 LS들(22) 및 복수의 기능 유닛들(24)을 포함한다. 각각의 LS(22)는 적어도 피연산자들을 대응하는 기능 유닛(26)에 제공하고, 바람직하게는 기능 유닛(24)에서 피연산자에 대해 실행될 명령들을 공급한다. 프로세서(20)의 LS들(22) 및 기능 유닛들(24)은, 바람직하게는 단일 집적 회로에서 이용될지라도 프로세서(10)의 설계로부터 재이용되는 설계 구성요소들 또는 부품들이다. 그러므로 예를 들어, 프로세서(10)는, 16비트 폭 피연산자들에 대한 접근을 제공하는 LS, 및 64비트 폭 명령들을 처리하는 이슈 로직뿐만 아니라, 16비트 폭 피연산자들에 대한 명령들을 실행시키는 기능 유닛들을 포함한다. 이러한 경우에, 프로세서(20)는 4개의 기능 유닛들(24), 및 16비트 폭 피연산자들을 처리하는 4개의 LS들, 및 64비트 폭 명령들을 처리하는 이슈 로직을 포함한다. 이러한 경우에, 명령들은 4개의 다른 일련의 피연산자들에 관한 실행을 위해 대기행렬(queue)을 이룰 수 있고, (이하에서 더욱 충분히 기술되는 것처럼) 예를 들면 사이클-바이-사이클 다중 스레드 실행에 의해 제공될 수 있다. 선택적으로, 피연산자들이 각각의 LS(22)에서 대기행렬을 이루고 같은 명령에 의해 처리될 때, 프로세서(20)를 통한 데이터 경로의 폭은 4개의 인자만큼 잠재적으로 증가한다.
도 5는 본 발명의 실시형태에 따라 설계된 프로세서(100)의 구성을 도시하는 세부 블록도이다. 도 5에 도시된 것처럼, 프로세서(100)는 기능 유닛(102), 및 기능 유닛(102)에 결합한 캐시(104)를 포함하고, 캐시(104)는 피연산자들 및 기능 유닛(102)에 의해 실행된 연산들의 결과들인 데이터에 대한 자료 모음으로서 역할을 한다. 프로세서(100)는 명령 버퍼(106)를 더 포함하고, 명령 버퍼(106)로부터 명령들이, 기능 유닛(102)을 작동시키기 위한 신호들로 이슈 로직(110)에 의해 변환되기 위해 파이프라인(108)으로 전달된다. 도 5에 도시된 것처럼, 프로세서(100)는 캐시(104) 및 명령 버퍼(106)를 통하여 메모리(101)로 상호작용한다. 메모리(101)는 프로세서(100)에 의한 실행을 위한 데이터 및 명령들을 저장한다. 프로세서(100)는 또한 명령들을 실행시킨 결과들을 저장한다. 게다가, 명령들이 실행에 앞선 해석을 필요로 하는 명령문을 포함한다면, 메모리(101)는 프로세서(100)에 의한 명령문들을 해석하는 결과로서 생성된 추가된 명령들을 저장하는 데에 사용될 수 있다.
도 5에 도시된 실시예에서는, 프로세서에 대한 캐시(104)의 데이터 경로는 하나의 2배 단어의 폭(64비트)을 가진다. 명령 파이프라인(108)은 하나의 2배 단어 의 폭(64비트 폭)을 가진 명령들을 수용한다. 일 실시형태에서, 캐시는 1024개까지 이러한 2배 단어들을 수용한다.
명령 버퍼(106)는 명령 파이프라인(108)의 대기행렬 내의 배치를 위해 메모리(101)로부터 추출된 명령들을 보유한다. 본 발명의 일 실시형태에서, 명령 버퍼(106)는 적절한 개수, 예를 들면 32개의 명령들을 보유하고, 각각의 명령은 하나의 2배 단어의 폭을 가진다. 프로세서(100)가 지원하는 특정 애플리케이션에 대해 필요하다면, 더 작거나 더 큰 용량을 가진 명령 버퍼들이 제공될 수 있다. 바람직하게는, 명령 버퍼(106)는 명령 파이프라인(108)으로의 출력에 대해 메모리(101)로부터 추출된 명령들을 대기행렬로 만들기 위한 FIFO(first-in-first-out) 연산을 제공하고, 또한 임의 접근을 제공하여, 분기 연산들에 관하여 명령들이 버퍼링된 순서를 벗어나 실행되는 것을 허용한다.
명령 파이프라인(108)은, 명령 버퍼에서 이용할 수 있는 명령들로부터 실행을 위한 임의의 개수의 명령들을 대기 행렬로 만들고, 도 5의 실시예에서는 상기 개수가 6이다. 명령 파이프라인(108)은 파이프라인 내의 각각의 명령(INSN 1, INSN 2, INSN 3, 등)이 단일 스트림(stream)의 명령들로부터 시작하여 명령들의 상기 스트림 내의 마지막 이전 명령의 뒤를 잇는 통상의 단일 스레드 방법(single-threaded approach)을 지원한다.
명령 파이프라인(108)의 깊이는 주로 특정 프로세서 구성의 필요에 의해 결정된다. 6개의 명령들을 대기 행렬로 만드는 명령 파이프라인(108)은, 기능 유닛(102)을 작동시키는 신호들로의 변환을 위한 각각의 명령을 처리하기 위해 6개의 명령 사이클들을 필요로 한다. 이 사이클들 중 하나 이상은 일반적으로 이전에 실행된 명령의 결과들에 대한 명령의 종속성을 검사하는 데에 이용된다. 명령이 이러한 종속성을 가진다는 것이 확인된다면, 이전에 실행된 명령의 결과들은 캐시로부터의 검색을 위해 준비되어야 하고, 캐시(104)에서 이용될 수 없다면 메모리(101)로부터의 검색을 위해 준비되어야 한다.
가끔, 스트림에서 이전 명령을 실행한 결과들은 종속성 검사 시에 캐시 또는 메모리(101)에서 이용할 수 없으며, 이러한 결과들은 캐시(104) 및 메모리(101) "사이의" 어딘가에 배치된다. 바꿔 말하면, 데이터는 캐시 또는 메모리로부터 다른 곳으로 전송되는 처리에 있으며, 저장 위치는 특정 시간에 데이터로의 접근을 허용하지 않는다. 이러한 때에는, 처리를 위한 방법이 몇 개 없다. 하나의 방법에 따르면, 데이터가 캐시에서 이용되고 명령의 실행을 위한 기능 유닛(102)에 제공될 때까지 기능 유닛(102)은 일련의 대기 사이클들을 수행함으로써 시간을 번다. 이것은, 많은 프로세서 사이클들이, 준비될 데이터를 기다리는 데에 소비될 수 있기 때문에 바람직하지 않다. 또 다른 방법은 현재 명령 스트림이 중단되는 것이며, 프로세서(100)는 즉시 또 다른 명령 스트림을 버퍼(106), 및 실행을 위한 명령 파이프라인(108)에 로딩(loading)하는 것을 시작한다. 그러나 이러한 방법은, 많은 사이클들이, 버퍼(106)에 로딩되고 명령 파이프라인(108)에서의 실행에 준비될 명령들에 대해 필요하기 때문에 또한 바람직하지 않다.
도 6은 명령 파이프라인(208)에 보유된 명령들의 일련의 실행을 도시한다. 도 6에 도시된 것처럼, 파이프라인(208)의 각각의 명령은 스레드(thread) 번호 T1 에 의해 식별된다. 스레드 번호 T1은 메모리로부터 검색된, 특정 시퀀스(sequence)의 관련 명령들을 식별시킨다. 통상적으로 당업자가 알고 있듯이, 스레드의 각각의 명령은 마지막 이전 명령과 같은 작업 아이템(item)과 관련되며, 작업 아이템은 차례로 특정 스레드의 명령들을 실행시킴으로써 수행된다. 도 6은 특정 시간에 파이프라인(208)의 모든 명령들이 단일 스레드(T1)의 순차적으로 순서가 매겨진 명령들인 경우를 도시한다. 이러한 배열에서, 때때로 특정 스레드의 실행은 중지되고, 또 다른 스레드의 실행은 적절한 때에 시작된다. 스레드들 사이의 이러한 가끔의 변화들 이외에, 도 6에 도시된 모델은 스레드들의 명령들이 단일 스레드 명령 파이프라인(208)을 가진 프로세서에 의해 실행되는 순서를 표현한다. 바꿔 말하면, 스레드(T1)의 명령들의 실행은 순차적으로 행해진다.
그러나 앞에서 기술된 것처럼, 이러한 실행은 다양한 이유들로 바람직하지 않을 수 있다. 명령(210)이 이전 작업의 결과에 대한 종속성을 가지고 명령(210)이 실행을 위해 준비될 때에 결과가 기능 유닛(102)(도 5)으로 이용되어야 한다면, 명령(210)은 실행될 수 없다. 결과적으로, 이러한 종속성이 나타날 때, 통상의 반응은 명령 파이프라인(208)으로부터 스레드(T1)의 현재 스트림의 명령들을 제거하고 파이프라인(208)을 또 다른 스레드(T11; 도시되지 않음)의 명령들로 채우는 것을 시작할 수 있다. 명령 파이프라인(208)은 8의 깊이를 가지고 있으므로, 파이프라인을 재로딩(reloading)하기 위한 대기 시간은 8이다. 따라서, 적어도 8 사이클들이 스레드들 사이의 이러한 변환 동안 명령 파이프라인을 재로딩하는 데에 소비된다.
도 7은 위에서 보인 문제의 영향을 감소시키는 명령 파이프라인(308)을 도시 한다. 도 7에 도시된 것처럼, 파이프라인(308)의 실행을 기다리는 명령들은 다른 스레드들에 속한다. 각각의 스레드의 명령들이 각각의 스레드 내에서 순차적으로 순서가 매겨지는 반면에, 각각의 스레드의 명령들이 대기 행렬을 이루어 각각의 연속된 명령 사이클에서, 다른 스레드에 속하는 명령이 실행된다. 그러므로 제 1 사이클 동안, 스레드(T1)에 속하는 명령(310)이 실행된다. 이어서, 제 2 사이클 동안, 스레드(T2)로부터 명령(312)이 실행된다. 제 3 사이클 동안, 스레드(T3)에 속하는 명령(314)이 실행되고, 그 다음에 제 4 사이클에서 스레드(T4)에 속하는 명령(316)이 실행된다. 여기서 기술된, 실행을 위한 다른 스레드들의 명령들의 파이프라이닝(pipelining)은 "사이클-바이-사이클 다중 스레딩(cycle-by-cycle multiple threading)"으로 알려져 있다.
사이클-바이-사이클 다중 스레딩은 명령들의 실행이 종속성을 면하게 하기 때문에, 프로세서의 효율을 증대시킨다. 명령 파이프라인(308)의 실행을 기다리는 4개의 스레드들의 명령들이 있기 때문에, 특정 스레드(T3)의 명령(314)에 관하여 만족되지 않은 종속성(즉, 캐시 미스(cache miss))은 다른 스레드들(T1, T2 및 T4)의 실행이 중지되는 것을 일으키지 않는다. 특정 스레드(T3)에 관한 대기 상태는 다른 스레드들의 실행을 붕괴시키지 않는다. 스레드들(T1, T2 및 T4)의 명령들의 실행은 앞에서 기술한 바와 같이 진행된다.
게다가, 사이클-바이-사이클 다중 스레딩은 각각의 스레드의 명령들을 실행시키기 위한 대기 시간을 감소시킨다. 도 7에 도시된 것처럼, 다중 스레딩이 4개의 스레드들에 관하여 제공되는 8 명령들의 깊이를 가지는 명령 파이프라인에서, 각각 의 스레드의 고작 2개의 명령들만이 특정 시간에 명령 파이프라인(308)에서의 실행을 기다리기 때문에, 각각의 스레드에 대한 대기 시간은 단지 2이다. 게다가, 새로운 스레드가, 만족되지 않은 종속성을 가진 스레드 대신에 명령 파이프라인(308)으로 로딩될 때, 8 대신에 고작 2 사이클들만이 소비된다.
명령 파이프라인은 임의의 길이가 될 수 있고, 임의의 개수의 스레드들이, 이상에서 기술된 것처럼 사이클-바이-사이클 다중 스레딩을 지원하는 명령 파이프라인 내에 끼워질 수 있다.
상술한 이유 때문에, 전체 맞춤 설계의 수준과 필적하는 수준으로 수행되고, 특정 재사용가능 구성요소들의 개수 및 상호연결을 변화시키는 유연성을 가지며, 요망된다면, 사이클-바이-사이클 다중 스레딩 방식으로 작동되는 능력을 가진 프로세서 설계 방법이 바람직하다.
도 8은 본 발명의 실시형태에 따른 프로세서를 설계하는 방법을 도시하는 순서도이다. 도 9는 이러한 방법에 따라 설계된 프로세서의 구성을 도시하는 블록도이다. 도 8에 도시된 것처럼, 이러한 방법의 제 1 단계는 프로세서 설계의 재사용가능 부분들을 식별한다(S30). 이러한 구성요소들이 다른 구성요소들과의 특정 상호연결에서 변화할지라도, 프로세서는 반복되는 구성요소들을 포함한다.
도 9를 참조하면, 본 발명의 방법에 의해 설계된, 다양한 기능들을 지원하는 프로세서(400)의 구성이 단계 S30에서 식별된 재사용가능 구성요소들의 개수들에 따라 변화한다. 그러므로 프로세서(400)의 설계는, 복수의 재사용가능 캐시 구성요소들(CE 1, CE 2, ... CE Z)을 가진 캐시(404)를 포함한다. 캐시의 크기는 설계에 서 이용되는 캐시 구성요소들의 개수에 의해 결정된다. 각각의 캐시 구성요소는 전체 캐시의 상대적으로 큰 부분을 나타내어, 캐시 구성요소는 "매크로"로서 적임이다. 예를 들어, 16K의 2배 단어들의 크기를 가진 캐시는, 각각이 1024의 2배 단어들의 크기를 가지며 16개의 캐시 구성요소들을 가질 수 있다.
상기 방법의 다음 단계(S32; 도 8)는 프로세서를 구성하는 매크로들을 포함하는 프로세서를 맞춤 설계하는 것이다. 따라서, 각각의 상기 매크로 내에, 배치 및 배선이 특정 성능 기준을 만족시키기 위해 수작업에 의해 설계된다. 이러한 성능 기준은, 클록 주파수에 대한 하한을 넘을 수 있는 목표 클록 주파수를 달성하는 것을 포함한다. 성능 기준은, 집적 회로 영역에 대한 상한을 만족시킬 수 있는 집적 회로 영역에 대한 목표 요건을 만족시키는 것을 포함한다. 설계 방법이, 설계에서 함께 결합되고 기능을 하는 매크로들로서 이용가능한 재사용가능 구성요소들을 필요로 하는 것을 제외한다면, 이 단계는, 도 2를 참조하여 이상에서 기술된 맞춤 설계 방법과 유사하다.
각각의 매크로의 설계를 완성하고, 상기 맞춤 설계된 매크로들의 얼마나 많은 인스턴스들이 특정 기능을 지원하는 데에 필요한 지를 결정한 이후에, 프로세서 설계는 매크로들로부터 함께 어셈블링된다. 이러한 때에, 배선은 바람직하게는 매크로들의 인스턴스들을 서로, 다른 매크로들로, 그리고 설계의 다른 구성요소들로 상호연결하기 위해 맞춤 설계된다. 이러한 방식으로, 프로세서는, 도 2를 참조하여 이상에서 기술된 방법에 따라 설계된 프로세서의 성능 기준처럼 엄격한 성능 기준에 따라 설계된다.
그 이후에, 도 8에 도시된 것처럼, 단계 S34에서 설계에서 이용되는 각각의 유형의 매크로들의 인스턴스들의 개수 및 상호연결을 변화시킴으로써 프로세서 설계가 수정된다. 이에 따라, 본 발명의 실시형태에 따른 설계 방법이 유연해지고 용도가 많아진다.
이 방법으로부터 생성된 프로세서 구성이 도 9를 참조하여 설명된다. 도시된 실시형태에서, 캐시(404)가 캐시 구성요소 매크로들(CE 1, CE 2, ..., CE Z)의 인스턴스들의 개수를 지정함으로써 어셈블링되고, 프로세서의 다른 본질적인 특징들은 다른 유형들의 매크로들의 인스턴스들의 개수에 의해 결정된다. 그러므로 일 실시형태에서, 명령 버퍼(406)는, 각각이 특정 스레드에 대한 일련의 명령들을 버퍼링하는 버퍼들(INSN BUF0, INSN BUF1, ..., INSN BUFX)을 제공하는 것에 관하여 명령 버퍼 매크로의 인스턴스들의 개수를 선택함으로써 설계된다. 바꿔 말하면, 명령 파이프라인(408)에 결합된 명령 버스에 각각이 라운드-로빈(round-robin) 방식으로 명령들을 출력하는 다중 명령 버퍼들이 제공된다. 다중 명령 버퍼들(INSN BUF1, INSN BUF2 등), 명령 파이프라인(408), 및 이슈 로직(410)의 조합은 프로세서(400)의 명령 파이프라인 유닛(412)을 형성한다. 다중 명령 버퍼들 및 명령 파이프라인(408)에 대한 통상의 출력을 포함하는 이러한 구성은, 도 7을 참조하여 이상에서 기술된 것처럼 사이클-바이-사이클 다중 스레딩에 따른 연산을 가능하게 한다. 그러나 도 2와 관련하여 이상에서 기술된 방법과 달리, 설계를 시작하기 전에 상기 개수의 명령 버퍼들에 대하여 우선 순위가 결정되는 것이 필요하지 않다. 각각의 매크로가 재사용가능하도록 설계되므로, 프로세서의 기능 소자들의 크기 및 용량들 이 각각의 유형의 매크로들의 개수 및 상호연결에 따라 결정된다. 게다가, 명령 파이프라인(408)의 깊이(M) 및 폭(N)은 바람직하게는 명령 파이프라인(408)의 상기 기능을 지원하는 매크로들의 인스턴스들의 개수에 따라 결정된다.
게다가, 프로세서(400)의 기능 유닛(402)의 용량들은 제공되는 기능 유닛 매크로의 인스턴스들(FC1, FC2, ..., FCY)의 개수에 따라 결정된다. 기능 유닛 매크로의 각각의 인스턴스는, 바람직하게는 도 3 및 도 4를 참조하여 이상에서 기술된 것처럼 기능 유닛(14 또는 24)의 기능을 실행시킨다. 바꿔 말하면, 기능 유닛 매크로의 각각의 인스턴스는 스레드를 실행시키는 기능을 가진다. 그러므로 각각이 OP 비트의 피연산자들을 처리하는 Y개의 기능 유닛 매크로들을 가지는 프로세서 구성에 대해, 두 가지 이점들이 있다. 첫째, 다중 스레딩이 Y개의 명령 스트림들에 대해서까지 가능하다. 둘째, 기능 유닛들이 하나의 유닛으로서 함께 작동될 때, Y*OP 까지의 폭을 가지는 피연산자들이 하나의 사이클에서 처리될 수 있다.
프로세서들의 기능 구성에서의 특정 변화들이 2004년 4월 22일에 출원된 미국 가출원 제60/564,682호에 기술되어 있다.
설계 방법들 및 프로세서 구성에 관하여 상술된 설명은 다른 크기들 및 용량들의 프로세서들을 설계하는 유연하고 다목적인 방법을 제시하며, 공통된 설계 특징들을 공유하고, 특정 성능 기준을 만족시킨다.
본 발명이 특정 실시형태들과 관련하여 기술되었을 지라도, 이 실시형태들은 본 발명의 원리들과 응용들을 예시하는 것에 지나지 않는다. 따라서, 많은 변형들 이 상기 예시적인 실시형태들에 대하여 가능하며, 첨부된 청구범위에 의하여 정하여진 본 발명의 범위를 벗어나지 않으면서 다른 배열들이 가능하다.

Claims (18)

  1. 프로세서를 위해 생성될 맞춤 설계의 재사용가능 부분들을 식별하는 단계; 및
    특정 성능 기준을 만족시키기 위해 상기 프로세서를 맞춤 설계하는 단계를 포함하는, 집적 회로의 프로세서를 설계하는 방법으로서,
    상기 프로세서를 맞춤 설계하는 단계는:
    상기 재사용가능 부분들을 위한 매크로(macro)들을 맞춤 설계하는 단계;
    각각의 매크로의 인스턴스(instance)들의 개수를 지정하는 단계;
    상기 매크로들을 위한 상호연결들을 제공하는 단계; 및
    상기 맞춤 설계된 매크로들을 어셈블링(assembling)하는 단계를 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  2. 제 1 항에 있어서, 상기 매크로들은 명령 파이프라인(pipeline) 기능을 가지는 제 1 매크로를 포함하고, 상기 프로세서를 맞춤 설계하는 단계는, 상기 제 1 매크로의 인스턴스들의 개수를 선택하는 단계를 포함하는 명령 파이프라인 유닛을 설계하는 단계를 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  3. 제 2 항에 있어서, 상기 명령 파이프라인 유닛을 설계하는 단계는, 각각이 적어도 하나의 다른 명령 스트림 버퍼(instruction stream buffer)에서 버퍼링된 명령 스트림과 다른 명령 스트림을 버퍼링하도록 작동가능한 복수의 명령 스트림 버퍼들을 제공하는 단계, 및 상기 명령 파이프라인 유닛이 사이클-바이-사이클 다중 스레딩(cycle-by-cycle multiple-threading)을 제공하도록 작동가능하게 상기 복수의 명령 스트림 버퍼들을 상기 명령 파이프라인 유닛에 상호연결하는 단계를 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  4. 제 1 항에 있어서, 상기 매크로들은 캐시(cache) 기능을 가진 제 2 매크로를 포함하고, 상기 프로세서를 맞춤 설계하는 단계는 상기 제 2 매크로의 인스턴스들의 개수를 선택하는 단계를 포함하는 상기 프로세서의 캐시를 설계하는 단계를 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  5. 제 4 항에 있어서, 상기 캐시의 크기는 상기 제 2 매크로의 인스턴스들의 상기 개수에 따라 선택되는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  6. 제 1 항에 있어서, 상기 매크로들은 스레드(thread) 실행 기능을 가진 제 3 매크로를 포함하고, 상기 프로세서를 맞춤 설계하는 단계는, 상기 제 3 매크로의 인스턴스들의 개수를 선택하는 단계를 포함하는 상기 프로세서의 명령 실행 요소를 설계하는 단계를 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  7. 제 6 항에 있어서, 상기 명령 실행 요소에 의해 동시 실행이 가능한 스레드들의 개수가 상기 제 3 매크로의 인스턴스들의 상기 선택된 개수에 따라 결정되는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  8. 제 1 항에 있어서, 상기 특정 성능 기준은 클록 주파수(clock frequency)에 대한 하한을 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  9. 제 1 항에 있어서, 상기 특정 성능 기준은 집적 회로 영역에 대한 상한을 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  10. 제 8 항에 있어서, 상기 프로세서를 맞춤 설계하는 단계는 상기 프로세서의 배치(layout)를 수작업으로 하는 단계를 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  11. 제 8 항에 있어서, 상기 프로세서를 맞춤 설계하는 단계는 상기 프로세서의 배선(wiring)을 수작업으로 하는 단계를 포함하는 것을 특징으로 하는, 집적 회로의 프로세서를 설계하는 방법.
  12. 적어도 일부가 맞춤 설계된 복수의 구성요소들을 포함하는, 집적 회로의 프로세서로서,
    맞춤 설계된 상기 구성요소들 중 적어도 일부는, 상기 프로세서의 구성이 상기 프로세서의 각각의 재사용가능 구성요소의 인스턴스들의 개수, 및 상기 재사용가능 구성요소들의 상호연결들에 따라 결정되도록 재사용가능한 것을 특징으로 하는, 집적 회로의 프로세서.
  13. 제 12 항에 있어서, 상기 재사용가능 구성요소들은 명령 파이프라인 기능을 가진 구성요소들을 포함하고, 상기 프로세서의 명령 파이프라인 유닛의 구성은 명령 파이프라인 기능을 가진 각각의 상기 구성요소의 명령들의 개수에 따라 결정되는 것을 특징으로 하는, 집적 회로의 프로세서.
  14. 제 13 항에 있어서, 상기 명령 파이프라인 유닛은, 복수의 명령 스트림 버퍼들을 포함하고, 상기 복수의 명령 스트림 버퍼들 각각은 적어도 하나의 다른 상기 명령 스트림 버퍼에서 버퍼링된 명령 스트림과 다른 명령 스트림을 버퍼링하도록 작동가능하며, 상기 명령 파이프라인 유닛이 사이클-바이-사이클 다중 스레딩을 제공하도록 작동가능하게 상기 복수의 명령 스트림 버퍼들이 상기 명령 파이프라인 유닛에 상호연결되어 있는 것을 특징으로 하는, 집적 회로의 프로세서.
  15. 제 12 항에 있어서, 상기 재사용가능 구성요소들은 캐시 기능을 가진 구성요소들을 포함하고, 상기 프로세서의 캐시의 구성은 캐시 기능을 가진 각각의 상기 구성요소의 인스턴스들의 개수에 따라 결정되는 것을 특징으로 하는, 집적 회로의 프로세서.
  16. 제 15 항에 있어서, 상기 캐시의 크기는 캐시 기능을 가진 상기 구성요소의 인스턴스들의 상기 개수에 따라 결정되는 것을 특징으로 하는, 집적 회로의 프로세서.
  17. 제 12 항에 있어서, 상기 재사용가능 구성요소들은 스레드 실행 기능을 가진 구성요소들을 포함하고, 상기 프로세서의 명령 실행 구성요소의 구성은 스레드 실행 기능을 가진 각각의 상기 구성요소의 인스턴스들의 개수에 따라 결정되는 것을 특징으로 하는, 집적 회로의 프로세서.
  18. 제 17 항에 있어서, 상기 명령 실행 구성요소에 의한 동시 실행이 가능한 스레드들의 개수는 스레드 실행 기능을 가진 상기 구성요소의 인스턴스들의 개수에 따라 결정되는 것을 특징으로 하는, 집적 회로의 프로세서.
KR1020057022507A 2004-04-23 2005-04-21 합성가능 파이프라인 제어를 위한 방법들 및 장치 KR100721646B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US56484404P 2004-04-23 2004-04-23
US60/564,844 2004-04-23

Publications (2)

Publication Number Publication Date
KR20060025534A true KR20060025534A (ko) 2006-03-21
KR100721646B1 KR100721646B1 (ko) 2007-05-23

Family

ID=34966110

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057022507A KR100721646B1 (ko) 2004-04-23 2005-04-21 합성가능 파이프라인 제어를 위한 방법들 및 장치

Country Status (5)

Country Link
US (1) US7401316B2 (ko)
JP (1) JP4197324B2 (ko)
KR (1) KR100721646B1 (ko)
CN (1) CN1771486B (ko)
WO (1) WO2005103920A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989733B (zh) * 2021-05-07 2021-11-30 北京芯愿景软件技术股份有限公司 电路分析方法、装置、设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US101307A (en) * 1870-03-29 Improved attachment for brushes
US9648A (en) * 1853-04-05 Apparatus eob feeding blanks to screw-machines
US1080006A (en) * 1911-04-15 1913-12-02 Frank W Godfrey Voting-machine.
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US6035106A (en) 1997-04-28 2000-03-07 Xilinx, Inc. Method and system for maintaining hierarchy throughout the integrated circuit design process
EP0948868A1 (en) 1996-12-20 1999-10-13 BRITISH TELECOMMUNICATIONS public limited company Telecommunications network
US6438671B1 (en) 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
GB2373595B (en) 2001-03-15 2005-09-07 Italtel Spa A system of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7353362B2 (en) * 2003-07-25 2008-04-01 International Business Machines Corporation Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus

Also Published As

Publication number Publication date
JP4197324B2 (ja) 2008-12-17
WO2005103920A1 (en) 2005-11-03
KR100721646B1 (ko) 2007-05-23
US20050251762A1 (en) 2005-11-10
CN1771486B (zh) 2012-02-22
CN1771486A (zh) 2006-05-10
US7401316B2 (en) 2008-07-15
JP2005322228A (ja) 2005-11-17

Similar Documents

Publication Publication Date Title
US9817667B2 (en) Techniques for scheduling operations at an instruction pipeline
Bala et al. Efficient instruction scheduling using finite state automata
US20070277130A1 (en) System and method for architecture verification
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
US10691856B1 (en) System design flow with runtime customizable circuits
US7302554B2 (en) Methods and apparatus for multi-processor pipeline parallelism
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
WO2023121806A2 (en) Systems and methods for processor circuits
Potkonjak et al. Considering testability at behavioral level: use of transformations for partial scan cost minimization under timing and area constraints
KR100721646B1 (ko) 합성가능 파이프라인 제어를 위한 방법들 및 장치
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
Herbegue et al. Hardware architecture specification and constraint-based WCET computation
US20030120899A1 (en) Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
Karlström et al. Operation classification for control path synthetization with nogap
JP2005293349A (ja) 回路設計支援システム、設計方法及びプログラム
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
US9652305B2 (en) Tracking source availability for instructions in a scheduler instruction queue
US20100083209A1 (en) Behavioral synthesis apparatus, behavioral synthesis method, and computer readable recording medium
US20080059777A1 (en) Semiconductor integrated circuit device and compiler device
Si et al. PEPA: Performance Enhancement of Embedded Processors through HW Accelerator Resource Sharing
Bautista et al. Quantitative study of the impact of design and synthesis options on processor core performance
Shah et al. Comprehensive study of the features, execution steps and microarchitecture of the superscalar processors
Abbas et al. HDL
JP2003337838A (ja) データ処理装置の設計方法
Rashid et al. An object-oriented hardware/software co-design paradigm.

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: 20120423

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee