KR20090042294A - 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템 - Google Patents
마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000012545 processing Methods 0.000 claims abstract description 69
- 238000010586 diagram Methods 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 3
- 239000002245 particle Substances 0.000 description 2
- 238000003491 array Methods 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
- 239000003607 modifier Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/46—Multiprogramming 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
본 발명은 일반적으로 마이크로프로세서, 더 특정하게는, 예를 들어, 디지털 신호 처리기와 같은, 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템에 관한 것이다.
전형적으로, 컴퓨터 시스템들은 하나 이상의 마이크로프로세서 장치들을 포함하며, 각 마이크로프로세서 장치는 상기 컴퓨터 시스템의 메모리에 저장되는 값들에 대한 연산들을 수행하고 상기 컴퓨터 시스템의 전체 동작을 관리하도록 구성된다. 또한 이러한 컴퓨터 시스템들은, 예를 들어, 사운드 카드들 및/또는 비디오 카드들과 같은, 다양한 멀티미디어 장치들을 포함할 수 있으며, 각각의 멀티미디어 장치는, 예를 들어, 디지털 신호 처리기(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 레지스터 유닛 및 제 2 레지스터 유닛을 선택적으로 결합하게 하는, 상기 매체 내부에 포함되는 복수의 실행가능 명령(instruction)들의 명령을 포함하며, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치하는, 컴퓨터로 읽을 수 있는 매체.
- 제 1 항에 있어서,상기 제 1 레지스터 유닛 내에 상주(reside)하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터는 상기 결과적인 레지스터 유닛의 대응하는 부분들에 저장되는, 컴퓨터로 읽을 수 있는 매체.
- 제 2 항에 있어서,상기 제 1 레지스터 유닛 및 제 2 레지스터 유닛은 32-비트 폭(wide) 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 컴퓨터로 읽을 수 있는 매체.
- 제 1 항에 있어서,상기 제 1 레지스터 유닛의 제 1 하프 워드(half word) 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛은 상기 결과적인 레지스터 유닛의 대응하는 부분들에 저장되는, 컴퓨터로 읽을 수 있는 매체.
- 제 4 항에 있어서,상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 컴퓨터로 읽을 수 있는 매체.
- 실행가능 명령을 수신하는 단계;결과적인 레지스터 유닛을 형성하기 위해 레지스터 파일 구조로부터 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 선택적으로 결합하도록 상기 명령을 실행하는 단계를 포함하며, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내부에서 인접하지-않게 위치하는, 방법.
- 제 6 항에 있어서,상기 실행 단계는:상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 유닛 내의 동일한 폭(width)의 대 응하는 부분들에 저장하는 단계를 더 포함하는 방법.
- 제 7 항에 있어서,상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 방법.
- 제 6 항에 있어서,상기 실행 단계는:상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내부의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는 방법.
- 제 9 항에 있어서,상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 방법.
- 제 6 항에 있어서,상기 실행 단계는:상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련되는 데이터를 메모리로부터 검색(retrieve)하는 단계;상기 데이터를 상기 각각의 제 1 및 제 2 레지스터 유닛들 내에 저장하는 단계; 및상기 데이터를 상기 결과적인 레지스터 유닛들로 선택적으로 조합하는 단계를 더 포함하는, 방법.
- 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 프로세싱 유닛 내부의 레지스터 파일 구조로부터 검색하는 단계로서, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내부에서 인접하지-않게 위치하는, 검색 단계;단일 명령(instruction)의 실행 동안 결과적인 레지스터 유닛을 형성하기 위해 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 선택적으로 결합하는 단계; 및향후의 프로세싱을 위해 상기 결과적인 레지스터 유닛을 상기 레지스터 파일 구조 내에 저장하는 단계를 포함하는 방법.
- 제 12 항에 있어서,상기 결합단계는:상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 결합하기 위해 상기 명령을 수신하는 단계; 및상기 프로세싱 유닛 내부에서 상기 명령을 실행하는 단계를 더 포함하는, 방 법.
- 제 12 항에 있어서,상기 결합 단계는:상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는, 방법.
- 제 14 항에 있어서,상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 방법.
- 제 12 항에 있어서,상기 결합 단계는:상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는, 방법.
- 제 16 항에 있어서,상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛 들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 방법.
- 제 12 항에 있어서,상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련된 데이터를 메모리로부터 검색하는 단계;상기 각각의 제 1 및 제 2 레지스터 유닛들 내에 상기 데이터를 저장하는 단계; 및상기 데이터를 상기 결과적인 레지스터 유닛으로 선택적으로 결합하는 단계를 더 포함하는 방법.
- 프로세싱 시스템에 의해 실행될 때, 상기 프로세싱 시스템으로 하여금:프로세싱 유닛 내부의 레지스터 파일 구조로부터 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 검색하는 단계로서, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치하는, 검색 단계;단일 명령의 실행 동안 결과적인 레지스터 유닛을 형성하기 위해 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 선택적으로 결합하는 단계; 및향후의 프로세싱을 위해 상기 결과적인 레지스터 유닛을 상기 레지스터 파일 구조 내에 저장하는 단계를 포함하는 방법을 수행하게 하는, 실행가능 명령들을 포함하는 컴퓨터로 읽을 수 있는 매체.
- 제 19 항에 있어서,상기 결합 단계는:상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 결합하기 위해 상기 명령을 수신하는 단계; 및상기 프로세싱 유닛 내에서 상기 명령을 실행하는 단계를 더 포함하는, 컴퓨터로 읽을 수 있는 매체.
- 제 19 항에 있어서,상기 결합 단계는:상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 내의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는, 컴퓨터로 읽을 수 있는 매체.
- 제 21 항에 있어서,상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 컴퓨터로 읽을 수 있는 매체.
- 제 19 항에 있어서,상기 결합 단계는:상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는 단계를 더 포함하는, 컴퓨터로 읽을 수 있는 매체.
- 제 23 항에 있어서,상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 컴퓨터로 읽을 수 있는 매체.
- 제 19 항에 있어서,상기 방법은:상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련된 데이터를 메모리로부터 검색하는 단계;상기 데이터를 상기 각각의 제 1 및 제 2 레지스터 유닛들 내부에 저장하는 단계; 및상기 데이터를 상기 결과적인 레지스터 유닛으로 선택적으로 결합하는 단계를 더 포함하는, 컴퓨터로 읽을 수 있는 매체.
- 하나 이상의 명령들을 포함하는 패킷들을 저장하는 메모리; 및상기 메모리에 접속되는 처리기를 포함하는 집적회로로서, 상기 처리기는 프로세싱 유닛 및 상기 프로세싱 유닛에 접속되는 레지스터 파일 구조를 더 포함하고;상기 프로세싱 유닛은 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 상기 레지스터 파일 구조로부터 검색하고 - 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치함 - , 단일 명령의 실행 동안 결과적인 레지스터 유닛을 형성하기 위해 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 선택적으로 결합하고, 그리고 향후의 프로세싱을 위해 상기 결과적인 레지스터 유닛을 상기 레지스터 파일 구조 내에 저장하는, 집적 회로.
- 제 26 항에 있어서,상기 프로세싱 유닛은 추가로 상기 메모리로부터 상기 제 1 레지스터 및 상기 제 2 레지스터 유닛을 결합하기 위해 상기 명령을 수신하고 상기 명령을 실행하는, 집적 회로.
- 제 26 항에 있어서,상기 프로세싱 유닛은 추가로 상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는, 집적 회로.
- 제 28 항에 있어서,상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 집적 회로.
- 제 26 항에 있어서,상기 프로세싱 유닛은 추가로 상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는, 집적 회로.
- 제 30 항에 있어서,상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 집적 회로.
- 제 26 항에 있어서,상기 메모리는 추가로 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련된 데이터를 저장하며, 상기 레지스터 파일 구조는 추가로 상기 데이터를 검색하고 상기 각각의 제 1 및 제 2 레지스터 유닛들 내부에 상기 데이터를 저장하고, 그리고 상기 프로세싱 유닛은 추가로 상기 데이터를 상기 결과적인 레지스터 유닛으로 선택적으로 결합하는, 집적 회로.
- 프로세싱 유닛 내부의 레지스터 파일 구조로부터 제 1 레지스터 유닛 및 제 2 레지스터 유닛을 검색하는 수단으로서, 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 상기 레지스터 파일 구조 내에서 인접하지-않게 위치하는, 검색 수단;단일 명령의 실행 동안 결과적인 레지스터 유닛을 형성하기 위해 상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 선택적으로 결합하는 수단; 및향후의 프로세싱을 위해 상기 결과적인 레지스터 유닛을 상기 레지스터 파일 구조 내에 저장하는 수단을 포함하는 장치.
- 제 33 항에 있어서,상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛을 결합하기 위해 상기 명령을 수신하는 수단; 및상기 프로세싱 유닛 내에서 상기 명령을 실행하는 수단을 더 포함하는 장치.
- 제 33 항에 있어서,상기 제 1 레지스터 유닛 내에 상주하는 데이터 및 상기 제 2 레지스터 유닛 내에 상주하는 데이터를 상기 결과적인 레지스터 유닛 내의 동일한 폭의 대응하는 부분들에 저장하는 수단을 더 포함하는 장치.
- 제 35 항에 있어서,상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛은 32-비트 폭 레지스터 유닛들이며 상기 결과적인 레지스터 유닛은 64-비트 폭 레지스터 유닛인, 장치.
- 제 33 항에 있어서,상기 제 1 레지스터 유닛의 제 1 하프 워드 유닛 및 상기 제 2 레지스터 유닛의 제 2 하프 워드 유닛을 상기 결과적인 레지스터 유닛 내부의 동일한 폭의 대응하는 부분들에 저장하는 수단을 더 포함하는 장치.
- 제 37 항에 있어서,상기 제 1 하프 워드 유닛 및 상기 제 2 하프 워드 유닛은 16-비트 폭 유닛들이며 상기 결과적인 레지스터 유닛은 32-비트 폭 레지스터 유닛인, 장치.
- 제 33 항에 있어서,상기 제 1 레지스터 유닛 및 상기 제 2 레지스터 유닛에 관련되는 데이터를 메모리로부터 검색하는 수단;상기 데이터를 상기 각각의 제 1 및 제 2 레지스터 유닛들 내에 저장하는 수단; 및상기 데이터를 상기 결과적인 레지스터 유닛들로 선택적으로 조합하는 수단 을 더 포함하는 장치.
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)
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)
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)
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 |
-
2006
- 2006-08-02 US US11/498,627 patent/US8417922B2/en active Active
-
2007
- 2007-07-31 WO PCT/US2007/074820 patent/WO2008016902A1/en active Application Filing
- 2007-07-31 JP JP2009523009A patent/JP2009545823A/ja not_active Withdrawn
- 2007-07-31 CN CN2007800282684A patent/CN101495959B/zh active Active
- 2007-07-31 EP EP07840609A patent/EP2069913A1/en not_active Withdrawn
- 2007-07-31 KR KR1020097004441A patent/KR101048234B1/ko active IP Right Grant
- 2007-08-02 TW TW096128461A patent/TW200825906A/zh unknown
-
2013
- 2013-05-15 JP JP2013103471A patent/JP2013218709A/ja not_active Withdrawn
- 2013-06-14 JP JP2013125449A patent/JP5680709B2/ja active Active
-
2015
- 2015-05-27 JP JP2015107759A patent/JP2015201216A/ja not_active Withdrawn
-
2017
- 2017-03-01 JP JP2017038550A patent/JP2017138993A/ja active Pending
Cited By (2)
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 |