[go: up one dir, main page]

KR20100061524A - 레지스터 파일 시스템 및 파이프라이닝 프로세싱을 위한 방법 - Google Patents

레지스터 파일 시스템 및 파이프라이닝 프로세싱을 위한 방법 Download PDF

Info

Publication number
KR20100061524A
KR20100061524A KR1020107007656A KR20107007656A KR20100061524A KR 20100061524 A KR20100061524 A KR 20100061524A KR 1020107007656 A KR1020107007656 A KR 1020107007656A KR 20107007656 A KR20107007656 A KR 20107007656A KR 20100061524 A KR20100061524 A KR 20100061524A
Authority
KR
South Korea
Prior art keywords
register file
register
instruction
register files
data
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020107007656A
Other languages
English (en)
Other versions
KR101139066B1 (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 KR20100061524A publication Critical patent/KR20100061524A/ko
Application granted granted Critical
Publication of KR101139066B1 publication Critical patent/KR101139066B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/4252Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using a handshaking protocol
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 제 1 쓰레드와 연관된 제 1 레지스터 파일 및 제 2 쓰레드와 연관된 제 2 레지스터 파일을 포함하는 멀티-쓰레드 프로세스를 포함한다. 적어도 하나의 하드웨어 리소스는 제 1 및 제 2 레지스터 파일들에 의해 공유된다. 또한, 제 1 쓰레드는 제 2 쓰레드에 비-순차적인 파이프라인 액세스 위치를 가질 수 있다. 또한, 다수의 레지스터 파일들을 액세스하는 방법이 개시된다. 상기 방법은 제 1 레지스터 파일로부터 데이터를 판독하면서 동시에 제 2 레지스터 파일로부터 데이터를 판독하는 단계를 포함한다. 제 1 레지스터 파일은 제 1 명령 스트림과 연관되며 제 2 레지스터 파일은 제 2 명령 스트림과 연관된다. 제 1 명령 스트림은 프로세서의 실행 파이프라인에서 제 2 명령 스트림과 순차적이며, 제 1 레지스터 파일은 제 2 레지스터 파일에 대해 비-인접 위치에 있는다.

Description

레지스터 파일 시스템 및 파이프라이닝 프로세싱을 위한 방법{REGISTER FILE SYSTEM AND METHOD FOR PIPELINED PROCESSING}
[0001] 본 발명은 일반적으로 레지스터 파일 시스템 및 파이프라이닝 프로세싱을 위한 방법에 관한 것이다.
[0002] 기술 진보로 보다 작고 보다 강력한 퍼스널 컴퓨팅 디바이스들이 산출되었다. 예를 들어, 현재 무선 컴퓨팅 디바이스들, 이를 테면 휴대용 무선 전화들, PDA들, 및 작고 가벼우며 사용자들이 휴대하기 쉬운 페이징(paging) 디바이스들을 포함하는 다양한 휴대용 퍼스널 컴퓨팅 디바이스들이 존재한다. 보다 특정하게, 셀룰러 전화들 및 IP 전화들과 같은 휴대용 무선 전화들은 무선 네트워크들을 통해 음성 및 데이터 패킷들을 통신할 수 있다. 또한, 이러한 다수의 무선 전화들은 그 내부에 통합되는 다른 형태들의 디바이스들을 포함한다. 예를 들어, 무선 전화는 디지털 스틸 카메라, 디지털 비디오 카메라, 디지털 리코더, 및 오디오 파일 재생기(player)를 포함할 수 있다. 또한, 이러한 무선 전화들은 소프트웨어 애플리케이션들, 이를 테면 인터넷을 액세스하는데 이용될 수 있는 웹 브라우저 애플리케이션을 포함하는 실행가능한 명령들을 처리할 수 있다. 이처럼, 이러한 무선 전화들은 중요한(significant) 컴퓨팅 능력들을 포함할 수 있다.
[0003] 디지털 신호 프로세서(DSP)들은 무선 전화들과 같은 휴대용 퍼스널 컴퓨팅 디바이스들에 빈번히 이용된다. 이러한 DSP들은 비디오 및 오디오 기능들을 제공하거나, 수신된 데이터를 처리하거나, 또는 다른 기능들을 수행하기 위해 이용될 수 있다. 이러한 DSP들은 파이프라이닝(pipelined) 및/또는 병렬(parallel) 실행 유니트들을 사용할 수 있다.
[0004] 현대의 마이크로프로세서 또는 DSP에서 레지스터 파일은 상대적 크기, 데이터 버스들의 폭, 및 와이어 트레이스들의 길이로 인해, 상당한 전력을 소모한다. 일부 프로세서들에서는 다중 레지스터 파일들이 사용되며 이러한 레지스터 파일들은 디바이스의 전체 전력 소모에 기여한다. 부가적으로, 회로 디바이스의 인접한 구역들에 있는 다중 레지스터 파일들의 레이아웃은 전력 소모 밀도를 증가시키며 회로 가열로 인해 비효율성에 기여할 수 있다. 따라서, 강화된 레지스터 파일 구조 및 레지스터 파일들을 이용하는 방법이 요구된다.
[0005] 특정 실시예에서, 멀티-쓰레드 프로세서가 개시된다. 상기 프로세서는 제 1 쓰레드와 연관된 제 1 레지스터 파일 및 제 2 쓰레드와 연관된 제 2 레지스터 파일을 포함한다. 제 1 및 제 2 레지스터 파일들에 의해 적어도 하나의 하드웨어 리소스가 공유된다. 추가로, 제 1 쓰레드는 제 2 쓰레드에 비-순차적인(non-sequential) 파이프라인 액세스 위치를 포함한다.
[0006] 또 다른 특정 실시예에서, 프로세서는 제 1 명령 실행 스트림과 연관된 제 1 레지스터 파일 및 제 2 명령 실행 스트림과 연관된 제 2 레지스터 파일을 포함한다. 제 1 및 제 2 실행 스트림들은 순차적인 방식으로 파이프라이닝되며 제 1 레지스터 파일은 제 1 레지스터 파일과 제 3 레지스터 파일 사이에서 하드웨어 자원이 공유될 수 있도록 제 2 레지스터 파일에 대해 비-인접(non-adjacent) 위치에 배치된다.
[0007] 또 다른 특정 실시예에서, 프로세서는 제 1 명령 스트림들을 실행하는 제 1 실행 파이프라인, 제 2 명령 스트림을 실행하는 제 2 실행 파이프라인, 제 1 명령 스트림과 연관된 제 1 레지스터 파일 및 제 2 명령 스트림과 연관된 제 2 레지스터 파일을 포함한다. 제 1 및 제 2 명령 스트림들은 제 1 및 제 2 레지스터 파일들이 적어도 하나의 하드웨어 자원을 공유하도록 제 1 및 제 2 레지스터 파일들의 비-순차적 액세스로 제 1 및 제 2 실행 파이프라인들 내에 구성된다.
[0008] 또 다른 특정 실시예에서, 다수의 레지스터 파일들을 액세싱하는 방법이 개시된다. 상기 방법은 제 1 레지스터 파일로부터 데이터를 판독함과 동시에 제 2 레지스터 파일로부터 데이터를 판독하는 단계를 포함한다. 제 1 레지스터 파일은 제 1 명령 스트림과 연관되며 제 2 레지스터 파일은 제 2 명령 스트림과 연관된다. 제 1 명령 스트림은 프로세서의 실행 파이프라인의 제 2 명령 스트림에 순차적이며, 제 1 레지스터 파일은 제 2 레지스터 파일에 대해 비-인접 위치에 있게 된다.
[0009] 또 다른 특정 실시예에서, 액세스를 위해 레지스터 파일들을 선택하는 방법이 개시된다. 상기 방법은 액세스를 위해 제 1 세트의 레지스터 파일들 중 적어도 하나를 선택적으로 인에이블링시킴과 동시에 액세스를 위해 제 2 세트의 레지스터 파일들 중 적어도 하나를 인에이블링시키는 단계를 포함한다. 또한, 상기 방법은 제 1 세트의 레지스터 파일들 중 적어도 하나로부터 제 1 명령 스트림과 연관된 제 1 명령 유니트로 데이터를 제공하는 단계, 제 2 세트의 레지스터 파일들 중 적어도 하나로부터 제 2 명령 스트림과 연관된 제 2 명령 유니트로 데이트를 제공하는 단계, 및 적어도 하나의 파이프라이닝된 실행 유니트를 사용하여 제 1 및 제 2 명령 스트림들을 실행하는 단계를 포함한다. 제 1 세트의 레지스터 파일들은 제 1 세트의 하드웨어 리소스들을 공유하며 제 2 세트의 레지스터 파일들은 제 2 세트의 하드웨어 리소스들을 공유한다.
[0010] 레지스터 파일 시스템 및 파이프라이닝 프로세싱을 위한 방법의 실시예들에 의해 제공되는 특정한 장점으로 제조 비용 감소, 동작 동안 전력 밀도 감소, 또는 이 둘 모두가 제공된다.
[0011] 본 발명의 다른 양상들, 장점들 및 특징들은 하기 도면, 실시예 및 청구항들을 포함하는 본 발명을 검토한 후 보다 명확해질 것이다.
[0012] 도 1은 파이프라이닝 프로세싱을 위한 레지스터 파일 시스템을 포함하는 프로세서의 실시예에 대한 블록도;
[0013] 도 2는 파이프라이닝 프로세싱을 위한 레지스터 파일 시스템의 물리적 레이아웃의 실시예예 일부에 대한 블록도;
[0014] 도 3은 파이프라이닝 프로세싱을 위한 레지스터 파일 시스템을 사용하여 실행될 수 있는 파이프라이닝 프로세싱 동작들을 나타내는 일반적 다이아그램;
[0015] 도 4는 파이프라이닝 프로세싱을 위한 레지스터 파일을 사용하는 방법의 실시예에 대한 흐름도; 및
[0016] 도 5는 파이프라이닝 프로세싱을 위한 레지스터 파일 시스템을 포함하는 휴대용 통신 디바이스의 블록도.
[0017] 도 1을 참조로, 프로세서(100)가 개시된다. 특정한 예시적 실시예에서, 프로세서(100)는 멀티-쓰레드 디지털 신호 프로세서일 수 있다. 프로세서(100)는 명령 큐(134)를 포함하는 메모리(102), 메모리 버스(107), 시퀀서 유니트(104), 다수의 실행 유니트들(108-114), 제 1 버스(118), 하드웨어 자원들(116)을 공유하는 구조를 포함하는 레지스터 파일, 및 제 2 버스(120)를 포함한다. 시퀀서(104)는 제어 레지스터(103)에 결합된다. 메모리(102)는 제 2 버스(120)에 결합되며 시퀀서(104)는 제 2 버스(120)에도 결합된다.
[0018] 특정 실시예에서, 메모리 버스(107)는 64 비트 버스일 수 있으며 시퀀서(104)는 메모리(102)로부터의 명령들을 리트리브(retrieve)하도록 구성될 수 있다. 특정한 예시적 실시예에서, 각각의 명령은 32 비트의 길이를 가질 수 있다. 시퀀서(104)는 제 1 경로(슬롯 0)를 통해 제 1 명령 실행 유니트(108)에, 제 2 경로(슬롯 1)를 통해 제 2 명령 실행 유니트(110)에, 제 3 경로(슬롯 2)를 통해 제 3 명령 실행 유니트(112)에, 그리고 제 4 경로(슬롯 3)를 통해 제 4 명령 실행 유니트(114)에 결합된다. 각각의 명령 실행 유니트(108, 110, 112, 114)는 제 1 버스(118)를 통해 한 세트의 구조화된 레지스터 파일들(116)에 결합될 수 있다. 또한, 레지스터 파일들(116)은 제 2 버스(120)를 통해 시퀀서(104) 및 메모리(102)에 결합될 수 있다.
[0019] 특정 실시예에서, 메모리(102)는 제 1 명령 캐시(122), 제 2 명령 캐시(124), 제 3 명령 캐시(126), 제 4 명령 캐시(128), 제 5 명령 캐시(130), 및 제 6 명령 캐시(132)를 포함하는 콘텐츠 어드레스가능 메모리(CAM)일 수 있다. 동작 동안, 시퀀서(104)는 명령 캐시들(122, 124, 126, 128, 130, 132) 각각을 어드레스할 수 있다. 부가적으로, 특정 실시예에서, 각각의 명령 캐시(122, 124, 126, 128, 130, 132)는 다수의 명령들, 즉 각각의 명령에 대해 데이터를 스티어링(steering)하는 명령, 및 각각의 명령에 대해 데이터를 프리-디코딩하는 명령을 포함할 수 있다. 메모리(102)의 명령 큐(134)는 각각의 해당 명령 캐시들(122, 124, 126, 128, 130, 132)에 대한 명령 큐(136, 138, 140, 142, 144, 146)를 포함할 수 있다.
[0020] 레지스터 파일들(116)은 제 1 세트의 레지스터 파일들 및 제 2 세트의 레지스터 파일들을 포함한다. 제 1 세트의 레지스터 파일들은 적어도 하나의 제 1 하드웨어 리소스를 공유하고 제 2 세트의 레지스터 파일들은 적어도 하나의 제 2 하드웨어 리소스를 공유한다. 예시적 공유형 하드웨어 리소스들로는 데이터 판독 포트들, 데이터 기록 포트들, 데이터 판독 버스들, 데이터 기록 버스들, 액세스 로직, 및 와이어링 접속부를 포함한다. 특정 실시예에서, 레지스터 파일들(116)은 6개의 상이한 레지스터 파일들을 포함하며, 6개의 레지스터 파일들 각각은 메모리(102) 내의 명령 캐시들(122, 124, 126, 128, 130, 132) 각각의 하나와 대응된다. 또한, 특정 실시예에서, 레지스터 파일들 각각은 동일한 구성(construction)을 가질 수 있으며 동일한 수의 데이터 피연산자(operand)들 및 어드레스 피연산자들을 포함할 수 있다.
[0021] 도 1은 멀티-쓰레드 프로세서(100)가 시퀀서(104)에 결합되는 제어 레지스터(103)를 추가로 포함할 수 있다는 것을 예시한다. 도시된 것처럼, 제어 레지스터(103)는 독립형(stand-alone) 레지스터일 수 있다.
[0022] 멀티-쓰레드 프로세서(100)의 동작 동안, 명령들은 시퀀서(104)에 의해 메모리(102)로부터 패치되며(fetched), 선택된 명령 실행 유니트들(108, 110, 112, 114)로 전송되며, 명령 실행 유니트들(108, 110, 112, 114)에서 실행된다. 각각의 명령 실행 유니트(108, 110, 112, 114)에서 실행된 명령으로부터의 결과들은 일반적 레지스터 파일들(116) 중 하나에 기록될 수 있다. 특정 실시예에서, 프로세서(100)는 다중 프로그램 쓰레드들을 실행할 수 있다. 또한, 특정 실시예에서, 프로세서(100)는 인터리빙 기반(interleaved basis)으로 6개까지의 상이한 프로그램 쓰레드들을 실행하도록 구성될 수 있다. 프로그램 쓰레드들 각각은 명령 스트림을 포함할 수 있고 각각의 명령 스트림은 하나 이상의 실행 유니트(108, 110, 112, 또는 114)를 사용하여 파이프라이닝되는 방식으로 실행될 수 있다.
[0023] 도 2를 참조로, 파이프라이닝 프로세싱을 위한 레지스터 파일 시스템의 물리적 레이아웃의 실시예의 일부가 도시되며 일반적으로 200으로 표시된다. 시스템(200)은 제 1 세트의 레지스터 파일들(202) 및 제 2 세트의 레지스터 파일들(204)을 포함한다. 제 1 세트의 레지스터 파일들(202)은 레지스터 파일들 R0(206), R2(208), 및 R4(210)를 포함한다. 제 2 세트의 레지스터 파일들(204)은 R3(212), R5(214), 및 R1(216)을 포함한다. 제 1 버스(220)는 제 1 세트의 레지스터 파일들(202)의 레지스터 파일들 각각에 판독 액세스, 기록 액세스 또는 이들의 임의의 조합을 제공하기 위해 R0(206), R2(208), 및 R4(210) 각각에 결합된다. 제 2 버스(230)는 제 2 세트의 레지스터 파일들(204)의 레지스터 파일들 각각에 판독 액세스, 기록 액세스, 또는 이들의 임의의 조합을 제공하기 위해 R3(212), R5(214), 및 R1(216) 각각에 결합된다. 액세스 버스(240)는 제 1 버스(220) 및 제 2 버스(230)에 결합된다. 액세스 버스(240)는 하나 이상의 실행 유니트들(260)에 추가 결합된다. 제 1 인에이블 회로(250)는 제 1 세트의 레지스터 파일들(202)의 레지스터 파일 각각에 결합된다. 제 2 인에이블 회로(252)는 제 2 세트의 레지스터 파일들(204)의 레지스터 파일 각각에 결합된다.
[0024] 특정 실시예에서, 제 1 세트의 레지스터 파일들(202) 및 제 2 세트의 레지스터 파일들(204)의 레지스터 파일 각각은 독립적 명령 실행 스트림과 연관된다. 예를 들어, Ro(206)는 제 1 실행 스트림과 연관될 수 있으며, R1(216)은 제 2 명령 실행 스트림과 연관될 수 있으며, R2(208)은 제 3 명령 실행 스트림과 연관될 수 있으며, R3(212)는 제 4 명령 실행 스트림과 연관될 수 있으며, R4(210)는 제 5 명령 실행 스트림과 연관될 수 있으며, R5(214)는 제 6 명령 실행 스트림과 연관될 수 있다. 예시적 실시예에서, 명령 실행 스트림들 각각은 멀티-쓰레드 프로세서의 특정 하드웨어와 대응될 수 있다. 또 다른 실시예에서, 명령 실행 스트림들 각각은 파이프라이닝 및 인터리빙될 수 있다. 명령 스트림은 VLIW(Very Long Instruction Word)-타입 명령들, 수퍼스칼라(superscalar)-타입 명령들, 파이프라이닝될 수 있는 다른 타입들의 명령들 또는 이들의 조합을 포함할 수 있다.
[0025] 특정 실시예에서, 순차적 파이프라이닝 명령 실행 스트림들은 비-인접 레지스터 파일들(206-216)과 연관될 수 있다. 예를 들어, 제 1 실행 스트림과 연관된 R0(206) 및 제 2 실행 스트림과 연관된 R1(216)은 순차적 파이프라인 액세스 위치들을 가지나 비-인접 물리적 위치들에 배치된다. 또한, 물리적으로 인접한 레지스터 파일들(206-216)은 비-순차적 파이프라인 액세스 위치들을 갖는다. 예를 들어, Ro(206)는 물리적으로 R2(208)에 인접하나 제 1실행 스트림과 연관되는 반면, R2는 제 3 실행 스트림과 연관되어 제 1 실행 스트림에 대해 비-순차적 파이프라인 액세스 위치를 갖는다.
[0026] 예시적 실시예에서, 이를 테면 R0(206)의 제 1 레지스터 파일과 연관된 제 1 실행 스트림, 및 이를 테면 R1(216)의 제 2 레지스터 파일과 연관된 제 2 실행 스트림은 제 1 및 제 2 레지스터 파일들이 물리적으로 비-인접할 때 순차적 파이프라인 액세스를 가질 수 있다. 제 3 실행 스트림과 연관되는 이를 테면 R2(208)의 제 3 레지스터 파일은 제 3 실행 스트림이 제 1 실행 스트림에 대해 비-순차적으로 파이프라이닝될 때 물리적으로 제 1 레지스터 파일에 인접할 수 있다.
[0027] 특정 실시예에서, 다중 레지스터 파일들에 대한 데이터 액세스가 동시적으로 이루어질 수 있다. 예를 들어, Ro(206)를 사용하여 제 1 명령 실행 스트림에서 실행되는 데이터 판독 명령은 R1(216)을 사용하는 제 2 명령 스트림에서 실행되는 데이터 판독 동작과 동시에 데이터 판독 동작을 수행할 수 있다.
[0028] 특정 실시예에서, 명령 실행 스트림들은 하나 이상의 사전-정의된(pre-defined) 시퀀스들의 동작들을 포함할 수 있다. 예를 들어, 명령들의 스트림은 연관된 레지스터 파일로부터 2개의 순차적 데이터 판독 동작들을 포함할 수 있고, 이어서 하나 이상의 데이터 실행 동작들을 포함할 수 있다. 따라서, 데이터는 순차적 명령 실행 스트림들과 연관된 2개의 레지스터 파일들로부터 동시에 판독될 수 있다. 상기 세트들의 레지스터 파일들(202, 204)은 순차적 명령 실행 스트림들과 연관된 레지스터 파일들이 상이한 세트들의 레지스터 파일들(202, 204)에 배치되도록 배열된다. 특히, 상기 세트들의 레지스터 파일들(202, 204)은 짝수 명령 실행 스트림들 및 홀수 명령 실행 스트림들로 그룹화된다.
[0029] 제 1 세트의 레지스터 파일들(202)의 레지스터 파일들 R0(206), R2(208), 및 R4(210)은 서로에 대해 비-순차적으로 실행되는 각각의 명령 실행 스트림들과 연관된다. 유사하게, 제 2 세트의 레지스터 파일들(204)의 레지스터 파일들 R3(212), R5(214), 및 R1(216)은 서로에 대해 비-순차적으로 실행되는 각각의 명령 실행 스트림들과 연관된다. 따라서, 명령 실행 스트림들에 대한 동시적 데이터 액세스 동작들은 제 1 세트의 레지스터 파일들(202) 사이에 공유형 하드웨어 리소스들, 또는 제 2 세트의 레지스터 파일들(204) 사이에서 공유형 하드웨어 리소스들에 대한 충돌(conflict)을 생성하지 않는다.
[0030] 특정 실시예에서, 제 1 세트의 레지스터 파일들(202)은 제 1 세트의 하드웨어 리소스들을 공유하도록 배열되며, 제 2 세트의 레지스터 파일들(204)은 제 2 세트의 하드웨어 리소스들을 공유하도록 배열된다. 예를 들어, 제 1 세트의 레지스터 파일들(202)은 제 1 인에이블 회로(250)를 공유한다. 또한, 제 1 세트의 레지스터 파일들(202)은 데이터 판독 로직 또는 데이터 기록 로직과 같은 하나 이상의 로직 엘리먼트들, 및 제 1 버스(220)와 연관된 버스 와이어링을 포함하는 제 1 공통 데이터 액세스 리소스를 공유한다. 제 1 세트의 레지스터 파일들(202)은 다른 데이터 와이어들, 제어 와이어들, 다른 하드웨어 리소스들, 또는 이들의 임의의 조합을 공유할 수 있다. 유사하게, 제 2 세트의 레지스터 파일들(204)은 제 2 인에이블 회로(252)를 공유한다. 또한, 제 2 세트의 레지스터 파일들(204)은 데이터 판독 로직 또는 데이터 기록 로직과 같은 하나 이상의 로직 엘리먼트들, 및 제 2 버스(230)에 연관된 버스 와이어링을 포함하는 제 2 공통 데이터 액세스 리소스를 공유한다. 또한, 제 2 세트의 레지스터 파일들(204)은 다른 데이터 와이어들, 제어 와이어들, 다른 하드웨어 리소스들, 또는 이들의 임의의 조합을 공유할 수 있다.
[0031] 특정 실시예에서, 하드웨어 리소스들은 제 1 세트의 레지스터 파일들(202) 내에서 공유될 수 있으나, 이러한 하드웨어 리소스들은 제 2 세트의 레지스터 파일들(204)의 레지스터 파일들에 의해 공유되지 않을 수 있다. 유사하게, 하드웨어 리소스들은 제 2 세트의 레지스터 파일들(204) 내에서 공유될 수 있으나, 제 1 세트의 레지스터 파일들(202)의 레지스터 파일들에 의해 공유되지 않을 수 있다. 예를 들어, 제 1 버스(220)는 Ro(206)와 같은 제 1 레지스터 파일 및 R2(208)와 같은 제 3 레지스터 파일에 의해 공유되는 제 1 데이터 판독 버스를 포함할 수 있으나, 제 1 버스(220)는 R1(216)와 같은 제 2 레지스터 파일, 또는 R1(216)와 같은 제 2 레지스터 파일, 또는 R3(212)와 같은 제 4 레지스터 파일에 의해 공유되지 않는다. 유사하게, 제 2 버스(230)는 제 2 레지스터 파일 R1(216) 및 제 4 레지스터 파일 R3(212)에 의해 공유되는 제 2 데이터 판독 버스를 포함할 수 있으나, 제 2 버스(230)는 제 1 레지스터 파일 Ro(206) 및 제 3 레지스터 파일 R2(208)에 공유되지 않는다. 따라서, 순차적 실행 스트림들이 제 1 및 제 2 레지스터 파일들, 제 2 및 제 3 레지스터 파일들, 또는 제 3 및 제 4 레지스터 파일들에 대한 판독 액세스와 같은 동시적 데이터 판독 동작들을 수행할 때, 제 1 데이터 판독 버스 및 제 2 데이터 판독 버스 모두가 이용될 수 있고 충돌은 발생되지 않는다.
[0032] 제 1 세트의 레지스터 파일들(202) 및 제 2 세트의 레지스터 파일들(204)는 다중 명령 실행 스트림들의 동작들을 실행하는 동안, 전력 밀도를 감소시키기 위해 개별 영역들에 물리적으로 배열된다. 예를 들어, 제 1 영역에 배치된 제 1 세트의 레지스터 파일들(202) 및 제 2 영역에 배치되는 제 2 세트의 레지스터 파일들(204)은 순차적 명령 실행 스트림들과 연관된 레지스터 파일들에서 동시적으로 발생되는 데이터 판독 동안 전체 전력 소모를 감소시키도록 배열된다. 제 1 영역은 제 1 전력 소모 구역에 배치될 수 있고 제 2 영역은 제 2 전력 소모 구역에 배치될 수 있어, 제 1 및 제 2 영역들 모두를 포함하는 구역은 각각의 레지스터 파일이 적어도 하나의 다른 레지스터 파일과 인접한 유사한(comparable) 구역 보다 낮은 전력 밀도를 가질 수 있다. 예시를 위해, R0(206) 및 R1(216)에서 수행되는 동시적 데이터 판독들은 물리적으로 분리된, 비-인접 위치들에서 이루어져, 물리적으로 인접한 레지스터 파일들에서 수행되는 데이터 판독들과 비교할 때 전체 전력 밀도를 감소시키고 칩 성능을 개선시킨다. 또 다른 예로써, R3(212) 및 R4(210)에서의 동시적 데이터 판독들은 제 1 영역 및 제 2 영역의 물리적으로 분리된, 비-인접 위치들에서 이루어져, 전체 전력 밀도가 감소되고 칩 성능이 개선된다.
[0033] 특정 실시예에서, 시스템(200)의 구성은 각각의 세트의 레지스터 파일들(202, 204) 중에서 하드웨어 리소스들을 공유할 수 있게 레지스터 파일들을 구성하고, 공유형 리소스들에 대한 충돌들을 감소 또는 소거함으로써 제조 비용을 낮출 수 있다. 또한, 레지스터 파일들 각각에 대한 순차적 액세스 순서와 관련한 개별 레지스터 파일들의 물리적 위치로 인해 전력 밀도 감소 및 개선된 칩 성능을 가능케하는 성능 장점들이 얻어진다.
[0034] 도 3을 참조로, 레지스터 파일 시스템으로 수행될 수 있는 파이프라이닝 프로세싱 동작들의 예시적 실시예가 도시되며 일반적으로 300으로 표시된다. 동작들(300)은 순차적 시간 기간들(T1, T2, T3, T4, T5, T6)을 나타내는 컬럼들, 및 파이프라이닝된 명령 스트림들(1-6)을 나타내는 로우들 갖는 도표 형식으로 도시된다. 예시적 예처럼 명령 스트림 1을 사용하여, 제 1 판독 동작
Figure pct00001
이 T1에서 수행되고, 이어서 제 2 판독 동작
Figure pct00002
가 T2에서 수행된다. 제 1 실행 동작
Figure pct00003
이 T3에서 수행되고, 이어서 제 2 실행 동작
Figure pct00004
이 T4에서 수행되고 제 3 실행 동작
Figure pct00005
이 T5에서 수행된다. 데이터 기록 동작 W1은 T6에서 수행된다. 마찬가지로, 명령 스트림 2는 T2에서 제 1 판독 동작
Figure pct00006
을, T3에서 제 2 판독 동작
Figure pct00007
을, T4에서 실행 동작
Figure pct00008
을, T5에서 실행 동작
Figure pct00009
을, 그리고 T6에서 실행 동작
Figure pct00010
을 수행한다.
[0035] 판독 동작들은 스트림 1에 대해 T1 및 T2와 같은 파이프라이닝 프로세싱 동안 순차적 시간 기간들에서 수행되며, 판독 동작들은 순차적 파이프라인 액세스를 갖는 스트림들에 대해 동시적으로 수행된다. 예를 들어, T2의 시간 기간 동안, 스트림 1은 판독 동작
Figure pct00011
를 수행하는 스트림 2와 동시적으로 판독 동작
Figure pct00012
을 수행한다. 또 다른 예로서, 제 3 시간 기간 T3 동안, 스트림 2는 판독 동작
Figure pct00013
을 수행하는 스트림 3과 동시적으로 판독 동작
Figure pct00014
를 수행한다. 유사하게, 각각의 명령 실행 스트림은 3개의 순차적 실행 단계들을 포함하기 때문에, 다중 스트림들은 동시적으로 실행 단계들을 수행한다. 예를 들어, 시간 기간 T6에서, 스트림 2은 실행 동작
Figure pct00015
을 프로세싱하고, 스트림 3은 실행 동작
Figure pct00016
을 실행하고, 스트림 4는 실행 동작
Figure pct00017
을 실행한다.
[0036] 일 실시예에서, 명령 스트림들 1-6은 파이프라이닝 프로세서의 다중 실행 파이프라인들을 통해 실행될 수 있다. 예시적 실시예에서, 명령 스트림들 1-6은 인터리빙된 멀티쓰레드 프로세스에 의해 실행될 수 있다. 특정 실시예에서, 각각의 명령 스트림들(1-6)은 VLIW(Very Long Instruction Word) 타입 명령들일 수 있다. 또 다른 실시예에서, 각각의 명령 스트림들(1-6)은 수퍼스칼라 타입 명령들일 수 있다.
[0037] 특정 실시예에서, 도 2의 시스템(200)과 같이, 파이프라이닝 프로세싱을 위한 레지스터 파일 시스템은 스트림들(1-6)과 연관된 레지스터 파일들 사이에서 공유형 하드웨어 리소스들의 사용을 가능케할 수 있다. 예를 들어, 동시적 데이터 판독 동작들은 순차적 스트림들과 연관된 레지스터 파일들에서만 수행되기 때문에, 레지스터 파일들은 각각 개별(separate) 판독 데이터 버스를 공유하는 그룹들로 배열될 수 있어, 충돌들을 발생시키지 않고도 동시적 판독들이 수행될 수 있다. 또 다른 예로써, 동시적 데이터 기록 동작들은 수행되지 않기 때문에, 기록 충돌들을 발생시키지 않고, 제 1 명령 스트림에 대한 제 1 레지스터 파일 및 제 1 명령 스트림에 순차적인 제 2 명령 스트림에 대한 제 2 레지스터 파일에서 데이터를 기록하기 위해 단일 데이터 기록 버스가 이용될 수 있다.
[0038] 도 4를 참조로, 파이프라이닝 프로세싱을 위해 레지스터 파일들을 사용하는 방법의 예시적 실시예가 도시되며 일반적으로 400으로 표시된다. 402에서, 제 1 세트의 레지스터 파일들 중 적어도 하나는 액세스를 위해 선택적으로 인에이블되는 반면, 제 2 세트의 레지스터 파일들 중 적어도 하나는 액세스를 위해 동시적으로 인에이블된다. 예를 들어, 레지스터 파일 R2(208)은 레지스터 파일 R1(216)과 동시적으로 액세스될 수 있다. 특정 실시예에서, 제 1 세트의 레지스터 파일은 제 1 세트의 하드웨어 리소스들을 공유하며, 제 2 세트의 레지스터 파일들은 제 2 세트의 하드웨어 리소스들을 공유한다. 예를 들어, 제 1 세트의 하드웨어 리소스들은 데이터 판독 버스를 포함할 수 있다. 예시적 실시예에서, 제 1 세트의 레지스터 파일들은 제 1 세트의 레지스터 파일들(202)일 수 있고 제 2 세트의 레지스터 파일들은 도 2의 제 2 레지스터 세트의 레지스터 파일들(204)일 수 있고, 혹은 도 1에 도시된 실행 유니트들(108-114)일 수 있다.
[0039] 404에서, 제 1 세트의 레지스터 파일들 중 적어도 하나로부터 제 1 명령 스트림과 연관된 제 1 명령 유니트로 데이터가 제공될 수 있다. 406에서, 제 2 세트의 레지스터 파일들 중 적어도 하나로부터 제 2 명령 스트림과 연관된 제 2 명령 유니트로 데이터가 제공될 수 있다. 408에서, 제 1 및 제 2 명령 스트림들은 적어도 하나의 파이프라이닝된 실행 유니트를 이용하여 실행될 수 있다. 특정 실시예에서, 제 1 명령 유니트, 제 2 명령 유니트, 및 제 3 명령 유니트는 파이프라니잉 실행 스트림들을 프로세싱하도록 구성된 실행 유니트들일 수 있다. 예시적 실시예에서, 실행 유니트들은 도 2에 도시된 실행 유니트들(260)이다.
[0040] 예시적 실시예에서, 미리결정된 순서로 파이프라이닝된 실행 유니트에서 명령들이 실행될 수 있다. 특정 실시예에서, 각각의 명령들은 VLIW(Very Long Instruction Word) 타입 명령들로서 파이프라이닝된 실행 유니트에서 실행될 수 있다. 또 다른 실시예에서, 각각의 명령들은 수퍼스칼라 타입 명령들로서 파이프라이닝된 실행 유니트에서 실행될 수 있다.
[0041] 도 5는 파이프라이닝 프로세싱을 위해 레지스터 파일 시스템을 사용하는 휴대용 통신 디바이스의 블록도이다. 휴대용 통신 디바이스(500)는 디지털 신호 프로세서(510)와 같은 파이프라이닝 프로세서를 포함하는 온-칩(on-chip) 시스템(522)을 포함한다. 디지털 신호 프로세서(510)는 공유형 하드웨어 리소스들(570)을 갖는 레지스터 파일들을 포함한다. 예를 들어, 공유형 하드웨어 리소스들(570)을 갖는 레지스터 파일들 및 프로세서(510)는 도 1 또는 도 2의 시스템들의 일부들을 포함할 수 있고, 도 3 또는 도 4에 도시된 동작들, 또는 이들의 임의의 조합을 이용할 수 있다. 예시적 특정 실시예에서, 공유형 하드웨어 리소스들(570)을 갖는 레지스터 파일들은 디지털 신호 프로세서(510)와 같은 파이프라이닝 프로세서들의 지원에 있어, 전력 밀도 감소, 제조 비용 감소, 또는 이 둘 모두를 가능케할 수 있다.
[0042] 특정 실시예에서, 인접 레지스터 파일들이 순차적 명령 실행 스트림들에 의해 데이터 동작들에 대해 액세스 되지 않아, 인접 레지스터 파일 위치들에서의 동시적 데이터 액세스 동작들이 발생하지 않도록, 공유형 하드웨어 리소스들(570)을 갖게 레지스터 파일들을 구성함으로써 프로세싱 동안 전력 밀도가 감소될 수 있다. 마찬가지로, 제조 비용들은 동일한 타입의 동시적 데이터 액세스 동작들과 같이, 적어도 다수의 세트들의 레지스터 파일들로 공유형 하드웨어 리소스들(570)을 갖는 레지스터 파일들을 분할함으로써 감소될 수 있다. 예를 들어, 도 3에 도시된 것처럼, 2개의 파이프라이닝 명령 실행 스트림들이 연관된 레지스터 파일들에서 데이터 판독 동작들이 동시적으로 수행하는 경우, 적어도 2개 세트들의 레지스터 파일들이 한정될 수 있고, 각각의 세트의 레지스터 파일들은 도 2에 도시된 것처럼, 충돌을 발생시키지 않고 상기 세트의 레지스터 파일들 사이에서 데이터 액세스 하드웨어 리소스들을 공유한다. 또 다른 예로써, 3개의 파이프라이닝 명령 실행 스트림들이 연관된 레지스터 파일들에서 동시적으로 데이터 판독 동작들을 수행하는 경우, 적어도 3개 세트들의 레지스터 파일들이 한정될 수 있고, 각각의 세트의 레지스터 파일들은 각각의 세트에서 충돌을 발생시키지 않고, 상기 세트의 레지스터 파일들 사이에서 데이터 액세스 하드웨어 리소스들을 공유한다.
[0043] 또한, 도 5는 디지털 신호 프로세서(510) 및 디스플레이(528)에 결합되는 디스플레이 제어기(526)를 도시한다. 또한, 디지털 신호 프로세서(510)에 입력 디바이스(530)가 결합된다. 부가적으로, 디지털 신호 프로세서(510)에 메모리(532)가 결합된다. 또한, 디지털 신호 프로세서(510)에 코더/디코더(CODEC)(534)가 결합될 수 있다. CODEC(534)에 스피커(536) 및 마이크로폰(538)이 결합될 수 있다.
[0044] 또한, 도 5는 무선 제어기(540)가 디지털 신호 프로세서(510) 및 무선 안테나(542)에 결합될 수 있다는 것을 나타낸다. 특정 실시예에서, 온-칩 시스템(522)에 전력공급원(544)이 결합된다. 또한, 도 5에 도시된 것처럼, 특정 실시예에서, 디스플레이(528), 입력 디바이스(530), 스피커(536), 마이크로폰(538), 무선 안테나(542) 및 전력공급원(544)은 온-칩 시스템(522) 외부에 있다. 그러나, 이들 각각은 온-칩 시스템(522)의 콤포넌트와 결합된다.
[0045] 예시적인 특정 실시예에서, 공유형 하드웨어 리소스들(570)을 갖는 레지스터 파일들은 휴대용 통신 디바이스(500)의 전체 성능을 강화시키는데 이용될 수 있다. 특히, 공유형 하드웨어 리소스들(570)을 갖는 레지스터 파일들은 전력 밀도를 감소시켜, 보다 빠른 프로세싱 속도를 가능케하며, 디바이스(500)의 성능을 악화시키지 않고, 공유되는 공통 하드웨어 제조 비용을 감소시킬 수 있다.
[0046] 당업자들은 본 발명에 개시된 실시예들과 관련하여 개시되는 다양한 예시적 논리 블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들은 일렉트로닉 하드웨어, 컴퓨터 소프트웨어, 또는 이둘의 조합으로 구현될 수 있다는 것을 인식할 것이다. 하드웨어 및 소프트웨어의 상호교환능력을 명확히 예시하기 위해, 일반적으로 다양한 예시적 콤포넌트들, 블록들, 구성들, 모듈들, 회로들 및 단계들이 이들의 기능과 관련하여 앞서 개시되었다. 이러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지 여부는 전체 시스템에 부과되는 설계 제약들 및 특정 애플리케이션과 관련된다. 당업자들은 각각의 특정 애플리케이션에 대해 다양한 방식으로 개시된 기능을 구현할 수 있으나, 이러한 구현 결정은 본 발명의 범주를 이탈하게 하는 것으로 해석되서는 안된다.
[0047] 본 발명에 개시된 실시예들과 관련하여 개시되는 방법 또는 알고리즘의 단계들은 직접적으로 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이 둘의 조합에서 구현될 수 있다. 소프트웨어 모듈은 may reside in RAM 메모리, 플래시 메모리, ROM 메모리, PROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 업계에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적 저장 매체가 프로세서에 결합되어, 프로세서가 상기 저장 매체로부터 정보를 판독하고 상기 저장 매체에 정보를 기록할 수 있다. 대안적으로, 저장 매체는 프로세서 내부에 있을 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC는 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말에서 이산 콤포넌트들로서 상주할 수 있다.
[0048] 개시된 실시예들에 대한 이전 설명은 임의의 당업자들이 개시된 실시예들을 구성 또는 사용할 수 있게 하기 위해 제공된다. 이러한 실시예들에 대한 다양한 변조들을 당업자들은 쉽게 인식할 것이며, 본 발명에 정의되는 일반적 원리들은 본 발명의 범주 또는 사상을 이탈하지 않고 다른 실시예들에도 적용될 수 있다. 따라서, 본 발명은 본 발명에 도시된 실시예들로 제한되지 않으며, 하기 청구항들에 의해 정의되는 원리들 및 신규한 특징들에 따르는 가능한 넓은 범주를 따르도록 의도된다.

Claims (30)

  1. 멀티-쓰레드(multi-threaded) 프로세서로서,
    제 1 쓰레드와 연관된 제 1 레지스터 파일;
    제 2 쓰레드와 연관된 제 2 레지스터 파일; 및
    상기 제 1 레지스터 파일 및 상기 제 2 레지스터 파일에 의해 공유되는 하드웨어 리소스
    를 포함하며, 상기 제 1 쓰레드는 상기 제 2 쓰레드와 비-순차적(non-sequential)인 파이프라인 액세스 위치를 갖는, 멀티-쓰레드 프로세서.
  2. 제 1 항에 있어서,
    상기 제 1 레지스터 파일은 상기 제 2 레지스터 파일들과 물리적으로 인접한, 멀티-쓰레드 프로세서.
  3. 제 1 항에 있어서,
    상기 제 1 레지스터 파일은 상기 제 2 레지스터 파일과 물리적으로 비-인접(non-adjacent)하고 상기 제 1 레지스터 파일 및 상기 제 2 레지스터 파일은 상기 파이프라인에 순차적 액세스를 갖는, 멀티-쓰레드 프로세서.
  4. 제 1 항에 있어서,
    상기 하드웨어 리소스는 로직 엘리먼트 및 버스 와이어링을 포함하는, 멀티-쓰레드 프로세서.
  5. 제 4 항에 있어서,
    상기 로직 엘리먼트는 로직 판독 엘리먼트를 포함하는, 멀티-쓰레드 프로세서.
  6. 제 4 항에 있어서,
    상기 로직 엘리먼트는 로직 기록 엘리먼트를 포함하는, 멀티-쓰레드 프로세서.
  7. 제 1 항에 있어서,
    제 1 세트의 레지스터 파일들은 제 1 영역에 배치되며 제 2 세트의 레지스터 파일들은 상기 제 1 영역과 분리되는 제 2 영역에 배치되며, 상기 제 1 영역의 상기 제 1 레지스터 파일은 제 1 데이터 액세스 리소스를 이용할 수 있고 동시에 상기 제 2 영역의 상기 제 2 레지스터 파일은 제 2 데이터 액세스 리소스를 이용하는, 멀티-쓰레드 프로세서.
  8. 제 7 항에 있어서,
    상기 제 1 데이터 액세스 리소스는 제 1 데이터 판독 버스를 포함하며 상기 제 2 데이터 액세스 리소스는 제 2 데이터 판독 버스를 포함하는, 멀티-쓰레드 프로세서.
  9. 제 7 항에 있어서,
    상기 제 1 데이터 액세스 리소스는 각각의 상기 제 1 영역의 상기 레지스터 파일들 간의 공유형(shared) 리소스인, 멀티-쓰레드 프로세서.
  10. 제 7 항에 있어서,
    상기 제 2 데이터 액세스 리소스는 상기 제 2 세트의 레지스터 파일들의 각각의 레지스터 파일 간의 공유형 리소스인, 멀티-쓰레드 프로세서.
  11. 제 7 항에 있어서,
    상기 제 1 세트의 레지스터 파일들은 짝수 쓰레드들과 대응되며 상기 제 2 세트의 레지스터 파일들은 홀수 쓰레드들과 대응되는, 멀티-쓰레드 프로세서.
  12. 제 7 항에 있어서,
    상기 제 1 데이터 액세스 리소스는 제 1 데이터 기록 버스를 포함하는 제 1 데이터 기록 리소스를 포함하며, 상기 제 2 데이터 액세스 리소스는 제 2 데이터 기록 버스를 포함하는 제 2 데이터 기록 리소스를 포함하는, 멀티-쓰레드 프로세서.
  13. 제 7 항에 있어서,
    상기 제 1 영역은 제 1 전력 소모(disspation) 구역에 배치되며 상기 제 2 영역은 제 2 전력 소모 구역에 배치되어, 상기 제 1 영역 및 상기 제 2 영역 모두를 포함하는 구역은 각각의 레지스터 파일이 적어도 하나의 다른 레지스터 파일에 인접해 있는 유사한(comparable) 구역보다 전력 밀도가 낮은, 멀티-쓰레드 프로세서.
  14. 프로세서로서,
    제 1 명령 실행 스트림과 연관된 제 1 레지스터 파일; 및
    제 2 명령 실행 스트림과 연관된 제 2 레지스터 파일
    을 포함하며, 상기 제 1 및 제 2 실행 스트림들은 순차적 방식으로 파이프라이닝되며, 상기 제 1 레지스터 파일은 하드웨어 리소스가 상기 제 1 레지스터 파일과 제 3 레지스터 파일 사이에서 공유되도록, 상기 제 2 레지스터 파일에 대해 비-인접(non-adjacent) 위치에 배치되는, 프로세서.
  15. 제 14 항에 있어서,
    상기 제 3 레지스터 파일은 상기 제 1 명령 실행 스트림과 관련하여 비-순차적으로 파이프라이닝되는 제 3 명령 실행 스트림과 연관되는, 프로세서.
  16. 제 14 항에 있어서,
    상기 제 1 레지스터 파일은 상기 제 3 레지스터 파일과 물리적으로 인접한, 프로세서.
  17. 제 14 항에 있어서,
    상기 하드웨어 리소스는 로직 엘리먼트 및 버스 와이어링을 포함하는, 프로세서.
  18. 제 14 항에 있어서,
    상기 하드웨어 리소스는 상기 제 2 레지스터 파일과 공유되지 않는 제 1 데이터 판독 버스를 포함하는, 프로세서.
  19. 제 18 항에 있어서,
    제 4 레지스터 파일; 및
    상기 제 2 레지스터 파일 및 상기 제 4 레지스터 파일에 의해 공유되나 상기 제 1 레지스터 파일 또는 상기 제 3 레지스터 파일에 의해 공유되지 않는 제 2 데이터 판독 버스
    를 더 포함하는, 프로세서.
  20. 프로세서로서,
    제 1 명령 스트림을 실행하는 제 1 실행 파이프라인;
    제 2 명령 스트림을 실행하는 제 2 실행 파이프라인;
    상기 제 1 명령 스트림과 연관된 제 1 레지스터 파일; 및
    상기 제 2 명령 스트림과 연관된 제 2 레지스터 파일
    을 포함하며, 상기 제 1 명령 스트림 및 제 2 명령 스트림은 상기 제 1 레지스터 파일 및 상기 제 2 레지스터 파일이 적어도 하나의 하드웨어 리소스를 공유할 수 있도록, 상기 제 1 실행 파이프라인 및 상기 제 2 실행 파이프라인 내에서 상기 제 1 레지스터 파일 및 상기 제 2 레지스터 파일의 비-순차적 액세스로 구성되는, 프로세서.
  21. 제 20 항에 있어서,
    상기 적어도 하나의 하드웨어 리소스는 데이터 판독 버스를 포함하는, 프로세서.
  22. 제 20 항에 있어서,
    미리결정된 순서로 상기 제 1 실행 파이프라인에서 명령들이 실행되는, 프로세서.
  23. 제 20 항에 있어서,
    상기 제 1 실행 파이프라인에서 실행되는 상기 명령들 각각은 VLIW(Very Long Instruction Word) 타입 명령들인, 프로세서.
  24. 제 20 항에 있어서,
    상기 제 1 실행 파이프라인에서 실행되는 상기 명령들 각각은 수퍼스칼라(superscalar) 타입 명령들인, 프로세서.
  25. 다수의 레지스터 파일들을 액세스하는 방법으로서,
    제 1 레지스터 파일로부터 데이터를 판독하면서 동시에 제 2 레지스터 파일로부터 데이터를 판독하는 단계
    를 포함하며, 상기 제 1 레지스터 파일은 제 1 명령 스트림과 연관되며 상기 제 2 레지스터 파일은 제 2 명령 스트림과 연관되며, 상기 제 1 명령 스트림은 프로세서의 실행 파이프라인에서 상기 제 2 명령 스트림에 순차적이며, 상기 제 1 레지스터 파일은 상기 제 2 레지스터 파일에 대해 비-인접(non-adjacent) 위치에 있는, 다수의 레지스터 파일들을 액세스하는 방법.
  26. 제 25 항에 있어서,
    상기 제 1 레지스터 파일 및 상기 제 2 레지스터 파일에 데이터를 기록하는 단계를 더 포함하는, 다수의 레지스터 파일들을 액세스하는 방법.
  27. 액세스를 위해 레지스터 파일들을 선택하는 방법으로서,
    액세스를 위해 제 1 세트의 레지스터 파일들 중 적어도 하나를 선택적으로 인에이블링시키면서 동시에 액세스를 위해 제 2 세트의 레지스터 파일들 중 적어도 하나를 인에이블링시키는 단계 ― 상기 제 1 세트의 레지스터 파일들은 제 1 세트의 하드웨어 리소스들을 공유하며 상기 제 2 세트의 레지스터 파일들은 제 2 세트의 하드웨어 리소스들을 공유함 ―;
    상기 제 1 세트의 레지스터 파일들 중 적어도 하나로부터 제 1 명령 스트림과 연관된 제 1 명령 유니트에 데이터를 제공하는 단계;
    상기 제 2 세트의 레지스터 파일들 중 적어도 하나로부터 제 2 명령 스트림과 연관된 제 2 명령 유니트에 데이터를 제공하는 단계; 및
    적어도 하나의 파이프라이닝된 실행 유니트를 이용하여 상기 제 1 명령 스트림 및 상기 제 2 명령 스트림을 실행하는 단계
    를 포함하는, 액세스를 위해 레지스터 파일들을 선택하는 방법.
  28. 제 27 항에 있어서,
    상기 제 1 세트의 하드웨어 리소스들은 데이터 판독 버스를 포함하는, 액세스를 위해 레지스터 파일들을 선택하는 방법.
  29. 제 27 항에 있어서,
    미리결정된 순서로 상기 적어도 하나의 파이프라이닝된 실행 유니트에서 명령들이 실행되는, 액세스를 위해 레지스터 파일들을 선택하는 방법.
  30. 제 27 항에 있어서,
    상기 적어도 하나의 파이프라이닝된 실행 유니트에서 실행되는 상기 명령들 각각은 VLIW(Very Long Instruction Word) 타입 명령들인, 액세스를 위해 레지스터 파일들을 선택하는 방법.
KR1020107007656A 2007-09-12 2008-09-12 레지스터 파일 시스템 및 파이프라이닝 프로세싱을 위한 방법 Expired - Fee Related KR101139066B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/853,866 2007-09-12
US11/853,866 US8725991B2 (en) 2007-09-12 2007-09-12 Register file system and method for pipelined processing
PCT/US2008/076249 WO2009036335A1 (en) 2007-09-12 2008-09-12 Register file system and method for pipelined processing

Publications (2)

Publication Number Publication Date
KR20100061524A true KR20100061524A (ko) 2010-06-07
KR101139066B1 KR101139066B1 (ko) 2012-04-30

Family

ID=39645252

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107007656A Expired - Fee Related KR101139066B1 (ko) 2007-09-12 2008-09-12 레지스터 파일 시스템 및 파이프라이닝 프로세싱을 위한 방법

Country Status (6)

Country Link
US (1) US8725991B2 (ko)
EP (2) EP2037358A1 (ko)
JP (1) JP5420545B2 (ko)
KR (1) KR101139066B1 (ko)
CN (2) CN103226465B (ko)
WO (1) WO2009036335A1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
JP5049802B2 (ja) * 2008-01-22 2012-10-17 株式会社リコー 画像処理装置
US8195909B2 (en) 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
US9207995B2 (en) 2010-11-03 2015-12-08 International Business Machines Corporation Mechanism to speed-up multithreaded execution by register file write port reallocation
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
CN103562866B (zh) 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
TWI520070B (zh) 2011-03-25 2016-02-01 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
CN103649932B (zh) 2011-05-20 2017-09-26 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
WO2012167396A1 (en) * 2011-06-07 2012-12-13 Telefonaktiebolaget L M Ericsson (Publ) An innovative structure for the register group
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
US9626191B2 (en) * 2011-12-22 2017-04-18 Nvidia Corporation Shaped register file reads
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9715392B2 (en) * 2014-08-29 2017-07-25 Qualcomm Incorporated Multiple clustered very long instruction word processing core
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
KR102235803B1 (ko) 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치
CN111221573B (zh) * 2018-11-26 2022-03-25 深圳云天励飞技术股份有限公司 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质
US11144367B2 (en) 2019-02-08 2021-10-12 International Business Machines Corporation Write power optimization for hardware employing pipe-based duplicate register files
KR102292580B1 (ko) 2020-03-19 2021-08-20 연세대학교 산학협력단 고성능 비순차 실행 코어의 물리 레지스터 파일 관리 장치 및 방법
CN113496723B (zh) * 2020-04-08 2025-05-13 意法半导体(格勒诺布尔2)公司 用于验证寄存器的内容的电路
FR3109226B1 (fr) * 2020-04-08 2022-04-22 St Microelectronics Grenoble 2 Circuit de vérification du contenu de registres

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07101385B2 (ja) * 1986-12-05 1995-11-01 株式会社東芝 情報処理装置
DE69030648T2 (de) * 1990-01-02 1997-11-13 Motorola Inc Verfahren zum sequentiellen Vorabruf von 1-Wort-, 2-Wort oder 3-Wort-Befehlen
DE69130233T2 (de) * 1990-03-15 1999-05-20 Sun Microsystems, Inc., Mountain View, Calif. 94043-1100 Verfahren und gerät um ein sperrungscache einzusetzen
US5778243A (en) 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US20030188141A1 (en) 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
JP2002140200A (ja) 2000-10-31 2002-05-17 Toshiba Corp 仮想マルチスレッドプロセッサ及びスレッド実行方法
US6904511B2 (en) * 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US7500126B2 (en) 2002-12-04 2009-03-03 Nxp B.V. Arrangement and method for controlling power modes of hardware resources
US7339592B2 (en) 2004-07-13 2008-03-04 Nvidia Corporation Simulating multiported memories using lower port count memories
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
TWI326428B (en) 2005-03-18 2010-06-21 Marvell World Trade Ltd Real-time control apparatus having a multi-thread processor
US20060230253A1 (en) * 2005-04-11 2006-10-12 Lucian Codrescu Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment
JP5028774B2 (ja) * 2005-09-22 2012-09-19 富士通株式会社 演算処理装置,情報処理装置,及びレジスタファイルの制御方法

Also Published As

Publication number Publication date
US8725991B2 (en) 2014-05-13
CN101809537A (zh) 2010-08-18
CN103226465B (zh) 2016-05-11
CN103226465A (zh) 2013-07-31
JP2010539603A (ja) 2010-12-16
EP3056985A1 (en) 2016-08-17
CN101809537B (zh) 2014-10-22
WO2009036335A1 (en) 2009-03-19
JP5420545B2 (ja) 2014-02-19
US20090070554A1 (en) 2009-03-12
KR101139066B1 (ko) 2012-04-30
EP2037358A1 (en) 2009-03-18

Similar Documents

Publication Publication Date Title
KR101139066B1 (ko) 레지스터 파일 시스템 및 파이프라이닝 프로세싱을 위한 방법
JP4934356B2 (ja) 映像処理エンジンおよびそれを含む映像処理システム
EP2034401B1 (en) System and method of executing instructions in a multi-stage data processing pipeline
US10678541B2 (en) Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
US20100077177A1 (en) Multiple Processor Core Vector Morph Coupling Mechanism
JP5254342B2 (ja) n−ウェイキャッシュを用いるシステムおよび方法
US9715392B2 (en) Multiple clustered very long instruction word processing core
CN112732639B (zh) 一种粗粒度动态可重构处理器及其数据处理方法
WO2006102638A2 (en) Processor and method of indirect register read and write operations
CN102713868B (zh) 存取二级存储器的一部分及一级存储器的系统及方法
CN115269492A (zh) 可重构处理器多端口缓存的流式数据管理方法及装置
CN112486904B (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
US20040117597A1 (en) Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
CN113568663A (zh) 代码预取指令
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法
US20080162894A1 (en) structure for a cascaded delayed execution pipeline
KR20120139773A (ko) 계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법
US20080141252A1 (en) Cascaded Delayed Execution Pipeline
JP7567133B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
WO2013086060A1 (en) Selective access of a store buffer based on cache state
CN116324741A (zh) 用于可配置硬件加速器的方法和装置
JP2012128559A (ja) 演算処理装置
US8214592B2 (en) Dynamic runtime modification of array layout for offset
Park et al. Chip implementation of a coarse-grained reconfigurable architecture
Ravali et al. PERFORMANCE ANALYSIS OF AN EFFICIENT ARMV8 PROCESSOR

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

Fee payment year number: 1

St.27 status event code: A-2-2-U10-U12-oth-PR1002

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

Fee payment year number: 4

St.27 status event code: A-4-4-U10-U11-oth-PR1001

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 5

PR1001 Payment of annual fee

Fee payment year number: 5

St.27 status event code: A-4-4-U10-U11-oth-PR1001

PR1001 Payment of annual fee

Fee payment year number: 6

St.27 status event code: A-4-4-U10-U11-oth-PR1001

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 7

PR1001 Payment of annual fee

Fee payment year number: 7

St.27 status event code: A-4-4-U10-U11-oth-PR1001

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

Not in force date: 20190417

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

St.27 status event code: A-4-4-U10-U13-oth-PC1903

PC1903 Unpaid annual fee

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20190417

St.27 status event code: N-4-6-H10-H13-oth-PC1903

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000