KR20190022858A - 비동기 파이프라인의 스테이지의 연산 속도 제어 - Google Patents

비동기 파이프라인의 스테이지의 연산 속도 제어 Download PDF

Info

Publication number
KR20190022858A
KR20190022858A KR1020197003111A KR20197003111A KR20190022858A KR 20190022858 A KR20190022858 A KR 20190022858A KR 1020197003111 A KR1020197003111 A KR 1020197003111A KR 20197003111 A KR20197003111 A KR 20197003111A KR 20190022858 A KR20190022858 A KR 20190022858A
Authority
KR
South Korea
Prior art keywords
stage
critical path
completion
modification
replica
Prior art date
Application number
KR1020197003111A
Other languages
English (en)
Other versions
KR102266303B1 (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 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority to KR1020217018014A priority Critical patent/KR102663653B1/ko
Publication of KR20190022858A publication Critical patent/KR20190022858A/ko
Application granted granted Critical
Publication of KR102266303B1 publication Critical patent/KR102266303B1/ko

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Power Sources (AREA)
  • Information Transfer Systems (AREA)
  • Pipeline Systems (AREA)

Abstract

비동기 파이프라인[105]은 제1 스테이지[112] 및 하나 이상의 제2 스테이지[111, 113]를 포함한다. 제어기[162]는 제1 스테이지의 연산 속도의 수정을 가리키기 위해 제1 스테이지로 제어 신호를 제공한다. 수정은 제1 스테이지의 완료 상태와 하나 이상의 제2 스테이지의 하나 이상의 완료 상태의 비교를 기초로 결정된다. 일부 경우, 제어기는 제1 스테이지에 인가되는 동작 전압 및 제1 스테이지의 버퍼[226]의 드라이브 강도의 수정을 가리키는 제어 신호를 제공한다.

Description

비동기 파이프라인의 스테이지의 연산 속도 제어
정부 라이센스 권리
본 발명은 에너지 부서(DOE: Department of Energy)에 의해 지원되는 종합 청부 번호 DE-AC52-07NA27344 하의 정부 지원으로 만들어졌다. 정부는 본 발명에 대해 일정 권리를 가진다.
관련 기술의 설명
일반적으로 프로세싱 시스템은 명령을 처리하기 위한 일련의 스테이지를 포함하는 파이프라인 아키텍처를 구현한다. 각각의 스테이지가 입력 데이터를 연산하여 출력 데이터를 생성하는 작업을 수행한다. 플립-플롭 또는 래치로서 구현될 수 있는 레지스터에 의해 데이터가 스테이지들 간에 통신된다. 스테이지는 입력 레지스터로부터 입력 데이터를 액세스하고 출력 데이터를 출력 레지스터로 제공한다. 파이프라인의 스테이지를 위한 입력 레지스터는 파이프라인의 이전 스테이지에 의해 대응하는 출력 레지스터에 제공되는 출력 데이터를 입력 데이터로서 수신할 수 있고 스테이지의 출력 레지스터가 다음 스테이지의 입력 데이터가 될 수 있다. 일부 경우 파이프라인의 스테이지들은 복수의 입력 데이터 세트를 동시에 연산한다. 예를 들어, 단일-명령-복수-데이터(SIMD) 연산을 구현하는 파이프라인 아키텍처가 "웨이브" 또는 "계산 웨이브"라고 지칭되는 동일 명령 복수 입력 데이터 세트를 동시에 실행할 수 있다. 웨이브는 상이한 입력 데이터 세트에 대응하는 복수의 작업 항목으로 구성된다. 일반적으로 작업 항목의 실행 시간이 입력 데이터에 따라 달라지고 각각의 웨이브 내 작업 항목이 상이한 시점에서 완료될 수 있다.
본 발명은 첨부된 도면을 참조함으로써 해당 분야의 통상의 기술자에게 본 발명이 더 잘 이해될 수 있으며 이의 많은 특징 및 이점이 자명해질 것이다. 상이한 도면에서의 동일한 도면 부호의 사용이 유사하거나 동일한 아이템을 가리킨다.
도 1은 일부 실시예에 따르는 비동기 파이프라인을 포함하는 프로세싱 시스템의 블록도이다.
도 2는 일부 실시예에 따르는 비동기 파이프라인의 일부분의 블록도이다.
도 3은 일부 실시예에 따르는 레플리카 임계 경로를 포함하는 비동기 파이프라인의 일부분의 블록도이다.
도 4는 일부 실시예에 따르는 비동기 파이프라인의 일부분의 블록도이다.
도 5는 일부 실시예에 따르는 레플리카 임계 경로에서의 중간 완료 상태 검출을 구현하는 비동기 파이프라인의 일부분의 블록도이다.
도 6은 일부 실시예에 따르는 중간 완료 상태 검출을 구현하는 비동기 파이프라인의 일부분의 블록도이다.
도 7은 일부 실시예에 따르는 병렬 프로세싱을 구현하는 비동기 파이프라인의 일부분의 블록도이다.
도 8은 일부 실시예에 따르는 비동기 파이프라인에서의 스테이지의 연산 속도를 수정하기 위한 방법의 흐름도이다.
실행 파이프라인의 스테이지들은, 동일한 클록 신호를 이용해 스테이지들 간 레지스터가 클록킹되는 동기식이거나, 파이프라인의 각각의 스테이지는, 각각 다른 스테이지가 타 스테이지에 독립적으로 입력 데이터를 읽고, 명령을 실행하며, 출력 데이터를 쓸 수 있도록 자체로 타이밍이 정해지는 비동기식이다. 어느 경우라도, 스테이지는 스테이지에 의해 수행되는 연산의 유형, 스테이지에 의해 연산되는 데이터, 및 스테이지에 의해 연산된 데이터 값의 시퀀스에 따라 달라지는 가변 레이턴시(latency)로 자신의 작업을 완료한다. 자신의 작업을 타 스테이지보다 빨리 완료한 스테이지는 타 스테이지가 완료하기를 기다리는 동안, 유휴 상태를 유지하며, 이는 파이프라인의 전체 처리량을 감소시키고 유휴 상태 스테이지가 소비하는 정적 파워를 낭비한다. 일반적으로 동기 파이프라인의 연산 주파수를 최대화하도록 시도하기 위해 동기 파이프라인의 하드웨어의 논리적 합성 및 물리적 레이아웃 동안 동기 파이프라인의 타이밍이 동기 파이프라인의 모든 스테이지를 횡단하는 임계 경로(critical path)의 레이턴시를 기초로 조절된다. 그러나 일반적으로 동기 파이프라인은 동기 파이프라인의 설계 동안 사용되는 임계 경로의 레이턴시와 상이한 레이턴시를 갖는 다양한 연산을 실행한다. 결과적으로, 동기 파이프라인의 성능은 항상 예상대로 최적 또는 에너지-효율적인 것은 아니다.
비동기 파이프라인 내 제1 스테이지의 완료 상태와 적어도 하나의 그 밖의 다른(제2) 스테이지의 비교를 기초로, 비동기 파이프라인의 (제1) 스테이지의 연산 속도를 수정함으로써 비동기 파이프라인의 성능 및 에너지 효율이 개선될 수 있다. 일부 실시예에서, 비동기 파이프라인의 제1 스테이지의 연산 속도를 수정하는 것은 제1 스테이지(또는 이의 일부분)에 인가되는 동작 전압을 수정하는 것 또는 제1 스테이지에서 하나 이상의 드라이브 버퍼에 가해지는 버퍼 드라이브 강도를 수정하는 것을 포함한다. 예를 들어, 제1 스테이지의 완료 상태는 제1 스테이지가 입력 데이터의 연산을 완료했고 이의 출력 데이터를 생성했음을 가리키도록 "완료(Done)"로 설정된다. 동시에, 입력 데이터를 제1 스테이지로 제공하는 인접한 스테이지 및 제1 스테이지로부터 출력 데이터를 수신하는 또 다른 인접한 스테이지의 완료 상태들이 모두 "프로세싱 중(Processing)"으로 설정되어, 이들이 각자의 입력 데이터의 연산을 완료하지 않았음을 나타낼 수 있다. 이 경우, 제1 스테이지에 대해 버퍼 드라이브 강도 또는 전압 공급이 감소되어 인접 스테이지가 프로세싱을 완료하는 동안 제1 스테이지에서의 에너지를 보존할 수 있다. 또 다른 예를 들면, 제1 스테이지로 입력 데이터를 제공하는 인접 스테이지 및 제1 스테이지로부터 출력 데이터를 수신하는 인접 스테이지의 완료 상태가 모두 "완료"이며 제1 스테이지의 완료 상태가 "프로세싱 중"인 경우, 제1 스테이지에 대한 버퍼 드라이브 강도 또는 전압 서플라이가 증가되어 제1 스테이지에 의한 프로세싱을 가속함으로써 이의 레이턴시를 감소시키고 제2 스테이지에서의 유휴 시간을 감소시킬 수 있다.
제1 및 제2 스테이지에 의한 계산 웨이브의 실행의 개시에 응답하여, 제1 및 제2 스테이지에 의해 생성되는 출력 신호를 모니터링함으로써 제1 및 제2 스테이지의 완료 상태가 결정될 수 있다. 일부 변형에서, 제1 및 제2 스테이지 내 계산 웨이브의 실행을 개시하는 것과 동시에 입력 신호를 제1 및 제2 스테이지 내 레플리카 임계 경로(replica critical path)로 인가하고 레플리카 임계 경로의 출력에서 출력 신호를 검출하는 것에 응답하여 제1 및 제2 스테이지가 완료됐다고 결정함으로써, 제1 및 제2 스테이지의 완료 상태가 결정된다. 스테이지의 회로 시뮬레이션을 기초로 레플리카 임계 경로가 형성된다. 일부 실시예에서, 스테이지의 완료 상태가 스테이지 또는 스테이지의 일부에 대한 추정된 완료 시각을 나타낸다. 예를 들어, (명령 연산코드(instruction opcode)에 의해 지시되는) 명령 유형 및 입력 데이터의 특성을 기초로 완료 시각의 추정치를 제공하는 조사 테이블(lookup table)을 이용해 제1 및 제2 스테이지의 완료 상태가 결정될 수 있다. 또 다른 실시예에서, 스테이지의 완료 상태가 스테이지의 논리 클라우드 내부의 신호들 또는 활동을 위한 출력 신호를 기초로 결정된다. 예를 들어, 스테이지로부터의 모든 출력 신호가 일정 시간 동안 변함 없이 유지되는 경우, 스테이지는 자신의 작업을 완료했을 가능성이 높다. 또 다른 예를 들면, 스테이지의 논리 클라우드 내부의 지정 위치에서의 하나 이상의 신호가 변함 없이 유지되는 경우, 스테이지는 자신의 계산의 특정 퍼센티지를 완료했을 가능성이 높다, 가령, 스테이지가 자신의 작업의 50%를 완료했을 수 있다.
도 1은 일부 실시예에 따라 비동기 파이프라인(105)을 포함하는 프로세싱 시스템(100)의 블록도이다. 본 명세서에서 사용될 때, 용어 "비동기 파이프라인"은 비동기 파이프라인의 스테이지들이 프로세싱 시스템(100) 내 비동기 파이프라인 외부 개체에 의해 사용되는 글로벌 클록 또는 타이밍 기준과 동기되지 않는 클록 또는 타이밍 기준에 따라 연산함을 가리킨다. 덧붙여, 비동기 파이프라인 내 개별 스테이지가 반드시 서로 동기화되는 것은 아니며 일부 경우 각자 고유의 내부 클록에 따라 연산할 수 있다. 비동기 파이프라인의 스테이지들이 때때로 "자체-타이밍되는" 스테이지라고 지칭된다. 따라서 본 명세서에서 언급되는 바와 같이, 비동기 파이프라인의 스테이지들의 연산 속도가 비동기 파이프라인의 타 스테이지의 연산 속도와 독립적으로 변할 수 있다.
비동기 파이프라인(105)은 총체적으로 "스테이지(110-114)"라고 지칭되는 복수의 스테이지(110, 111, 112, 113, 114)를 포함한다. 플립-플롭, 래치, 또는 그 밖의 다른 저장 디바이스를 이용해 구현될 수 있는 파이프라인 레지스터(120, 121, 122, 123, 124, 125)(본 명세서에서 총체적으로 "레지스터(120-125)"라고 지칭됨)를 이용해 데이터가 비동기 파이프라인(105) 내 다양한 포인트에서 저장된다. 도시된 실시예에서, 스테이지(110)는 플립-플롭으로서 구현될 수 있는 레지스터(120)에 저장된 입력 데이터의 논리 연산을 수행한다. 스테이지(110)는 래치로서 구현될 수 있는 레지스터(121)에 저장된 출력 데이터를 생성한다. 스테이지(111)는 레지스터(121)에 저장된 입력 데이터의 곱셈 연산을 수행하고, 래치로서 구현될 수 있는 레지스터(122)에 저장되는 출력 데이터를 생성한다. 스테이지(112)는 레지스터(122)에 저장된 입력 데이터의 덧셈 연산을 수행하고, 래치로서 구현될 수 있는 레지스터(123)에 저장되는 출력 데이터를 생성한다. 스테이지(113)는 레지스터(123)에 저장된 입력 데이터의 정규화 연산을 수행하고, 래치로서 구현될 수 있는 레지스터(124)에 저장되는 출력 데이터를 생성한다. 스테이지(114)는 레지스터(124)에 저장된 입력 데이터의 반올림 연산을 수행하며, 플립-플롭으로서 구현될 수 있는 레지스터(125)에 저장되는 출력 데이터를 생성한다. 5개의 스테이지 및 대응하는 개수의 파이프라인 레지스터가 비동기 파이프라인(105)에 도시되지만, 비동기 파이프라인(105)의 일부 실시예가 동일하거나 상이한 연산을 수행하는 더 많거나 더 적은 스테이지와 더 많거나 더 적은 파이프라인 레지스터를 포함한다.
입력 제어기(130)는 클록 신호(131) 및 유효 신호(132)를 레지스터(120) 및 모듈(135)로 제공한다. 클록 신호(131)는 데이터를 레지스터(120)로 제공하는 동기 영역에서 사용되는 외부 클록 신호와 동기화된다. 따라서 모듈(135)은, 가령, 신호를 파이프라인(105)의 동기 영역에서 비동기 영역으로 변환함으로써, 동기 영역과 비동기 파이프라인(105) 간 경계로서 동작한다. 모듈(135)은 비동기 파이프라인(105)이 추가 데이터를 처리할 준비가 됐는지 여부를 가리키는 피드백(133)을 제공한다. 예를 들어, 피드백(133)은 로직(110)이 추가 데이터를 처리할 준비가 됐음을 가리킬 수 있으며, 그 후 상기 데이터는 입력 제어기(130)에 의해 레지스터(120)로 클록킹된다. 모듈(140)은 비동기 파이프라인(105)으로부터 출력된 신호를 제어하는 데 사용된다. 모듈(140)의 일부 실시예가 비동기 파이프라인(105)의 비동기 영역과 프로세싱 시스템(100) 내 동기 영역 간 경계로서 기능한다. 예를 들어, 모듈(140)은 유효 데이터가 레지스터(125)로 클록킹될 준비가 됐음을 가리키기 위해 유효 신호(141)를 제공할 수 있다. 모듈(140) 및 레지스터(140)가 또한 동기 영역에서 사용되는 외부 클록 신호에 동기화되는 클록 신호(145)를 수신할 수 있다.
모듈(150, 151, 152)(본 명세서에서 총체적으로 "모듈(150-152)"이라 지칭됨)은 모듈(135, 140)과 함께 동작하여 스테이지(110-114)의 동작을 조정할 수 있다. 예를 들어, 모듈(150)은 스테이지(111)로부터 스테이지(111)의 완료 상태를 나타내기 위해 완료 상태 신호(155)를 수신하고 모듈(135)로부터 레지스터(121)에 저장된 입력 데이터에 대한 작업 실행이 스테이지(111)에 의해 개시되었음을 가리키는 시작 신호(156)를 수신한다. 상기 모듈(150)은 다음 스테이지(112)가 다음 데이터 세트에 대한 작업의 실행을 시작할 준비가 됐음을 가리키는 피드백(157), 스테이지(111)에 의해 레지스터(122)로 제공되는 데이터의 래칭 및 레지스터(122)로부터의 데이터의 스테이지(112)에 의한 액세스를 제어하는 래치 제어 신호(158)를 제공한다. 상기 모듈(150)은 또한, 레지스터(122)에 저장된 데이터를 연산하는 작업의 실행을 개시하며, 다음 모듈(151)에게 실행이 개시되었음을 가리키는 시작 신호(159)를 제공한다. 모듈(135, 140, 151, 152)은 명백성을 위해 대응하는 도면 부호로 지시되지 않는, 대응하는 신호를 제공 및 수신한다.
스테이지 제어기(161, 162, 163, 165)(본 명세서에서 총체적으로 "스테이지 제어기(161-164)"로 지칭됨)가 비동기 파이프라인(105)에서 스테이지(111-114)의 연산을 제어하는 데 사용된다. 스테이지 제어기(162)의 일부 실시예는 스테이지(111)에 대한 완료 상태 정보를 가리키기 위해 모듈(150)에 의해 제공되는 신호(165) 및 스테이지(113)에 대한 완료 상태 정보를 가리키기 위해 모듈(151)에 의해 제공되는 신호(166)를 기초로 스테이지(112)를 제어하도록 구성된다. 스테이지 제어기(162)는 스테이지(112)의 연산 속도를 설정 또는 수정하는 데 사용되는 제어 신호(167)를 제공한다. 스테이지 제어기(162)는 스테이지(111)의 완료 상태, 스테이지(112)의 완료 상태, 스테이지(113)의 완료 상태, 또는 이들의 조합을 기초로 스테이지(112)의 연산 속도(또는 이의 수정)을 결정한다. 본 명세서에 기재된 바와 같이, 스테이지 제어기(161, 163, 164)는 대응하는 스테이지(111, 113, 114)의 연산 속도를, 그 밖의 다른 스테이지 중 하나 이상의 완료 상태를 기초로 제어할 수 있다. 명확성을 위해, 스테이지(111, 113, 114)에 의해 제공되거나 수신되는 대응하는 모든 시그널링을 가리키도록 도면 부호는 제공되지 않는다.
일부 실시예에서, 스테이지(111-114)의 연산 속도가 스테이지(111-114)에서 구현되는 하나 이상의 버퍼의 드라이브 강도, 스테이지(111-114)의 동작 전압, 또는 이들의 조합에 의해 결정된다. 예를 들어, 스테이지 제어기(162)는 표 1에 따르는 스테이지(111-113)의 완료 상태를 기초로 스테이지(112)의 연산 속도의 수정을 결정할 수 있다.
스테이지 111
상태
스테이지 112
상태
스테이지 113
상태
버퍼 드라이브 강도 제어 전압 서플라이 제어
프로세싱 중 프로세싱 중 프로세싱 중 변함 없음 변함 없음
프로세싱 중 프로세싱 중 완료 변함 없음 소폭 증가
프로세싱 중 완료 프로세싱 중 소폭 감소 소폭 감소
프로세싱 중 완료 완료 소폭 감소 소폭 감소
완료 프로세싱 중 프로세싱 중 변함 없음 소폭 증가
완료 프로세싱 중 완료 대폭 증가 대폭 증가
완료 완료 프로세싱 중 대폭 감소 대폭 감소
완료 완료 완료 변함 없음 대폭 감소
표 1의 완료 상태가 대응하는 스테이지가 이의 현재 작업을 여전히 실행 중인지(프로세싱 중) 또는 대응하는 스테이지가 현재 작업의 실행을 완료했는지(완료) 여부를 가리키고 따라서 실행을 위해 새로운 작업을 수락할 준비가 되어 있는지 여부를 가리킨다. 연산 속도는 에너지를 절약하거나 스테이지(112)에 의한 프로세싱을 가속하도록 수정될 수 있다. 예를 들어, 스테이지(111)의 완료 상태가 프로세싱 중이고, 스테이지(112)의 완료 상태가 완료이며, 스테이지(113)의 완료 상태가 프로세싱 중인 경우, 스테이지 제어기(162)가 스테이지(112)로 제공되는 버퍼 드라이브 강도 및 전압 서플라이를 감소시켜 스테이지(112)가 소비하는 에너지를 감소시킬 수 있다. 또 다른 예를 들면, 스테이지(111)의 완료 상태가 완료이고, 스테이지(112)의 완료 상태가 프로세싱 중이며, 스테이지(113)의 완료상태가 완료인 경우, 스테이지 제어기(162)가 스테이지(112)로 제공되는 버퍼 드라이브 강도 및 전압 서플라이를 증가시켜 스테이지(112)에 의한 프로세싱을 가속할 수 있다. 표 1의 일부 실시예는, 본 명세서에 기재된 바와 같이, 조사 테이블에 저장될 수 있다. 스테이지(111-114)로의 전압 서플라이를 수정하는 것이 스테이지(111-114) 내 모든 로직의 연산 속도에 영향을 미친다. 그러나, 본 명세서에 기재될 바와 같이, 일부 실시예에서, 스테이지(111-114)의 일부분 또는 영역에 공급되는 전압이 스테이지(111-114)의 타 부분 또는 영역과 별개로 수정되어 개별 부분 또는 영역의 연산 속도를 제어할 수 있다. 스테이지(111-114) 내 버퍼의 드라이브 강도를 수정하는 것이 상기 버퍼의 업스트림에 있는 스테이지(111-114)의 일부분 또는 영역에 영향을 미친다. 예를 들어, 각각의 스테이지(111-114)의 시작부분, 중간부분, 또는 끝부분에 있는 버퍼의 드라이브 강도를 수정하는 것이 스테이지(111-114)의 대응하는 부분 내 경로의 연산 속도를 수정할 수 있다. 설정 가능한 드라이브 버퍼가 또한 스테이지(111-114)의 로직 내부 롱 와이어 상에 배치되어 라우팅 딜레이를 제어할 수 있다. 버퍼의 드라이브 강도를 증가시키면 일반적으로 스테이지(111-114) 내 경로를 따르는 신호의 전파 시간이 감소되고, 이는 경로를 따르는 계산 시간을 감소시킬 수 있다. 일부 실시예에서, 인터커넥트 로직에 공급하기 위해 개별 전압원을 이용함으로써 신호 전파 속도가 제어된다. 개별 전압원이 스테이지(111-114) 내 로직의 또 다른 부분에 공급하기 위해 사용되는 또 다른 전압원에 독립적으로 제어된다. 일부 변형예에서, 전압 제어의 입도가 미세하다(fine-grained), 가령, 1나노초만큼 짧은 전압 상태들 간 과도 시간을 갖고 전압이 10밀리볼트(mV) 스텝으로 수정될 수 있다. 스테이지(111-114)의 로직의 일부분의 전력 게이팅 또는 전압 제어를 위해 풋 트랜지스터(foot transistor)가 사용될 수 있다.
프로세싱 시스템(100)의 일부 실시예가 입력 제어기(130) 또는 스테이지 제어기(161-164)로 연결되는 파이프라인 제어기(170)를 포함한다. 파이프라인 제어기(170)는 파이프라인 스테이지(110-114)에 대한 완료 시각을 결정한다. 상기 스테이지 제어기(161-164)는 비동기 파이프라인(105)에 대한 전체 완료 시각을 기초로 대응하는 스테이지(110-114)의 완료 시각을 조절하도록 시도할 수 있다. 본 명세서에 언급된 바와 같이, 조절은 스테이지(110-114)의 로직 콘에서의 버퍼의 드라이브 강도의 서플라이 전압 변화 및 수정을 포함한다. 예를 들어, 파이프라인 제어기(170)가 컴퓨터 유닛에 의해 구현되는 비동기식 단일-명령-복수-데이터(SIMD) 파이프라인의 레인들에서의 명령의 비동기 실행을 제어할 수 있다. 컴퓨터 유닛 내 그 밖의 다른 회로 또는 파이프라인이 동기 방식으로 동작할 수 있고 특수화된 버퍼를 통해 비동기식 SIMD 파이프라인과 통신할 수 있다. 파이프라인 제어기(170)는 비동기 SIMD 파이프라인의 레인들 간 단일 명령의 실행의 진전을 모니터링하고 작업 완료의 속도의 균형을 조절하여(복잡도를 피하기 위해 가능하다면 마지막 파이프라인 스테이지(114)에서 이뤄짐) 모든 레인이 거의 동시에 동일한 명령에 대한 자신의 작업을 완료하도록 함으로써, 레인 편차(레인 편차)(즉, 하나의 웨이브 내 모든 SIMD 레인들간 명령의 완료 시각의 편차)를 제거하는 데 도움이 될 수 있다. 파이프라인 제어기(170)를 이용해 레인 편차를 제어하는 것이 (a) 데이터를 SIMD 파이프라인에서 뒤따를 수 있는 자신의 소비자 명령(consumer instruction)으로 우회시키는 로직 및 (b) 결과를 동기 영역에서 VRF로 되 쓰는 로직을 단순화할 수 있다. 일부 변형에서, 개별 스테이지 제어기(161-164)가 더 적은 전체 시간 내에 명령의 실행을 완료함으로써 타이밍을 개선하고 에너지 소비를 감소시키려 시도한다.
도 2는 일부 실시예에 따르는 비동기 파이프라인의 일부분(200)의 블록도이다. 일부분(200)은 입력 레지스터(210)로부터의 입력 데이터를 액세스하고 출력 데이터를 출력 레지스터(215)로 제공하는 스테이지(205)를 포함한다. 일부분(200)은 도 1에 도시된 비동기 파이프라인(105)의 일부 실시예에서 사용된다. 일부 변형에서, 입력 레지스터(210) 및 출력 레지스터(215)가 도 1에 도시된 레지스터(121-124) 중 하나 이상을 구현하는 데 사용되며, 스테이지(225)는 도 1에 도시된 스테이지(110-114) 중 대응하는 하나를 구현하는 데 사용된다. 상기 스테이지(205)는 스테이지(205)에 할당된 작업의 일부분을 수행하기 위해 로직을 구현하는 로직 영역(220, 221, 222)(본 명세서에서 총체적으로 "로직 영역(220-222)"이라고 지칭됨)을 포함한다. 로직 영역(220-222)은 드라이브 전류를 부분(200) 내 로직의 업스트림 영역으로 제공하는 버퍼(225, 226, 227)(본 명세서에서 총체적으로 "버퍼(225-227)"라고 지칭됨)를 포함하는 인터커넥트 네트워크에 의해 연결된다. 상기 버퍼(225-227)는 버퍼(225-227)에 의해 수신되는 제어 신호를 기초로 결정된 가변 드라이브 강도에서 동작할 수 있는 설정 가능 버퍼이다.
상기 부분(200)은 비동기 파이프라인 내 타 스테이지(도시되지 않음)의 완료 상태를 기초로 스테이지(205)(또는 이의 일부분)의 연산 속도를 설정 또는 수정할 수 있는 스테이지 제어기(230)를 더 포함한다. 일부 변형에서, 스테이지 제어기(230)는 도 1에 도시된 스테이지 제어기(161-164) 중 하나에 대응한다. 스테이지 제어기(230)의 일부 실시예는 스테이지(205)의 동작 전압을 수정하여 스테이지(205)의 연산 속도를 수정할 수 있다. 전체 스테이지(205)에 인가되는 동작 전압이 로직 영역(220-222)의 연산 속도를 수정하도록 수정되거나, 로직 영역(220-222)에 인가되는 동작 전압이 로직 영역(220-222) 중 하나 이상의 하나 이상의 연사 s속도를 수정하도록 개별적으로 수정될 수 있다. 스테이지 제어기(230)의 일부 실시예가 버퍼(225-227) 중 하나 이상의 드라이브 강도를 수정하여 대응하는 버퍼(225-227)의 다운스트림에 있는 로직의 연산 속도를 수정할 수 있다. 예를 들어, 스테이지 제어기(230)는 버퍼(225)의 드라이브 강도를 수정하여 다운스트림 로직, 가령, 로직 영역(222) 및 로직 영역(221)의 연산 속도를 수정할 수 있다.
부분(200)의 일부 실시예가 스테이지 제어기(230)에 포함되거나 스테이지 제어기(230)에 의해 액세스 가능한 메모리에 저장되는 조사 테이블(LUT)(235)을 포함한다. 상기 조사 테이블(235)은 스테이지(205)에 의해 실행될 수 있는 상이한 유형의 명령에 대한 완료 시각의 추정치를 포함하는 엔트리를 포함한다. 예를 들어, 조사 테이블(235) 내 각각의 엔트리가 명령 연산코드, 명령 유형, 입력 데이터 값 등에 의해 인덱싱되는 완료 시각의 추정치를 포함한다. 일부 변형에서, 스테이지(205)의 타깃팅된 또는 랜덤 회로 시뮬레이션을 이용해 완료 시각의 추정치가 결정된다. 그 후 스테이지 제어기(230)는 스테이지(205)에 의해 실행되는 연산 코드 또는 유형, 명령에 의해 연산되는 데이터의 값, 가령, 입력 레지스터(215)에 저장되는 데이터의 값 등을 기초로 스테이지(205)의 완료 상태를 추정할 수 있다. 예를 들어, 스테이지 제어기(230)는 모듈(가령, 도 1에 도시된 모듈(135, 140, 150-152) 중 하나)로부터, 스테이지(205)에 의한 명령을 포함하는 작업의 실행의 개시에 대한 시작 시각을 가리키는 신호를 수신할 수 있다. 스테이지 제어기(230)는 현재 시각을 시작 시각 더하기 조사 테이블(235) 내 엔트리를 기초로 결정된 추정된 완료 시각에 비교함으로써, 스테이지(205)의 완료 상태를 추정한다. 스테이지 제어기(230)의 일부 실시예는 조사 테이블(235)에 저장된 정보를 기초로 그 밖의 다른 스테이지(가령, 입력 레지스터(210)로 입력 데이터를 제공하거나 출력 레지스터(215)로부터의 출력 데이터를 액세스하는 스테이지)에 대한 완료 시각을 추정한다.
도 3은 일부 실시예에 따르는 레플리카 임계 경로를 포함하는 비동기 파이프라인의 일부분(300)의 블록도이다. 부분(300)은 입력 레지스터(310)로부터의 입력 데이터를 액세스하고 출력 레지스터(315)로 출력 데이터를 제공하는 스테이지(305)를 포함한다. 부분(300)은 도 1에 도시된 비동기 파이프라인(105)의 일부 실시예에서 사용된다. 일부 변형에서, 입력 레지스터(310) 및 출력 레지스터(315)가 도 1에 도시된 레지스터(121-124) 중 하나 이상의 구현하는 데 사용되고 스테이지(305)는 도 1에 도시된 스테이지(110-114) 중 대응하는 하나를 구현하는 데 사용된다.
스테이지(305)는 스테이지(305) 내 하나 이상의 임계 경로의 타이밍을 복제(replicate)하도록 구성된 로직을 포함하는 레플리카 임계 경로(320)와 연관되어, 입력 데이터의 처리를 완료하기 위해 스테이지(305) 내 임계 경로에 대해 요구되는 시간에 대응하는 시간격 후 레플리카 임계 경로(320)가 입력 데이터의 처리를 완료하게 할 수 있다. 예를 들어, 레플리카 임계 경로(320)는 스테이지(305)의 임계 경로를 따라 구현되는 복수의 게이트와 매칭되는 복수의 게이트를 포함할 수 있다. 레플리카 임계 경로(320)는 스테이지(305)의 임계 경로를 따르는 게이트의 팬-인 및 팬-아웃 값을 매칭하도록 더 구성될 수 있다. 레플리카 임계 경로(320)의 일부 실시예가 스테이지(305) 내 임계 경로의 로직과 반드시 동일한 것은 아닌 로직을 포함한다. 대신, 레플리카 임계 경로(320)를 따르는 신호의 흐름의 모니터링을 촉진시키도록 입력 신호가 레플리카 임계 경로(320)의 게이트들을 가로질러 흐름에 따라 값을 변화시키도록 레플리카 임계 경로(320)의 로직이 구성된다. 회로 시뮬레이션을 이용해 레플리카 임계 경로(320)와 실제 임계 경로 간 레이턴시가 결정될 수 있다.
부분(300)은 스테이지(305)의 완료 상태를 추정하는 데 사용되는 신호를 제공 및 수신하는 모듈(325, 330)을 더 포함한다. 모듈(325, 330)은 도 1에 도시된 모듈(120, 125, 150-152)의 일부 실시예를 구현하는 데 사용된다. 모듈(325)의 일부 실시예는 시작 신호(335)를 제공하여, 레플리카 임계 경로(320)가 입력 데이터의 처리를 시작하게 할 수 있다. 시작 신호(335)는 스테이지(305)에 의해 입력 레지스터(310) 내에 저장된 입력 데이터의 처리를 개시하는 데 사용되는 시작 신호와 동시에 제공된다. 모듈(330)은 시작 신호(335)에 응답하여 레플리카 임계 경로(320)에 의해 생성된 출력 신호(340)를 모니터링하여, 레플리카 임계 경로(320)의 완료 상태를 결정할 수 있다. 일부 변형에서, 모듈(330)은 레플리카 임계 경로(320)가 출력 신호(340)의 특정 패턴을 검출함으로써 또는 레플리카 임계 경로(320)와 연관된 출력 레지스터에 저장된 데이터가 정상-상태(steady-state)에 도달했음을 결정함으로써, 입력 데이터에 대한 연산을 완료했다고 결정한다. 레플리카 임계 경로(320)가 스테이지(305)에 대한 추정된 완료 시각 및 실제 완료 시각 간 차이를 보상하기 위해, 레이턴시가 모듈(330)에 의해 결정된 완료 시각에 더해지거나 빼질 수 있다.
도 4는 일부 실시예에 따라 비동기 파이프라인의 일부분(400)의 블록도이다. 일부분(400)은 입력 레지스터(410)로부터의 입력 데이터를 액세스하고 출력 레지스터(415)로 출력 데이터를 제공하는 스테이지(405)를 포함한다. 부분(400)은 도 1에 도시된 비동기 파이프라인(105)의 일부 실시예에서 사용된다. 일부 변형에서, 입력 레지스터(410)와 출력 레지스터(415)는 도 1에 도시된 레지스터(121-124) 중 하나 이상을 구현하는 데 사용되고 스테이지(405)는 도 1에 도시된 스테이지(110-114) 중 대응하는 하나를 구현하는 데 사용된다.
상태 모듈(420)은 스테이지(405)에 의해 제공되는 출력 신호를 모니터링하도록 구성된다. 상태 모듈(420)은 출력 신호의 특성을 이용해 스테이지(405)에 대한 완료 상태를 결정할 수 있다. 예를 들어, 상태 모듈(420)은 스테이지(405)에 의해 생성되는 출력 신호의 변경을 모니터링할 수 있다. 상태 모듈(420)은 출력 신호의 값이 변하는 중인 경우 스테이지(405)가 자신의 현재 작업을 프로세싱하는 중이라고 결정한다. 일부 변형에서, 상태 모듈(420)은 출력 신호의 값이 정상-상태이거나 임계치 미만의 비율로 변하는 경우 스테이지(405)가 자신의 현재 작업의 프로세싱을 완료했다고 결정한다.
부분(400)은 스테이지(405)의 완료 상태를 추정하는 데 사용되는 신호를 제공 및 수신하는 모듈(425, 430)을 더 포함한다. 모듈(425, 430)은 도 1에 도시된 모듈(120, 125, 150-152)의 일부 실시예를 구현하도록 사용된다. 모듈(425)의 일부 실시예는 시작 신호(435)를 상태 모듈(420)로 제공하여, 입력 레지스터(410)에 저장되는 입력 데이터를 이용해 스테이지(405)가 자신의 작업의 프로세싱을 시작했음을 가리킬 수 있다. 시작 신호(435)는 스테이지(405)에 의해 입력 레지스터(410)에 저장된 입력 데이터의 프로세싱을 개시하는 데 사용되는 시작 신호와 동시에 제공된다. 앞서 언급된 바와 같이, 모듈(430)은 시작 신호(435)에 응답하여 스테이지(405)에 의해 생성된 출력 신호의 모니터링을 시작하여, 스테이지(405)의 완료 상태를 결정할 수 있다. 상태 모듈(420)은 스테이지(405)의 완료 상태를 나타내는 신호를 모듈(430)에게 제공한다. 예를 들어, 상태 모듈(420)은 스테이지(405)의 완료 상태가 "프로세싱 중"인 동안 모듈(430)에게 논리-로우 신호를 어서트(assert)하고, 그 후 스테이지(405)의 완료 상태가 "완료"로 전환됨에 응답하여 모듈(430)로 논리-하이 신호를 어서트한다.
도 5는 일부 실시예에 따라 레플리카 임계 경로에서 중간 완료 상태 검출을 구현하는 비동기 파이프라인의 일부분(500)의 블록도이다. 부분(500)은 입력 레지스터(510)로부터의 입력 데이터를 액세스하고 출력 레지스터(515)로 출력 데이터를 제공하는 스테이지(505)를 포함한다. 부분(500)은 도 1에 도시된 비동기 파이프라인(105)의 일부 실시예에서 사용된다. 일부 변형에서, 입력 레지스터(510) 및 출력 레지스터(515)가 도 1에 도시된 레지스터(121-124) 중 하나 이상을 구현하는 데 사용되고, 스테이지(505)는 도 1에 도시된 스테이지(110-114) 중 대응하는 것을 구현하는 데 사용된다.
스테이지(505)는 스테이지(505) 내 하나 이상의 임계 경로의 타이밍을 복제하도록 구성된 로직을 포함하는 레플리카 임계 경로(520)와 연관되어, 레플리카 임계 경로(520)가 스테이지(505) 내 임계 경로가 입력 데이터의 프로세싱을 완료하기 위해 필요한 시간에 대응하는 시간격 후에 입력 데이터의 프로세싱을 완료하게 할 수 있다. 레플리카 임계 경로(520)는 도 3에 도시된 레플리카 임계 경로(320)의 일부 특징을 공유한다. 그러나 레플리카 임계 경로(520)가 레플리카 임계 경로(520)의 시작과 종료 사이의 위치에서 중간 완료 상태를 결정하는 데 사용되는 로직(525)(가령, 레지스터, 플립-플롭, 래치, 또는 그 밖의 다른 회로)을 포함하기 때문에, 레플리카 임계 경로(520)는 레플리카 임계 경로(320)와 상이하다. 예를 들어, 로직(525)은 레플리카 임계 경로(520) 내 프로세스의 실행 과정의 중간에서 레플리카 임계 경로(520)에 의해 생성된 결과를 저장하기 위한 레지스터를 포함할 수 있다.
부분(500)은 스테이지(505)의 완료 상태를 추정하는 데 사용되는 신호를 제공 및 수신하는 모듈(530, 535)을 더 포함한다. 모듈(530, 535)은 도 1에 도시된 모듈(120, 125, 150-152)의 일부 실시예를 구현하도록 사용될 수 있다. 모듈(530)의 일부 실시예는 시작 신호(540)를 제공하여 레플리카 임계 경로(520)가 입력 데이터 프로세싱을 시작하게 할 수 있다. 시작 신호(540)는 또한 로직(525)으로 제공된다. 상기 시작 신호(540)는 스테이지(505)에 의해 입력 레지스터(510)에 저장된 입력 데이터의 프로세싱을 개시하는 데 사용되는 시작 신호와 동시에 제공된다. 로직(525)은, 가령, 레플리카 임계 경로(520)에 의해 로직(525)에서 생성된 신호의 특성을 모니터링함으로써, 시작 신호(540)에 응답하여 레플리카 임계 경로(520)의 중간 완료 상태를 결정할 수 있다. 예를 들어, 로직(525)은 로직(525)에 의해 수신된 신호의 특정 패턴을 검출함으로써 또는 로직(525)과 연관된 레지스터에 저장된 데이터가 정상-상태에 도달했음을 결정함으로써, 레플리카 임계 경로(520)가 입력 데이터의 연산을 완료했다고 결정할 수 있다. 로직(525)은 레플리카 임계 경로(520)의 중간 완료 상태를 가리키는 신호를 모듈(535)로 제공할 수 있다. 본 명세서에서 언급된 바와 같이, 레이턴시가 로직(525)에 의해 결정된 중간 완료 시각에 더해지거나 빼짐으로써, 레플리카 임계 경로(520)가 스테이지(505)에 대해 추정된 중간 완료 시간과 실제 중간 완료 시각 간 차이를 보상할 수 있다.
스테이지 제어기(가령, 스테이지 제어기(161-164))에 의해 중간 완료 상태가 사용되어, 스테이지(505)의 일부분의 연산 속도를 수정할 수 있다. 예를 들어, 스테이지 제어기가 로직(525)에 의해 생성된 완료 상태를 이용해 로직(525)에 선행하는 스테이지(505)의 일부분(가령, 로직(525)의 업스트림에 위치하는 회로) 또는 로직(525)에 뒤따르는 스테이지(505)의 일부분(가령, 로직(525)의 다운스트림에 위치하는 회로)의 연산 속도를 수정할 수 있다. 단일 로직(525)이 도 5에 도시되어 있지만, 레플리카 임계 경로(520)의 일부 실시예가 레플리카 임계 경로(520) 내 상이한 위치에 위치할 수 있는 추가 완료 상태 로직을 포함한다. 덧붙여, 일부 실시예에서, 레플리카 임계 경로(520)에 대한 하나 이상의 중간 완료 상태를 검출하기 위한 로직이 레플리카 임계 경로(520)의 전체 완료 상태를 검출하기 위한 로직, 가령, 도 3에 도시된 모듈(330)로 구현되는 로직과 조합된다.
도 6은 일부 실시예에 따라 중간 완료 상태 검출을 구현하는 비동기 파이프라인의 일부분(600)의 블록도이다. 부분(600)은 입력 레지스터(610)로부터의 입력 데이터를 액세스하고 출력 레지스터(615)로 출력 데이터를 제공하는 스테이지(605)를 포함한다. 부분(600)은 도 1에 도시된 비동기 파이프라인(105)의 일부 실시예에서 사용된다. 일부 변형예에서, 입력 레지스터(610) 및 출력 레지스터(615)가 도 1에 도시된 레지스터(121-124) 중 하나 이상을 구현하는 데 사용되고 스테이지(605)가 도 1에 도시된 스테이지(110-114) 중 대응하는 것을 구현하는 데 사용된다.
스테이지(605)는 스테이지(605)에 할당된 작업의 일부분을 수행하기 위한 회로의 영역(620) 및 스테이지(605)에 할당된 작업의 또 다른 부분을 수행하기 위한 회로의 영역(625)을 포함한다. 레지스터(630)의 세트가 영역(620, 625) 중간에서 구현된다. 레지스터(630)는 영역(620)에 의해 수행되는 프로세싱의 결과를 저장하고 상기 결과를 스테이지(605)에서의 추가 프로세싱을 위해 영역(625)으로 제공하도록 구성된다. 레지스터(630)는 영역(620)에 의해 레지스터(630)로 제공되는 출력 신호를 모니터링하도록 구성된 상태 모니터(635)로 연결된다. 상태 모듈(635)은 레지스터(630)에 저장되는 값의 특성을 이용하여, 영역(620)의 완료 상태를 결정할 수 있다. 예를 들어, 상태 모듈(635)은 영역(620)에 의해 생성되는 출력 신호의 변화를 모니터링하고 레지스터(630)에 저장되는 출력 신호의 값이 변경 중인 경우 영역(620)이 자신의 현재 작업을 프로세싱 중임을 결정할 수 있다. 상태 모듈(630)의 일부 변형예가, 레지스터(630)에 저장된 값이 정상-상태이거나 임계치 미만의 비율로 변경 중인 경우 영역(620)이 자신의 현재 작업의 프로세싱을 완료했음을 또한 결정할 수 있다.
부분(600)은 스테이지(605)의 중간 완료 상태를 추정하는 데 사용되는 신호를 제공하고 수신하는 모듈(640, 645)을 더 포함한다. 모듈(640, 645)은 도 1에 도시된 모듈(120, 125, 150-152)의 일부 실시예를 구현하는 데 사용된다. 모듈(640)의 일부 실시예는 상태 모듈(635)로 시작 신호(650)를 제공하여, 스테이지(605)가 입력 레지스터(610)에 저장된 입력 데이터를 이용해 자신의 작업의 프로세싱을 시작했음을 가리킬 수 있다. 시작 신호(650)는 스테이지(605)에 의해 입력 레지스터(610)에 저장된 입력 데이터의 프로세싱을 개시하는 데 사용되는 시작 신호와 동시에 제공된다. 앞서 언급된 바와 같이, 상태 모듈(635)은 시작 신호(650)에 응답하여 레지스터(630)로 제공되는 출력 신호의 모니터링을 시작하여 영역(620)의 완료 상태를 결정할 수 있다. 그 후 상태 모듈(635)은 영역(620)의 완료 상태를 가리키는 신호(655)를 모듈(645)로 제공한다. 예를 들어, 상태 모듈(635)은 영역(620)의 완료 상태가 "프로세싱 중"인 동안 논리-로우 신호를 모듈(645)로 어서트할 수 있고 그 후 영역(620)의 완료 상태가 "완료"로 전환된 것에 응답하여 모듈(645)로 논리-하이 신호를 어서트할 수 있다.
스테이지 제어기(가령, 도 1에 도시된 스테이지 제어기(161-164))에 의해 중간 완료 상태가 사용되어 스테이지(605)의 영역(620, 625)의 연산 속도를 수정할 수 있다. 예를 들어, 스테이지 제어기는 상태 모듈(635)에 의해 생성된 완료 상태를 이용하여 영역(620), 영역(625), 또는 이들의 조합의 연산 속도를 수정할 수 있다. 레지스터(630)의 단일 세트 및 단일 상태 모듈(635)이 도 6에 도시되어 있지만, 부분(600)의 일부 실시예가 스테이지(605) 내 상이한 위치에 위치하는 추가적인 완료 상태 로직을 포함한다. 또한, 일부 실시예에서, 영역(620, 625)에 대해 하나 이상의 중간 완료 상태를 검출하기 위한 로직이 스테이지(605)의 전체 완료 상태를 검출하기 위한 로직, 가령, 도 4에 도시된 모듈(420)로 구현되는 로직과 조합된다.
도 7은 일부 실시예에 따르는 병렬 프로세싱을 구현하는 비동기 파이프라인의 일부분(700)의 블록도이다. 부분(700)은 비교적 높은 속도로 작업을 완료하는 고속 스테이지(705) 및 비교적 느린 속도로 작업을 완료하는 저속 스테이지(710)를 포함한다. 부분(700)은 도 1에 도시된 비동기 파이프라인(105)의 일부 실시예로 구현된다. 일부 변형예에서, 도 1에 도시된 각각의 스테이지(110-114)가 병렬로 동작하는 둘 이상의 스테이지를 나타낸다. 예를 들어, 스테이지(111)는 상이한 입력 데이터에 대한 곱셈 연산을 병렬로 수행하도록 구성된 적어도 한 쌍의 스테이지를 나타낸다. 스테이지들 중 하나가 비교적 높은 속도로 작업을 완료할 수 있고 나머지 스테이지들 중 하나가 비교적 낮은 속도로 작업을 완료할 수 있다.
비동기 파이프라인이 포크(fork)(715)에서 병렬 스테이지(705, 710)의 실행을 시작하며 병렬 스테이지(705, 710)의 연산의 결과가 조인(join)(720)에서 조합된다. 병렬 스테이지(705, 710)에 의한 작업의 실행이 모두 완료될 때까지 병렬 브랜치가 조인(720)을 완료할 수 없다. 따라서 하나 이상의 스테이지 제어기(가령, 도 1에 도시된 스테이지 제어기(161-164))가 각자의 완료 상태를 기초로 스테이지(705, 710)의 연산을 조화시킨다. 예를 들어, 스테이지 제어기는 비교적 고속 스테이지(705)의 연산 속도를 늦추거나, 비교적 저속 스테이지(710)의 연산 속도를 증가시키거나, 두 스테이지(705, 710) 모두가 병렬 스테이지(705, 710)에 대한 타깃 완료 시각과 대략 동일한 시점에서 완료되도록 이들 수정의 조합을 수행할 수 있다.
도 8은 일부 실시예에 따라 비동기 파이프라인 내 스테이지의 연산 속도를 수정하기 위한 방법(800)의 흐름도이다. 상기 방법(800)은 도 1에 도시된 프로세싱 시스템(100)의 일부 실시예에서 구현된다. 스테이지는 좌측 이웃 스테이지에 의해 생성되는 입력 데이터를 수신하여 우측 이웃 스테이지로의 입력 데이터로서 제공되는 출력 데이터를 생성한다. 스테이지의 일부 실시예가 도 1에 도시된 스테이지(112)에 대응한다. 그 후 좌측 이웃 스테이지가 스테이지(111)에 대응하고 우측 이웃 스테이지가 도 1에 도시된 스테이지(113)에 대응한다.
블록(805)에서, 스테이지 제어기(가령, 도 1에 도시된 스테이지 제어기(162))가 스테이지의 완료 상태를 가리키는 정보를 액세스한다. 상기 완료 상태는 스테이지 상에서 실행 중인 작업을 아직 완료하지 않았음을 가리키는 정보를 포함할 수 있고, 이 경우, 스테이지에 대한 완료 상태는 "프로세싱 중"이다. 완료 상태는 또한 스테이지가 작업을 완료했음을 가리키는 정보를 포함할 수 있으며, 이 경우 스테이지에 대한 완료 상태는 "완료"이다. 완료 상태는 본 명세서에 언급된 바와 같이 스테이지의 일부분 또는 영역과 연관된 중간 완료 상태를 가리키는 정보를 더 포함할 수 있다.
블록(810)에서, 스테이지 제어기는 좌측 이웃 스테이지의 완료 상태를 가리키는 정보를 액세스한다. 완료 상태는 좌측 이웃 스테이지가 좌측 이웃 스테이지 상에서 실행 중인 작업을 아직 완료하지 않았음을 지시하는 정보를 포함할 수 있으며, 이 경우, 좌측 이웃 스테이지에 대한 완료 상태는 "프로세싱 중"이다. 완료 상태는 또한 좌측 이웃 스테이지가 작업을 완료했음을 가리키는 정보를 더 포함할 수 있으며, 이 경우 좌측 이웃 스테이지에 대한 완료 상태는 "완료"이다. 완료 상태는 또한, 본 명세서에 기재된 바와 같이, 좌측 이웃 스테이지의 일부분 또는 영역과 연관된 중간 완료 상태를 가리키는 정보를 더 포함할 수 있다. 스테이지의 일부 실시예는 비동기 파이프라인의 좌측 이웃 스테이지와 연관되지 않는다. 예를 들어, 도 1에 도시된 스테이지(110)는 좌측 이웃 스테이지와 연관되지 않고, 이 경우 블록(810)은 우회될 수 있다.
블록(815)에서, 스테이지 제어기가 우측 이웃 스테이지의 완료 상태를 가리키는 정보를 액세스한다. 완료 상태는 우측 이웃 스테이지가 상기 우측 이웃 스테이지 상에서 실행 중인 작업을 아직 완료하지 않았음을 가리키는 정보를 포함할 수 있고, 이 경우, 우측 이웃 스테이지에 대한 완료 상태는 "프로세싱 중"이다. 완료 상태는 우측 이웃 스테이지가 작업을 완료했음을 가리키는 정보를 더 포함할 수 있으며, 이 경우, 우측 이웃 스테이지에 대한 완료 상태가 "완료"이다. 본 명세서에 언급된 바와 같이, 완료 상태는 우측 이웃 스테이지의 일부분 또는 영역과 연관된 중간 완료 상태를 가리키는 정보를 더 포함할 수 있다. 스테이지의 일부 실시예는 비동기 파이프라인의 우측 이웃 스테이지와 연관되지 않는다. 예를 들어, 도 1에 도시된 스테이지(114)는 우측 이웃 스테이지와 연관되지 않으며, 이 경우 블록(815)은 우회될 수 있다.
블록(820)에서, 스테이지 제어기는 스테이지의 완료 상태, (이용 가능한 경우) 좌측 이웃 스테이지의 완료 상태, 및 (이용 가능한 경우) 우측 이웃 스테이지의 완료 상태를 기초로 스테이지의 연산 속도를 수정한다. 본 명세서에 언급된 바와 같이, 연산 속도는 스테이지 또는 이의 일부분에 인가되는 버퍼 드라이브 강도 또는 전압을 수정함으로써 수정된다.
일부 실시예에서, 앞서 기재된 장치 및 기법이 하나 이상의 집적 회로(IC) 디바이스(집적 회로 패키지 또는 마이크로칩이라고도 지칭됨), 가령, 앞서 도 1-8을 참조하여 기재된 비동기 파이프라인을 포함하는 시스템에서 구현된다. 일반적으로 이들 IC 디바이스의 설계 및 제조에서 전자 설계 자동화(EDA) 및 컴퓨터 보조 설계(CAD) 소프트웨어 툴이 사용된다. 이들 설계 툴은 일반적으로 하나 이상의 소프트웨어 프로그램으로서 표현된다. 하나 이상의 소프트웨어 프로그램은 컴퓨터 시스템에 의해 실행되어 컴퓨터 시스템으로 하여금 하나 이상의 IC 디바이스의 회로를 나타내는 코드를 연산하게 하여, 상기 회로를 제조하기 위한 제조 시스템을 설계 또는 적응시키는 프로세스의 적어도 일부분을 수행하게 하는 코드를 포함한다. 이 코드는 명령, 데이터, 또는 명령과 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제조 툴을 나타내는 소프트웨어 명령은 일반적으로 컴퓨팅 시스템에 의해 액세스 가능한 컴퓨터 판독형 저장 매체에 저장된다. 마찬가지로, IC 디바이스의 설계 또는 제조의 하나 이상의 단계를 나타내는 코드가 동일한 컴퓨터 판독형 저장 매체 또는 상이한 컴퓨터 판독형 저장 매체에 저장되고 이로부터 액세스될 수 있다.
컴퓨터 판독형 저장 매체는 사용 동안 컴퓨터 시스템에 의해 액세스되어 명령 및/또는 데이터를 컴퓨터 시스템으로 제공하는 임의의 비일시적 저장 매체, 또는 비일시적 저장 매체의 조합을 포함할 수 있다. 이러한 저장 매체의 비제한적 예를 들면, 광학 매체(가령, 컴팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루-레이 디스크), 자기 매체(가령, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(가령, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(가령, 리드-온리 메모리(ROM) 또는 플래시 메모리), 또는 마이크로전자기계 시스템(MEMS)-기반 저장 매체가 있을 수 있다. 컴퓨터 판독형 저장 매체는 컴퓨팅 시스템에 임베딩되거나(가령, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정 부착되거나(가령, 자기 하드 드라이브), 컴퓨팅 시스템에 탈착 가능하게 부착되거나(가령, 광학 디스크 또는 USB(Universal Serial Bus)-기반 플래시 메모리), 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 연결될 수 있다(가령, 네트워크 액세스 가능한 저장장치(NAS)).
일부 실시예에서, 앞서 기재된 기법의 특정 양태가 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 상기 소프트웨어는 비일시적 컴퓨터 판독형 저장 매체 상에 저장되거나 그 밖의 다른 방식으로 유형으로 구현되는 실행 명령의 하나 이상의 세트를 포함한다. 상기 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서를 조작하여 앞서 기재된 기법의 하나 이상의 양태를 수행하게 하는 명령 및 특정 데이터를 포함할 수 있다. 상기 비일시적 컴퓨터 판독형 저장 매체의 예를 들면, 자기 또는 광학 디스크 저장 디바이스, 솔리드 스테이트 저장 디바이스, 가령, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM), 또는 그 밖의 다른 비휘발성 메모리 디바이스 등을 포함할 수 있다. 비일시적 컴퓨터 판독형 저장 매체 상에 저장된 실행 명령은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서에 의해 번역 또는 그 밖의 다른 방식으로 실행 가능한 그 밖의 다른 명령 포맷을 가질 수 있다.
일반적은 설명으로 앞서 기재된 모든 활동 또는 요소 모두 필요한 것은 아니며, 특정 활동 또는 디바이스의 일부분은 필요하지 않을 수 있고, 기재된 것에 추가로, 하나 이상의 추가 활동이 수행되거나 요소가 포함될 수 있다. 또한, 활동들이 나열된 순서가 반드시 이들이 수행되는 순서인 것은 아니다. 또한 개념이 특정 실시예를 참조하여 기재되었다. 그러나 해당 분야의 통상의 기술자라면 다양한 수정 및 변경이 이하의 청구항에서 제공되는 본 발명의 범위 내에서 이뤄질 수 있음을 알 것이다. 따라서 명세서 및 도면은 한정이 아니라 예시로 간주될 것이며 이러한 모든 수정이 본 발명의 범위 내에 포함되는 것으로 의도된다.
혜택, 그 밖의 다른 이점 및 해결책이 특정 실시예와 관련하여 기재되었다. 그러나 혜택, 이점, 문제 해결책, 및 임의의 혜택, 이점, 또는 해결책이 발생하거나 더 현저해지게 할 수 있는 임의의 특징이 임의의 또는 모든 청구항의 핵심, 필수 또는 본질적 특징으로 해석되지 않을 것이다. 덧붙여, 앞서 기재된 특정 실시예가 단지 예시에 불과하며, 개시된 주제 사항은 본 명세서의 설명을 이용한 해당 분야의 통상의 기술자에게 자명한 상이하지만 균등한 방식으로 수정되고 실시될 수 있다. 청구항에 기재된 것 외의 본 명세서의 구성 또는 설계의 상세사항에 어떠한 한정도 의도되지 않는다. 따라서 앞서 개시된 특정 실시예가 변경 또는 수정될 수 있고 이러한 모든 변형이 개시된 주제 사항의 범위 내에 있다고 간주될 수 있음이 자명하다. 따라서 본 명세서의 보호 범위는 이하의 청구항에서 제공되는 것이다.

Claims (15)

  1. 장치[100]로서,
    제1 스테이지[112] 및 적어도 하나의 제2 스테이지[111]를 포함하는 비동기 파이프라인[105], 및
    제1 스테이지로 상기 제1 스테이지의 연산 속도의 수정을 가리키기 위한 제어 신호를 제공하기 위한 제어기[162] - 수정은 제1 스테이지의 완료 상태와 적어도 하나의 제2 스테이지의 적어도 하나의 완료 상태의 비교를 기초로 결정됨 - 를 포함하는, 장치.
  2. 제1항에 있어서, 적어도 하나의 제2 스테이지는 제1 스테이지에 대한 입력 데이터를 생성하는 좌측 스테이지[111] 및 제1 스테이지에 의해 생성된 출력 데이터를 수신하는 우측 스테이지[113] 중 적어도 하나를 포함하는, 장치.
  3. 제1항에 있어서, 제어기는 제1 스테이지에 인가되는 동작 전압의 수정을 가리키기 위해 상기 제1 스테이지로 제어 신호를 제공하고, 동작 전압의 수정은 제1 스테이지의 완료 상태와 적어도 하나의 제2 스테이지의 완료 상태의 비교를 기초로 결정되는, 장치.
  4. 제1항에 있어서,
    제1 스테이지의 일부분들 간 신호를 드라이브하기 위한 적어도 하나의 버퍼[226]를 더 포함하며, 상기 제어기는 적어도 하나의 버퍼의 적어도 하나의 드라이브 강도의 적어도 하나의 수정을 가리키기 위해 제어 신호를 제공하며, 적어도 하나의 드라이브 강도의 적어도 하나의 수정은 제1 스테이지의 완료 상태와 적어도 하나의 제2 스테이지의 완료 상태의 비교를 기초로 결정되는, 장치.
  5. 제1항에 있어서,
    제1 스테이지 및 적어도 하나의 제2 스테이지의 완료 상태를 결정하기 위한 복수의 모듈[150, 151]을 더 포함하는, 장치.
  6. 제5항에 있어서, 복수의 모듈은 제1 스테이지 및 적어도 하나의 제2 스테이지에 의한 작업의 실행을 개시하는 것에 응답하여, 제1 스테이지 및 적어도 하나의 제2 스테이지에 의해 생성된 출력 신호를 모니터링함으로써, 제1 스테이지 및 적어도 하나의 제2 스테이지의 완료 상태를 결정하는, 장치.
  7. 제5항에 있어서,
    제1 스테이지 내 임계 경로에 대응하는 제1 레플리카 임계 경로 [320], 및
    적어도 하나의 제2 스테이지와 연관된 적어도 하나의 제2 레플리카 임계 경로를 더 포함하며, 복수의 모듈은 제1 스테이지 및 적어도 하나의 제2 스테이지에 의한 작업의 실행의 개시와 동시에 제1 레플리카 임계 경로 및 적어도 하나의 제2 레플리카 임계 경로에 제공되는 입력 신호에 응답하여 제1 레플리카 임계 경로 및 적어도 하나의 제2 레플리카 임계 경로에 의해 생성된 출력 신호를 기초로 제1 스테이지 및 적어도 하나의 제2 스테이지의 완료 상태를 결정하는, 장치.
  8. 제1항에 있어서,
    상이한 명령 유형, 명령 연산코드, 또는 입력 데이터의 특성에 대한 추정된 완료 시각을 가리키는 적어도 하나의 조사 테이블[235]을 더 포함하고, 제1 스테이지 및 적어도 하나의 제2 스테이지의 완료 상태는 제1 스테이지 및 적어도 하나의 제2 스테이지에 의해 실행되는 작업과 연관된 명령 유형, 명령 연산코드, 또는 입력 데이터의 특성 중 적어도 하나에 의해 지시되는 완료 시각을 기초로 결정되는, 장치.
  9. 제1항에 있어서, 수정은 제1 스테이지 및 적어도 하나의 제2 스테이지 내 지정 위치에서 결정되는 부분 완료 상태를 기초로 결정되는, 장치.
  10. 방법으로서,
    비동기 파이프라인[105]의 제1 스테이지[112]의 완료 상태를 비동기 파이프라인의 적어도 하나의 제2 스테이지 [111]의 적어도 하나의 완료 상태에 비교하는 단계, 및
    제1 스테이지[820]의 연산 속도의 수정을 가리키기 위해 제1 스테이지로 제어 신호를 제공하는 단계 - 상기 수정은 상기 비교를 기초로 결정됨 - 를 포함하는, 방법.
  11. 제10항에 있어서, 적어도 하나의 제2 스테이지는 제1 스테이지에 대한 입력 데이터를 생성하는 좌측 스테이지[111] 및 제1 스테이지에 의해 생성되는 출력 데이터를 수신하는 우측 스테이지[113] 중 적어도 하나를 포함하는, 방법.
  12. 제10항에 있어서,
    상기 비교를 기초로 제1 스테이지에 인가될 동작 전압의 수정을 결정하는 단계를 더 포함하며,
    제어 신호를 제공하는 단계는 제1 스테이지로 인가되는 동작 저압의 수정을 가리키기 위해 제1 스테이지로 제어 신호를 제공하는 단계를 포함하는, 방법.
  13. 제10항에 있어서,
    제1 스테이지의 일부분들 간 신호를 드라이브하기 위해 적어도 하나의 버퍼에 의해 사용되는 적어도 하나의 드라이브 강도의 적어도 하나의 수정을 결정하는 단계를 더 포함하며, 적어도 하나의 드라이브 강도의 적어도 하나의 수정은 비교를 기초로 결정되고,
    제어 신호를 제공하는 단계는 적어도 하나의 버퍼의 적어도 하나의 드라이브 강도의 적어도 하나의 수정을 가리키기 위해 제어 신호를 제공하는 단계를 포함하는, 방법.
  14. 제10항에 있어서,
    제1 스테이지 및 적어도 하나의 제2 스테이지와 연관된 복수의 모듈을 이용해 제1 스테이지와 적어도 하나의 제2 스테이지의 완료 상태를 결정하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서, 완료 상태를 결정하는 단계는 제1 스테이지와 적어도 하나의 제2 스테이지에 의한 작업 실행의 개시에 응답하여 제1 스테이지 및 적어도 하나의 제2 스테이지에 의해 생성되는 출력 신호를 모니터링하는 단계를 포함하는, 방법.
KR1020197003111A 2016-07-21 2017-07-20 비동기 파이프라인의 스테이지의 연산 속도 제어 KR102266303B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217018014A KR102663653B1 (ko) 2016-07-21 2017-07-20 비동기 파이프라인의 스테이지의 연산 속도 제어

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/216,094 2016-07-21
US15/216,094 US10698692B2 (en) 2016-07-21 2016-07-21 Controlling the operating speed of stages of an asynchronous pipeline
PCT/US2017/042981 WO2018017785A2 (en) 2016-07-21 2017-07-20 Controlling the operating speed of stages of an asynchronous pipeline

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217018014A Division KR102663653B1 (ko) 2016-07-21 2017-07-20 비동기 파이프라인의 스테이지의 연산 속도 제어

Publications (2)

Publication Number Publication Date
KR20190022858A true KR20190022858A (ko) 2019-03-06
KR102266303B1 KR102266303B1 (ko) 2021-06-17

Family

ID=60988654

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197003111A KR102266303B1 (ko) 2016-07-21 2017-07-20 비동기 파이프라인의 스테이지의 연산 속도 제어
KR1020217018014A KR102663653B1 (ko) 2016-07-21 2017-07-20 비동기 파이프라인의 스테이지의 연산 속도 제어

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217018014A KR102663653B1 (ko) 2016-07-21 2017-07-20 비동기 파이프라인의 스테이지의 연산 속도 제어

Country Status (5)

Country Link
US (2) US10698692B2 (ko)
EP (1) EP3488340B1 (ko)
JP (2) JP6893971B2 (ko)
KR (2) KR102266303B1 (ko)
WO (1) WO2018017785A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503544B2 (en) * 2016-10-17 2019-12-10 Toyota Jidosha Kabushiki Kaisha Efficient mapping from task graphs to dynamic system platforms
KR102309429B1 (ko) * 2017-03-20 2021-10-07 현대자동차주식회사 차량 및 그 제어 방법
US10326452B2 (en) * 2017-09-23 2019-06-18 Eta Compute, Inc. Synchronizing a self-timed processor with an external event
US11334696B2 (en) * 2017-09-28 2022-05-17 Intel Corporation Systems and methods for dynamic voltage and frequency scaling in programmable logic devices
JP2020165713A (ja) * 2019-03-28 2020-10-08 株式会社デンソーテン 検査データ出力装置、表示システムおよび検査データ出力方法
US11467845B2 (en) 2020-10-20 2022-10-11 Micron Technology, Inc. Asynchronous pipeline merging using long vector arbitration

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6867620B2 (en) * 2000-04-25 2005-03-15 The Trustees Of Columbia University In The City Of New York Circuits and methods for high-capacity asynchronous pipeline
US20050210305A1 (en) * 2004-03-22 2005-09-22 Sharp Kabushiki Kaisha Data processor for controlling voltage supplied for processing
JP2010141641A (ja) * 2008-12-12 2010-06-24 Ricoh Co Ltd 半導体回路、半導体回路の出力バッファ波形調整方法
US8677103B1 (en) * 2004-10-20 2014-03-18 Marvell Isreal (M.I.S.L) Ltd. Asynchronous pipelined data path with data transition

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04314161A (ja) * 1991-04-11 1992-11-05 Mitsubishi Electric Corp 情報処理装置
KR100239749B1 (ko) 1997-04-11 2000-01-15 윤종용 그로스 테스트용 tft 소자 제조 방법 및 이를 형성한 액정 표시 장치 구조와 그로스 테스트 장치 및 방법
US6182233B1 (en) 1998-11-20 2001-01-30 International Business Machines Corporation Interlocked pipelined CMOS
US6289465B1 (en) * 1999-01-11 2001-09-11 International Business Machines Corporation System and method for power optimization in parallel units
US6369614B1 (en) 2000-05-25 2002-04-09 Sun Microsystems, Inc. Asynchronous completion prediction
US6590424B2 (en) * 2000-07-12 2003-07-08 The Trustees Of Columbia University In The City Of New York High-throughput asynchronous dynamic pipelines
US6502202B1 (en) 2000-10-06 2002-12-31 Elan Research Self-adjusting multi-speed pipeline
JP3884914B2 (ja) * 2001-01-30 2007-02-21 株式会社ルネサステクノロジ 半導体装置
EP1543390A2 (en) * 2002-09-20 2005-06-22 Koninklijke Philips Electronics N.V. Adaptive data processing scheme based on delay forecast
JP2006039754A (ja) * 2004-07-23 2006-02-09 Canon Inc 画像処理装置及びその方法
JP4261453B2 (ja) 2004-09-30 2009-04-30 京セラミタ株式会社 メモリ制御装置
US8291256B2 (en) * 2006-02-03 2012-10-16 National University Corporation Kobe University Clock stop and restart control to pipelined arithmetic processing units processing plurality of macroblock data in image frame per frame processing period
GB2459652B (en) 2008-04-28 2010-09-22 Imagination Tech Ltd Controlling instruction scheduling based on the space in a trace buffer
JP5294449B2 (ja) * 2008-07-11 2013-09-18 国立大学法人 筑波大学 ネットワークシステムおよびネットワークシステムにおける電源制御方法
JP5720243B2 (ja) 2010-12-28 2015-05-20 富士通セミコンダクター株式会社 プロセッサ検証プログラム
US9117511B2 (en) * 2013-03-08 2015-08-25 Advanced Micro Devices, Inc. Control circuits for asynchronous circuits
US20150341032A1 (en) 2014-05-23 2015-11-26 Advanced Micro Devices, Inc. Locally asynchronous logic circuit and method therefor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6867620B2 (en) * 2000-04-25 2005-03-15 The Trustees Of Columbia University In The City Of New York Circuits and methods for high-capacity asynchronous pipeline
US20050210305A1 (en) * 2004-03-22 2005-09-22 Sharp Kabushiki Kaisha Data processor for controlling voltage supplied for processing
US8677103B1 (en) * 2004-10-20 2014-03-18 Marvell Isreal (M.I.S.L) Ltd. Asynchronous pipelined data path with data transition
JP2010141641A (ja) * 2008-12-12 2010-06-24 Ricoh Co Ltd 半導体回路、半導体回路の出力バッファ波形調整方法

Also Published As

Publication number Publication date
KR102663653B1 (ko) 2024-05-10
EP3488340B1 (en) 2023-09-06
US10698692B2 (en) 2020-06-30
KR102266303B1 (ko) 2021-06-17
KR20210074411A (ko) 2021-06-21
JP7465848B2 (ja) 2024-04-11
WO2018017785A3 (en) 2018-03-08
JP2019521454A (ja) 2019-07-25
US20180024837A1 (en) 2018-01-25
US20210089324A1 (en) 2021-03-25
EP3488340A2 (en) 2019-05-29
US11842199B2 (en) 2023-12-12
EP3488340A4 (en) 2020-08-19
CN109478141A (zh) 2019-03-15
WO2018017785A2 (en) 2018-01-25
JP6893971B2 (ja) 2021-06-23
JP2021166053A (ja) 2021-10-14

Similar Documents

Publication Publication Date Title
KR102266303B1 (ko) 비동기 파이프라인의 스테이지의 연산 속도 제어
Trivedi et al. Design & analysis of 16 bit RISC processor using low power pipelining
US8132144B2 (en) Automatic clock-gating insertion and propagation technique
US7917882B2 (en) Automated digital circuit design tool that reduces or eliminates adverse timing constraints due to an inherent clock signal skew, and applications thereof
JP2015524589A (ja) 相対タイミング特徴付け
Li et al. Activity-driven fine-grained clock gating and run time power gating integration
US9110689B2 (en) Automatic pipeline stage insertion
US8954904B1 (en) Veryifing low power functionality through RTL transformation
Pinto et al. Low-power modified shift-add multiplier design using parallel prefix adder
Macii et al. Integrating clock gating and power gating for combined dynamic and leakage power optimization in digital cmos circuits
US9496851B2 (en) Systems and methods for setting logic to a desired leakage state
CN109478141B (zh) 控制异步管线的级的操作速度
US10296701B1 (en) Retiming with fixed power-up states
Kamal et al. Design of NBTI-resilient extensible processors
US10417365B1 (en) Systems and methods for reducing power consumption of latch-based circuits
JP2009301192A (ja) シミュレーション装置およびシミュレーション方法
US10255404B1 (en) Retiming with programmable power-up states
Nair et al. Comparative analysis of power in Adder using single bit and multi-bit fip-flops, controlled by dynamic hardware control circuit
JP6317603B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP2012159977A (ja) 動作合成装置、動作合成方法及び動作合成プログラム
Gera et al. Design of Non-Pipelined LC3 RISC Microcontroller
JP2010113405A (ja) 半導体集積回路合成装置
Bucur et al. Estimating Spurious Power While Mapping K-Lut-Based Fpga Circuits
JP2010205084A (ja) 動作合成システム、動作合成方法、動作合成プログラム
JP2011108020A (ja) 信号処理装置

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right