KR101132484B1 - 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 시스템 및 방법 - Google Patents
다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR101132484B1 KR101132484B1 KR1020107007376A KR20107007376A KR101132484B1 KR 101132484 B1 KR101132484 B1 KR 101132484B1 KR 1020107007376 A KR1020107007376 A KR 1020107007376A KR 20107007376 A KR20107007376 A KR 20107007376A KR 101132484 B1 KR101132484 B1 KR 101132484B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- stage
- stages
- pipeline
- skipped
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 57
- 238000012545 processing Methods 0.000 title claims description 49
- 238000004891 communication Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
명령을 실행하기 위한 다수의 스테이지들을 가진 명령 실행 파이프라인을 포함하는 디바이스가 개시된다. 이러한 디바이스는 또한 명령 실행 파이프라인에 결합된 제어 로직 회로를 포함한다. 제어 로직 회로는 명령의 실행 동안 명령 실행 파이프라인의 적어도 하나의 스테이지를 스킵하도록 적응된다. 제어 로직 회로는 또한 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은 스테이지를 실행하도록 적응된다.
Description
본 발명의 개시내용은 일반적으로 다중-스테이지(multi-stage) 데이터 프로세싱 파이프라인에서 명령들을 실행하는 시스템 및 방법에 관한 것이다.
기술에 있어서의 진보들은 보다 작고 보다 강력한 개인 컴퓨팅 디바이스들로 귀결되었다. 예를 들어, 휴대용 무선 전화들, 개인 휴대 정보 단말기(PDA)들, 및 작고 가볍고 사용자들에 의해 손쉽게 휴대되는 페이징 디바이스들과 같은, 무선 컴퓨팅 디바이스들을 포함한, 다양한 휴대용 개인 컴퓨팅 디바이스들이 현재 존재한다. 보다 구체적으로, 셀룰러 전화들 및 IP 전화들과 같은 휴대용 무선 전화들은 무선 네트워크들을 통해 음성 패킷 및 데이터 패킷을 통신할 수 있다. 또한, 많은 이러한 무선 전화기들은 그 안에 통합된 다른 유형의 디바이스들을 포함한다. 예를 들어, 무선 전화기는 또한 디지털 스틸(still) 카메라, 디지털 비디오 카메라, 디지털 녹화기(recorder), 및 오디오 파일 플레이어를 포함할 수 있다. 또한, 이러한 무선 전화기들은 인터넷에 액세스하기 위해 사용될 수 있는 웹 인터페이스를 포함할 수 있다. 이처럼, 이러한 무선 전화기들은 중요한 컴퓨팅 능력들을 포함한다.
전형적으로, 휴대용 개인 컴퓨팅 디바이스들은 배터리에 의해 구동된다. 이러한 디바이스들이 보다 강력해짐에 따라, 이러한 디바이스들은 보다 많은 전력을 소모할 수 있고 배터리가 디바이스를 구동할 수 있는 시간의 양을 감소시킬 수 있다.
따라서, 프로세서에서 명령들을 실행하는 향상된 시스템 및 방법을 제공하는 것이 유리할 것이다.
특정 실시예에서, 명령을 실행하기 위한 다수의 스테이지(stage)들을 가진 명령 실행 파이프라인(pipeline)을 포함하는 디바이스가 개시된다. 이러한 디바이스는 또한 명령 실행 파이프라인에 결합된 제어 로직 회로를 포함한다. 제어 로직 회로는, 디코딩된 명령의 실행 동안 명령 실행 파이프라인의 적어도 하나의 스테이지를 스킵(skip)하도록 적응된다. 제어 로직 회로는 또한, 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은(non-skipped) 스테이지를 실행하도록 적응된다.
또 다른 특정 실시예에서, 다중-스테이지 데이터 프로세싱 파이프라인에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 명령들이 실행될 수 있는 시기를 결정하기 위해 명령을 디코딩하는 것을 포함하는 방법이 개시된다. 이러한 방법은 또한, 디코딩된 명령의 실행 동안 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 하나의 스테이지를 스킵하는 것, 및 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은 스테이지를 실행하는 것을 포함한다.
또 다른 특정 실시예에서, 명령 실행 파이프라인 및 이러한 명령 실행 파이프라인으로부터 데이터를 수신하도록 적응된 레지스터 파일을 포함하는 디바이스가 개시된다. 이러한 디바이스는 또한, 명령의 실행 동안 명령 실행 파이프라인의 다수의 사용가능한 스테이지들 중 적어도 하나의 스테이지를 스킵하기 위한 수단을 포함한다.
또 다른 특정 실시예에서, 수신기 및 이러한 수신에 응답하는 프로세서를 포함하는 무선 디바이스가 개시된다. 이러한 프로세서는, 제 1 메모리 및 이러한 제 1 메모리에 응답하는 인터리빙된(interleaved) 다중-스테이지 데이터 프로세싱 파이프라인을 포함한다. 이러한 프로세서는, 인터리빙된 다중-스테이지 데이터 프로세싱 파이프라인에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 명령이 실행될 수 있는 시기를 결정하기 위해 명령을 디코딩하도록 적응된다. 이러한 프로세서는 또한, 명령의 실행 동안 인터리빙된 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 하나의 스테이지를 스킵하도록 적응된다. 이러한 프로세서는, 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은 스테이지를 실행하도록 더 적응된다.
제시된 디바이스들 및 방법들의 하나의 특별한 장점은 스킵된 사이클 동안 전력이 절약될 수 있다는 점이다. 제시된 디바이스들 및 방법들의 또 다른 특별한 장점은 휴대용 디바이스의 배터리 수명이 연장될 수 있다는 점이다.
본 개시내용의 다른 양상들, 장점들 및 특징들은 다음의 부분들을 포함한 전체 출원의 리뷰 후에 명백해질 것이다: 도면의 간단한 설명, 발명을 실시하기 위한 구체적인 내용, 및 청구범위.
도 1은 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하기 위한 시스템의 실시예에 대한 블록 다이어그램이다.
도 2는 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하기 위한 시스템의 또 다른 실시예에 대한 블록 다이어그램이다.
도 3은 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 방법의 실시예에 대한 흐름도(flow chart)이다.
도 4는, 도 1 내지 도 3에 대하여 제시된 것과 같이, 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하기 위한 디바이스 및 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 방법을 이용할 수 있는 휴대용 통신 디바이스의 예시적인 실시예이다.
도 2는 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하기 위한 시스템의 또 다른 실시예에 대한 블록 다이어그램이다.
도 3은 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 방법의 실시예에 대한 흐름도(flow chart)이다.
도 4는, 도 1 내지 도 3에 대하여 제시된 것과 같이, 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하기 위한 디바이스 및 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 방법을 이용할 수 있는 휴대용 통신 디바이스의 예시적인 실시예이다.
도 1은 프로세서(100)의 예시적이고, 비-제한적인 실시예에 대한 블록 다이어그램을 도시한다. 도 1에 도시된 것처럼, 이러한 프로세서(100)는 명령 캐시(cache)(134)에 결합되는 메모리(102)를 포함한다. 이러한 명령 캐시(134)는 버스(130)를 통해 현재의 명령 레지스터들(current instruction registers; CIRs)(136, 138, 140, 142, 144 및 146)에 결합된다. 각각의 CIR들(136 내지 146)은 멀티-스레드형(multi-threaded) 프로세서 내의 특정 스레드와 연관될 수 있다. 특정 실시예에서 이러한 프로세서(100)는, 각각의 CIR들(136 내지 146)이 인터리빙된 멀티-스레드형 프로세서의 하나의 스레드를 포함하는, 6개의 스레드들을 갖는 인터리빙된 멀티-스레드형 프로세서이다.
CIR들(136 내지 146)은 버스(107)를 통해 시퀀서(sequencer; 104)에 결합된다. 특정 실시예에서, 이러한 버스(107)는 64 비트 버스이고, 시퀀서(104)는 32 비트의 길이를 갖는 메모리(102)로부터 명령들을 리트리빙(retrieve)하도록 구성된다. 이러한 버스(107)는 제 1 명령 실행 유닛(108), 제 2 명령 실행 유닛(110), 제 3 명령 실행 유닛(112), 및 제 4 명령 실행 유닛(114)에 결합된다. 도 1은, 각각의 명령 실행 유닛(108, 110, 112, 114)이 제 1 버스(118)를 통해 범용 레지스터 파일(116)에 결합될 수 있음을 나타낸다. 범용 레지스터 파일(116)은 또한 제 2 버스(120)를 통해 시퀀서(104) 및 메모리(102)에 결합된다.
특정 실시예에서, 메모리(102)는 내용 주소화 메모리(content addressable memory; CAM)이고 명령 캐시(134)는 다수의 명령들, 각각의 명령에 대한 명령 스티어링(steering) 데이터, 및 각각의 명령에 대한 명령 프리-코드(pre-code) 데이터를 포함할 수 있다. 동작하는 동안, CIR들(136 내지 146)은 명령 캐시(134)로부터 명령들을 풀링(pull)하고 CIR들(136 내지 146)은 시퀀서(104)에 의해 서로 독립적으로 액세스될 수 있다.
특정 실시예에서, 시퀀서(104)는 단일(simple) 명령 실행 유닛(105)을 포함한다. 시퀀서(104)는 또한 전력 제어 로직 회로(106)를 포함한다. 나아가 시퀀서(104)는, 단일 명령 실행 유닛(105) 및 전력 제어 로직 회로(106)가 언제 선택적으로 활성화될 수 있는지를 프로세서(100)가 결정하도록 허용하는 제어 레지스터(103)에 결합될 수 있다.
도 1에 도시된 것처럼, 범용 레지스터(116)는 제 1 통합(unified) 레지스터 파일(148), 제 2 통합 레지스터 파일(150), 제 3 통합 레지스터 파일(152), 제 4 통합 레지스터 파일(154), 제 5 통합 레지스터 파일(156), 및 제 6 통합 레지스터 파일(158)을 포함한다. 각각의 통합 레지스터 파일(148, 150, 152, 154, 156, 158)은 CIR들(136 내지 146) 중 하나에 대응한다. 또한 특정 실시예에서, 각각의 통합 레지스터 파일(148, 150, 152, 154, 156, 158)은 동일한 구조를 가지고 동일한 수의 데이터 피연산자(operand)들 주소 피연산자들을 포함한다.
프로세서(100)의 동작 동안, 명령들은 버스(130)를 통해 CIR들(136 내지 146)에 의해 명령 캐시(134)로부터 인출(fetch)된다. 명령들은 그 후 시퀀서에 의해 처리되고, 지정된 명령 실행 유닛들(108, 110, 112, 114)로 전송되며, 명령 실행 유닛들(108, 110, 112, 114)에서 실행된다. 각각의 명령 실행 유닛(108, 110, 112, 114)에서의 결과물들은 범용 레지스터(116), 즉 통합 레지스터 파일들(148, 150, 152, 154, 156, 158) 중 하나에 기록될 수 있다.
특정 실시예에서 시퀀서(104)는, 제어 레지스터(103)에서의 값에 기초하여 단일 명령 실행 유닛(105)을 선택적으로 인에이블(enable)시킬 수 있다. 인에이블될 때 단일 명령 실행 유닛(105)은, 다중-스테이지 데이터 프로세싱 파이프라인에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 명령이 실행될 수 있는 시기를 결정하기 위하여, 선택된 CIR로부터 명령들을 디코딩할 수 있다. 단일 명령 실행 유닛(105)은 그 후, 디코딩된 명령의 실행 동안 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 하나의 스테이지를 스킵할 수 있다. 파이프라인의 스테이지를 스킵하기 위해 프로세서(100)는, 명령을 실행할 스테이지까지, 스킵된 스테이지(들)의 사이클들 동안 각각의 CIR에서 명령을 홀딩(hold)할 수 있다. 단일 명령 실행 유닛(105)은 또한, 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은 스테이지를 실행할 수 있다.
특정 실시예에서, 전력 제어 로직 회로(106)는 스킵된 스테이지 동안 다중-스테이지 데이터 프로세싱 파이프라인으로의 전력을 감소시킬 수 있다. 전력을 감소시키는 것은 스킵된 스테이지로의 동적(dynamic) 전력을 턴오프(turn off)시키는 것, 스킵된 스테이지로의 정적(static) 전력을 턴오프시키는 것, 또는 양자 모두를 포함할 수 있다. 전력 제어 로직 회로(106)는 스킵되지 않을 다중-스테이지 데이터 프로세싱 파이프라인의 스테이지의 실행 이전에, 공칭(nominal) 동작 레벨로 전력을 회복시킬 수 있다.
도 2는 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하기 위한 시스템(200)의 또 다른 실시예에 대한 블록 다이어그램을 도시한다. 특정 실시예에서 이러한 시스템(200)은, 도 1에서 도시된 프로세서(100)와 같이, 멀티-스레드형 프로세서에서 구현될 수 있다. 예를 들어, 다중-스테이지 데이터 프로세싱 파이프라인은 시퀀서(104) 및 실행 유닛들(108, 110, 112 및 114) 중 하나 이상을 포함할 수 있다. 다중-스테이지 데이터 프로세싱 파이프라인은, CIR(136)과 같은 CIR로부터 명령을 인출(fetch)할 수 있고 명령을 처리할 수 있으며 레지스터 파일(148)과 같은 레지스터 파일에 결과를 저장할 수 있다.
특정 실시예에서 이러한 시스템(200)은, 각각의 스레드가 파이프라인의 각각의 스테이지에 대해 고정된 시간 슬롯을 가질 수 있는 인터리빙된 멀티-스레드형 프로세서에서 구현될 수 있다. 각각의 스레드가 그것의 할당된 시간 슬롯을 사용할 때, 스레드들 사이에 어떠한 충돌도 없다. 인터리빙된 프로세싱을 구현하지 않는 다른 아키텍처(architecture)들은 시스템(200)을 구현할 수 있지만, 스레드들 사이에 충돌이 존재할 수 있다. 이러한 다른 아키텍처들은 충돌 해결 기술을 구현해야 할지도 모른다.
다중-스테이지(multiple stage) 명령 실행 파이프라인에서, 몇몇의 명령들은 명령을 실행하기 위해 파이프라인에서 사용가능한 하드웨어 모두를 요구하지는 않는다. 특정 실시예에서, 명령 실행 파이프라인은 파이프라인에서 하나 이상의 스테이지들을 스킵할 수 있고 명령을 실행하기 위해 필수적인 그러한 스테이지들만 실행할 수 있다. 파이프라인의 스테이지를 스킵하기 위해, 명령을 실행할 스테이지까지 스킵된 스테이지(들)에 대한 사이클들 동안, 명령은 각각의 CIR에 홀딩될 수 있다. 홀딩 사이클들은 제어기 또는 이산적인 타이밍 회로와 같은 제어 로직에 의해 결정될 수 있다. 또 다른 특정 실시예에서 명령 실행 파이프라인은, 완전한 명령을 실행하기 위해 필수적인 단일 스테이지의 하드웨어의 일부만을 실행할 수도 있다. 실행된 스테이지들 또는 스테이지의 일부는 다중-스테이지 명령 실행 파이프라인의 임의의 스테이지일 수 있다. 시스템(200)은 다중-스테이지 명령 실행 파이프라인의 스테이지들 모두보다 적은 스테이지들을 이용하여 명령을 실행할 수 있는 파이프라인들에 대한 3개의 예들을 제공한다. 명령 실행 파이프라인의 스테이지들을 스킵하는 것은, 각각의 스레드가 파이프라인의 각각의 스테이지에 대해 고정된 시간 슬롯을 가질 수 있는 인터리빙된 멀티-스레드형 프로세서에서 특히 제대로 작동할 수 있다.
시스템(200)은 제 1 현재의 명령 레지스터(CIR; 202)를 포함한다. 제 1 CIR(202)은 멀티-스레드형 프로세서의 제 1 스레드와 연관될 수 있다. 제 1 CIR(202)은, 명령을 실행하기 위한 다수의 스테이지들을 가진 제 1 명령 실행 파이프라인을 포함하는 제 1 멀티플렉서(multiplexer; 204) 및 제 2 멀티플렉서(206)에 결합될 수 있다. 제 1 CIR(202)은 또한 제 3 멀티플렉서(230), 제 4 멀티플렉서(238), 제 5 멀티플렉서(260), 및 제 6 멀티플렉서(270)에 결합될 수 있다. 특정 실시예에서, 각각의 명령 실행 파이프라인은 명령의 실행을 위해 사용가능한 6개의 스테이지들을 가질 수 있다. 인터리빙된 멀티-스레드형 프로세서 내의 명령 실행 파이프라인에서의 각각의 스테이지는 파이프라인에서 실행하기 위해 고정된 시간 슬롯을 가질 수 있다. 제 1 멀티플렉서(204) 및 제 2 멀티플렉서(206) 양자 모두는, 제 1 명령 실행 파이프라인이 어느 CIR로부터 명령을 수신할 것인지를 선택하기 위해 제어 라인(205)을 가질 수 있다. 이러한 제어 라인(205)은, 멀티-스레드형 프로세서의 단일 스레드를 선택하기 위해, 도 1에서 도시된 시퀀서(104)와 같이, 제어 로직 회로에 결합될 수 있다.
제 1 명령 실행 파이프라인은 제 1 스테이지(210), 제 2 스테이지(212), 제 3 스테이지(214), 제 4 스테이지(216), 제 5 스테이지(218), 및 제 6 스테이지(220)를 포함한다. 제 1 명령 실행 파이프라인은 멀티플렉서(224)를 통해 선택될 수 있는 2개의 동작 모드들을 가진다. 제 1 동작 모드는, 제 1 스테이지(210), 제 2 스테이지(212), 제 3 스테이지(214), 제 4 스테이지(216), 제 5 스테이지(218), 및 제 6 스테이지(220)에서 명령을 실행하는 것을 포함한다. 제 2 동작 모드는, 전력 절약 모드(power savings mode; 221) 동안 제 1 스테이지(210), 제 2 스테이지(212), 제 3 스테이지(214), 제 4 스테이지(216), 제 5 스테이지(218)를 스킵하고 그 후 제 6 스테이지(220)를 실행하는 것을 포함한다. 전력 절약 모드(221)는, 스테이지들의 실행을 위해 사용되는 하나 이상의 클록(clock) 사이클들의 길이 동안일 수 있다. 전력 절약 모드의 길이는 실행될 명령에 기초하여 가변적일 수 있다. 멀티플렉서(224)는 선택적으로, 제 2 동작 모드 동안 제 1 CIR(202)로부터의 명령을 제 6 스테이지(220)의 입력으로 제공하거나, 제 1 동작 모드 동안 제 5 스테이지(218)로부터의 출력을 제 6 스테이지(220)의 입력으로 제공할 수 있다. 멀티플렉서(224)는, 제 1 동작 모드가 선택되는지 또는 제 2 동작 모드가 선택되는지를 선택하기 위해 제어 라인(223)을 가질 수 있다. 제어 라인(223)은, 제 1 동작 모드 또는 제 2 동작 모드를 선택하기 위해, 도 1에서 도시된 시퀀서(104)와 같이, 제어 로직 회로에 결합될 수 있다. 제 6 스테이지(220)의 출력은 레지스터 파일(226)에 결합될 수 있다.
특정 예시적인 실시예에서, 시스템(200)은 또한 멀티-스레드형 프로세서의 제 2 스레드와 연관된 제 2 CIR(228)을 포함할 수 있다. 제 2 CIR(228)은 제 1 멀티플렉서(204), 제 2 멀티플렉서(206), 제 3 멀티플렉서(230), 제 4 멀티플렉서(238), 및 제 5 멀티플렉서(260)에 결합될 수 있다. 제 3 멀티플렉서(230) 및 제 4 멀티플렉서(238)는 명령을 실행하기 위한 다수의 스테이지들을 가진 제 2 명령 실행 파이프라인을 포함한다. 제 3 멀티플렉서(230) 및 제 4 멀티플렉서(238)는 각각, 제 2 명령 실행 파이프라인이 어느 CIR로부터 명령을 수신할 것인지를 선택하기 위해 제어 라인(229)을 가진다. 이러한 제어 라인(229)은 멀티-스레드형 프로세서의 단일 스레드를 선택하기 위해 제어 로직 회로에 결합될 수 있다.
제 2 명령 실행 파이프라인은 제 1 스테이지(240), 제 2 스테이지(242), 제 3 스테이지(244), 제 4 스테이지(246), 제 5 스테이지(248), 및 제 6 스테이지(250)를 포함한다. 제 2 스테이지 명령 실행 파이프라인은 멀티플렉서(252)를 통해 선택될 수 있는 2개의 동작 모드들을 가진다. 제 1 동작 모드는, 제 1 스테이지(240), 제 2 스테이지(242), 제 3 스테이지(244), 제 4 스테이지(246), 제 5 스테이지(248), 및 제 6 스테이지(250)에서 명령을 실행하는 것을 포함한다.
제 2 동작 모드는, 전력 절약 모드(232) 동안 제 1 스테이지(240), 제 2 스테이지(242), 및 제 3 스테이지(244)를 스킵하고 그 후 제 4 스테이지(246), 제 5 스테이지(248), 및 제 6 스테이지(250)를 실행하는 것을 포함한다. 전력 절약 모드(232)는, 스킵된 스테이지들의 실행을 위해 사용되는 하나 이상의 클록 사이클들의 길이 동안일 수 있다. 전력 절약 모드의 길이는 실행될 명령에 기초하여 가변적일 수 있다. 멀티플렉서(252)는 선택적으로, 제 2 동작 모드 동안 제 2 CIR(228)로부터의 명령을 제 4 스테이지(246)의 입력으로 제공하거나, 제 1 동작 모드 동안 제 3 스테이지(244)로부터의 출력을 제 4 스테이지(246)의 입력으로 제공할 수 있다. 멀티플렉서(252)는, 제 1 동작 모드가 선택되는지 또는 제 2 동작 모드가 선택되는지를 선택하기 위해 제어 라인(251)을 가질 수 있다. 제어 라인(251)은, 제 1 동작 모드 또는 제 2 동작 모드를 선택하기 위해, 도 1에서 도시된 시퀀서(104)와 같이, 제어 로직 회로에 결합될 수 있다. 제 6 스테이지(250)의 출력은 레지스터 파일(226)에 결합될 수 있다.
또 다른 특정 예시적인 실시예에서, 시스템(200)은 제 5 멀티플렉서(260) 및 제 6 멀티플렉서(270)를 포함하는 제 3 명령 실행 파이프라인을 가질 수 있다. 제 5 멀티플렉서(260) 및 제 6 멀티플렉서(270)는, 제 3 명령 실행 파이프라인이 어느 CIR로부터 명령을 수신할 것인지를 선택하기 위해 제어 라인(262)을 가질 수 있다. 제어 라인(262)은 멀티-스레드형 프로세서의 단일 스레드를 선택하기 위해 제어 로직 회로에 결합될 수 있다.
제 3 명령 실행 파이프라인은 제 1 스테이지(272), 제 2 스테이지(274), 제 3 스테이지(276), 제 4 스테이지(278), 제 5 스테이지(280), 및 제 6 스테이지(282)를 포함한다. 제 3 명령 실행 파이프라인은 멀티플렉서(268)를 통해 선택될 수 있는 2개의 동작 모드들을 가진다. 멀티플렉서(268)는, 제 1 동작 모드가 선택되는지 또는 제 2 동작 모드가 선택되는지를 선택하기 위해 제어 라인(269)을 가질 수 있다. 제어 라인(269)은, 제 1 동작 모드 또는 제 2 동작 모드를 선택하기 위해, 도 1에서 도시된 시퀀서(104)와 같이, 제어 로직 회로에 결합될 수 있다.
제 1 동작 모드는, 제 1 스테이지(272), 제 2 스테이지(274), 제 3 스테이지(276), 제 4 스테이지(278), 제 5 스테이지(280), 및 제 6 스테이지(282)에서 명령을 실행하는 것을 포함한다. 제 2 동작 모드는 명령 실행 스테이지(266)를 포함한다. 명령 실행 스테이지(266)는 제 3 명령 실행 파이프라인의 임의의 스테이지 또는 스테이지의 일부일 수 있다. 명령 실행 스테이지(266) 이외의 파이프라인의 스테이지들은 스킵될 수 있고, 에너지를 보존하기 위해 전력 절약 모드(264)가 구현될 수 있다. 예를 들어, 6 스테이지 파이프라인에서, 명령 실행 스테이지(266)는 제 3 명령 실행 파이프라인의 제 3 스테이지 또는 제 3 스테이지의 일부일 수 있다; 따라서, 제 1 스테이지, 제 2 스테이지, 제 4 스테이지, 제 5 스테이지, 및 제 6 스테이지는 스킵될 수 있고 이러한 스테이지들이 실행되었을 시간 동안 전력 절약 모드가 구현될 수 있다. 멀티플렉서(268)는 선택적으로, 제 1 동작 모드의 출력 또는 제 2 동작 모드의 출력을 레지스터 파일(226)에 제공할 수 있다.
특정 실시예에서, 시스템(200)은 2개의 스레드들을 가진 실시예를 도시하지만 시스템(200)은 임의의 수의 스레드들을 지원하도록 확장될 수 있다. 특정 실시예에서, 시스템(200)은 6개의 스레드들을 포함한다.
동작하는 동안, 제 1 명령 실행 파이프라인에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 명령이 실행될 수 있는 시기를 결정하기 위해 CIR(202)로부터의 제 1 명령이 디코딩될 수 있다. 명령의 op코드(opcode)는, 명령을 실행하기 위해 필요한 스테이지들의 개수를 결정하기 위해 판독될 수 있다. 특정 실시예에서, 명령은 기록 전용(write only) 명령일 수 있다. 또 다른 특정 실시예에서, 명령은 레지스터 파일 판독(read)을 포함하지 않는 명령일 수 있다. 또 다른 특정 실시예에서, 명령은 결합(combine) 명령일 수 있다.
제 1 명령 실행 파이프라인에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하고 제 2 동작 모드에서 사용가능한 스테이지들만을 이용하여 명령이 실행될 수 있을 때, 제어 라인(223)은 명령의 실행을 위하여 제 2 동작 모드를 선택하도록 활성화될 수 있다. 제 1 CIR(202)은 그 후 제 1 멀티플렉서(204)로 명령을 전달(pass)할 수 있다. 제어 라인(205)이 제 1 CIR(202)에 대응하는 스레드를 선택할 때, 제 1 멀티플렉서(204)는 제 1 CIR(202)로부터의 명령을 멀티플렉서(224)로 제공할 수 있다.
제 1 파이프라인의 제 2 동작 모드 동안에 명령을 실행하는 동안, 명령을 실행하기 위해 필요하지 않은 스테이지들에 의해 소모되는 전력을 줄이기 위해서, 시스템(200)은 전력 절약 모드(221)로 진입함으로써 제 1 명령 실행 파이프라인으로의 전력을 감소시킬 수 있다. 전력 절약 모드(221)는 파워 다운(power down) 스테이지 동안 동적 전력을 턴오프시키는 것, 파워 다운 스테이지 동안 정적 전력을 턴오프시키는 것, 또는 양자 모두를 포함할 수 있다. 이러한 전력은 실행될 필요가 있는 스테이지 이전에 동작 레벨로 회복될 수 있다. 전력 절약 모드(221)가 종료된 후, 제 6 스테이지(220)는 명령을 실행할 수 있고, 레지스터 파일(226)에 제공되도록 멀티플렉서(224)에 대한 출력을 제공할 수 있다. 인터리빙된 멀티-스레드형 프로세서에서, 스킵된 스테이지들 및 제 6 스테이지(220)에 할당된 시간 슬롯들에 기초하여 전력 절약 모드(221)가 종료될 수 있다. 특정 실시예에서, 제 6 스테이지(220)는 레지스터 파일 기록 실행을 포함할 수 있다.
제 1 명령 실행 파이프라인에서 스테이지들의 개수보다 적은 스테이지들을 이용하여 명령이 실행될 수 없을 때, 제어 라인(223)은 명령을 실행하기 위해 제 1 동작 모드를 선택하도록 활성화된다. 제 1 CIR(202)은 그 후 제 2 멀티플렉서(206)로 명령을 전달할 수 있다. 제 2 멀티플렉서(206)는 명령을 실행하기 위해, 제 1 CIR(202)로부터의 명령을 명령 실행 스테이지(210)에 제공한다. 이러한 명령은 그 후, 레지스터 파일(226)에 저장될 출력을 전송하기 전에 명령 실행 스테이지들(210, 212, 214, 216, 218 및 220)에 의해 실행될 수 있다.
제 2 CIR(228)로부터의 명령들은 제 1 CIR(202)에 관해 위에서 기술된 것과 유사하게 실행될 수 있다. 추가적으로, 제 3 멀티플렉서(230), 제 4 멀티플렉서(238), 제 2 명령 실행 파이프라인, 및 멀티플렉서(252)의 동작은 위에서 기술된 것과 유사하게 작동될 수 있다. 그러나, 도 2에 도시된 것처럼, 제 2 명령 실행 파이프라인의 제 2 동작 모드는 실행될 수 있는 3개의 스테이지들(제 4 스테이지(246), 제 5 스테이지(248), 및 제 6 스테이지(250))을 가진다.
제 3 명령 실행 파이프라인은 또한 위에서 기술된 것과 유사하게 작동될 수 있다. 제 3 명령 실행 파이프라인의 제 1 동작 모드에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 CIR로부터의 명령이 실행될 수 있고 제 2 동작 모드에서의 실행을 위해 사용가능한 스테이지, 스테이지들, 또는 스테이지의 일부만을 이용하여 명령이 실행될 수 있을 때, 제 2 동작 모드는 멀티플렉서(268)에 의해 선택될 수 있다. 제 3 명령 실행 파이프라인의 제 2 동작 모드를 이용하여 CIR로부터의 명령이 실행될 수 없을 때는, 제 1 동작 모드가 멀티플렉서(268)에 의해 선택될 수 있다.
도 3은 다중-스테이지 데이터 프로세싱 파이프라인에서 명령을 실행하는 방법(300)의 실시예에 대한 흐름도를 도시한다. 이러한 방법(300)은, 302에서, 다중-스테이지 데이터 프로세싱 파이프라인에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 명령이 실행될 수 있는 시기를 결정하기 위해 명령을 디코딩하는 것을 포함한다. 특정 실시예에서, 이러한 디코딩은 명령의 실행 이전에 수행된다. 또 다른 특정 실시예에서, 이러한 디코딩은 명령의 op코드를 식별함으로써 명령을 결정하는 것을 포함한다. 또 다른 특정 실시예에서, 명령은 현재의 명령 레지스터(CIR)로부터 수신된다.
방법(300)은 또한 304에서, 디코딩된 명령의 실행 동안 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 하나의 스테이지를 스킵하는 것을 포함한다. 이러한 적어도 하나의 스킵된 스테이지는 다중-스테이지 데이터 프로세싱 파이프라인의 제 1 스테이지, 마지막 스테이지, 또는 제 1 스테이지와 마지막 스테이지 사이에 있는 스테이지일 수 있다.
이러한 방법은 306에서, 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은 스테이지를 실행하는 것을 더 포함한다. 특정 실시예에서, 명령은 기록 전용 명령일 수 있다. 또 다른 특정 실시예에서, 명령은 레지스터 파일 판독을 포함하지 않는 명령일 수 있다. 또 다른 특정 실시예에서, 명령은 결합 명령일 수 있다.
특정 실시예에서 방법(300)은, 308에서, 적어도 하나의 스킵되지 않은 스테이지 동안 다중-스테이지 데이터 프로세싱 파이프라인으로의 전력을 감소시키는 것을 포함한다. 또 다른 특정 실시예에서, 전력을 감소시키는 것은 적어도 하나의 스킵된 스테이지로의 동적 전력을 턴오프시키는 것을 포함할 수 있다. 또 다른 특정 실시예에서, 전력을 감소시키는 것은 또한 적어도 하나의 스킵된 스테이지로의 정적 전력을 턴오프시키는 것을 포함할 수 있다. 이러한 방법(300)은 스킵되지 않을 다중-스테이지 데이터 프로세싱 파이프라인의 스테이지 이전에 전력을 증가시키는 것을 포함할 수 있다.
특정 실시예에서, 다중-스테이지 데이터 프로세싱 파이프라인은 인터리빙된 멀티-스레드형 프로세서 내의 다수의 다중-스테이지 데이터 프로세싱 파이프라인들 중 하나일 수 있다. 또한, 다중-스테이지 데이터 프로세싱 파이프라인은 다수의 스레드들 중 적어도 하나로부터 명령을 수신하도록 적응될 수 있다.
도 4는, 도 1 내지 도 3에 관해 기술된 것과 같이, 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하기 위한 디바이스 및 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 방법을 이용할 수 있는 휴대용 통신 디바이스의 예시적이고, 비-제한적인 실시예를 도시하고, 일반적으로 400으로 지정된다. 휴대용 통신 디바이스(400)는, (도 1 내지 도 3에 관해 기술된 것처럼) 단일 명령 실행 유닛(412) 및 전력 제어 로직(414)을 가진 디지털 신호 프로세서(410)와 같은, 프로세서를 포함하는 온-칩(on-chip) 시스템(422)을 포함한다. 도 4는 또한 디지털 신호 프로세서(410) 및 디스플레이(428)에 결합될 수 있는 디스플레이 제어기(426)를 도시한다. 또한, 입력 디바이스(430)가 디지털 신호 프로세서(410)에 결합될 수 있다. 부가적으로, 메모리(432)가 디지털 신호 프로세서(410)에 결합된다. 코더/디코더(CODEC; 434)이 또한 디지털 신호 프로세서(410)에 결합될 수 있다. 스피커(436) 및 마이크로폰(438)이 CODEC(434)에 결합될 수 있다.
도 4는 또한 무선 제어기(440)가 디지털 신호 프로세서(410) 및 무선 안테나(442)에 결합될 수 있음을 나타낸다. 특정 실시예에서, 전력 공급기(power supply; 444)가 온-칩 시스템(422)에 결합될 수 있다. 특정 실시예에서, 도 4에서 도시된 것처럼, 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 무선 안테나(442), 및 전력 공급기(444)는 온-칩 시스템(422)의 외부에 있다. 그러나, 각각은 온-칩 시스템(422)의 컴포넌트에 결합된다.
특정 예시적인 실시예에서 단일 명령 실행 유닛(412)은, 다중-스테이지 데이터 프로세싱 파이프라인에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 명령이 실행될 수 있는 시기를 결정하기 위해 명령을 디코딩할 수 있다. 단일 명령 실행 유닛(412)은 그 후, 디코딩된 명령의 실행 동안 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 하나의 스테이지를 스킵할 수 있다. 단일 명령 실행 유닛(412)은 또한, 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은 스테이지를 실행할 수 있다. 또 다른 특정 실시예에서, 전력 제어 로직(414)은 적어도 하나의 스킵된 스테이지 동안 다중-스테이지 데이터 프로세싱 파이프라인으로의 전력을 감소시킬 수 있다. 전력을 감소시키는 것은 적어도 하나의 스킵된 스테이지로의 동적 전력을 턴오프시키는 것을 포함할 수 있다. 전력을 감소시키는 것은 또한 적어도 하나의 스킵된 스테이지로의 정적 전력을 턴오프시키는 것을 포함할 수 있다. 전력 제어 로직(414)은 스킵되지 않을 다중-스테이지 데이터 프로세싱 파이프라인의 스테이지에서의 실행 이전에 전력을 증가시킬 수 있다.
당업자는 본원에 개시된 실시예들과 관련하여 상술한 다양한 예시적인 논리블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수 있음을 잘 이해할 것이다. 하드웨어 및 소프트웨어의 상호 호환성을 명확히 하기 위해, 다양한 예시적인 소자들, 블록들, 구성들, 모듈들, 회로들, 및 단계들이 일반적으로 그들의 기능적 관점에서 기술되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지는 특정 애플리케이션 및 전체 시스템에 대해 부가된 설계 제한들에 의존한다. 당업자는 이러한 기능들을 각각의 특정 애플리케이션에 대해 다양한 방식으로 구현할 수 있지만, 이러한 구현 결정들이 본 개시내용의 영역을 벗어나는 것이라고 해석되어서는 안 된다.
본원에 개시된 실시예들과 관련하여 기재된 방법 또는 알고리즘의 단계들은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들의 조합에 의해 직접 구현될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 플래시 메모리, 판독 전용 메모리(ROM), 프로그램가능 ROM (PROM), 전기적 프로그램 가능한 ROM(EPROM), 전기적 삭제가능한 프로그램 가능 ROM(EEPROM), 레지스터들, 하드디스크, 휴대용 디스크, 콤팩트 디스크 ROM(CD-ROM), 또는 당업계에서 공지된 저장 매체의 임의의 다른 형태에 상주할 수 있다. 예시적인 저장매체는 프로세서와 결합되어, 프로세서는 저장매체로부터 정보를 판독하고 저장매체에 정보를 기록할 수 있다. 대안적으로, 저장 매체는 프로세서의 구성요소일 수 있다. 이러한 프로세서 및 저장매체는 ASIC에 상주할 수 있다. ASIC은 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말 내에 이산 컴포넌트로서 상주할 수 있다.
개시된 실시예들에 대한 이상의 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 개시된 실시예들을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 사상 및 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것으로 의도되지 않고, 청구범위에 의해 정의되는 바와 같이, 이러한 원리들 및 신규한 특징들과 일관되는 가능한 최광의의 범위에서 해석되어야 할 것이다.
Claims (39)
- 방법으로서,
명령을 실행하도록 시작하기 이전에 레지스터에서 명령을 홀딩하는 단계;
다중-스테이지(multi-stage) 데이터 프로세싱 파이프라인(pipeline)에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 상기 명령이 실행될 수 있는지를 결정하기 위해 상기 명령을 디코딩(decoding)하는 단계;
상기 사용가능한 스테이지들의 개수 보다 적은 스테이지들을 이용하여 상기 명령이 실행될 수 있다는 결정에 응답하여, 상기 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 하나의 스테이지를 스킵(skip)하는 단계 ?상기 적어도 하나의 스테이지를 스킵하는 단계는 상기 명령을 실행하기 시작한 후 상기 레지스터내의 상기 디코딩된 명령을 홀딩하는 단계를 포함함?; 및
상기 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은(non-skipped) 스테이지를 실행하는 단계
를 포함하는, 방법. - 제 1 항에 있어서,
상기 적어도 하나의 스킵된 스테이지 동안 상기 다중-스테이지 데이터 프로세싱 파이프라인으로의 전력을 감소시키는 단계를 더 포함하는,
방법. - 제 2 항에 있어서,
상기 전력을 감소시키는 단계는 상기 적어도 하나의 스킵된 스테이지로의 동적(dynamic) 전력을 턴오프(turn off)시키는 단계를 포함하는,
방법. - 제 2 항에 있어서,
상기 전력을 감소시키는 단계는 상기 적어도 하나의 스킵된 스테이지로의 전력을 턴오프시키는 단계를 포함하는,
방법. - 제 2 항에 있어서,
스킵되지 않을 상기 다중-스테이지 데이터 프로세싱 파이프라인의 스테이지 이전에 전력을 증가시키는 단계를 더 포함하는,
방법. - 제 1 항에 있어서,
상기 레지스터는 현재의 명령 레지스터(CIR)이며,
상기 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 하나의 스테이지를 스킵하는 단계는:
스킵될 상기 적어도 하나의 스테이지에 기초한 시간 기간 동안 상기 CIR에서 상기 디코딩된 명령을 홀딩(holding)하는 단계; 및
상기 시간 기간의 마지막에 상기 CIR로부터의 상기 명령을 상기 적어도 하나의 스킵되지 않은 스테이지로 포워딩(forwarding)하는 단계
를 더 포함하는,
방법. - 제 1 항에 있어서,
상기 디코딩하는 단계는 상기 명령의 실행 이전에 수행되는,
방법. - 제 1 항에 있어서,
상기 적어도 하나의 스킵된 스테이지는 제 1 스테이지, 마지막 스테이지, 및 상기 제 1 스테이지와 상기 마지막 스테이지 사이에 있는 스테이지로 이루어진 그룹으로부터 선택된 스테이지인,
방법. - 제 1 항에 있어서,
상기 레지스터는 현재의 명령 레지스터(CIR)이며, 상기 방법은 상기 다중-스테이지 데이터 프로세싱 파이프라인에서 상기 CIR로부터의 상기 명령을 수신하는 단계를 더 포함하는,
방법. - 제 1 항에 있어서,
상기 다중-스테이지 데이터 프로세싱 파이프라인은 인터리빙된(interleaved) 멀티-스레딩(multi-threading) 프로세서 내의 다수의 다중-스테이지 데이터 프로세싱 파이프라인들 중 하나인,
방법. - 제 1 항에 있어서,
상기 다중-스테이지 데이터 프로세싱 파이프라인은 다수의 스레드(thread)들 중 적어도 하나로부터 상기 명령을 수신하도록 적응된,
방법. - 제 1 항에 있어서,
상기 디코딩하는 단계는 상기 명령을 식별하는 단계를 더 포함하는,
방법. - 제 1 항에 있어서,
상기 명령은 기록 전용(write only) 명령을 포함하는,
방법. - 제 1 항에 있어서,
상기 명령은 레지스터 파일 판독(read)을 포함하지 않는,
방법. - 제 1 항에 있어서,
상기 명령은 결합(combine) 명령을 포함하는,
방법. - 하드웨어 프로세서로서,
명령을 실행하기 시작하기 이전에 제 1 명령을 홀딩하도록 적응되는 레지스터;
상기 제 1 명령을 실행하기 위한 다수의 스테이지들을 가지는 제 1 명령 실행 파이프라인; 및
상기 제 1 명령 실행 파이프라인에 결합된 제어 로직 회로
를 포함하고, 상기 제어 로직 회로는,
상기 제 1 명령이 상기 다수의 스테이지들 보다는 적은 개수의 스테이지들을 이용하여 실행될 수 있다고 결정한 후, 상기 제 1 명령 실행 파이프라인의 적어도 하나의 스테이지를 스킵하고
상기 제 1 명령의 실행 동안 적어도 하나의 스킵되지 않은 스테이지를 실행하도록
적응되며, 상기 적어도 하나의 스테이지를 스킵하는 것은 상기 제 1 명령을 실행하기 시작한 이후에, 상기 레지스터내의 상기 제 1 명령을 홀딩하는 것을 포함하는,
하드웨어 프로세서. - 제 16 항에 있어서,
상기 제어 로직 회로는 상기 적어도 하나의 스킵된 스테이지 동안 상기 제 1 명령 실행 파이프라인으로의 전력을 감소시키도록 더 적응되는,
하드웨어 프로세서. - 제 16 항에 있어서,
상기 제어 로직 회로는 상기 다수의 스테이지들 모두 보다 적은 스테이지들을 이용하여 상기 제 1 명령이 실행될 수 있는지 여부를 결정하기 위해 상기 제 1 명령을 디코딩하도록 더 적응되는,
하드웨어 프로세서. - 제 16 항에 있어서,
상기 제 1 명령 실행 파이프라인은 6개의 스테이지들을 포함하는,
하드웨어 프로세서. - 제 16 항에 있어서,
상기 제어 로직 회로는 적어도 제 1 멀티플렉서(multiplexer) 및 제어기를 포함하는,
하드웨어 프로세서. - 제 16 항에 있어서,
상기 제 1 명령은 기록-전용 명령을 포함하는,
하드웨어 프로세서. - 제 16 항에 있어서,
상기 제 1 명령은 판독-전용(read-only) 명령을 포함하는,
하드웨어 프로세서. - 제 16 항에 있어서,
상기 제 1 명령 실행 파이프라인에 결합되고, 상기 제 1 명령에 기초하여 피연산자(operand)를 저장하도록 적응된 레지스터 파일을 더 포함하는,
하드웨어 프로세서. - 제 16 항에 있어서,
명령들을 실행하기 위한 다수의 스테이지들을 가진 제 2 명령 실행 파이프라인을 더 포함하고,
상기 제어 로직 회로는 상기 제 2 명령 실행 파이프라인에 결합되고, 상기 제 2 명령 실행 파이프라인에서 상기 제 1 명령의 실행 동안 상기 제 2 명령 실행 파이프라인의 적어도 하나의 스테이지를 스킵하도록 적응되는,
하드웨어 프로세서. - 제 24 항에 있어서,
상기 제 1 명령 실행 파이프라인 및 상기 제 2 명령 실행 파이프라인에 결합된 레지스터 파일을 더 포함하는,
하드웨어 프로세서. - 하드웨어 프로세서로서,
명령을 실행하기 시작하기 이전에 명령을 홀딩하도록 적응되는 레지스터;
다수의 사용가능한 스테이지들을 포함하는 명령 실행 파이프라인;
상기 명령 실행 파이프라인으로부터 데이터를 수신하도록 적응된 레지스터 파일;
상기 명령이 상기 다수의 사용가능한 스테이지들 모두 보다는 적으며 적어도 하나의 스테이지를 포함하는 개수의 스테이지를 이용하여 실행될 수 있다는 것을 결정하기 위한 수단; 및
상기 명령 실행 파이프라인의 상기 다수의 사용가능한 스테이지들 중 적어도 하나의 스테이지를 스킵하기 위한 수단 ?상기 적어도 하나의 스테이지를 스킵하는것은 상기 명령을 실행하기 시작한 이후 상기 레지스터 내에 상기 명령을 홀딩하는 것을 포함함?
을 포함하는, 하드웨어 프로세서. - 제 26 항에 있어서,
상기 레지스터는 상기 명령 실행 파이프라인에 결합된 명령 레지스터인,
하드웨어 프로세서. - 제 26 항에 있어서,
상기 레지스터 파일은 통합(unified) 레지스터 파일인,
하드웨어 프로세서. - 제 26 항에 있어서,
상기 적어도 하나의 스테이지를 스킵하는 동안 전력을 감소시키기 위한 수단을 더 포함하는,
하드웨어 프로세서. - 무선 하드웨어 컴퓨터 디바이스로서,
무선 통신 채널을 통해 데이터를 수신하도록 적응된 수신기; 및
상기 수신기에 응답하는 프로세서
를 포함하고, 상기 프로세서는,
제 1 메모리; 및
상기 제 1 메모리에 응답하는 인터리빙된 다중-스테이지 데이터 프로세싱 파이프라인
을 포함하고, 상기 프로세서는,
상기 인터리빙된 다중-스테이지 데이터 프로세싱 파이프라인에서 사용가능한 스테이지들의 개수보다 적은 스테이지들을 이용하여 명령이 실행될 수 있는지를 결정하기 위해 상기 명령을 디코딩하고;
상기 인터리빙된 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 하나의 스테이지를 스킵하고; 그리고
상기 디코딩된 명령의 실행 동안 적어도 하나의 스킵되지 않은 스테이지를 실행하도록
적응되는,
무선 하드웨어 컴퓨터 디바이스. - 제 30 항에 있어서,
상기 수신기에 결합된 안테나;
상기 안테나에 결합된 송신기;
상기 프로세서에 의해 액세스가능한(accessible) 제 2 메모리;
상기 프로세서에 결합된 디스플레이 제어기; 및
상기 프로세서에 결합된 오디오 코더/디코더(CODEC)
를 더 포함하는,
무선 하드웨어 컴퓨터 디바이스. - 제 1 항에 있어서,
상기 적어도 하나의 스테이지를 스킵하는 단계는 스킵될 상기 적어도 하나의 스테이지에 해당하는 시간 기간에 의해 그리고 상기 명령이 사용가능한 스테이지들의 개수 보다 적은 스테이지들을 사용하여 실행될 수 있다는 결정에 응답하여, 상기 다중-스테이지 데이터 프로세싱 파이프라인에서 상기 디코딩된 명령의 도입을 지연시키는 단계를 더 포함하는,
방법. - 제 16 항에 있어서,
상기 제어 로직 회로는 스킵될 상기 적어도 하나의 스테이지에 해당하는 ㅎ홀딩 사이클을 결정하도록 적응되는 이산적 타이밍 회로를 더 포함하는,
하드웨어 프로세서. - 제 33 항에 있어서,
상기 레지스터는 스킵될 상기 적어도 하나의 스테이지에 해당하는 상기 홀딩 사이클 동안 상기 제 1 명령을 홀딩하도록 적응되는 현재의 명령 레지스터(CIR)인,
하드웨어 프로세서. - 제 34 항에 있어서,
스킵될 상기 적어도 하나의 스테이지는 적어도 하나의 고정된 타임 슬롯과 연관되며, 스킵될 상기 적어도 하나의 스테이지에 해당하는 상기 홀딩 사이클은 상기 적어도 하나의 고정된 타임 슬롯에 기초하는,
하드웨어 프로세서. - 제 24 항에 있어서,
상기 제어 로직 회로는 상기 제 1 명령 실행 파이프라인에서 이용가능한 스테이지들의 개수 및 상기 제 2 명령 실행 파이프라인에서 사용가능한 스테이지들의 개수에 기초하여, 상기 명령을 실행하기 위해 상기 제 1 명령 실행 파이프라인을 선택하거나 또는 상기 명령을 실행하기 위해 상기 제 2 명령 실행 파이프라인을 선택하도록 추가로 적응되는,
하드웨어 프로세서. - 제 6 항에 있어서,
상기 시간 기간은 상기 다중-스테이지 데이터 프로세싱 파이프라인의 적어도 2개의 스테이지에 해당하며, 상기 디코딩된 명령은 상기 적어도 2개의 스테이지에 해당하는 상기 시간 기간 동안 상기 CIR에 홀딩되는,
방법. - 제 20 항에 있어서,
상기 제어 로직 회로는 제 2 멀티플렉서를 더 포함하며, 상기 제 1 멀티플렉서는 상기 다수의 스테이지들 중 제 1 스테이지에 상기 제 1 명령을 제공하고 상기 제 2 멀티플렉서는 상기 다수의 스테이지들 중 제 2 스테이지에 상기 제 1 명령을 제공하도록 동작하는,
하드웨어 프로세서. - 제 1 항에 있어서,
스킵될 상기 적어도 하나의 스테이지를 스킵하는 단계는 스킵될 상기 적어도 하나의 스테이지에 상기 디코딩된 명령을 제공하지 않는,
방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/850,940 US8868888B2 (en) | 2007-09-06 | 2007-09-06 | System and method of executing instructions in a multi-stage data processing pipeline |
US11/850,940 | 2007-09-06 | ||
PCT/US2008/075270 WO2009032936A1 (en) | 2007-09-06 | 2008-09-04 | System and method of executing instructions in a multi-stage data processing pipeline |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100058623A KR20100058623A (ko) | 2010-06-03 |
KR101132484B1 true KR101132484B1 (ko) | 2012-03-30 |
Family
ID=39580121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107007376A KR101132484B1 (ko) | 2007-09-06 | 2008-09-04 | 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 시스템 및 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8868888B2 (ko) |
EP (1) | EP2034401B1 (ko) |
JP (1) | JP5318873B2 (ko) |
KR (1) | KR101132484B1 (ko) |
CN (1) | CN101821712B (ko) |
WO (1) | WO2009032936A1 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493761B (zh) | 2008-01-25 | 2013-05-29 | 国际商业机器公司 | 处理器流水线处理指令的方法及相应的处理器 |
US7945765B2 (en) * | 2008-01-31 | 2011-05-17 | International Business Machines Corporation | Method and structure for asynchronous skip-ahead in synchronous pipelines |
US8806181B1 (en) * | 2008-05-05 | 2014-08-12 | Marvell International Ltd. | Dynamic pipeline reconfiguration including changing a number of stages |
US7990974B1 (en) | 2008-09-29 | 2011-08-02 | Sonicwall, Inc. | Packet processing on a multi-core processor |
JP2010198128A (ja) * | 2009-02-23 | 2010-09-09 | Toshiba Corp | プロセッサシステム |
US8397238B2 (en) * | 2009-12-08 | 2013-03-12 | Qualcomm Incorporated | Thread allocation and clock cycle adjustment in an interleaved multi-threaded processor |
JP4829370B1 (ja) * | 2010-07-09 | 2011-12-07 | 株式会社東芝 | メモリ制御装置、メモリ装置および停止制御方法 |
US9030979B2 (en) * | 2011-05-11 | 2015-05-12 | Qualcomm Incorporated | Reducing power consumption in multi-threaded processor mobile devices |
CN106909444B (zh) * | 2011-12-22 | 2021-01-12 | 英特尔公司 | 用于指定应用线程性能状态的指令的指令处理装置及相关方法 |
US9417880B2 (en) | 2013-03-15 | 2016-08-16 | Intel Corporation | Instruction for performing an overload check |
CN104104786B (zh) | 2013-04-12 | 2016-09-28 | 中国银联股份有限公司 | 一种对外接载体持续供电的方法和终端设备 |
GB2526018B (en) | 2013-10-31 | 2018-11-14 | Silicon Tailor Ltd | Multistage switch |
GB2569098B (en) * | 2017-10-20 | 2020-01-08 | Graphcore Ltd | Combining states of multiple threads in a multi-threaded processor |
US11175921B2 (en) | 2018-05-15 | 2021-11-16 | International Business Machines Corporation | Cognitive binary coded decimal to binary number conversion hardware for evaluating a preferred instruction variant based on feedback |
GB2580316B (en) * | 2018-12-27 | 2021-02-24 | Graphcore Ltd | Instruction cache in a multi-threaded processor |
DE102019200256B4 (de) * | 2019-01-10 | 2020-07-30 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verschachteler |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138777A1 (en) * | 2001-03-21 | 2002-09-26 | Apple Computer Inc. | Method and apparatus for saving power in pipelined processors |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57168350A (en) | 1981-04-09 | 1982-10-16 | Mitsubishi Electric Corp | Information processor |
JPS5890247A (ja) | 1981-11-25 | 1983-05-28 | Nippon Telegr & Teleph Corp <Ntt> | 情報処理装置のパイプライン制御方式 |
JPS63141131A (ja) | 1986-12-04 | 1988-06-13 | Toshiba Corp | パイプライン制御方式 |
JPH0469895A (ja) | 1990-07-10 | 1992-03-05 | Mitsubishi Electric Corp | 半導体記憶装置 |
US5471626A (en) | 1992-05-06 | 1995-11-28 | International Business Machines Corporation | Variable stage entry/exit instruction pipeline |
JPH05334081A (ja) | 1992-06-02 | 1993-12-17 | Kobe Nippon Denki Software Kk | パイプライン処理方式 |
JPH06314196A (ja) | 1993-04-30 | 1994-11-08 | Hitachi Ltd | 情報処理方法および装置 |
JP2857073B2 (ja) | 1994-11-22 | 1999-02-10 | 松下電器産業株式会社 | データ処理装置 |
JP3546980B2 (ja) * | 1996-03-29 | 2004-07-28 | 松下電器産業株式会社 | データ処理装置 |
US6247134B1 (en) * | 1999-03-31 | 2001-06-12 | Synopsys, Inc. | Method and system for pipe stage gating within an operating pipelined circuit for power savings |
JP3776644B2 (ja) * | 1999-10-05 | 2006-05-17 | 富士通株式会社 | パイプライン演算装置、情報処理装置およびパイプライン演算装置の演算方法 |
WO2001033351A1 (fr) | 1999-10-29 | 2001-05-10 | Fujitsu Limited | Architecture de processeur |
US6609193B1 (en) | 1999-12-30 | 2003-08-19 | Intel Corporation | Method and apparatus for multi-thread pipelined instruction decoder |
JP2003316566A (ja) | 2002-04-24 | 2003-11-07 | Matsushita Electric Ind Co Ltd | パイプラインプロセッサ |
US7634668B2 (en) * | 2002-08-22 | 2009-12-15 | Nvidia Corporation | Method and apparatus for adaptive power consumption |
US7065665B2 (en) * | 2002-10-02 | 2006-06-20 | International Business Machines Corporation | Interlocked synchronous pipeline clock gating |
CN100472432C (zh) | 2004-03-10 | 2009-03-25 | Nxp股份有限公司 | 电子电路 |
-
2007
- 2007-09-06 US US11/850,940 patent/US8868888B2/en not_active Expired - Fee Related
-
2008
- 2008-03-31 EP EP08006415A patent/EP2034401B1/en not_active Not-in-force
- 2008-09-04 CN CN200880111057.1A patent/CN101821712B/zh not_active Expired - Fee Related
- 2008-09-04 WO PCT/US2008/075270 patent/WO2009032936A1/en active Application Filing
- 2008-09-04 KR KR1020107007376A patent/KR101132484B1/ko not_active IP Right Cessation
- 2008-09-04 JP JP2010524144A patent/JP5318873B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138777A1 (en) * | 2001-03-21 | 2002-09-26 | Apple Computer Inc. | Method and apparatus for saving power in pipelined processors |
Also Published As
Publication number | Publication date |
---|---|
US8868888B2 (en) | 2014-10-21 |
JP5318873B2 (ja) | 2013-10-16 |
EP2034401B1 (en) | 2013-01-30 |
CN101821712A (zh) | 2010-09-01 |
CN101821712B (zh) | 2014-11-12 |
JP2010538398A (ja) | 2010-12-09 |
EP2034401A1 (en) | 2009-03-11 |
KR20100058623A (ko) | 2010-06-03 |
WO2009032936A1 (en) | 2009-03-12 |
US20090070602A1 (en) | 2009-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101132484B1 (ko) | 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 시스템 및 방법 | |
US9235418B2 (en) | Register files for a digital signal processor operating in an interleaved multi-threaded environment | |
US7814487B2 (en) | System and method of executing program threads in a multi-threaded processor | |
US8639913B2 (en) | Multi-mode register file for use in branch prediction | |
US20060230253A1 (en) | Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment | |
US9116685B2 (en) | Table call instruction for frequently called functions | |
US8527797B2 (en) | System and method of leakage control in an asynchronous system | |
US8874884B2 (en) | Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold | |
US9678754B2 (en) | System and method of processing hierarchical very long instruction packets | |
US20060230257A1 (en) | System and method of using a predicate value to access a register file | |
US9075620B2 (en) | Instruction execution circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150227 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |