KR20090042294A - 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템 - Google Patents

마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20090042294A
KR20090042294A KR1020097004441A KR20097004441A KR20090042294A KR 20090042294 A KR20090042294 A KR 20090042294A KR 1020097004441 A KR1020097004441 A KR 1020097004441A KR 20097004441 A KR20097004441 A KR 20097004441A KR 20090042294 A KR20090042294 A KR 20090042294A
Authority
KR
South Korea
Prior art keywords
register
register unit
unit
resulting
units
Prior art date
Application number
KR1020097004441A
Other languages
English (en)
Other versions
KR101048234B1 (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 KR20090042294A publication Critical patent/KR20090042294A/ko
Application granted granted Critical
Publication of KR101048234B1 publication Critical patent/KR101048234B1/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/46Multiprogramming arrangements

Landscapes

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

Abstract

예를 들어, 디지털 신호 처리기와 같은, 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템이 제시된다. 제 1 레지스터 유닛 및 제 2 레지스터 유닛이 프로세싱 유닛 내부의 레지스터 파일 구조로부터 검색되며, 상기 제 1 레지스터 유닛 및 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치한다. 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 단일 명령의 실행 동안 추가로 결합되어 결과적인 레지스터 유닛을 형성한다. 최종적으로, 상기 결과적인 레지스터 유닛은 향후의 프로세싱을 위해 상기 레지스터 파일 구조에 저장된다. 대안적으로, 상기 제 1 레지스터 유닛으로부터의 제 1 하프 워드(half word) 유닛과 상기 제 2 레지스터 유닛으로부터의 제 2 하프 워드 유닛이 검색된다. 상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛이 추가로 결과적인 레지스터 유닛의 상위 및 하위 부분들에 입력되어 단일 명령의 실행 동안 상기 결과적인 레지스터 유닛을 형성한다. 최종적으로, 상기 결과적인 레지스터 유닛이 향후의 프로세싱을 위해 상기 레지스터 파일 구조 내부에 저장된다.

Description

마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템{METHOD AND SYSTEM TO COMBINE MULTIPLE REGISTER UNITS WITHIN A MICROPROCESSOR}
본 발명은 일반적으로 마이크로프로세서, 더 특정하게는, 예를 들어, 디지털 신호 처리기와 같은, 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템에 관한 것이다.
전형적으로, 컴퓨터 시스템들은 하나 이상의 마이크로프로세서 장치들을 포함하며, 각 마이크로프로세서 장치는 상기 컴퓨터 시스템의 메모리에 저장되는 값들에 대한 연산들을 수행하고 상기 컴퓨터 시스템의 전체 동작을 관리하도록 구성된다. 또한 이러한 컴퓨터 시스템들은, 예를 들어, 사운드 카드들 및/또는 비디오 카드들과 같은, 다양한 멀티미디어 장치들을 포함할 수 있으며, 각각의 멀티미디어 장치는, 예를 들어, 디지털 신호 처리기(DSP)들과 같은, 하나 이상의 처리기들을 더 포함하고, 이는 각각의 멀티미디어 장치 내부에서 복잡한 수학적 계산들을 수행한다.
일반적으로 디지털 신호 처리기(DSP)는, 예를 들어, 하나 이상의 산술 연산 유닛(ALU)들, 하나 이상의 적화연산(multiply-and-accumulate) 유닛들(MAC), 및 DSP 내부의 명령들의 세트에 의해 규정되는 동작들을 수행하도록 구성되는 다른 기능 유닛들과 같이, 그러한 수학적 계산들을 수행하도록 특별히 구성되는 하드웨어 실행 유닛들을 포함한다. 그러한 연산들은, 예를 들어, 산술 연산들, 논리 연산들, 및 다른 데이터 프로세싱 연산들을 포함할 수 있으며, 각각 관련된 명령들의 세트에 의해 정의된다.
일반적으로, DSP 내부의 실행 유닛들은 상기 메모리 및 상기 실행 유닛들에 접속되는 레지스터 파일로부터 데이터 및 연산자(operand)들을 판독하고, 상기 명령 연산들을 수행하며, 그 결과들을 상기 레지스터 파일에 저장한다. 레지스터 파일은 다수의 레지스터 유닛들을 포함하며, 각 레지스터 유닛은 단일 레지스터로서 또는 두 개의 인접 레지스터 유닛들의 정렬된 쌍들로서 액세스될 수 있다. 그러나, 예를 들어, 데이터를 추가(add) 또는 차감(subtract)하는 연산들과 같은, 어떠한 특정 연산들은, 상기 레지스터 파일 내부의 별도의 레지스터 유닛들로부터의 데이터가 상기 명령들의 실행을 위해 적절히 정렬(align)될 것을 필요로 한다. 따라서, 그러한 레지스터 유닛들 내부에 저장된 데이터의 적절한 정렬을 가능하게 하기 위해 단일 명령의 실행 동안 DSP 내부의 다수의 비-인접 레지스터 유닛들을 결합하기 위한 방법 및 시스템이 요구된다.
예를 들어, 디지털 신호 처리기와 같은, 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템이 기재된다. 일 실시예로, 제 1 레지스터 유닛 및 제 2 레지스터 유닛은 프로세싱 유닛 내부의 레지스터 파일 구조로부터 검색(retrieve)되며, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내부에서 인접하지-않게 위치한다. 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 단일 명령의 실행 동안 추가로 결합되어 결과적인 레지스터 유닛을 형성한다. 최종적으로, 상기 결과적인 레지스터 유닛은 향후의 프로세싱을 위해 상기 레지스터 파일 구조 내부에 저장된다.
대체 실시예로, 상기 제 1 및 제 2 레지스터 유닛들의 검색 이후에, 상기 제 1 레지스터 유닛으로부터의 제 1 하프 워드(half word) 유닛과 상기 제 2 레지스터 유닛으로부터의 제 2 하프 워드 유닛이 검색된다. 상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛이 추가로 결과적인 레지스터 유닛의 대응하는 상위(high) 및 하위(low) 부분들에 입력되어 단일 명령의 실행 동안 상기 결과적인 레지스터 유닛을 형성한다. 최종적으로, 상기 결과적인 레지스터 유닛은 향후의 프로세싱을 위해 상기 레지스터 파일 구조내부에 저장된다.
도 1은 명령들의 세트가 실행될 수 있는 디지털 신호 처리 시스템의 블록도이다;
도 2는 상기 디지털 신호 처리 시스템 내부의 일반적인 레지스터 구조의 일 실시예를 나타내는 블록도이다;
도 3은 매우 긴 명령어(Very Long Instruction Word, VLIW) 디지털 신호 처리 시스템 구조의 일 실시예를 나타내는 블록도이다;
도 4는 상기 디지털 신호 처리 시스템 내부의 레지스터 유닛들을 결합하는 방법의 일 실시예를 나타내는 순서도이다;
도 5는 도 4와 함께 기재된 레지스터 유닛들을 결합하는 방법을 나타내는 블록도이다;
도 6은 상기 디지털 신호 처리 시스템 내부의 레지스터 유닛들을 결합하는 방법의 대체 실시예를 나타내는 순서도이다;
도 7은 도 6과 함께 기재된 레지스터 유닛들을 결합하는 방법을 나타내는 블록도이다.
예를 들어, 디지털 신호 처리기와 같은, 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템이 기재된다. 이하에 기재되는 시스템이 디지털 신호 처리기(DSP)로 하여금 상기 레지스터 유닛들을 결합할 수 있게 하더라도, 상기 시스템이 마이크로프로세서 장치, 또는 다수의 레지스터 유닛들을 단일 명령의 실행 동안 결과적인 더 큰 레지스터 유닛으로 결합할 수 있는 임의의 다른 프로세싱 유닛을 이용하여 구현될 수 있음을 유념하여야 한다.
일반적으로, DSP 내부의 실행 유닛들은 레지스터 파일로부터 데이터 및 연산자(operand)들을 판독하고, 명령(instruction) 연산들을 수행하고, 그 결과들을 상기 레지스터 파일에 저장한다. 상기 레지스터 파일은 다수의 레지스터 유닛들을 포함하며, 각 레지스터 유닛은 단일 레지스터로서 또는 두 개의 인접한 레지스터 유닛들의 정렬(align)된 쌍들로서 액세스될 수 있다. 그러나, 예를 들어, 데이터를 추가(add) 또는 차감(subtract)하는 연산들과 같은, 어떠한 특정 연산들은, 상 기 레지스터 파일 내부의 별도의 레지스터 유닛들로부터의 데이터가 상기 명령들의 실행을 위해 적절히 정렬될 것을 필요로 한다. 이하에 상세히 기재되는 실시예들은 이후의 벡터 연산들에 대한 준비에 있어서 그러한 레지스터 유닛들 내부에 저장되는 데이터의 적절한 정렬을 가능하게 하기 위해 단일 명령의 실행 동안 DSP 내부의 다수의 비-인접 레지스터 유닛들의 조합/연관(concatenation)을 용이하게 한다.
일 실시예로, 제 1 레지스터 유닛 및 제 2 레지스터 유닛이 프로세싱 유닛 내부의 레지스터 파일로부터 검색되며, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내부에 인접하지-않게 위치한다. 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 단일 명령의 실행 동안 추가로 결합되어 결과적인 더 큰 레지스터 유닛을 형성한다. 최종적으로, 상기 결과적인 레지스터 유닛은 향후의 프로세싱을 위해 상기 레지스터 파일 구조에 저장된다.
대체 실시예로, 상기 제 1 및 제 2 레지스터 유닛들의 검색에 이어, 상기 제 1 레지스터 유닛으로부터의 제 1 하프 워드(half word) 유닛 및 상기 제 2 레지스터 유닛으로부터의 제 2 하프 워드 유닛이 검색된다. 상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 추가로 결과적인 레지스터 유닛의 상위(high) 및 하위(low) 부분들에 입력되어 단일 명령의 실행 동안 상기 결과적인 레지스터 유닛을 형성한다. 최종적으로, 상기 결과적인 레지스터 유닛은 향후의 프로세싱을 위해 상기 레지스터 파일 구조 내부에 저장된다.
도 1은 명령들의 세트가 실행될 수 있는 디지털 신호 처리 시스템의 블록도이다. 도 1에 도시된 바와 같이, 상기 디지털 신호 처리 시스템(100)은 프로세싱 유닛(100), 메모리(150), 및 상기 프로세싱 유닛(110)을 상기 메모리(150)에 접속시키는 하나 이상의 버스들(160)을 포함한다.
상기 메모리9150)는, 예를 들어, 매우 긴 명령어(Very Long Instruction Word, VLIW) 컴파일러에 의해 생성되는 VLIW 패킷들의 형태로서와 같이, 데이터 및 명령들을 저장하며, 각 VLIW 패킷은 하나 이상의 명령들을 포함한다. 패킷의 각 명령은 일반적으로 미리 결정된 폭(width)을 가지며 상기 메모리(150)에 특정한 어드레스를 가져서, 일반적으로 패킷의 제 1 명령이 상기 패킷의 최종 명령보다 낮은 메모리 어드레스를 갖는다. 메모리에 대한 어드레싱 방식들은 당해 기술분야에 널리 공지되어 있으며 여기서는 상세히 논의되지 않는다. 상기 메모리(150)의 명령들은 버스들(160)을 통해 상기 프로세싱 유닛(110)으로 로딩된다.
상기 프로세싱 유닛(110)은 하나 이상의 파이프라인들(140)을 통해 하나 이상의 레지스터 파일 구조들(120)에 접속되는 중앙 프로세싱 유닛 코어(130)를 더 포함한다. 상기 프로세싱 유닛(110)은 하나 이상의 마이크로프로세서들, 디지털 신호 처리기들 등을 더 포함할 수 있다.
레지스터 파일(120)은 일반(general) 레지스터 유닛들의 세트(이들은 범용(general purpose) 계산들을 지원하고, 이들은 도 2와 함께 이하에서 더 상세히 기재됨), 및 제어 레지스터 유닛들의 세트(이들은, 예를 들어, 하드웨어 루프들, 술어(predicate)들, 및 다른 특별한 연산자(operand)들과 같은, 특정-목적 기능성을 지원함)를 더 포함한다.
도 2는 디지털 신호 처리 시스템 내부의 일반 레지스터 구조의 일 실시예를 나타내는 블록도이다. 도 2에 도시된 바와 같이, 일 실시예로, 상기 레지스터 파일(120) 내부의 일반 레지스터 파일 구조(200)는, 예를 들어, 서른 두 개의 32-비트 폭(32-bit wide) 레지스터 유닛들(210)과 같은, 다수의 레지스터 유닛들을 포함하며, 각 레지스터 유닛은 단일 레지스터로서 또는 두 개의 인접한 레지스터 유닛들(210)의 정렬된 쌍들(220)로서 액세스될 수 있다.
일반 레지스터 유닛들(210)은 적절한 명령들에 기초하여 다수의 명칭들로 지칭될 수 있다. 예를 들어, 레지스터 유닛들(210)은 개별적으로 R0, R1,..., R30 및 R31로 지칭될 수 있다. 추가로, 레지스터 유닛들 R0 및 R1은 R1:0으로 지칭되는 64-비트 레지스터 쌍(220)을 형성할 수 있다. 유사하게, 레지스터 유닛들 R2 및 R3는 R3:2로 지칭되는 64-비트 레지스터 쌍(220)을 형성할 수 있으며, 레지스터 유닛들 R28 및 R29는 R29:28로 지칭되는 64-비트 레지스터 쌍(220)을 형성할 수 있고 그리고 레지스터 유닛들 R30 및 R31은 R31:30으로 지칭되는 64-비트 레지스터 쌍(220)을 형성할 수 있다.
일 실시예로, 일반 레지스터 유닛들(210)은, 예를 들어, 어드레스 생성, 스칼라 산술(arithmetic), 및 벡터 산술과 같은, 일반적인 계산 목적들에 이용되고, 로드/저장(load/store) 명령들에 대한 어드레스를 포함하는, 명령들에 대한 모든 연산자들, 수치 명령(numeric instruction)들에 대한 데이터 연산자들, 및 벡터 명령들에 대한 벡터 연산자들을 제공한다.
도 3은 매우 긴 명령어(VLIW) 디지털 신호 처리 시스템 구조의 일 실시예를 나타내는 블록도이다. 상기 VLIW 시스템 구조(300)는 명령 로드 버스(320), 데이터 로드 버스(322), 및 데이터 로드/저장 버스(324)를 통해 디지털 신호 처리기(DSP)(330)에 접속되는 메모리(310)를 포함한다.
일 실시예로, 상기 메모리(310)는, 예를 들어 1 내지 4개의 명령들을 구비하는 VLIW 패킷들의 형태로, 데이터 및 명령들을 저장한다. 상기 메모리(310) 내부에 저장된 명령들은 상기 명령 로드 버스(320)를 통해 DSP(330)에 로딩된다. 일 실시예로, 각 명령은 4개의 워드(word) 폭(width)을 갖는 128-비트 명령 로드 버스(320)를 통해 DSP(330)에 로딩되는 32-비트 워드 폭을 갖는다. 일 실시예로, 상기 메모리(310)는 통합된(unified) 바이트-어드레스가능(byte-addressable) 메모리이고, 명령들 및 데이터 모두를 저장하는 32-비트 어드레스 공간을 가지며, 리틀-엔디안(little-endian) 모드로 동작한다.
일 실시예로, DSP(330)는 시퀀서(sequencer)(335), 4개의 프로세싱 또는 실행 유닛들(345)을 위한 4개의 파이프라인들(340), 예를 들어, 도 2와 관련하여 상세히 기재되는 상기 일반 레지스터 파일 구조(200)와 같은, 일반 레지스터 파일 구조(350)(복수의 일반 레지스터 유닛들을 포함함), 및 제어 레지스터 파일 구조(360)를 포함한다. 시퀀서(335)는 상기 메모리(310)로부터 명령들의 패킷들을 수신하고 상기 명령에 포함되는 정보를 이용하년 각각의 수신된 패킷의 각각의 명령에 대한 적절한 파이프라인(340) 및 각각의 실행 유닛(345)을 결정한다. 패킷의 각 명령에 대한 본 결정을 내린 후, 시퀀서(335)는 적절한 실행 유닛(345)에 의한 처리를 위해 상기 명령들을 적절한 파이프라인(340)에 입력한다.
일 실시예로, 상기 실행 유닛들(345)은 벡터 시프트(shift) 유닛, 벡터 MAC 유닛, 로드(load) 유닛, 및 로드/저장 유닛을 더 포함한다. 벡터 시프트 유닛(345)은, 예를 들어, 시프트 & 가산/감산(Shift & Add/Sub) 연산들, 시프트 & 논리(Shift & Logical) 연산들, 치환(Permute) 연산들, 술어(Predicate) 연산들, 비트 조작(Manipulation), 및 벡터 하프워드/워드(Halfword/Word) 시프트들과 같은, S-타입 (시프트 유닛) 명령들, 64-비트 산술 & 논리(Arithmetic & Logical) 연ㅅ나들, 32-비트 논리 연산들, 치환 연산들과 같은, A64-타입 (64-비트 산술(Arithmetic)) 명령들, 32-비트 산술 연산들과 같은, A32-타입 (32-비트 산술) 명령들, 점프-콜(Jump/Call) PC-관련 연산들과 같은, J-타입(점프) 명령들, 및 제어 레지스터 전송(Control Register transfer)들, 하드웨어 루프 셋업과 같은, CR-타입 (제어 레지스터) 명령들을 실행한다. 벡터 MAC 유닛(345)은, 예를 들어, 단일 정밀도(Single Precision), 2배 정밀도(Double Precision), 복소(Complex), 및 벡터 바이트/하프워드 명령들과 같은, M-타입 (곱셈 단위(Multiply Unit)) 명령들, A64-타입 명령들, A32-타입 명령들, J-타입 명령들, 및 점프/콜 레지스터 연산들과 같은, JR-타입(점프 레지스터) 명령들을 실행한다. 로드 유닛(345)은 메모리(310)로부터 일반 레지스터 파일 구조(350)에 데이터를 로딩(load)하고, 예를 들어, 로드-타입(load-type) 및 A-32 타입 명령들을 실행한다. 로드/저장 유닛(345)은 상기 일반 레지스터 파일 구조(350)로부터 다시 메모리(310)로 데이터를 로딩 및 저장하며, 예를 들어, 로드-타입, 저장(store)-타입, 및 A32-타입 명령들을 실행한 다.
명령을 수신하는 각 실행 유닛(345)은 상기 4개의 실행 유닛들(345)에 의해 공유되는 상기 일반 레지스터 파일 구조(350)를 이용하여 상기 명령을 수행한다. 명령에 의해 요구되는 데이터가 상기 64-비트 데이터 로드 버스(322)를 통해 일반 레지스터 파일 구조(350)에 로딩된다. 패킷의 명령들이 실행 유닛들(345)에 의해 수행된 후, 결과적인 데이터가 일반 레지스터 파일 구조(350)에 저장되고 그리고나서 64-비트 데이터 로드/저장 버스(324)를 통해 상기 메모리(310)에 로딩 및 저장된다. 전형적으로, 상기 1-4개의 패킷의 명령들이 하나의 클록 사이클에서 상기 4개의 실행 유닛들(345)에 의해 병렬로 수행되며, 최대 하나의 명령이 각 클록 사이클 동안 파이프라인(340)에 의해 수신 및 처리된다.
일 실시예로, 실행 유닛(345)은 제어 레지스터 파일 구조(360)를 이용하여 대응하는 명령을 실행할 수도 있다. 상기 제어 레지스터 파일 구조(360)는, 예를 들어, 변경자(modifier), 상태(status), 및 술어 레지스터 유닛들과 같은, 특별한 레지스터 유닛들의 세트를 포함한다.
도 4는 디지털 신호 처리 시스템(100) 내부의 레지스터 유닛들을 결합하는 방법의 일 실시예를 나타내는 순서도이다. 도 4의 실시예에 도시되는 바와 같이, 프로세싱 블록(410)에서, 디지털 신호 처리 시스템(300) 내부의 레지스터 유닛들을 결합/연관시키는 명령이 수신된다. 일 실시예로, DSP(330) 내부의 실행 유닛(345)은 상기 명령을 수신하고, 이하에 기재된 바와 같이, 상기 명령을 실행하여 일반 레지스터 파일 구조(350)에 저장된 미리 결정된 레지스터 유닛들을 결합한다. 일 실시예로, 상기 미리 결정된 레지스터 유닛들은 상기 일반 레지스터 파일 구조 내부에서 인접하지-않게 위치한다.
프로세싱 블록(420)에서, 예를 들어, 제 1 32-비트 폭 레지스터 유닛 및 제 2 32-비트 폭 레지스터 유닛과 같은, 미리 결정된 레지스터 유닛들이 식별된다. 일 실시예로, 상기 실행 유닛(345)은 상기 일반 레지스터 파일 구조(350)와 통신하며 결합될 것이 요구되는 레지스터 유닛들을 식별한다. 일 실시예로, 메모리(310)는 상기 명령에 의해 요구되는 데이터를 상기 일반 레지스터 파일 구조(350)로 64-비트 데이터 로드 버스(322)를 통해 로딩한다. 대안적으로, 데이터는 이미 상기 식별된 제 1 및 제 2 레지스터 유닛들 내부에 저장될 수 있다.
프로세싱 블록(430)에서, 상기 식별된 레지스터 유닛들 및 관련된 데이터가 검색(retrieve)된다. 일 실시예로, 실행 유닛(345)은 상기 식별된 레지스터 유닛들과 관련 데이터를 상기 일반 레지스터 파일 구조(350)로부터 검색한다.
프로세싱 블록(440)에서, 검색된 레지스터 유닛들이 결과적인 더 큰 레지스터 쌍 내에서 결합/연관된다. 일 실시예로, 실행 유닛(345)은, 상기 제 1 및 제 2 32-비트 폭 레지스터 유닛들과 같은, 검색된 레지스터 유닛들과, 이들의 관련된 데이터를 결과적인 64-비트 폭 레지스터 쌍 유닛으로 결합하여, 상기 제 1 레지스터 유닛 및 이에 관련된 데이터가 결과적인 레지스터 유닛의 상위 부분으로 입력되고 상기 제 2 레지스터 유닛 및 그 관련된 데이터가 상기 결과적인 레지스터 유닛의 하위 부분에 입력된다.
최종적으로, 프로세싱 블록(450)에서, 상기 결과적인 레지스터 쌍이 향후의 프로세싱을 위해 저장된다. 일 실시예로, 실행 유닛(345)은 상기 결과적인 레지스터 유닛을 상기 일반 레지스터 파일 구조(350)로 출력하며 추가적인 명령들의 향후 프로세싱을 위해 상기 결과적인 레지스터 유닛을 저장한다.
도 5는 도 4와 관련하여 기재된 레지스터 유닛들을 결합하는 방법을 도시하는 블록도이다. 도 5에 도시된 바와 같이, 일반 레지스터 파일 구조(350)로부터 소스 레지스터 유닛들 RS(510) 및 RT(520)가 식별되며 추가로 검색된다.
일 실시예로, 소스 레지스터 유닛들 RS(510) 및 RT(520)를 결과적인 더 큰 목적(destination) 레지스터 유닛 RD(530)로 결합/연관시키는 명령은:
RD = combine (RS, RT) 이다
상기 명령의 실행시, 레지스터 유닛들 RS(510) 및 RT(520)가 상기 결과적인 큰 목적 레지스터 유닛 RD(530)로 결합/연관되어, 레지스터 유닛 RS(510)에 상주(reside)하는 데이터가 상기 레지스터 유닛 RD(530)의 상위 부분으로 입력되고 레지스터 유닛 RT(520)에 상주하는 데이터가 상기 레지스터 유닛 RD(530)의 하위 부분에 입력된다. 만일, 예를 들어, RS(510) 및 RT(520)가 모두 32-비트 폭 레지스터 유닛들이라면, 상기 결과적인 목적 레지스터 유닛 RD(530)는 64-비트 폭 레지스터이다.
도 6은 디지털 신호 처리 시스템(300) 내부의 레지스터 유닛들을 결합하는 방법의 대체 실시예를 나타내는 순서도이다. 도 6의 실시예에 도시된 바와 같이, 프로세싱 블록(610)에서, 디지털 신호 처리 시스템(300) 내부의 레지스터 유닛들을 결합/연관시키는 명령이 수신된다. 일 실시예로, DSP(330) 내부의 실행 유닛(345)은 상기 명령을 수신하고 상기 명령을 실행하여 일반 레지스터 파일 구조(350)에 저장된 미리 결정된 레지스터 유닛들을 결합한다. 일 실시예로, 상기 미리 결정된 레지스터 유닛들은 상기 일반 레지스터 구조 내부에서 인접하지-않게 위치한다.
프로세싱 블록(620)에서, 예를 들어, 제 1 32-비트 폭 레지스터 유닛 및 제 2 32-비트 폭 레지스터 유닛과 같은, 미리 결정된 레지스터 유닛들이 식별된다. 일 실시예로, 실행 유닛(345)은 상기 일반 레지스터 파일 구조(350)와 통신하고 결합될 것이 요구되는 레지스터 유닛들을 식별한다. 일 실시예로, 메모리(310)는 상기 명령에 의해 요구되는 데이터를 64-비트 데이터 로드 버스(322)를 통해 상기 일반 레지스터 파일 구조(350)에 로딩한다. 대안적으로, 데이터가 이미 상기 식별된 제 1 및 제 2 레지스터 유닛들 내부에 저장될 수 있다.
프로세싱 블록(630)에서, 식별된 레지스터 유닛들 및 관련 데이터가 검색된다. 일 실시예로, 실행 유닛(345)은 상기 식별된 레지스터 유닛들 및 관련 데이터를 일반 레지스터 파일 구조(350)로부터 검색한다.
프로세싱 블록(640)에서, 제 1 하프 워드 유닛이 상기 제 1 레지스터 유닛으로부터 검색되어 결과적인 레지스터 유닛에 입력된다. 일 실시예로, 상기 실행 유닛(345)은 제 1 16-비트 폭 하프 워드 유닛(이는, 일 실시예로, 상기 제 1 레지스터 유닛의 상위 절반(high half) 워드 유닛일 수 있거나, 또는 대안으로, 상기 제 1 레지스터 유닛의 하위 절반(low half) 워드 유닛일 수 있음)을 상기 제 1 레지스터 유닛으로부터 추가로 검색하고, 상기 제 1 하프 워드 유닛을 결과적인 레지스터 유닛의 상위 부분에 입력한다.
프로세싱 블록(650)에서, 제 2 하프 워드 유닛이 상기 제 2 레지스터 유닛으로부터 검색되어 상기 결과적인 레지스터 유닛에 입력된다. 일 실시예로, 상기 실행 유닛(345)은 상기 제 2 레지스터 유닛으로부터 제 2 16-비트 폭 하프 워드 유닛(이는, 일 실시예로, 상기 제 2 레지스터 유닛의 상위 절반(high half) 워드 유닛일 수 있거나, 대안으로, 상기 제 2 레지스터 유닛의 하위 절반 워드 유닛일 수 있음)을 추가로 검색하고, 상기 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛의 하위 부분에 입력함으로써, 32-비트 폭 결과 레지스터 유닛을 획득한다.
최종적으로, 프로세싱 블록(660)에서, 상기 결과적인 레지스터 유닛이 향후의 프로세싱을 위해 저장된다. 일 실시예로, 실행 유닛(345)은 상기 결과적인 레지스터 유닛을 상기 일반 레지스터 파일 구조(350)에 출력하고 추가적인 명령들의 향후 프로세싱을 위해 상기 결과적인 레지스터 유닛을 저장한다.
도 7은 도 6과 관련하여 기재된 레지스터 유닛들을 결합하는 방법을 나타내는 블록도이다. 도 7에 도시된 바와 같이, 상기 일반 레지스터 파일 구조(200)로부터 소스 레지스터 유닛들 RS(540) 및 RT(550)이 식별되고 추가로 검색된다.
일 실시예로, 소스 레지스터 유닛들 RS(540) 및 RT(550)를 결과적인 목적 레지스터 유닛 RD(560)으로 결합/연관시키는 명령은:
RD = combine(RT.[HL], RS.[HL]) 이다
여기서 RT[HL]는 상위 하프 워드 H와 하위 하프 워드 L을 갖는 소스 레지스터 유닛 RT이고, 여기서 RS는 상위 하프 워드 H와 하위 하프 워드 L을 갖는 소스 레지스터 유닛 RS이다.
도 7에 도시된 바와 같이, 상기 명령의 실행시, 상기 소스 레지스터 유닛 RT(550)의 상위 하프 워드 RT1, 또는, 대안으로, 상기 소스 레지스터 유닛 RT(550)의 하위 하프 워드 RT2가, 다중화기(555)를 통해 레지스터 유닛 RD(560)의 상위 부분으로 입력되고 상기 소스 레지스터 유닛 RS(540)의 상위 하프 워드 RS1, 또는, 대안으로, 상기 소스 레지스터 유닛 RS(540)의 하위 하프 워드 RS2가, 멀티플렉서(545)를 통해 레지스터 유닛 RD(560)의 하위 부분에 입력된다. 예를 들어, RS(540) 및 RT(550)가 모두 32-비트 폭 레지스터 유닛들이라면, 일 실시예로, 소스 레지스터 유닛 RT(550)의 상위 하프 워드 RT1은 16-비트 폭이고, 상기 소스 레지스터 유닛 RS(540)의 하위 하프 워드 RS2도 16-비트 폭이며, 따라서, 그 결과적인 목적 레지스터 유닛 RD(560)은 32-비트 폭 레지스터이다.
당해 기술분야에서 통상의 지식을 가진 자는 정보 및 신호들이 임의의 다양한 상이한 기술들 및 기법들을 이용하여 표현도리 수 있음을 알 것이다. 예를 들 어, 상기 실시예를 통틀어 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기 파들, 자기장들 또는 입자들, 광장들 또는 입자들, 또는 이들의 임의의 조합으로써 표현될 수 있다.
또한 당해 기술분야에서 통상의 지식을 가진 자는 여기 개시된 상기 실시예들에 관련된 다양한 도식적인 논리 블록, 모듈, 회로, 및 알고리듬 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합으로서 구현될 수 있음을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 교환성을 명확하게 나타내기 위해, 다양한 도식적인 컴포넌트, 블록, 모듈, 회로, 및 단계들이 기능성의 관점에서 일반적으로 앞서 기술되었다. 그러한 기능성이 하드웨어 또는 소프트웨어로서 구현될 것인지 여부는 특정한 애플리케이션 및 전체 시스템에 부과되는 설계 제약들에 달려 있다. 당업자는 각각의 특정한 애플리케이션에 대해서 다양한 방법으로 상기 기술된 기능성을 구현할 수 있지만, 그러한 구현 결정들이 본 발명의 범위를 벗어나도록 하는 것으로 해석되어서는 안 된다.
여기 개시된 실시예들과 관련하여 기재된 상기 다양한 도식적인 논리 블록, 모듈, 그리고 회로는 범용 처리기, 디지털 신호 처리기(DSP), 주문형 반도체(ASIC), 필드 프로그래머블 게이트 어레이(FGPA) 또는 다른 프로그래머블 논리 장치, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트, 또는 상기 기술된 기능들을 수행하도록 설계된 이들의 임의의 조합으로써 구현되거나 수행될 수 있다. 범용 처리기는 마이크로프로세서일 수 있지만, 대안으로, 상기 처리기는 임의의 종래의 처리기, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 또한 처리기는 컴퓨팅 장치들의 조합, 예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 함께 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다.
여기 개시된 상기 실시예들과 관련하여 기술된 방법 또는 알고리듬의 단계들은 하드웨어, 처리기에 의해 실행되는 소프트웨어 모듈, 또는 상기 양자의 조합에 직접 수록될 수 있다. 이러한 실시예들이 소프트웨어 프로그램들을 지원하는 것으로서 또는 지원하기 위해 이용될 수 있음에 유념해야 하며, 이들은 일부 형태의 처리기 또는 프로세싱 코어(컴퓨터의 CPU와 같은)상에서 실행되거나, 그렇지 않으면 기계 또는 컴퓨터로 읽을 수 있는 매체 상 또는 내부에서 구현 또는 실현된다. 기계 판독가능 매체는 기계(예컨대, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 매커니즘을 포함한다. 예를 들어, 기계 판독가능 매체는 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 소거가능 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체가 상기 처리기에 접속되어 상기 처리기가 상기 저장 매체로부터 정보를 읽고, 상기 저장 매체에 정보를 수록할 수 있다. 대안으로, 상기 저장 매체는 상기 처리기의 구성요소일 수 있다. 상기 처리기 및 저장 매체는 ASIC 내에 탑재될 수 있다. ASIC은 사용자 단말에 탑재될 수 있다. 대안으로, 상기 처리기 및 저장 매체는 사용자 단말에 이산 컴포넌트로서 탑재될 수 있다.
상기 개시된 실시예들에 대한 상술내용은 임의의 당업자로 하여금 본 발명을 생산 또는 이용하게 하기 위하여 제시된다. 이러한 실시예들에 대하여 다양한 변형들이 당업자에게 용이하게 명백할 것이며, 여기 정의된 일반 원리들은 본 발명의 사상과 범위를 벗어나지 않고도 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 여기 제시된 실시예들에 제한하고자 하는 것이 아니라 여기 개시된 원리들과 신규한 특징들에 따라서 가장 광범위하게 해석되어야 한다.

Claims (39)

  1. 컴퓨터로 읽을 수 있는 매체로서:
    프로세싱 시스템에 의해 실행될 때, 상기 프로세싱 시스템으로 하여금 결과적인 레지스터 유닛을 형성하기 위해 레지스터 파일 구조로부터 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 선택적으로 결합하게 하는, 상기 매체 내부에 포함되는 복수의 실행가능 명령(instruction)들의 명령을 포함하며, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치하는, 컴퓨터로 읽을 수 있는 매체.
  2. 제 1 항에 있어서,
    상기 제 1 레지스터 유닛 내에 상주(reside)하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터는 상기 결과적인 레지스터 유닛의 대응하는 부분들에 저장되는, 컴퓨터로 읽을 수 있는 매체.
  3. 제 2 항에 있어서,
    상기 제 1 레지스터 유닛 및 제 2 레지스터 유닛은 32-비트 폭(wide) 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 컴퓨터로 읽을 수 있는 매체.
  4. 제 1 항에 있어서,
    상기 제 1 레지스터 유닛의 제 1 하프 워드(half word) 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛은 상기 결과적인 레지스터 유닛의 대응하는 부분들에 저장되는, 컴퓨터로 읽을 수 있는 매체.
  5. 제 4 항에 있어서,
    상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 컴퓨터로 읽을 수 있는 매체.
  6. 실행가능 명령을 수신하는 단계;
    결과적인 레지스터 유닛을 형성하기 위해 레지스터 파일 구조로부터 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 선택적으로 결합하도록 상기 명령을 실행하는 단계를 포함하며, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내부에서 인접하지-않게 위치하는, 방법.
  7. 제 6 항에 있어서,
    상기 실행 단계는:
    상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 유닛 내의 동일한 폭(width)의 대 응하는 부분들에 저장하는 단계를 더 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 방법.
  9. 제 6 항에 있어서,
    상기 실행 단계는:
    상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내부의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 방법.
  11. 제 6 항에 있어서,
    상기 실행 단계는:
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련되는 데이터를 메모리로부터 검색(retrieve)하는 단계;
    상기 데이터를 상기 각각의 제 1 및 제 2 레지스터 유닛들 내에 저장하는 단계; 및
    상기 데이터를 상기 결과적인 레지스터 유닛들로 선택적으로 조합하는 단계를 더 포함하는, 방법.
  12. 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 프로세싱 유닛 내부의 레지스터 파일 구조로부터 검색하는 단계로서, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내부에서 인접하지-않게 위치하는, 검색 단계;
    단일 명령(instruction)의 실행 동안 결과적인 레지스터 유닛을 형성하기 위해 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 선택적으로 결합하는 단계; 및
    향후의 프로세싱을 위해 상기 결과적인 레지스터 유닛을 상기 레지스터 파일 구조 내에 저장하는 단계를 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 결합단계는:
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 결합하기 위해 상기 명령을 수신하는 단계; 및
    상기 프로세싱 유닛 내부에서 상기 명령을 실행하는 단계를 더 포함하는, 방 법.
  14. 제 12 항에 있어서,
    상기 결합 단계는:
    상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는, 방법.
  15. 제 14 항에 있어서,
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 방법.
  16. 제 12 항에 있어서,
    상기 결합 단계는:
    상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는, 방법.
  17. 제 16 항에 있어서,
    상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛 들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 방법.
  18. 제 12 항에 있어서,
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련된 데이터를 메모리로부터 검색하는 단계;
    상기 각각의 제 1 및 제 2 레지스터 유닛들 내에 상기 데이터를 저장하는 단계; 및
    상기 데이터를 상기 결과적인 레지스터 유닛으로 선택적으로 결합하는 단계를 더 포함하는 방법.
  19. 프로세싱 시스템에 의해 실행될 때, 상기 프로세싱 시스템으로 하여금:
    프로세싱 유닛 내부의 레지스터 파일 구조로부터 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 검색하는 단계로서, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치하는, 검색 단계;
    단일 명령의 실행 동안 결과적인 레지스터 유닛을 형성하기 위해 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 선택적으로 결합하는 단계; 및
    향후의 프로세싱을 위해 상기 결과적인 레지스터 유닛을 상기 레지스터 파일 구조 내에 저장하는 단계를 포함하는 방법을 수행하게 하는, 실행가능 명령들을 포함하는 컴퓨터로 읽을 수 있는 매체.
  20. 제 19 항에 있어서,
    상기 결합 단계는:
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 결합하기 위해 상기 명령을 수신하는 단계; 및
    상기 프로세싱 유닛 내에서 상기 명령을 실행하는 단계를 더 포함하는, 컴퓨터로 읽을 수 있는 매체.
  21. 제 19 항에 있어서,
    상기 결합 단계는:
    상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 내의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는, 컴퓨터로 읽을 수 있는 매체.
  22. 제 21 항에 있어서,
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 컴퓨터로 읽을 수 있는 매체.
  23. 제 19 항에 있어서,
    상기 결합 단계는:
    상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는, 컴퓨터로 읽을 수 있는 매체.
  24. 제 23 항에 있어서,
    상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 컴퓨터로 읽을 수 있는 매체.
  25. 제 19 항에 있어서,
    상기 방법은:
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련된 데이터를 메모리로부터 검색하는 단계;
    상기 데이터를 상기 각각의 제 1 및 제 2 레지스터 유닛들 내부에 저장하는 단계; 및
    상기 데이터를 상기 결과적인 레지스터 유닛으로 선택적으로 결합하는 단계를 더 포함하는, 컴퓨터로 읽을 수 있는 매체.
  26. 하나 이상의 명령들을 포함하는 패킷들을 저장하는 메모리; 및
    상기 메모리에 접속되는 처리기를 포함하는 집적회로로서, 상기 처리기는 프로세싱 유닛 및 상기 프로세싱 유닛에 접속되는 레지스터 파일 구조를 더 포함하고;
    상기 프로세싱 유닛은 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 상기 레지스터 파일 구조로부터 검색하고 - 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치함 - , 단일 명령의 실행 동안 결과적인 레지스터 유닛을 형성하기 위해 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 선택적으로 결합하고, 그리고 향후의 프로세싱을 위해 상기 결과적인 레지스터 유닛을 상기 레지스터 파일 구조 내에 저장하는, 집적 회로.
  27. 제 26 항에 있어서,
    상기 프로세싱 유닛은 추가로 상기 메모리로부터 상기 제 1 레지스터 및 상기 제 2 레지스터 유닛을 결합하기 위해 상기 명령을 수신하고 상기 명령을 실행하는, 집적 회로.
  28. 제 26 항에 있어서,
    상기 프로세싱 유닛은 추가로 상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는, 집적 회로.
  29. 제 28 항에 있어서,
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 집적 회로.
  30. 제 26 항에 있어서,
    상기 프로세싱 유닛은 추가로 상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는, 집적 회로.
  31. 제 30 항에 있어서,
    상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 집적 회로.
  32. 제 26 항에 있어서,
    상기 메모리는 추가로 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련된 데이터를 저장하며, 상기 레지스터 파일 구조는 추가로 상기 데이터를 검색하고 상기 각각의 제 1 및 제 2 레지스터 유닛들 내부에 상기 데이터를 저장하고, 그리고 상기 프로세싱 유닛은 추가로 상기 데이터를 상기 결과적인 레지스터 유닛으로 선택적으로 결합하는, 집적 회로.
  33. 프로세싱 유닛 내부의 레지스터 파일 구조로부터 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 검색하는 수단으로서, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치하는, 검색 수단;
    단일 명령의 실행 동안 결과적인 레지스터 유닛을 형성하기 위해 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 선택적으로 결합하는 수단; 및
    향후의 프로세싱을 위해 상기 결과적인 레지스터 유닛을 상기 레지스터 파일 구조 내에 저장하는 수단을 포함하는 장치.
  34. 제 33 항에 있어서,
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 결합하기 위해 상기 명령을 수신하는 수단; 및
    상기 프로세싱 유닛 내에서 상기 명령을 실행하는 수단을 더 포함하는 장치.
  35. 제 33 항에 있어서,
    상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는 수단을 더 포함하는 장치.
  36. 제 35 항에 있어서,
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 장치.
  37. 제 33 항에 있어서,
    상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내부의 동일한 폭의 대응하는 부분들에 저장하는 수단을 더 포함하는 장치.
  38. 제 37 항에 있어서,
    상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 장치.
  39. 제 33 항에 있어서,
    상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련되는 데이터를 메모리로부터 검색하는 수단;
    상기 데이터를 상기 각각의 제 1 및 제 2 레지스터 유닛들 내에 저장하는 수단; 및
    상기 데이터를 상기 결과적인 레지스터 유닛들로 선택적으로 조합하는 수단 을 더 포함하는 장치.
KR1020097004441A 2006-08-02 2007-07-31 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템 KR101048234B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/498,627 US8417922B2 (en) 2006-08-02 2006-08-02 Method and system to combine multiple register units within a microprocessor
US11/498,627 2006-08-02
PCT/US2007/074820 WO2008016902A1 (en) 2006-08-02 2007-07-31 Method and system to combine multiple register units within a microprocessor

Publications (2)

Publication Number Publication Date
KR20090042294A true KR20090042294A (ko) 2009-04-29
KR101048234B1 KR101048234B1 (ko) 2011-07-08

Family

ID=38745271

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097004441A KR101048234B1 (ko) 2006-08-02 2007-07-31 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템

Country Status (7)

Country Link
US (1) US8417922B2 (ko)
EP (1) EP2069913A1 (ko)
JP (5) JP2009545823A (ko)
KR (1) KR101048234B1 (ko)
CN (1) CN101495959B (ko)
TW (1) TW200825906A (ko)
WO (1) WO2008016902A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150048040A (ko) * 2013-10-25 2015-05-06 에이알엠 리미티드 데이터 처리장치 및 데이터 요소들의 인터리브된 기억을 위한 방법
US9262162B2 (en) 2010-12-17 2016-02-16 Samsung Electronics Co., Ltd. Register file and computing device using the same

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8898436B2 (en) 2009-04-20 2014-11-25 Oracle America, Inc. Method and structure for solving the evil-twin problem
CN102457268B (zh) * 2010-10-15 2014-10-22 北京德威特继保自动化科技股份有限公司 32位捕获寄存器的实现方法
WO2013100927A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Reducing the number of io requests to memory when executing a program that iteratively processes contiguous data
US9323529B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Reducing register read ports for register pairs
US9323532B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Predicting register pairs
US9298459B2 (en) * 2012-07-18 2016-03-29 International Business Machines Corporation Managing register pairing
US9026791B2 (en) * 2013-03-11 2015-05-05 Qualcomm Incorporated Linear feedback shift register (LFSR)
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US9886276B2 (en) * 2014-10-10 2018-02-06 Arm Limited System register access
US9952865B2 (en) * 2015-04-04 2018-04-24 Texas Instruments Incorporated Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file
US10162634B2 (en) * 2016-05-20 2018-12-25 International Business Machines Corporation Extendable conditional permute SIMD instructions
CN107621949A (zh) * 2016-07-15 2018-01-23 龙芯中科技术有限公司 内存拷贝方法及装置
US10747531B1 (en) * 2018-04-03 2020-08-18 Xilinx, Inc. Core for a data processing engine in an integrated circuit

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0779577B1 (en) * 1993-10-18 2002-05-22 VIA-Cyrix, Inc. Micoprocessor pipe control and register translation
US5564056A (en) 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
JPH07262010A (ja) * 1994-03-25 1995-10-13 Hitachi Ltd 演算処理装置および演算処理方法
EP0743591B1 (en) 1995-05-16 2002-01-02 Océ-Technologies B.V. Printing system comprising a communication control apparatus
GB9509987D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
JP3526976B2 (ja) * 1995-08-03 2004-05-17 株式会社日立製作所 プロセッサおよびデータ処理装置
WO1997009679A1 (en) 1995-09-01 1997-03-13 Philips Electronics North America Corporation Method and apparatus for custom processor operations
US5854939A (en) * 1996-11-07 1998-12-29 Atmel Corporation Eight-bit microcontroller having a risc architecture
US6052522A (en) * 1997-10-30 2000-04-18 Infineon Technologies North America Corporation Method and apparatus for extracting data stored in concatenated registers
US6041404A (en) * 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6247112B1 (en) * 1998-12-30 2001-06-12 Sony Corporation Bit manipulation instructions
US6463525B1 (en) * 1999-08-16 2002-10-08 Sun Microsystems, Inc. Merging single precision floating point operands
US6631460B1 (en) 2000-04-27 2003-10-07 Institute For The Development Of Emerging Architectures, L.L.C. Advanced load address table entry invalidation based on register address wraparound
AU2001259555A1 (en) 2000-05-05 2001-11-20 Ruby B. Lee A method and system for performing subword permutation instructions for use in two-dimensional multimedia processing
US7120781B1 (en) * 2000-06-30 2006-10-10 Intel Corporation General purpose register file architecture for aligned simd
JP2002132499A (ja) * 2000-10-27 2002-05-10 Hitachi Ltd データ処理装置及び記録媒体
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
US7228403B2 (en) * 2000-12-23 2007-06-05 International Business Machines Corporation Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
WO2004015563A1 (en) 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US7103756B2 (en) 2002-09-30 2006-09-05 Hewlett-Packard Development Company, L.P. Data processor with individually writable register subword locations
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409066B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
JP4202244B2 (ja) 2003-12-22 2008-12-24 Necエレクトロニクス株式会社 Vliw型dsp,及びその動作方法
US7177876B2 (en) * 2004-03-04 2007-02-13 Texas Instruments Incorporated Speculative load of look up table entries based upon coarse index calculation in parallel with fine index calculation
US7376813B2 (en) * 2004-03-04 2008-05-20 Texas Instruments Incorporated Register move instruction for section select of source operand
US7237096B1 (en) * 2004-04-05 2007-06-26 Sun Microsystems, Inc. Storing results of producer instructions to facilitate consumer instruction dependency tracking
US8621444B2 (en) 2004-06-01 2013-12-31 The Regents Of The University Of California Retargetable instruction set simulators
US8127117B2 (en) 2006-05-10 2012-02-28 Qualcomm Incorporated Method and system to combine corresponding half word units from multiple register units within a microprocessor
US8445994B2 (en) 2009-05-07 2013-05-21 Qualcomm Incorporated Discontinuous thin semiconductor wafer surface features
US20100314725A1 (en) 2009-06-12 2010-12-16 Qualcomm Incorporated Stress Balance Layer on Semiconductor Wafer Backside
US8076762B2 (en) 2009-08-13 2011-12-13 Qualcomm Incorporated Variable feature interface that induces a balanced stress to prevent thin die warpage

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262162B2 (en) 2010-12-17 2016-02-16 Samsung Electronics Co., Ltd. Register file and computing device using the same
KR20150048040A (ko) * 2013-10-25 2015-05-06 에이알엠 리미티드 데이터 처리장치 및 데이터 요소들의 인터리브된 기억을 위한 방법

Also Published As

Publication number Publication date
US8417922B2 (en) 2013-04-09
CN101495959B (zh) 2012-04-25
KR101048234B1 (ko) 2011-07-08
JP2013218709A (ja) 2013-10-24
US20080184007A1 (en) 2008-07-31
JP2009545823A (ja) 2009-12-24
JP2015201216A (ja) 2015-11-12
JP2017138993A (ja) 2017-08-10
CN101495959A (zh) 2009-07-29
EP2069913A1 (en) 2009-06-17
JP5680709B2 (ja) 2015-03-04
WO2008016902A1 (en) 2008-02-07
TW200825906A (en) 2008-06-16
JP2013242879A (ja) 2013-12-05

Similar Documents

Publication Publication Date Title
KR101048234B1 (ko) 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템
US6295599B1 (en) System and method for providing a wide operand architecture
CN107015784B (zh) 用于处理文本串的指令和逻辑
US7730285B1 (en) Data processing system with partial bypass reorder buffer and combined load/store arithmetic logic unit and processing method thereof
EP1126368A2 (en) Microprocessor with non-aligned circular addressing
EP1102163A2 (en) Microprocessor with improved instruction set architecture
KR100988964B1 (ko) 마이크로프로세서 내에서 다수의 레지스터 유닛들로부터의 대응하는 하프워드 유닛들을 결합하기 위한 방법 및 시스템
US20070260856A1 (en) Methods and apparatus to detect data dependencies in an instruction pipeline
US20060259747A1 (en) Long instruction word processing with instruction extensions
JP2007533006A (ja) 複合命令形式および複合オペレーション形式を有するプロセッサ
WO2002048873A2 (en) Exception handling in a pipelined processor
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
EP2309383A1 (en) System with wide operand architecture and method
JP2007500406A (ja) オペランド依存関係によるストールを低減する方法ならびにそのためのデータプロセッサ
KR101056553B1 (ko) 마이크로프로세서 내에서 시프팅 및 라운딩 연산들을 수행하기 위한 방법 및 시스템
EP1050800A1 (en) A pipelined execution unit
CN111984315A (zh) 矢量浮点缩放

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 9