KR20070018066A - 합성 명령 및 연산 포맷들을 갖는 프로세서 - Google Patents

합성 명령 및 연산 포맷들을 갖는 프로세서 Download PDF

Info

Publication number
KR20070018066A
KR20070018066A KR1020067023332A KR20067023332A KR20070018066A KR 20070018066 A KR20070018066 A KR 20070018066A KR 1020067023332 A KR1020067023332 A KR 1020067023332A KR 20067023332 A KR20067023332 A KR 20067023332A KR 20070018066 A KR20070018066 A KR 20070018066A
Authority
KR
South Korea
Prior art keywords
instruction
field
fields
instructions
processor
Prior art date
Application number
KR1020067023332A
Other languages
English (en)
Other versions
KR101171403B1 (ko
Inventor
씨. 존 글로스너
에르뎀 호케넥
마얀 모우드길
마이클 제이. 슐테
Original Assignee
샌드브리지 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌드브리지 테크놀로지스, 인코포레이티드 filed Critical 샌드브리지 테크놀로지스, 인코포레이티드
Priority claimed from PCT/US2005/011613 external-priority patent/WO2005099383A2/en
Publication of KR20070018066A publication Critical patent/KR20070018066A/ko
Application granted granted Critical
Publication of KR101171403B1 publication Critical patent/KR101171403B1/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
    • 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

Landscapes

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

Abstract

프로세서는 메모리, 메모리로부터 검색된 명령들을 디코딩하는 메모리에 결합된 명령 디코더 및 디코딩된 명령들을 실행하기 위한 복수의 실행 장치를 포함한다. 하나 이상의 명령들은 단일 명령이 복수 연산 필드들을 포함하는 합성 명령 형식이고, 하나 이상의 연산 필드들은 각각 적어도 연산 코드 필드 및 함수 필드를 포함한다. 연산 코드 필드 및 함수 필드는 하나 이상의 실행 장치들에 의해 수행되는 특정 연산을 함께 지정한다.

Description

합성 명령 및 연산 포맷들을 갖는 프로세서{PROCESSOR HAVING COMPOUND INSTRUCTION AND OPERATION FORMATS}
본 출원은 2004년 4월 7일자로 출원된 "Compound Instruction and Operation Formats for Low-Power Embedded Processors," 라는 제목의 미국 임시 특허 제 60/560,200호에 대하여 우선권을 청구하며, 이는 본 명세서에 참조로 통합된다.
본 발명은 일반적으로 디지털 데이터 프로세서 분야에 관한 것으로서, 보다 상세하게는 이러한 프로세서들에 사용하는 명령 세트들에 관한 것이다.
프로그램 가능한 디지털 데이터 프로세서들은 프로세서에 특정한 태스크를 시행하는 방법을 알려주기 위해 메모리에 저장된 명령들을 사용한다. 명령들은 일반적으로 연산이 무엇을 실행하는지 프로세서에 알려주는 연산 코드(opcode) 및 연산에 의해 사용된 입력 및 출력 데이터의 위치를 나타내는 피연산(operand) 식별자를 포함한다. 프로세서에 의해 실행되는 명령들은 대개 프로그램 메모리에 저장되고, 이러한 명령들에 의해 사용되는 데이터들은 대개 데이터 메모리에 저장된다. 전형적인 연산들은 메모리로부터 데이터를 로딩하는 단계, 메모리에 데이터를 저장하는 단계, 산술 및 논리 연산을 실행하는 단계, 프로그램의 상이한 위치로 분리 명령을 실행하는 단계를 포함한다.
특정 태스크 또는 태스크들의 세트를 실행하기 위해 사용된 프로그램 메모리의 양은 코드 크기(code size)로 언급된다. 코드 크기는 개별적인 명령들의 크기, 명령들의 복잡성, 태스크 또는 태스크들의 세트의 복잡성 및 다른 요소들에 좌우된다. 현대의 프로세싱들에서, 고정된 크기는 명령들이 효율적으로 메모리로부터 꺼내지고, 디코딩되며, 실행되도록 하기 때문에, 명령들은 일반적으로 고정된 크기를 가진다. 메모리 시스템들이 설계되는 방법 때문에, 비트 단위의 명령 크기는 2의 배수(whole number power of two)로 제한된다(예컨대, 16비트, 32비트 또는 64비트).
작은 코드 크기는 디지털 신호 프로세서들, 멀티미디어 프로세서들 및 그래픽 프로세서들과 같은 저 전력 내장형 프로세서들의 설계에 있어서 중요한 목표이다. 따라서, 이러한 형태의 아키텍처(architecture)들은 종종 상당히 강력한 압축 명령들을 특징으로 한다. 예를 들어, 전통적인 내장형 프로세서 아키텍처에서, 16-비트 곱셈-축적 명령은 두 개의 레지스터들, RC 및 RB에서의 값들을 지정하기 위해 사용될 수 있으며, 함께 곱셈되고, 다시 축적기 레지스터 RA에 저장되는 결과가 되도록, 축적 레지스터인 RA에서의 값에 가산되어야 한다.
작은 코드 크기를 달성하기 위하여, 많은 프로세서들이 단일 명령 복수 데이터(SIMD: single instruction multiple data) 프로세싱 기술들을 실행한다. SIMD 프로세싱을 이용하여, 단일 명령은 다수의 데이터 피연산들 상에 동일한 연산을 실행하기 위해 사용된다. SIMD 프로세싱은 특히 동일한 연산을 복수의 벡터 또는 매트릭스 성분 상에 실행할 때 유용하다.
모든 프로그램 가능한 프로세서들은 몇몇 종류의 명령 형식을 사용한다. 종래의 명령 형식들은 예를 들어, John L. Hennessy and David A. Patterson, "Computer Architecture: A Quantitative Approach," Third Edition, Morgan Kaufmann Publishers, Inc., San Francisco, California(2003년)에서 설명된다.
고성능을 달성하기 위하여, 디지털 신호 처리, 멀티미디어 및 그래픽스(gaphics)와 같은 어플리케이션들을 위한 현재의 내장형 프로세서들은 종종 매우 긴 명령어(VLIW: very long instruction word)을 갖는다. 실시예들은 J.A.Fischer, "Very Long Instruction Word Architectures and ELI-512," Proceedings of the Tenth Symposium on Computer Architecture, pp. 140-150(1983년 6월), R.Cowell et al., "A VLIW Architecture for a Trace Scheduling Compiler," IEEE Transactions on Computers, pp. 967-979(1998년 8월), 및 N. Seshan, "High Velocity Processing: Texas Instruments VLIW DSP Architecture," IEEE Signal Processing Magazine, Vol.15, No. 2, pp. 86-101(1998년 3월)에서 설명된다. 이러한 아키텍처들을 이용하여, 단일 VLIW는 병렬로 실행할 수 있는 복수 연산들을 지정한다. 예를 들어, 256-비트 VLIW 아키텍처들은 각각이 32 비트를 사용하여 지정되는 8개의 연산 필드(field)들을 가진다. VLIW 아키텍처들은 일반적으로 각 사이클에 단일 연산만을 실행하는 아키텍처 상에 개선된 성능을 제공하며, 선택된 사이클에서 실행될 수 없는 연산 필드들은 무 연산 명령들로 채워지기 때문에 더 큰 코드 크기를 가질 수 있다.
더욱 최근에, 명시적 병렬 명령 컴퓨팅(EPIC: explicitly parallel instruction computing) 아키텍처들이 제안되고 있다. 예컨대, M. Smotherman, "Understanding EPIC Architectures and Implementations," ACM Southeast Conference(2002년) 및 M. Schlansker and B. Rau, "EPIC: Explicitly Parallel Instruction Computing," IEEE Computer, pp. 37-45(2002년 2월)을 참조하라. 이러한 아키텍처들은 종종 명령에 추가 비트들을 포함하고, 이러한 추가 비트들은 병렬로 실행할 수 있는 명령에서의 연산들을 지시하거나, 또는 복수의 명령들이 병렬로 실행될 수 있는지를 지시한다. 이러한 아키텍처들은 대개 VLIW 프로세서들보다 더 많은 압축 코드를 가짐에도 불구하고, 프로세서 하드웨어에 복잡성을 더한다.
따라서, 특히 저-전압 내장형 프로세서들에서, 상기 기재된 VLIW 및 EPIC 접근법들과 관련된 문제점들을 피하는, 작은 코드 크기를 달성하기 위한 개선된 접근법에 대한 요구가 존재한다.
도식적인 실시예에서 본 발명은 합성 명령 형식의 명령들을 처리하는 프로세서를 제공한다. 더 상세하게는, 3개까지의 합성 명령들이 단지 64 비트만을 사용하여 지정될 수 있다. 합성 명령 형식은 작은 코드 크기를 달성하고, 디지털 신호 프로세서, 멀티미디어 프로세서 및 그래픽스 프로세서와 같은 저-전압, 고-성능 내장형 프로세서들에 적합하다.
본 발명의 하나의 관점에 따라, 프로세서는 메모리, 그것으로부터 검색된 명령들을 디코딩하기 위한 명령 디코더 및 디코딩된 명령들을 실행하기 위한 복수의 실행 장치들을 포함한다. 하나 이상의 명령들은 단일 명령이 각각 적어도 연산 코드 필드 및 함수 필드를 포함하는 하나 이상의 연산 필드들과 함께, 복수의 연산 필드들을 포함하는 합성 명령 형식이다. 연산 코드 필드 및 함수 필드는 하나 이상의 실행 장치들에 의해 실행되는 특정 연산을 함께 지정한다.
도식적인 실시예에서 예시 연산 코드들은 점프(jump), 상수(constant), 정수(integer), 로드(load), 저장(store), 특정 레지스터로의 카피(copy), 특정 레지스터로부터의 카피 및 단일 명령 복수 데이터를 포함한다. 이러한 연산 코드 및 함수 필드들은 디코딩과 실행을 용이하게 하기 위하여 고정된 크기 및 연산 필드 내의 위치를 가질 수 있다.
본 발명의 또 다른 관점에 따라, 합성 명령 형식의 명령들 중 선택된 하나는 복수의 연산 필드들 외에도, 종속 필드(dependency field)를 포함하는 적어도 하나의 추가적인 필드를 포함할 수 있다. 종속 필드는 복수의 연산 필드들에 설계된 합성 연산들이 순차적으로 또는 병렬적으로 실행되어야 하는지 여부를 지시하는 단일-비트를 포함할 수 있다.
도식적인 실시예에서, 합성 명령 형식의 명령들 중 선택된 하나는, 다른 형식들이 사용될 수 있음에도 불구하고, 3개의 21-비트 연산 필드들 및 1 비트의 종속 필드를 갖는 64-비트 명령을 포함할 수 있다.
또 다른 실시예로서, 합성 명령 형식의 명령들 중 선택된 하나는 이러한 명령의 둘 이상의 복수의 연산 필드들에 의해 지정되는 합성 연산을 포함할 수 있다.
합성 명령 형식의 명령들 중 선택된 하나의 하나 이상의 연산 필드들은 그것에 의하여 지정될 수 있는 특정 연산들에 대하여 제한될 수 있다. 예를 들어, 선택된 연산의 하나 이상의 연산 필드들은 단일 명령 복수 데이터 연산들로 제한될 수 있다.
이러한 도식적인 실시예의 합성 명령 형식은 상기 기재된 종래 VLIW 및 EPIC 접근법과 관련된 문제점들을 용이하게 극복한다.
도 1은 본 발명이 실행되는 전형적인 프로세서의 간략화된 블럭도이다.
도 2a는 본 발명의 도식적인 실시예에서 64-비트 합성 명령을 위한 합성 명령 포맷의 예를 도시한 것이다.
도 2b는 본 발명의 도식적인 실시예에서 도 2a 명령 형식의 21 비트 합성 연산들을 위한 연산 형식들의 다수의 상이한 실시예들을 도시한 것이다.
도 3은 도 2a에 도시된 형식을 갖는 단일 64-비트 합성 명령을 위한 어셈블리 언어 코드의 실시예를 도시한 것이다.
도 4는 도 2a 및 도 2b의 형식을 이용하여 구성된 명령들을 처리하기 위해 사용될 수 있는 전형적인 멀티스레드 프로세서의 더욱 상세한 도면을 도시한 것이다.
본 발명은 다수의 전형적인 프로세서 구성과 관련하여 설명될 것이다. 그러나, 본 발명은 도시된 특정한 배치들을 요하는 것이 아니라, 회로 처리와 관련된 다른 종류의 디지털 데이터 프로세서들을 사용하여 실행될 수도 있음을 이해해야 할 것이다. 본 발명은 일반적으로 작은 코드 크기와 고 성능 처리를 얻어낼 수 있 는 어떤 프로세서에서의 실행에 적합하다. 이러한 프로세서들은 실시예를 위하여, 프로그램 가능한 디지털 신호 프로세서들, 멀티미디어 프로ㅔ서들 및 그래픽스 프로세서들을 포함한다.
본 명세서에 기재된 선택된 프로세서는 하나 이상의 집적 회로들의 형식에서 실행될 수 있다.
본 발명의 도식적인 실시예에서, 합성 명령 형식은 세 개까지의 강력한 합성 연산들이 단 64 비트만을 사용하여 지정될 수 있도록 한다. 합성 명령 형식은 상기 기재된 디지털 신호 프로세서들, 멀티미디어 프로세서들 및 그래픽스 프로세서들과 같은 저-전압, 고-성능 내장형 프로세서들에 매우 적합하다.
도 1은 합성 명령 형식을 갖는 명령들이 처리되는 프로세서(100)를 도시한다. 프로세서(100)는 프로그램 메모리(102), 데이터 메모리(104), 명령 디코더(106), 레지스터 파일(108) 및 복수의 실행 장치들(110)을 포함한다. 실행 장치(110)는 개별적인 버스 라인들(112 및 114)을 통해 데이터 메모리(104) 및 레지스터 파일(108)과 통신한다.
상기 도면에서는 분리된 성분으로서 도시되었으나, 프로그램 메모리(102) 및 데이터 메모리(104)는 단일 메모리의 상이한 구획, 또는 다른 메모리 장치를 포함할 수 있다. 또한, 메모리들(102, 104) 중 하나 또는 둘 다의 적어도 일부는 대안적인 실시예들에서의 프로세서(100)와 무관할 수 있다.
일반적으로, 프로그램 메모리(102)는 프로세서(100)에 의해 실행되는 명령들을 저장하기 위해 사용되는 반면, 데이터 메모리(104)는 명령들에 의해 동작되는 데이터를 저장한다. 명령들은 명령들의 실행의 제어에 있어서 레지스터 파일(108) 및 실행 장치들(110)과 함께 동작하는 명령 디코더(106)에 의해 프로그램 메모리(102)로부터 꺼내진다.
프로세서(100)는 내장형 프로세서, 예를 들어, 휴대전화, 개인 정보 단말기(personal digital assistant) 또는 다른 휴대용 컴퓨팅 소자들과 관련된 어플리케이션-특정 집적 회로에 내장된 것, 또는 이러한 소자 내부에 내장된 것을 포함한다.
프로세서(100)의 멀티스레드 버전의 더욱 상세한 예는 도 4와 관련하여 아래에 설명될 것이다.
도 2a는 도시된 실시예에서 프로세서(100)에 사용된 합성 명령 형식을 도시한다. 합성 명령 형식은 연산 1, 연산 2 및 연산 3으로 표시되는 3개의 21-비트 합성 연산 필드들 및 선택적인 1-비트의 종속 필드, d를 포함한다. 본 실시예에서, 합성 명령 형식의 64 비트는 비트 0 내지 20을 포함하는 연산 3 필드, 비트 21 내지 41을 포함하는 연산 2 필드, 비트 42 내지 62를 포함하는 연산 1 필드 및 비트 63을 포함하는 종속 필드 d를 갖는 비트 1 내지 63으로 지정된다.
종속 필드 d는 연산 1, 연산 2 및 연산 3 필드들에 지정된 합성 연산들이 순차적으로 실행되어야 하는지 또는 동시에 실행되어야 하는지를 지시한다. 예를 들어, 하나의 가능한 단일-비트 필드 실행에 있어서, d가 1이라면, 그 후 연산들은 종속물들을 포함하고, 순차적으로 실행될 것이다. 만약 d가 0이라면, 3개의 모든 연산들은 동시에 실행될 수 있다. 다른 실행에 있어서, 다른 종류의 논리 지시자 들을 갖는 복수의 비트 종속 필드들이 사용될 수 있다.
다양한 대안적 형식들이 가능하다. 예를 들어, 21 비트 이상을 요구하는 어떤 합성 연산들은 두 개의 연산 필드들을 사용할 수 있다. 또한, 특정한 어플리케이션에 대한 요구를 수용하기 위하여 명령 길이, 연산 필드 길이, 필드 위치 및 다른 관점의 형식을 변경하는 것도 가능하다. 따라서, 명령은 64 비트 길이일 필요는 없으며, 더 길거나 더 짧을 수 있다. 또한, 3 개보다 더 많거나 더 적은 연산 필드들이 있을 수 있으며, 선택된 명령의 다양한 연산 필드들은 도 2a의 실시예에서와 같이 모두 동일한 길이를 갖기보다는 서로 상이한 길이를 가질 수 있다.
도 2a의 합성 명령 형식은 단지 64 비트만을 이용하여 지정되기 위하여 매우 강력한 합성 명령들을 허용한다. 이는 코드 크기를 줄이고, 프로세서 성능을 개선하며, 저-전압 디지털 신호 처리, 멀티미디어 및 그래픽스 처리 어플리케이션에 있어 중요하다.
합성 명령 형식은 또한 유연하고, 지정된 다양한 명령들을 허용한다. 그러나, 프로세서 설계의 복잡성을 감소시키기 위하여 각 연산 필드에서 허용된 합성 연산들의 종류에 제한이 가해질 수 있다. 하나의 가능한 실시예에 따라, 특정한 실행은 오직 점프 또는 상수 연산일 수 있는 연산 1, 오직 정수 또는 로드/저장 연산일 수 있는 연산 2 및 오직 SIMD 연산일 수 있는 연산 3을 제한할 수 있다.
도 2b는 합성 연산들을 위한 여러 가능한 형식들을 도시한다. 각 합성 연산 필드는 21 비트이지만, 이러한 연산들에 대한 형식은 연산의 종류에 기반하여 다를 수 있다.
이러한 실시예들에서 가장 왼편의 필드는 항상 5개 비트이고, 연산 코드와 대응하며, 실행될 연산의 종류를 지정한다(예컨대, 점프, 상수, 정수, 로드, 저장, ctsr, cfsr 또는 SIMD). 다양한 연산 코드 이름들의 의미는 아래의 도표 1에 요약된다.
가장 오른편의 필드, 함수는 이러한 실시예들에서 항상 4 비트이다. 여산 코드 필드 및 함수 필드는 함께 합성 연산에 의해 실행되는 특정 연산을 지정한다. 연산 코드 및 함수 필드는 연산의 디코딩 및 그것을 정확한 실행 장치로 전송하는 것을 용이하게 하기 위하여 고정된 크기 및 위치를 갖는다. 남아있는 연산 필드들은 연산 코드 및 함수에 기초하여 변화한다. 연산 필드들의 의미는 아래의 도표 2에 요약된다.
도표 1 및 도표 2에 보이는 바와 같이, 합성 연산들의 상세한 설명은 단지 실시예일 뿐이며, 어떤 방식으로든 본 발명의 범위를 한정하도록 해석되어서는 안 될 것이다.
도 3은 3개의 합성 연산들을 갖는 단일 64-비트 합성 명령에 대한 어셈블리 언어 코드의 실시예를 도시한다. 연산들 사이의 표시(∥)는 3개 합성 연산들 모두를 동시에 실행하는 것을 지시한다. 이러한 명령은 벡터 제곱합 계산의 내부 루프(inner loop)를 실행한다. 제1 합성 연산, lvu는 4개의 16-비트 벡터 구성을 이용하여 벡터 레지스터 vr0를 로딩하고, 어드레스 포인터 r3를 다음 구성으로 업데이트한다. vmulreds 연산은 4개의 부동 소수점(분수의) 16-비트 벡터 구성들을 vr0으로부터 읽어들이고, 각 구성을 단독으로 곱하고, 각각의 곱(product)을 포화시키 고(saturate), 각 가산 후의 포화 상태(saturation)를 이용하여 축적 레지스터(ac0)를 포함한 모두 4 개의 포화된 곱들을 가산하여, 상기 결과를 ac0에 다시 저장한다. 루프 연산은 루프 카운트 레지스터 lc0를 감소를 나타내고, 그것을 0과 비교하여, 그 결과가 0이 아니라면 어드레스 L0에 분기 명령을 실행한다.
연산 코드 명 연산 코드 의미
점프 연산 종류는 점프임. 점프 연산들은 무조건 점프, 조건 점프, 서브루틴 콜, 루프 및 인터럽트로부터의 복귀
상수 연산 종류는 상수임(직접 연장된). 이러한 연산 종류는 2개의 21-비트 합성 연산 필드들이 더 긴 직접 값과 함께 명령을 지정하기 위해 함께 사용되도록 한다.
정수 연산 종류는 정수. 정수 연산은 정수 계산, 논리적 및 데이터 조종 연산들을 포함한다.
로드 연산 종류는 로딩임. 로드 연산들은 메모리로부터 프로세서로 데이터를 로딩하기 위해 사용된다.
저장 연산 종류는 저장임. 저장 연산들은 프로세서로부터 메모리로 데이터를 저장하기 위해 사용된다.
Ctsr 연산 종류는 특별한 레지스터로의 복사임. Ctsr 연산은 데이터가 정수 레지스터로부터 특별한 레지스터로 복사되도록 한다.
Cfsr 연산 종류는 특별한 레지스터로부터의 복사임. Cfsr 연산은 데이터가 특별한 레지스터로부터 정수 레지스터로 복사되도록 한다.
SIMD 연산 종류는 단일 명령 복수 데이터(SIMD)임. SIMD 연산들은 복수의 벡터 구성들 상에 동시에 산수, 논리 및 데이터 조종 연산들을 수행한다. 벡터 구성들은 8, 16 또는 40-비트 부동소수점 숫자들 또는 32-비트 부동소수점 숫자들일 수 있다. 실제 문제로서, 상이한 연산코드들은 상이한 종류의 벡터 구성들을 지정하기 위해 사용될 수 있다.
도표1: 연산 코드 명들의 의미
연산 필드 명 연산 필드 의미
함수 선택된 연산 모드에 대하여 합성 연산에 의해 실행되는 함수
Imm12 12-비트 인접(상수) 피연산
Imm8 8-비트 인접(상수) 피연산
Imm4 4-비트 인접(상수)피연산
Cfa 3-비트 조건 플래그 소스 레지스터 식별자
Cft 3-비트 조건 플래그 타깃 레지스터 식별자
C 1-비트 보완 조건 식별자
ra, rb 4-비트 범용 소스 레지스터 식별자들
Rt 4-비트 범용 타깃 레지스터 식별자
srt1, srt2 4-비트 특수 목적 레지스터 식별자들
va, vb, vs 3-비트 벡터 소스 레지스터 식별자들
Vt 3-비트 벡터 타깃 레지스터 식별자들
wa, wb 3-비트 와이드 소스 레지스터 식별자들
Wt 3-비트 타깃 레지스터 식별자들
/ 비트들이 지정되지 않음.
도표 2: 연산 필드 명들의 의미
종래 명령 및 연산 형식들과 비교하여, 도시된 실시예의 형식들은 다양한 장점들을 갖는다.
첫째로, 그들은 3개까지의 합성 연산들로 구성된 강력한 합성 명령들을 64 비트만을 이용하여 지정되도록 한다. 이것은 프로세서 코드 크기, 전력 소모 및 성능을 개선하는데 도움이 된다.
두번째로, 이러한 합성 명령 형식은 지정되는 다양한 합성 연산들을 허용하기 때문에 유연하다.
세번째로, 순차적이거나 또는 동시에 실행되는 합성 명령들을 허용함으로써, 이러한 명령 형식은 코드가 크기 및 성능 둘 다에 있어서 최적화되도록 허용한다.
네번째로, 프로세서의 설계 복잡성을 감소시키기 위하여 각 연산에 허용된 연산의 종류에 제한이 가해질 수 있다. 상기 선택된 실시예에서, 특정 실행은, 연산 1이 오직 점프 또는 상수 연산일 수 있도록, 연산 2가 오직 정수 또는 로드/저장 연산일 수 있도록, 그리고 연산 3이 오직 SIMD 연산일 수 있도록 제한할 수 있다. 다수의 다른 종류의 제한들도 적용될 수 있다.
다섯번째로, 21 비트 이상을 요구하는 어떤 합성 연산들을 사용할 수 있고, 예를 들어, 두 개의 연산 필드에 있어서, 두번째 연산 필드는 연장된 직접 값(immediate value)을 제공한다.
본 발명은 멀티스레드 프로세서에서 실행될 수 있다. 본 발명이 실행될 수 있는 멀티스레드 프로세서의 더 상세한 실시예는 2002년 10월 11일자로 출원된, "Multithreaded Processor With Efficient Processing For Convergence Device Applications,"라는 제목의 미국 특허 제 10/269,372호에 기재되고, 이는 일반적으로 본원 발명과 함께 공동 양도되며, 본원 발명에 참조로서 통합된다. 이러한 멀티스레드 프로세서는 RISC-기반 제어 코드, DSP 코드, 자바 코드 및 네트워크 처리 코드를 실행하도록 구성될 수 있다. 그것은 단일 명령 복수 데이터(SIMD) 벡터 처리 장치, 차감 장치 및 명령 실행과 합성되는 긴 명령어(LIW)를 포함한다. 이러한 전형적인 멀티스레드 프로세서의 사용에 적합한 스레드 및 파이프라이닝(pipelining) 기술들의 실시예들은 2002년 10월 11일자로 출원되고 현재 미국 특허 제 6,842,848호로 등록된 "Method and Apparatus for Token Triggered Multithreading,"라는 제목의 미국 특허 제 10/269,245호에 기재되고, 이는 일반적으로 본원 발명과 함께 공동 양도되며, 본원 발명에 참조로서 통합된다.
물론, 본 발명은 다른 멀티스레드 프로세서들 또는 더욱 일반적인 다른 종류의 디지털 데이터 프로세서들에서 실행될 수 있다.
본 발명의 합성 명령 및 연산 형식들을 사용하는 또 다른 전형적인 멀티스레드 프로세서는 2004년 5월 7일자로 출원된 "Processor Reduction Unit for Accumulation of Multiple Operands With or Without Saturation,"라는 제목의 미국 특허 제 10/841,261호에 기재되고, 이는 일반적으로 본원 발명과 함께 공동 양도되며, 본원 발명에 참조로서 통합된다.
도 4는 차감 장치(402) 및 축적 레지스터 파일(406)을 통합시키는 멀티스레드 프로세서(400)의 실시예를 도시한다. 프로세서(400)는 일반적으로 미국 특허 제 10/269,372호에 기재된 바와 유사하나, 위에 인용한 미국 특허 제 10/841,261호에 기재된 바와 같이 구성된 차감 장치(402) 및 축적 레지스터 파일(406)을 통합시킨다.
멀티스레드 프로세서(400)는 여러 구성 가운데서, 멀티스레드 캐쉬(cache) 메모리(410), 멀티스레드 데이터 메모리(412), 명령 버퍼(414), 명령 디코더(416), 레지스터 파일(418) 및 메모리 관리 장치(MMU)(420)를 포함한다. 멀티스레드 캐쉬(410)는 복수의 스레드 캐쉬들(410-1, 410-2, ...410-N)를 포함하고, N은 일반적으로 멀티스레드 프로세서(400)에 의해 지원되는 스레드들의 갯수를 나타내며, 본 특정 실시예는 N=4인 경우로 주어진다. 본 발명이 속하는 기술 분야의 당업자들에게 자명하므로, 당연히 다른 N 값들이 사용될 수 있다.
각 스레드는 따라서 멀티스레드 캐쉬(410)의 그것과 관련된 대응하는 스레드 캐쉬를 갖는다. 유사하게, 데이터 메모리(412)는 도시된 바와 같이 데이터 메모리들(412-1, 412-2, ...412-N)로 표시된 N개의 별개의 데이터 메모리 인스턴스들을 포함한다.
멀티스레드 캐쉬(410)는 MMU(420)를 통해 프로세서(400) 외부의 주 메모리(미도시)와 상호 작용한다. 캐쉬(410)와 같이, MMU(420)는 프로세서에 의해 지원되는 N개 스레드들 각각에 대하여 개별적인 instance를 포함한다. MMU(420)는 주 메모리로부터의 적절한 명령들이 멀티스레드 캐쉬(410)로 로딩되도록 한다.
이러한 연결은 상기 도면에 도시되지 않았으나, 데이터 메모리(412)는 또한 일반적으로 위에 인용된 외부 주 메모리에 직접적으로 연결된다. 또한, 데이터 메 모리(412)에 관한 것은 데이터 버퍼(430)이다.
일반적으로 멀티스레드 캐쉬(410)는 멀티스레드 프로세서(400)에 의해 실행되는 명령들을 저장하기 위해 사용되는 반면, 데이터 메모리(412)는 이러한 명령들에 의해 동작되는 데이터를 저장한다. 명령들은 명령 디코더(416)에 의해 멀티스레드 캐쉬(410)로부터 꺼내지고, 디코딩된다. 명령의 종류에 따라, 명령 디코더(416)는 선택된 명령 또는 관련된 정보를, 아래 기재되는 바와 같이, 프로세서 내의 다양한 다른 장치들로 전송한다.
프로세서(400)는 브랜치 명령 큐(IQ)(440) 및 프로그램 카운터(PC) 레지스터(442)를 포함한다. 프로그램 카운터 레지스터들(442)은 각 스레드들에 대하여 하나의 인스턴스를 포함한다. 브랜치 명령 큐(440)는 명령 디코더(416)로부터 명령들을 수신하고, 프로그램 카운터 레지스터들(442)과 관련하여 가산기 블럭(444)으로 입력을 제공하며, 이는 예증적으로 캐리-전파 가산기(CPA: carry-propagate adder)를 포함한다. 구성들(440, 442 및 444)은 총괄적으로 프로세서(400)의 브랜치 장치를 포함한다. 도면에는 미도시되었지만, 보조 레지스터들 또한 프로세서(400)에 포함될 수 있다.
레지스터 파일(418)은 정수 결과들의 임시 저장을 제공한다. 명령 디코더(416)로부터 정수 명령 큐(IQ)(450)로 전송된 명령들은 디코딩되고, 적합한 하드웨어 스레드 장치가 각 스레드들에 대하여 개별적 인스턴스를 포함하도록 도시된 오프셋 장치(452)의 사용을 통해 선택된다. 오프셋 장치(452)는 독립적인 스레드 데이터가 오류가 발생하지 않도록 명시적(explicit) 비트들을 레지스터 파일 어드레 스들에 삽입한다. 선택된 스레드에 대하여, 이러한 명시적 비트들은 예컨대, 대응하는 스레드 식별자를 포함할 수 있다.
도면에 도시된 바와 같이, 레지스터 파일(418)은 입력 레지스터들(RA 및RB)에 결합되고, 그 출력들은 산술 논리 장치(ALU) 블럭(454)에 결합되며, 이는 가산기를 포함할 수 있다. 입력 레지스터들(RA 및 RB)은 명령 파이프라이닝의 실행에 사용된다. ALU 블럭(454)의 출력은 데이터 메모리(412)에 결합된다.
레지스터 파일(418), 정수 명령 큐(450), 오프셋 장치(452), 구성들(RA 및 RB) 및 ALU 블럭(454)은 총체적으로 전형적인 정수 장치를 포함한다.
프로세서(400)에서 실행 가능한 명령 종류들은 브랜치, 로드, 저장, 정수 및 벡터/SIMD 명령 종류들을 포함한다. 선택된 명령이 브랜치, 로드, 저장 또는 정수 여산을 지정하지 않는다면, 그것은 벡터/SIMD 명령이다. 다른 명령 종류들이 또한 그리고 대안적으로 사용될 수 있다. 정수 및 벡터/SIMD 명령 종류들은 보다 일반적으로 각각 정수 및 벡터 명령 종류로서 본 명세서에 참조되는 것의 실시예이다.
벡터 IQ(456)는 명령 디코더(416)로부터 전송된 벡터/SIMD 명령들을 수신한다. 각 스레드들에 대한 개별적인 인스턴스를 포함하도록 도시된, 대응하는 오프셋 장치(458)는 독립적인 스레드 데이터가 오류가 발생하지 않도록 적합한 비트들을 삽입한다.
프로세서(400)의 벡터 장치(460)는 N개의 다른 병렬적 구획들로 분할되며, 유사하게 나누어지는 벡터 파일(462)을 포함한다. 벡터 파일(462)은 VR00 내지 VR31로 표시되는 32개 레지스터들을 포함한다. 벡터 파일(462)은 전자가 벡터 /SIMD 명령 형태에서 동작한다는 것을 제외하고는 실질적으로 레지스터 파일(418)과 동일한 목적을 수행한다.
벡터 장치(460)는 예증적으로 벡터 명령 큐(456), 오프셋 장치(458), 벡터 파일(462) 및 그것과 관련된 산술 및 저장 구성들을 포함한다.
벡터 장치(460)의 연산은 다음과 같다. 단편적 또는 정수 데이터 종류 중 하나로 부호화된 벡터/SIMD 블럭은 벡터 파일(462)로부터 읽어지고, 아키텍처적으로(architecturely) 보이는 레지스터들(VRA, VRB, VRC)에 저장된다. 여기서부터, 이러한 흐름은 병렬로 동시 발생하는 벡터/SIMD 데이터의 곱셈을 수행하는 곱셈기(MPY: multiplier)를 통해 진행된다. 캐리-스킵(carry-skip) 가산기들(CSAs) 및 CPA들을 포함하는 가산 장치들은 추가적인 산술 연산을 수행할 수 있다. 예를 들어, 하나 이상의 CSA들은 벡터 레지스터 파일로부터 축적 값에 가산되기 위해 사용될 수 있고, 하나 이상의 CPA들은 곱셈 연산의 완성을 위한 마지막 가산을 수행하기 위해 사용될 수 있으며, 이는 본 발명이 속하는 기술 분야의 당업자에 의해 인식될 것이다. 계산 결과는 결과 레지스터들(464)에 저장되고, 입력 피연산으로서 차감 장치(402)로 제공된다. 생산된 합계 값이, 각 연산이 연속하여 실행될 경우, 획득되는 것과 동일한 방식으로 차감 장치(402)는 입력 피연산들을 합산한다. 감소된 합계값은 추가의 프로세싱을 위해 축적 레지스터 파일(406)에 저장된다.
벡터 내적을 실행할 때, MPY 블럭들은 동시에 4개의 곱셈을 실행하고, CSA 및 CPA 장치들은, 부가적인 연산들을 실행하거나, 또는 결과 레지스터들(464)에 저장을 위해 단순히 곱셈 결과를 건네주고, 차감 장치(402)는 축적 레지스터 파일 (406)에 저장된 축적 값과 함께 곱셈 결과들을 더한다. 차감 장치에 의해 발생된 결과는 그 후 다음 반복에서의 사용을 위해, 앞서 설명된 방식으로 축적 레지스터 파일에 저장된다.
본 실시예에서의 축적 레지스터 파일(406)은 ACC00 내지 ACC15로 표시되는 총 16개 축적 레지스터들을 포함한다.
멀티스레드 프로세서(400)는 2002년 10월 11일자로 출원된 "Method and Apparatus for Register File Port Reduction in a Multithreaded Processor,"라는 제목의 미국 특허 제 10/269,373호에서 설명된 바와 같은, 레지스터 파일로의 스레드-기반 액세스를 위한 기술들을 사용할 수 있으며, 이는 일반적으로 본원 발명과 함께 공동 양도되며, 본원 발명에 참조로서 통합된다.
멀티스레드 프로세서(400)는 위에 인용된 미국 특허 제 10/841,261호에서 설명된 바와 같이 벡터 내적 및 다른 종류의 병렬적 벡터 곱 및 감산 연산들을 실행에 사용되기 매우 적합하다.
도 1 및 4에 도시된 특정 프로세서 구성들은 단지 예증적인 실시예를 위하여 표시되었으나, 본 발명이 속하는 기술 분야의 당업자들에게 명백한 바, 명시적으로 도시되지 않은 추가적인 또는 대안적인 구성들이 포함될 수 있는 점은 다시 한번 언급되어야 할 것이다.
또한, 본 발명은 도 2a, 2b 및3에 도시된 특정 합성 명령 및 연산 형식들을 요구하지 않는다는 점을 유의해야 할 것이다. 본 발명은 다른 명령 및 연산 형식들을 갖는 매우 다양한 다른 종류의 명령들 및 연산들을 사용하여 실행될 수 있다.
따라서, 상기 기재된 본 발명의 실시예들은 단지 예증적인 것일 뿐, 첨부된 청구항들의 범위 내의 수많은 대안적인 실시예들이 본 발명이 속하는 분야의 당업자들에게 자명할 것이다.

Claims (20)

  1. 프로세서로서,
    메모리,
    상기 메모리로부터 검색된 명령들을 디코딩하도록 상기 메모리에 결합된 명령 디코더; 및
    상기 디코딩된 명령들을 실행하는 복수의 실행 장치
    를 포함하며,
    하나 이상의 상기 명령들은 단일 명령이 복수 연산 필드들을 포함하는 합성 명령 형식이고, 하나 이상의 상기 연산 필드들은 각각 적어도 연산 코드 필드 및 함수 필드를 포함하며, 상기 연산 코드 필드 및 상기 함수 필드는 하나 이상의 상기 실행 장치들에 의해 수행되는 특정 연산을 함께 지정하는, 프로세서.
  2. 제1항에 있어서,
    상기 연산 코드 및 함수 필드들은 연산 필드 내에서 고정된 크기 및 위치를 갖는 것을 특징으로 하는 프로세서.
  3. 제2항에 있어서,
    상기 연산 코드들은 점프, 상수, 정수, 로드, 저장, 특별 레지스터로의 복사, 특별 레지스터로부터의 복사 및 단일 명령 복수 데이터를 포함하는 것을 특징 으로 하는 프로세서.
  4. 제1항에 있어서,
    상기 합성 명령 형식의 상기 명령들 중 선택된 하나의 명령은 적어도 3개의 연산 필드들을 포함하는 것을 특징으로 하는 프로세서.
  5. 제1항에 있어서,
    상기 합성 명령 형식의 상기 명령들 중 선택된 하나의 명령은 복수 연산 필드들 외에도, 종속 필드를 포함하는 적어도 하나의 추가적인 필드를 포함하는 것을 특징으로 하는 프로세서.
  6. 제5항에 있어서,
    상기 종속 필드는 상기 복수 연산 필드들에 지정된 합성 연산들이 순차적으로 실행되어야 할지 또는 동시에 실행되어야 할지를 지시하는 단일-비트 필드를 포함하는 것을 특징으로 하는 프로세서.
  7. 제1항에 있어서,
    상기 합성 명령 형식의 상기 명령들 중 선택된 하나의 명령은 3개의 21-비트 연산 필드들 및 1-비트의 종속 필드를 갖는 64-비트 명령을 포함하는 것을 특징으로 하는 프로세서.
  8. 제1항에 있어서,
    상기 합성 명령 형식의 상기 명령들 중 선택된 하나의 명령은 상기 명령의 둘 이상의 복수 연산 필드들에 의해 지정되는 합성 연산을 포함하는 것을 특징으로 하는 프로세서.
  9. 제1항에 있어서,
    상기 합성 명령 형식의 상기 명령들 중 선택된 하나의 명령의 하나 이상의 상기 연산 필드들은 그에 의해 지정될 수 있는 특정 연산들에 대하여 제한되는 것을 특징으로 하는 프로세서.
  10. 제9항에 있어서,
    상기 합성 명령 형식의 상기 명령들 중 선택된 하나의 명령의 하나 이상의 상기 연산 필드들은 단일 명령 복수 데이터 연산들로 제한되는 것을 특징으로 하는 프로세서.
  11. 제1항에 있어서,
    상기 프로세서는 멀티스레드 프로세서를 포함하는 것을 특징으로 하는 프로세서.
  12. 제1항에 있어서,
    상기 프로세서는 집적 회로를 포함하는 것을 특징으로 하는 프로세서.
  13. 프로세서에 의해 실행되는 프로그램을 저장하는 기계-판독 가능 저장 매체를 포함하는 제품으로서,
    상기 프로세서는 메모리, 검색된 명령들의 디코딩을 위해 메모리와 결합된 명령 디코더 및 디코딩된 명령들의 실행을 위한 복수의 실행 장치들을 포함하며,
    하나 이상의 상기 명령들은 단일 명령이 복수 연산 필드들을 포함하는 합성 명령 형식이고, 하나 이상의 상기 연산 필드들은 각각 적어도 연산 코드 필드 및 함수 필드를 포함하며, 상기 연산 코드 필드 및 상기 함수 필드는 하나 이상의 상기 실행 장치들에 의해 실행되는 특정 연산을 함께 지정하는 것을 특징으로 하는 제품.
  14. 프로세서에 의한 실행되는 명령을 포함하는 데이터 구조로서,
    상기 프로세서는, 상기 명령의 저장을 위한 메모리, 상기 메모리로부터 검색된 상기 명령을 디코딩하도록 상기 메모리에 결합된 명령 디코더 및 상기 디코딩된 명령의 실행을 위한 하나 이상의 실행 장치들을 포함하고,
    상기 명령은 합성 명령 형식이고 복수의 연산 필드들을 포함하며, 하나 이상의 상기 연산 필드들은 각각 적어도 연산 코드 필드 및 함수 필드를 포함하고, 상기 연산 코드 필드 및 상기 함수 필드는 하나 이상의 상기 실행 장치들에 의해 실 행되는 특정 연산을 함께 지정하는 것을 특징으로 하는 데이터 구조.
  15. 제14항에 있어서,
    상기 연산 코드 및 함수 필드들은 상기 연산 필드들 내의 고정된 크기 및 위치를 갖는 것을 특징으로 하는 데이터 구조.
  16. 제15항에 있어서,
    상기 연산 코드들은 점프, 상수, 정수, 로드, 저장, 특별 레지스터로의 복사, 특별 레지스터로부터의 복사 및 단일 명령 복수 데이터를 포함하는 것을 특징으로 하는 데이터 구조.
  17. 제14항에 있어서,
    상기 합성 명령 형식의 상기 명령은 적어도 3개의 연산 필드들을 포함하는 것을 특징으로 하는 데이터 구조.
  18. 제14항에 있어서,
    상기 합성 명령 형식의 상기 명령은 복수 연산 필드들 외에도, 종속 필드를 포함하는 적어도 하나의 추가적인 필드를 포함하는 것을 특징으로 하는 데이터 구조.
  19. 제18항에 있어서,
    상기 종속 필드는 상기 복수 연산 필드들에 지정된 합성 연산들이 순차적으로 실행되어야 할지 또는 동시에 실행되어야 할지를 지시하는 단일-비트 필드를 포함하는 것을 특징으로 하는 데이터 구조.
  20. 제14항에 있어서,
    상기 합성 명령 형식의 상기 명령은 3개의 21-비트 연산 필드들 및 1-비트의 종속 필드를 갖는 64-비트 명령을 포함하는 것을 특징으로 하는 데이터 구조.
KR1020067023332A 2004-04-07 2005-04-07 합성 명령 및 연산 포맷들을 갖는 프로세서 KR101171403B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US60/560,200 2004-04-07
US11/096,767 2005-04-01
PCT/US2005/011613 WO2005099383A2 (en) 2004-04-07 2005-04-07 Processor having compound instruction and operation formats

Publications (2)

Publication Number Publication Date
KR20070018066A true KR20070018066A (ko) 2007-02-13
KR101171403B1 KR101171403B1 (ko) 2012-08-08

Family

ID=43651623

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067023332A KR101171403B1 (ko) 2004-04-07 2005-04-07 합성 명령 및 연산 포맷들을 갖는 프로세서

Country Status (1)

Country Link
KR (1) KR101171403B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100888675B1 (ko) * 2007-02-15 2009-03-13 고려대학교 산학협력단 임베디드 코어에서 멀티 쓰레드 실행을 위해 확장된프로세서 및 임베디드 코어에서 멀티 쓰레드 실행 방법
KR20150051116A (ko) * 2014-02-04 2015-05-11 삼성전자주식회사 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
KR101584535B1 (ko) 2015-02-05 2016-01-15 한국원자력연구원 가속기 고주파 시스템 및 그 제어 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467387B2 (en) 2002-05-31 2008-12-16 International Business Machines Corporation Method for off-loading user queries to a task manager
US7269721B2 (en) 2002-08-13 2007-09-11 Intel Corporation Method, system, and apparatus for booting with remote configuration data

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100888675B1 (ko) * 2007-02-15 2009-03-13 고려대학교 산학협력단 임베디드 코어에서 멀티 쓰레드 실행을 위해 확장된프로세서 및 임베디드 코어에서 멀티 쓰레드 실행 방법
KR20150051116A (ko) * 2014-02-04 2015-05-11 삼성전자주식회사 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
KR101584535B1 (ko) 2015-02-05 2016-01-15 한국원자력연구원 가속기 고주파 시스템 및 그 제어 방법

Also Published As

Publication number Publication date
KR101171403B1 (ko) 2012-08-08

Similar Documents

Publication Publication Date Title
US7475222B2 (en) Multi-threaded processor having compound instruction and operation formats
KR102270020B1 (ko) 디지털 신호 프로세싱 명령들을 사용하여 가변 길이 벡터들에 대해 연산하도록 구성된 벡터 프로세서
KR101236396B1 (ko) 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
US7797363B2 (en) Processor having parallel vector multiply and reduce operations with sequential semantics
US6304963B1 (en) Handling exceptions occuring during processing of vector instructions
US20040193837A1 (en) CPU datapaths and local memory that executes either vector or superscalar instructions
JP2006529043A (ja) 飽和あり、または飽和なしで、オペランドの積和を実行するプロセッサ簡約ユニット
EP1261914B1 (en) Processing architecture having an array bounds check capability
US20040193838A1 (en) Vector instructions composed from scalar instructions
WO2015089314A1 (en) Computer processor employing operand data with associated meta-data
KR101171403B1 (ko) 합성 명령 및 연산 포맷들을 갖는 프로세서
US5764939A (en) RISC processor having coprocessor for executing circular mask instruction
US6988121B1 (en) Efficient implementation of multiprecision arithmetic
US20040078553A1 (en) Pipelined processing
Grow et al. Evaluation of the Pentium 4 for imaging applications
Owen et al. A uniform analysis method for DSP architectures and instruction sets with a comprehensive example
Brandstätter et al. VFSMC-a core for cycle accurate multithreaded processing in hard real-time Systems-on-Chip

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 8