KR100806408B1 - 프로세서에 사용되는 로드/이동 및 복제 명령어들 - Google Patents

프로세서에 사용되는 로드/이동 및 복제 명령어들 Download PDF

Info

Publication number
KR100806408B1
KR100806408B1 KR1020047009869A KR20047009869A KR100806408B1 KR 100806408 B1 KR100806408 B1 KR 100806408B1 KR 1020047009869 A KR1020047009869 A KR 1020047009869A KR 20047009869 A KR20047009869 A KR 20047009869A KR 100806408 B1 KR100806408 B1 KR 100806408B1
Authority
KR
South Korea
Prior art keywords
bits
source
destination register
register
delete delete
Prior art date
Application number
KR1020047009869A
Other languages
English (en)
Other versions
KR20040068333A (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 KR20040068333A publication Critical patent/KR20040068333A/ko
Application granted granted Critical
Publication of KR100806408B1 publication Critical patent/KR100806408B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3001Arithmetic instructions
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

본 발명에 따른 방법은, 프로세서에서, 소스의 비트들중 제1 부분을 목적지 레지스터의 제1 부분으로 로딩/이동시키고, 비트들중 제1 부분을 목적지 레지스터의 후속 부분에 복제하는 것을 포함한다.
소스, 비트, 목적지 레지스터, 복제, 이동

Description

프로세서에 사용되는 로드/이동 및 복제 명령어들{LOAD/MOVE AND DUPLICATE INSTRUCTIONS FOR PROCESSOR}
본 발명은 프로세서에 사용되는 로드/이동 및 복제 명령어들에 관한 것이다.
시스템 아키텍쳐는 운영 체계를 지원하도록 구비된 메카니즘들 및 프로세서의 동작 모드를 기술하고 시스템 지향 레지스터들 및 데이터 구조들 및 시스템 지향 명령어들을 포함한다. 또한, 시스템 아키텍쳐는 실 주소(real address)와 보호된 모드들 간의 전환을 위해 필요한 메카니즘들을 제공하기도 한다.
SIMD(single-instruction, multiple-data) 기술을 시스템 아키텍쳐에 도입함으로써, 64비트 레지스터들에 포함된 팩형 정수 데이터(packed integer data)에 대한 병렬 연산을 제공할 수 있다. SIMD는 예를 들어, 진보된 매체, 이미지 처리 및 데이터 압축 어플리케이션들의 프로세서에 대해 개선된 성능을 제공한다.
도 1은 프로세서의 블록도.
도 2는 실행 환경의 블록도.
도 3은 바이트 순서 기초 데이터 유형(byte order fundamental data type)의 도면.
도 4는 부동 소수점 포맷(floating point format)을 나타낸 도면.
도 5는 다양한 SIMD 익스텐션(extensions), 데이터 유형들 및 데이터 유형들이 레지스터들에 팩(pack)되는 방법을 요약하는 표를 나타내는 도면.
도 1에는 프로세서(10)가 도시되어 있다. 프로세서(10)는 쓰리 웨이 수퍼 스칼라, 파이프라인 아키텍쳐(three way super scaler, pipelined architecture)이다. 병렬 처리 기술을 사용하면, 프로세서(10)는 평균적으로 클럭 사이클 당 3개 명령어들을 디코딩, 디스패치(dispatch) 및 (폐기(retire))하는 것의 실행을 완료할 수 있다. 이러한 레벨의 명령어 처리량을 취급하기 위해, 프로세서(10)는, 비순차적 명령어(out of order instruction) 실행을 지원하는 디커플된, 12 스테이지 파이프라인(decoupled, 12 stage pipeline)을 사용한다. 프로세서(10)의 마이크로 아키텍쳐 파이프라인은 4개의 부분들, 즉 제1 레벨 캐시(12)와 제2 레벨 캐시(14), 프론트 엔드(16), 비순차적 실행 코어(18), 및 폐기부(retire section)(20)로 분할된다. 명령어들 및 데이터는 시스템 버스(24)와 인터페이스하는 버스 인터페이스 유닛(22)을 통해 이러한 유닛들로 공급된다. 프론트 엔드(16)는, 매우 높은 실행 대역폭을 가지고 1/2 클럭 사이클 대기시간으로 기본 정수 동작(basic integer operation)을 실행할 수 있는 비순차적 코어(18)에 프로그램 순서로 명령어들을 공급한다. 프론트 엔드(16)는 명령어들을 마이크로-옵스(micro-ops)(μ-ops)로 불리우는 단일 동작으로 명령어들을 페치(fetch)하고 디코딩한다. 프론트 엔드(16)는, 원래의 프로그램 순서로, 사이클 당 다수의 마이크로-옵스를 비순차적 코어(18)에 발행할 수 있다. 프론트 엔드(16)는 여러개의 기본 기능들을 실행한다. 예를 들어, 프론트 엔드(16)는 실행될 가능성이 있는 프리페치(prefetch) 명령어들, 아직 프리페치되지 않은 페치 명령어들, 디코드 명령어들을 미세 동작들로 실행하고, 복합 명령어들에 대한 마이크로 코드 및 특수 목적 코드를 생성하고, 실행 트레이스 캐시(execution trace cache)(26)로부터 디코딩된 명령어들을 전달하고, 분기 예측 유닛(branch prediction unit)(28)의 진보된 알고리즘들을 사용하여 분기들을 예측한다.
프로세서(10)의 프론트 엔드(16)는 고속, 파이라인 마이크로프로세서들의 소정의 공통된 문제들을 다루도록 설계된다. 이러한 문제들중 2가지는, 예를 들면, 지연들의 주요 소스들에 관한 것이다. 이들은, 타켓으로부터 페치된 명령어들을 디코딩하는 시간 및 분기들 또는 캐시 라인들 중앙의 분기 타겟으로 인한 낭비된 디코드 대역폭이다.
실행 트레이스 캐시(26)는 디코딩된 명령어들을 저장함으로써 이러한 문제들 모두를 다룬다. 명령어들은 번역 엔진(도시 안됨)에 의해 페치되고 디코딩되며, 트레이스(traces)로 불리우는 마이크로-옵스의 시퀀스들로 만들어진다. 마이크로-옵스의 이러한 트레이스들은 트레이스 캐시(26) 내에 저장된다. 분기중 가장 가능성있는 타겟으로부터의 명령어들이 명령어 어드레스들의 연속성에 대한 고려없이 그 분기에 곧바로 후속한다. 트레이스가 만들어지면, 트레이스 캐시(26)는 해당 트레이스를 후속하는 명령어를 검색한다. 그 명령어가 기존 트레이스 내의 제1 명령어로 나타나면, 메모리 계층으로부터의 명령어들의 페치 및 디코딩(30)이 중지하 고 트레이스 캐시(26)는 명령어들의 새로운 소스가 된다.
실행 트레이스 캐시(18) 및 번역 엔진(도시 안됨)은 협력적인 분기 예측 하드웨어를 가진다. 분기 타겟들은, BTBS(Branch Target Buffers)(28)을 사용하여 그들의 선형 어드레스들에 기초하여 예측되고 가능한 빨리 페치된다. 분기 타겟들이 트레이스 캐시(26)에 실제 캐시되어 있으면, 분기 타겟들은 트레이스 캐시(26)로부터 페치되고; 그렇지 않으면, 분기 타겟들은 메모리 계층으로부터 페치된다. 번역 엔진의 분기 예측 정보는 가장 가능성 있는 경로들을 따라 트레이스들을 형성하도록 사용된다.
데이터 또는 경쟁형 실행 자원(contended execution resource)을 대기하면서 하나의 마이크로-옵이 지연된다면, 프로그램 순서에서 나중에 있는 다른 마이크로-옵스가 진행할 수 있도록, 코어(18)는 프로세서(10)가 명령어들을 재순서화할 수 있게끔 명령어들을 비순차적으로 실행한다. 프로세서(10)는 T-옵스(T-ops)의 흐름을 수월하게 하기 위해 수개의 버퍼들을 사용한다. 이는, 파이프라인의 한 부분이 지연되는 경우, 버퍼 내에서 미리 대기중이던 마이크로-옵스를 실행하거나 또는 다른 동작들을 병렬로 실행함으로써 그러한 지연을 커버할 수 있다는 것을 의미한다.
코어(18)는 병렬 실행을 용이하게 하도록 설계된다. 코어(18)는 사이클 당 6개의 마이크로-옵스까지 디스패치할 수 있고; 주의할 점은, 이는 트레이스 캐시(26) 및 폐기(retirement)(20) 마이크로-옵 대역폭을 초과한다는 것이다. 대부분의 파이프라인들은 매 사이클마다 새로운 마이크로-옵의 실행을 개시하여 각 파이프라인에 대해 수개의 명령어들이 임의의 시간에 처리될 수 있다. 다수의 ALU(arithmetic logical unit) 명령어들은 사이클 당 2개를 개시할 수 있고, 많은 부동 소수점 명령어들은 2 사이클마다 1개를 시작할 수 있다. 최종적으로, 마이크로-옵스는, 그들의 데이터 입력들이 준비되고 리소스들이 가용상태에 있자 마자 비순차적으로 실행을 시작할 수 있다.
폐기부(20)는 실행 코어(18)로부터 실행된 마이크로-옵스의 결과들을 수신하고 원래의 프로그램 순서에 따라 적당한 아키텍쳐 상태가 갱신되도록 그 결과들을 처리한다. 의미상으로 올바른 실행에 있어서, 명령어들의 결과들은 폐기되기 전의 원래의 프로그램 순서로 처리된다. 명령어들이 폐기되었을 때 예외(exception)가 발생할 수 있다. 따라서, 예외는 불확실하게 발생할 수 없다. 그들은 올바른 순서로 발생하고, 프로세서(10)는 실행 후 올바르게 재시작될 수 있다.
마이크로-옵이 완료되고 그 결과를 목적지에 기입할 때, 마이크로-옵은 폐기된다. 사이클 당 3개의 마이크로-옵까지 폐기될 수 있다. 폐기부(20) 내의 ROB(ReOrder Buffer)(도시 안됨)는 완료된 마이크로-옵스들을 버퍼링하고, 아키텍쳐 상태를 순서대로 갱신하고 예외의 순서화를 관리하는 프로세서(10) 내의 유닛이다.
또한, 폐기부(20)는 분기들을 추적하고 갱신된 분기 타겟 정보를 BTB(28)에 송신하여 분기 이력을 갱신한다. 이러한 방식으로, 더 이상 필요없는 트레이스들은 트레이스 캐시(26)로부터 삭제되고 새로운 분기 경로들이 갱신된 분기 이력 정보에 기초하여 페치될 수 있다.
도 2에는 실행 환경(50)이 나타나 있다. (도 1의) 프로세서(10)에서 작동하 는 임의의 프로그램 또는 태스크에 리소스 세트가 제공되어 명령어들을 실행하고 코드, 데이터 및 상태 정보를 저장한다. 이러한 리소스들은 프로세서(10)에 대한 실행 환경(50)을 구성한다. 어플리케이션 프로그램들 및 운영 체계 또는 프로세서(10) 상에서의 작동가능한 실행(executive)이 실행 환경(50)을 함께 사용한다. 실행 환경(50)은 기본 프로그램 실행 레지스터들(52), 어드레스 공간(54), FPU(Floating Point Unit) 레지스터들(56), MMX(multimedia extension) 레지스터들(58), 및 SIMD 익스텐션(SSE 및 SSE2) 레지스터들(60)을 포함한다.
프로세서(10) 상에서 작동하는 임의의 태스크 또는 프로그램은 4기가바이트(232 바이트)까지의 선형 어드레스 베이스(54) 및 64기가바이트(236 바이트)까지의 물리적 어드레스 공간을 어드레싱할 수 있다. 어드레스 공간(54)은 플랫(flat)하거나 또는 세그먼트(segment)될 수 있다. 물리적 어드레스 확장 메카니즘을 사용하면, 236-1의 물리적 어드레스 공간이 어드레싱될 수 있다.
기본 프로그램 실행 레지스터들(52)은 8개의 범용 레지스터들(62), 6개의 세그먼트 레지스터들(64), EFLAGS 레지스터(66), 및 EIP(명령어 지시자) 레지스터(68)를 포함한다. 기본 프로그램 실행 레지스터들(52)은 범용 명령어들 세트를 실행하기 위한 기본 실행 환경을 제공한다. 이러한 명령어들은 바이트, 워드 및 더블워드 정수(doubleword integers)에 대해 기본 정수 연산을 실행하고, 프로그램 흐름 제어를 처리하고, 비트 및 바이트 세기(strengths)에 대해 동작하고, 메모리를 어드레스한다.
FPU 레지스터들(56)은 8개의 FPU 데이터 레지스터들(70), 및 FPU 제어 레지스터(72), 상태 레지스터(74), FPU 명령어 지시자 레지스터(76), FPU 피연산자(operand)(데이터) 지시자 레지스터(78), 및 FPU 태그 레지스터(80) 및 FPU 연산 부호(op code) 레지스터(82)를 포함한다. FPU 레지스터들(56)은, 단일 정밀도, 배 정밀도(double precision), 배 확장된 정밀도 부동 소수점 값들, 워드- , 더블워드, 및 쿼드워드(quadword) 정수들, 및 BCD(binary coded decimal) 값들에 대해 동작하기 위한 실행 환경을 제공한다.
8개 MMX 레지스터들(58)은 64비트 팩형 바이트(packed byte), 워드, 및 더블워드 정수들에 대한 SIMD 동작들의 실행을 지원한다.
SIMD 익스텐션(SSE 및 SSE2) 레지스터들(60)은 8개의 XMM(extended multimedia) 데이터 레지스터들(84) 및 MXCSR 레지스터(86)를 포함한다. SIMD 익스텐션(SSE 및 SSE2) 레지스터들(60)은 128비트 팩형 단일 정밀도 및 배 정밀도 부동 소수점 값들 및 128비트 팩형 바이트, 워드, 더블워드 및 쿼드워드 정수들에 대한 SIMD 동작들의 실행을 지원한다.
스택(도시 안됨)은 절차(procedure) 또는 서브루틴 호출들 및 절차들 또는 서브루틴들 사이의 파라미터들의 전달을 지원한다.
범용 레지스터들(62)이 피연산자들 및 지시자들을 저장하는데 가용하다. 세그먼트 레지스터들(64)은 6개 세그먼트 선택기까지 가질 수 있다. EFLAGS(프로그램 상태 및 제어) 레지스터들(66)은 실행되고 있는 프로그램의 상태를 보고하고 프로세서의 제한된 (어플리케이션 프로그램 레벨) 제어를 허용한다. EIP(명령어 지 시자) 레지스터들(68)은 실행될 다음 명령어에 대한 32비트 지시자를 포함한다.
32 비트 범용 레지스터들(62)이 제공되어 논리적 및 산술적 동작들에 대한 피연산자들, 어드레스 계산에 대한 피연산자들, 및 메모리 지시자들을 보유한다. 세그먼트 레지스터들(64)은 16비트 세그먼트 선택기들을 보유한다. 세그먼트 선택기는 메모리 내의 세그먼트를 식별하는 특수한 지시자이다. 메모리 내의 특정 세그먼트를 액세스하기 위해, 해당 세그먼트에 대한 세그먼트 선택기는 적절한 세그먼트 레지스터(64) 내에 존재하여야 한다.
어플리케이션 코드를 기입할 때, 프로그래머들은 일반적으로 어셈블러 지정어들(assembler directives) 및 심볼들로 세그먼트 선택기들을 생성한다. 그 후, 어셈블러 및 기타 툴들은 이러한 지정어들 및 심볼들과 연관된 실제 세그먼트 선택기 값들을 생성한다. 시스템 코드를 기입하면, 프로그래머들은 세그먼트 선택기들을 직접 생성할 필요가 있다.
세그먼트 레지스터들(64)이 사용되는 방법은, 운영 체계 또는 실행(executive)이 사용되고 있는 메모리 관리 모델의 유형에 의존한다. 플랫(세그먼트되지 않은) 메모리 모델을 사용할 경우, 세그먼트 레지스터들(64)은 중첩하는 세그먼트들을 지시하는 세그먼트 선택기들로 로딩되고, 각각은 선형 어드레스 공간 상의 어드레스 제로에서 시작한다. 이러한 중첩하는 세그먼트들은 그 후 프로그램을 위한 선형 어드레스 공간을 포함한다. 전형적으로, 2개의 중첩하는 세그먼트들이: 코드용으로 하나 및 데이터 및 스택들을 위해 다른 하나로 정의된다. 세그먼트 레지스터들(64)의 CS 세그먼트 레지스터(도시 안됨)는 코드 세그먼트를 지시하고 다른 모든 세그먼트 레지스터들은 데이터 및 스택 세그먼트를 지시한다.
세그먼트된 메모리 모델을 사용하는 경우, 각 세그먼트 레지스터(64)는 서로 다른 세그먼트 선택기로 일반적으로 로딩되어 각 세그먼트 레지스터(64)가 선형 어드레스 공간 내의 서로 다른 세그먼트를 지시한다. 따라서, 임의의 시간에서, 프로그램은 선형 어드레스 공간 내의 6개 세그먼트까지 액세스할 수 있다. 세그먼트 레지스터들(64)중 하나에 의해 지시되지 않은 세그먼트를 액세스하기 위해, 프로그램은 먼저 액세스될 세그먼트 선택기를 세그먼트 레지스터(64)로 로딩한다.
32 비트 EFLAGS 레지스터(66)는 상태 플래그들의 그룹, 제어 플래그, 및 시스템 플래그들의 그룹을 포함한다. EFLAGS 레지스터(66) 내의 소정의 플래그들은 특수 목적 명령어들을 사용하여 직접 수정될 수 있다. 전체 레지스터(66)가 직접 검사되거나 또는 수정되게 하는 명령어들은 존재하지 않는다. 그러나, 절차 스택들 또는 범용 레지스터에 대해 플래그들의 그룹들을 이동하는데 다음 명령어들이 사용될 수 있다:LAHF, SAHF, push-F, push-FD, pop-F, 및 pop-ED. EFLAGS 레지스터(66)의 내용이 절차 스택 또는 범용 레지스터로 전사된 후, 프로세서(10) 비트 조작 명령어들(manipulation instructions)을 사용하여 플래그들이 검사되고 수정될 수 있다.
태스크를 일시정지(suspend)하는 경우, 프로세서(10)는, 일시정지하는 태스크에 대해 TSS(task state segement)(도시 안됨) 내의 EFLAGS 레지스터(66)의 상태를 자동적으로 저장한다. 새로운 태스크에 결합되는 경우, 프로세서(10)는 새로운 태스크 프로그램 상태 레지스터(PSS, 도시 안됨)로부터의 데이터로 EFLAGS 레지스 터(66)를 로딩한다.
인터럽트 또는 예외 처리 절차(exception handler procedure)를 호출하는 경우, 프로세서(10)는 절차 스택에 EFLAGS 레지스터(66)의 상태를 자동적으로 저장한다. 인터럽트 또는 예외가 태스크 스위치로 처리되는 경우, EFLAGS 레지스터(66)의 상태는 일시정지되고 있는 태스크에 대한 TSS에 저장된다.
프로세서(10)에 사용되는 기본적인 데이터 유형들은 바이트, 워드, 더블워드, 쿼드워드 및 더블 쿼드워드들이다. 바이트는 8비트이고 워드는 2바이트(16비트)이고, 더블워드는 4바이트(32비트)이고, 쿼드워드는 8바이트(64비트)이고 더블 쿼드워드는 16바이트(128비트)이다.
도 3에는, 메모리 내의 피연산자들로서 참조될 때 기본적인 데이터 유형들 각각의 바이트 순서가 나타나 있다. 각 데이터 유형의 로우 바이트(비트들 0-7)은 메모리 내의 가장 낮은 어드레스를 차지하고 그 어드레스는 또한 피연산자의 어드레스이다.
워드들, 더블워드들 및 쿼드워드들은 메모리 내의 자연적인 경계들 상에 정렬(align)될 필요는 없다. 워드들, 더블워드들 및 쿼드워드들에 대한 자연적 경계들은 각각 짝수 번호의 어드레스들, 4에 의해 정확히(evenly) 나누어질 수 있는 어드레스들, 및 8에 의해 정확히 나누어질 수 있는 어드레스들이다. 그러나, 프로그램들의 성능을 개선하기 위해, 데이터 구조들(특히 스택들)은 가능할때마다 자연적 경계들 상에 정렬되어야 한다. 이렇게 하는 이유는, 프로세서(10)는 비정렬된 메모리(unaligned memory)를 액세스하기 위해서는 2번의 메모리 액세스가 필요한 반 면, 정렬된 액세스들은 한번의 메모리 액세스를 필요로 하기 때문이다. 4바이트 경계를 크로스하는 워드 또는 더블워드 피연산자 또는 8바이트 경계를 크로스하는 쿼드워드 피연산자는 정렬되지 않은 것으로 고려되고 그것을 액세스하기 위해 2개의 개별적인 메모리 버스 사이클을 필요로 한다. 홀수 어드레스에서 시작하나 워드 경계를 크로스하지 않는 워드는 정렬된 것으로 고려되고 한번의 버스 사이클로 액세스될 수 있다.
더블 쿼드워드들에 대해 동작하는 소정의 명령어들은 자연적 경계 상에 메모리 피연산자들이 정렬될 것을 요구한다. 이러한 명령어들은 비정렬된 피연산자가 특정되면 일반 보호 예외(general protection exception)(#GP)를 생성한다. 더블 쿼드워드에 대한 자연적 경계는 16으로 정확히 나누어질 수 있는 임의의 어드레스이다. 더블 쿼드워드에 대해 동작하는 기타 명령어들은 일반 보호 예외를 발생시키지 않고 비정렬된 액세스를 허용하나, 메모리로부터의 비정렬된 데이터를 액세스하는데에 추가의 메모리 버스 사이클이 필요하다.
바이트들, 워드들, 및 더블워드들이 프로세서(10)의 기본적인 데이터 유형들이라도, 소정의 명령어들은 이러한 유형의 데이터의 추가 해석을 지원하여 동작들이 수치 데이터 유형들에 대해 수행될 수 있도록 한다. 예를 들면, 프로세서(10)는 2개 유형의 정수들: 부호화되지 않은 정수(unsigned integer) 및 부호화된 정수(signed integer)를 정의한다. 비부호화된 정수들은 0 내지 선택된 피연산자 크기내에서 인코딩될 수 있는 최대 양수의 범위에 있는 일반적인 이진수들이다. 부호화된 정수들은 양의 정수값 및 음의 정수값 모두를 나타내는데 사용될 수 있는 2개의 보수(complement) 이진값들이다.
프로세서(10)는 3개의 부동 소수점 데이터 유형들: 단일 정밀도 부동 소수점, 배 정밀도 부동 소수점, 및 배 확장된 정밀도 부동 소수점을 정의하고 이들에 대해 동작한다. 이러한 데이터 유형들에 대한 데이터 포맷들은 이진 부동 소수점 연산에 대한 IEEE 표준 754에 규정된 포맷과 직접적으로 대응한다.
지시자들은 메모리 내의 위치들의 어드레스들이다. 프로세서(10)는 2개 유형의 지시자들: 근거리 지시자(near pointer)(32비트) 및 원거리 지시자(far pointer)(48비트)를 규정한다. 근거리 지시자는 세그먼트 내의 (유효 어드레스로도 불리우는) 32비트 오프셋이다. 근거리 지시자들은, 액세스되고 있는 세그먼트의 식별이 암시될 때 세그먼트된 모델 내의 참조들 또는 플랫 메모리 모델 내의 모든 메모리 참조들에 대해 사용된다. 원거리 지시자는 16비트 세그먼트 선택기 및 32비트 오프셋으로 구성된 48비트 논리적 어드레스이다. 원거리 지시자들은 액세스되고 있는 세그먼트의 식별이 명시적으로 규정되어야 하는 세그먼트된 메모리 모델 및 메모리 참조들에 대해 사용된다.
비트 필드는 비트들의 연속적인 시퀀스이다. 메모리 내의 임의의 바이트의 임의의 비트 위치에서 시작할 수 있고 32비트까지 포함할 수 있다. 스트링들은 비트들, 바이트들, 워드들 또는 더블워드들의 연속적인 시퀀스들이다. 비트 스트링은 임의의 바이트의 임의의 비트 위치에서 시작할 수 있고 232-1비트까지 포함할 수 있다. 바이트 스트링은 바이트들, 워드들 또는 더블워드들을 포함할 수 있고, 0에 서 232-1바이트(4기가바이트) 범위일 수 있다.
BCD 정수들은 0에서 9까지 범위의 유효값들을 갖는 비부호화된 4비트 정수들이다. 프로세서(10)는 하나 이상의 범용 레지스터들(62) 또는 하나 이상의 FPU 레지스터들(56) 내에 위치한 BCD 정수들에 대한 동작들을 정의한다.
도 4에는, 실수들이 FPU(56) 부동 소수점 레지스터들(70) 내의 부동 소수점 포맷(100)으로 표현된다. 부동 소수점 포맷은 3개 부분들, 즉 부호(102), 유효숫자(significand)(104) 및 지수(106)를 포함한다. 부호(102)는 숫자가 양(0) 또는 음(1)인지 여부를 나타내는 이진값이다. 유효숫자(104)는 2개 부분들: (J비트로도 불리우는) 1 비트 이진 정수(108)와 이진 소수(binary fraction)(110)를 가진다. 정수-비트(108)는 종종 표시되지 않지만, 대신 암시적인 값이다. 지수(106)는 유효숫자(104)가 곱해지는 베이스 2의 거듭제곱을 나타내는 이진 정수이다.
프로세서(10)는 SIMD 동작들에 사용되는 64비트 및 128비트 팩형 데이터 유형들의 세트를 정의하고 이들에 대해 동작한다. 이러한 데이터 유형들은 팩형 정수와 팩형 부동 소수점 동작들에 사용되는, 기본적인 데이터 유형들(팩형 바이트들, 워드들, 더블워드들 및 쿼드워드들) 및 기본적인 데이터 유형들의 수치적 해석들을 포함한다.
64비트 SIMD 데이타 유형들은 64비트 MMX 레지스터들(58)에서 주로 동작한다. 기본적인 64비트 팩형 데이터 유형들은 팩형 바이트들, 팩형 워드들 및 팩형 더블워드들이다. MMX 레지스터들(58)에서 이러한 데이타 유형들에 대해 수치적 SIMD 동작들이 수행될 경우, 이러한 데이터 유형들은 바이트들, 워드들 또는 더블워드 정수 값들을 포함하는 것으로 해석된다.
128비트 팩형 SIMD 데이터 유형들은 128비트 XMM 레지스터들(84)과 메모리(54)에서 주로 동작된다. 기본적인 128비트 팩형 데이터 유형들은 팩형 바이트들, 팩형 워드들, 팩형 더블워드들 및 팩형 쿼드워드들이다. XMM 레지스터들(84)에서 이러한 기본적인 데이터 유형들에 대해 SIMD 동작들을 수행할 경우, 이러한 데이타 유형들은 팩형 또는 스칼라 단일 정밀도 부동 소수점 또는 배 정밀도 부동 소수점 값들을 포함하거나 또는 팩형 바이트, 워드, 더블워드, 쿼드워드 정수 값들을 포함하는 것으로 해석된다.
도 5에서, 표(120)는, 다양한 SIMD 익스텐션들, 연산되는 데이터 유형들, 및 데이터 유형들이 MMX 레지스터들(58) 및 XMM 레지스터들(84)로 팩킹되는 방법의 요약을 나타낸다.
상술한 바와 같이, 멀티미디어 기능 확장(multimedia extension) 명령어들이 메모리(54), MMX 레지스터들(58), 및/또는 범용 레지스터들(62)에 저장된, 팩형 바이트, 워드, 더블워드 또는 쿼드워드 정수 피연산자들에 대해 동작한다. 멀티미디어 기능 확장 명령어들은 전송 명령어들, 변환 명령어들, 팩형 산술 명령어들, 비교 명령어들, 논리적 명령어들, 시프트 및 회전 명령어들 및 상태 관리 명령어들을 포함한다.
SIMD 익스텐션(SSE 및 SSE2) 명령어들은 다수, 예를 들면, 4개의 그룹: XMM 레지스터들(84)에 대해 동작하는 SIMD 단일 정밀도 부동 소수점 명령어들, MXCSR 레지스터(86)에 대해 동작하는 MXSCR 명령어들, MXX 레지스터들(58)에 대해 동작하는 64비트 SIMD 정수 명령어들 및 캐시가능성(cacheability) 제어, 프리페치 및 명령어 순서화 명령어들로 분할된다.
한 종류의 명령어들은 이동/로드 및 복제형 명령어들이다. 이러한 명령어들은, 예를 들면, 비트들을 복제하기 위해 로딩되는 값에 대한 명시적인 동작을 할 필요성을 줄여준다는 점에서 "결합된(combined)" 명령어들이라고 말할 수 있다. 본원의 아키텍쳐는 MOVDDUP 명령어, MOVSHDUP 명령어 및 MOVSLDUP 명령어를 포함한다. 이러한 명령어들은 팩형 단일 및 팩형 배 정밀도 부동 소수점 데이터 유형들로 복합 산술연산을 지원하도록 제공된다. 이러한 명령어들은 다양한 어플리케이션들에서 사용될 수 있다. 예를 들면, 이러한 명령어들은 신호 처리 어플리케이션들 및 자연적인 데이터 유형들을 처리하는데 관여하는 어플리케이션들의 효율성을 개선할 수 있다.
MOVDDUP 명령어는 64비트(소스가 레지스터이면 비트들 [63-0])을 로딩/이동하는 move one double-floating point and duplicate SSE2 명령어이다. MOVDDUP 명령어를 실행하면 동일한 64비트를 동일한 결과 레지스터의 하위 절반 및 상위 절반 모두에 리턴한다. 즉 소스로부터 64비트를 복제한다. 따라서, 소스가 엔트리 1/0을 가지면 목적지가 엔트리 1/0/1/0을 가진다. MOVEDDUP 명령어는 다음과 같은 포맷: MOVEDDUP 목적지, 소스 피연산자가 메모리 위치(54) 또는 제2 XMM 레지스터(84)이고 목적지 피연산자가 제1 XMM 레지스터(84)인 소스를 갖는다. 소스는 더블 부동 소수점 데이터 유형을 포함한다.
동작시, 소스 피연산자가 메모리 어드레스이면, 제1 XMM 레지스터의 비트들 [63-0]은 메모리 어드레스의 비트들 [63-0]로 로딩되고 제1 XMM 레지스터의 비트들 [127-64]은 메모리 위치의 비트들 [63-0]로 로딩된다. 소스 피연산자가 제2 XMM 레지스터이면, 제1 XMM 레지스터의 비트들 [63-0]은 제2 XMM 레지스터의 비트들 [63-0]과 동일하게 설정되고 제1 XMM 레지스터의 비트들 [127-64]은 제2 XMM 레지스터의 비트들 [63-0]과 동일하게 설정된다.
선형 어드레스는 참조되는 메모리 데이터의 최하위 바이트의 어드레스에 대응한다. 메모리 어드레스가 지시된 경우, 메모리 위치에서의 16바이트의 데이터가 로딩되거나 저장된다. 레지스터-레지스터 동작 폼(register-register form of the opration)이 사용되는 경우, 128비트 소스 레지스터의 내용이 128비트 목적지 레지스터에 복사된다.
MOVSHDUP 명령어는 128비트를 로딩/이동하고 그 결과적인 레지스터 내에 엔트리 1 및 3을 복제하는 move packed single-floating point high and duplicate SSE2 명령어이다. 128비트 소스 레지스터 폭의 예에서, 각 엔트리는 32비트이다. 구체적으로, 소스가 3/2/1/0 엔트리들인 경우(0은 로우 단일 정밀도 엔트리이고 3은 하이 단일 정밀도 엔트리임), MOVSHDUP 명령어가 실행된 후, 결과 레지스터는 엔트리 3/3/1/1을 제공하기 위해 복제된 엔트리 3 및 1을 저장할 것이다. MOVSHDUP는 다음의 포맷: MOVSHDUP 목적지, 소스 피연산자가 메모리 위치(54) 또는 제2 XMM 레지스터(84)를 나타내고 목적지 피연산자가 제1 XMM 레지스터(84)인 소스를 갖는다. 소스 피연산자는 팩형 단일 부동 소수점 데이터 유형을 갖는다.
동작시, 소스 피연산자가 메모리 어드레스이면, 제1 XMM 레지스터의 비트들 [31-0]은 메모리 어드레스의 비트들 [63-32]로 로딩되고 제1 XMM 레지스터의 비트들 63-32은 메모리 어드레스의 비트들 [63-32]로 로딩되고, 제1 XMM 레지스터의 비트들 95-64은 메모리 어드레스의 비트들 [127-96]로 로딩되고, 제1 XMM 레지스터의 비트들 127-96은 메모리 어드레스의 비트들 [127-96]로 로딩된다.
소스 피연산자가 제2 XMM 레지스터이면, 제1 XMM 레지스터의 비트들 [31-0]은 제2 XMM 레지스터의 비트들 [63-32]과 동일하게 설정되고 제1 XMM 레지스터의 비트들 [63-32]은 제2 XMM 레지스터의 비트들 [63-32]과 동일하게 설정되고, 제1 XMM 레지스터의 비트들 [95-64]은 제2 XMM 레지스터의 비트들 [127-96]과 동일하게 설정되고, 제1 XMM 레지스터의 비트들 [127-96]은 제2 XMM 레지스터의 비트들 [127-96]과 동일하게 설정된다.
선형 어드레스는 참조되는 메모리 데이터의 최하위 바이트의 어드레스에 대응한다. 메모리 어드레스가 지시된 경우, 메모리 위치에서의 16바이트의 데이터가 로딩되거나 저장된다. 레지스터-레지스터 동작 폼이 사용되는 경우, 128비트 소스 레지스터의 내용이 128비트 목적지 레지스터에 복사된다.
MOVSLDUP 명령어는 128비트를 로딩/이동하고 엔트리 0 및 2를 복제하는 move packed single-floating point low and duplicate SSE2 명령어이다. 구체적으로, 소스가 3/2/1/0(0은 하위 단일 정밀도 엔트리임)인 경우, 결과 레지스터는 엔트리 2/2/0/0을 저장할 것이다. MOVSLDUP 명령어는 다음의 포맷: MOVSLDUP 목적지, 소스 피연산자가 메모리 위치(54) 또는 제2 XMM 레지스터(84)이고 목적지 피연산자가 제1 XMM 레지스터(84)인 소스를 갖는다. 소스 피연산자는 팩형 단일 부동 소수점 데이터 유형을 갖는다.
동작시, 소스 피연산자가 메모리 어드레스이면, 제1 XMM 레지스터의 비트들 [31-0]은 메모리 어드레스의 비트들 [31-0]로 로딩되고 제1 XMM 레지스터의 비트들 [63-32]은 메모리 어드레스의 비트들 [31-0]로 로딩되고, 제1 XMM 레지스터의 비트들 [95-64]은 메모리 어드레스의 비트들 [95-64]로 로딩되고, 제1 XMM 레지스터의 비트들 [127-96]은 메모리 어드레스의 비트들 [95-64]로 로딩된다. 소스 피연산자가 레지스터이면, 제1 XMM 레지스터의 비트들 [31-0]은 제2 XMM 레지스터의 비트들 [31-0]과 동일하게 설정되고 제1 XMM 레지스터의 비트들 [63-32]은 제2 XMM 레지스터의 비트들 [31-0]과 동일하게 설정되고, 제1 XMM 레지스터의 비트들 [95-64]은 제2 XMM 레지스터의 비트들 [95-64]과 동일하게 설정되고, 제1 XMM 레지스터의 비트들 [127-96]은 제2 XMM 레지스터의 비트들 [95-64]과 동일하게 설정된다.
선형 어드레스는 참조되는 메모리 데이터의 최하위 바이트의 어드레스에 대응한다. 메모리 어드레스가 지시된 경우, 메모리 위치에서의 16바이트의 데이터가 로딩되거나 저장된다. 레지스터-레지스터 동작 폼이 사용되는 경우, 128비트 소스 레지스터의 내용이 128비트 목적지 레지스터에 복사된다.
따라서, 기타 실시예들도 다음의 청구범위의 범주 내에 있다.

Claims (61)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 프로세서에서, 소스의 비트들 중 인접하지 않은 제1 및 제2 부분들을 목적지 레지스터의 인접하지 않은 제1 및 제2 부분들에 로딩하는 제1 단계; 및
    상기 목적지 레지스터의 비트들 중 상기 인접하지 않은 제1 및 제2 부분들을 상기 목적지 레지스터의 제3 및 제4 부분들에 복제하는 제2 단계
    를 포함하는 방법으로서,
    상기 제3 및 제4 부분들은 각각 상기 인접하지 않은 제1 및 제2 부분들에 인접하고, 상기 로딩하는 제1 단계 및 상기 복제하는 제2 단계는 단일 명령어에 대한 응답인
    방법.
  6. 제5항에 있어서,
    상기 소스의 상기 인접하지 않은 제1 및 제2 부분들은 메모리 위치에서 상기 소스의 최하위 부분 및 두 번째 상위 부분을 포함하는 방법.
  7. 제5항에 있어서,
    상기 소스의 상기 제1 부분은 소스 레지스터에서 상기 소스의 두 번째 하위 부분 및 최상위 부분을 포함하는 방법.
  8. 제5항에 있어서,
    상기 목적지 레지스터의 상기 제1 부분은 상기 소스의 비트들 [63-32] 또는 비트들 [31-0]로 로딩되고, 상기 목적지 레지스터의 상기 로딩된 제1 부분이 상기 목적지 레지스터의 상기 제3 부분에 복제되며, 상기 목적지 레지스터의 상기 제2 부분은 상기 소스의 비트들 [127-96] 또는 비트들 [95-64]로 로딩되고, 상기 목적지 레지스터의 상기 로딩된 제2 부분이 상기 목적지 레지스터의 상기 제4 부분에 복제되는 방법.
  9. 명령어들을 저장한 컴퓨터 판독가능한 매체에 상주하는 컴퓨터 프로그램 제품으로서,
    상기 명령어들은, 프로세서에 의해 실행되는 경우 상기 프로세서로 하여금,
    소스의 비트들 중 인접하지 않은 제1 및 제2 부분들을 목적지 레지스터의 인접하지 않은 제1 및 제2 부분들로 로딩하는 제1 단계; 및
    상기 목적지 레지스터의 비트들 중 상기 인접하지 않은 제1 및 제2 부분들을 상기 목적지 레지스터의 제3 및 제4 부분들에 복제하는 제2 단계
    를 수행하게 하고,
    상기 제3 및 제4 부분들은 각각 상기 인접하지 않은 제1 및 제2 부분들에 인접하며, 상기 로딩하는 제1 단계 및 상기 복제하는 제2 단계는 단일 명령어에 대한 응답인
    컴퓨터 프로그램 제품.
  10. 제9항에 있어서,
    상기 소스의 상기 인접하지 않은 제1 및 제2 부분들은 메모리 위치에서 상기 소스의 최하위 부분 및 두 번째 상위 부분을 포함하는 컴퓨터 프로그램 제품.
  11. 제9항에 있어서,
    상기 소스의 상기 제1 부분은 소스 레지스터에서 상기 소스의 두 번째 하위 부분 및 최상위 부분을 포함하는 컴퓨터 프로그램 제품.
  12. 제9항에 있어서,
    상기 목적지 레지스터의 상기 제1 부분은 상기 소스의 비트들 [63-32] 또는 비트들 [31-0]로 로딩되고, 상기 목적지 레지스터의 상기 로딩된 제1 부분이 상기 목적지 레지스터의 상기 제3 부분에 복제되며, 상기 목적지 레지스터의 상기 제2 부분은 상기 소스의 비트들 [127-96] 또는 비트들 [95-64]로 로딩되고, 상기 목적지 레지스터의 상기 로딩된 제2 부분이 상기 목적지 레지스터의 상기 제4 부분에 복제되는 컴퓨터 프로그램 제품.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 프로세서에서 실행되는 방법에 있어서,
    소스의 비트들 [63-32]을 목적지 레지스터의 비트들 [31-0]에 로딩하고 상기 소스의 비트들 [127-96]을 상기 목적지 레지스터의 비트들 [95-64]에 로딩하는 제1 단계; 및
    상기 목적지 레지스터의 상기 비트들 [31-0]을 상기 목적지 레지스터의 비트들 [63-32]에 복제하고 상기 목적지 레지스터의 상기 비트들 [95-64]을 상기 목적지 레지스터의 비트들 [127-96]에 복제하는 제2 단계
    를 포함하고,
    상기 로딩하는 제1 단계 및 상기 복제하는 제2 단계는 단일 명령어에 대한 응답인
    방법.
  34. 제33항에 있어서,
    상기 소스는 메모리 위치인 방법.
  35. 제34항에 있어서,
    상기 메모리 위치는 팩형 단일 부동 소수점 데이터 유형을 포함하는 방법.
  36. 제33항에 있어서,
    상기 소스는 128비트 소스 레지스터인 방법.
  37. 제36항에 있어서,
    상기 128비트 소스 레지스터는 팩형 단일 부동 소수점 데이터 유형을 포함하는 방법.
  38. 명령어들을 저장한 컴퓨터 판독가능한 매체에 상주하는 컴퓨터 프로그램 제품으로서,
    상기 명령어들은, 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금,
    소스의 비트들 [63-32]을 목적지 레지스터의 비트들 [31-0]에 로딩하고 상기 소스의 비트들 [127-96]을 상기 목적지 레지스터의 비트들 [95-64]에 로딩하는 제1 단계; 및
    상기 목적지 레지스터의 상기 비트들 [31-0]을 상기 목적지 레지스터의 비트들 [63-32]에 복제하고 상기 목적지 레지스터의 상기 비트들 [95-64]을 상기 목적지 레지스터의 비트들 [127-96]에 복제하는 제2 단계
    를 수행하게 하고,
    상기 로딩하는 제1 단계 및 상기 복제하는 제2 단계는 단일 명령어에 대한 응답인
    컴퓨터 프로그램 제품.
  39. 제38항에 있어서,
    상기 소스는 메모리 위치인 컴퓨터 프로그램 제품.
  40. 제39항에 있어서,
    상기 메모리 위치는 팩형 단일 부동 소수점 데이터 유형을 포함하는 컴퓨터 프로그램 제품.
  41. 제38항에 있어서,
    상기 소스는 128비트 소스 레지스터인 컴퓨터 프로그램 제품.
  42. 제41항에 있어서,
    상기 128비트 소스 레지스터는 팩형 단일 부동 소수점 데이터 유형을 포함하는 컴퓨터 프로그램 제품.
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 프로세서에서,
    소스의 비트들 [31-0]을 목적지 레지스터의 비트들 [31-0]에 로딩하고 상기 소스의 비트들 [95-64]을 상기 목적지 레지스터의 비트들 [95-64]에 로딩하는 제1 단계; 및
    상기 목적지 레지스터의 상기 비트들 [31-0]을 상기 목적지 레지스터의 비트들 [63-32]에 복제하고 상기 목적지 레지스터의 상기 비트들 [95-64]을 상기 목적지 레지스터의 비트들 [127-96]에 복제하는 제2 단계
    를 포함하는 방법으로서,
    상기 로딩하는 제1 단계 및 상기 복제하는 제2 단계는 단일 명령어에 대한 응답인 방법.
  50. 제49항에 있어서,
    상기 소스는 메모리 위치인 방법.
  51. 제50항에 있어서,
    상기 메모리 위치는 팩형 단일 부동 소수점 데이터 유형을 포함하는 방법.
  52. 제51항에 있어서,
    상기 소스는 128비트 소스 레지스터인 방법.
  53. 제52항에 있어서,
    상기 128비트 소스 레지스터는 팩형 단일 부동 소수점 데이터 유형을 포함하는 방법.
  54. 명령어들을 갖는 컴퓨터 판독가능한 매체에 상주하는 컴퓨터 프로그램 제품으로서,
    상기 명령어들은, 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금,
    소스의 비트들 [31-0]을 목적지 레지스터의 비트들 [31-0]에 로딩하고 상기 소스의 비트들 [95-64]을 상기 목적지 레지스터의 비트들 [95-64]에 로딩하는 제1 단계; 및
    상기 목적지 레지스터의 상기 비트들 [31-0]을 상기 목적지 레지스터의 비트들 [63-32]에 복제하고 상기 목적지 레지스터의 상기 비트들 [95-64]을 상기 목적지 레지스터의 비트들 [127-96]에 복제하는 제2 단계
    를 수행하게 하고,
    상기 로딩하는 제1 단계 및 상기 복제하는 제2 단계는 단일 명령어에 대한 응답인
    컴퓨터 프로그램 제품.
  55. 제54항에 있어서,
    상기 소스는 메모리 위치인 컴퓨터 프로그램 제품.
  56. 제55항에 있어서,
    상기 메모리 위치는 팩형 단일 부동 소수점 데이터 유형을 포함하는 컴퓨터 프로그램 제품.
  57. 제54항에 있어서,
    상기 소스는 128비트 소스 레지스터인 컴퓨터 프로그램 제품.
  58. 제57항에 있어서,
    상기 128비트 소스 레지스터는 팩형 단일 부동 소수점 데이터 유형을 포함하는 컴퓨터 프로그램 제품.
  59. 삭제
  60. 삭제
  61. 삭제
KR1020047009869A 2001-12-20 2002-12-12 프로세서에 사용되는 로드/이동 및 복제 명령어들 KR100806408B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/032,144 US7853778B2 (en) 2001-12-20 2001-12-20 Load/move and duplicate instructions for a processor
US10/032,144 2001-12-20
PCT/US2002/040166 WO2003054692A1 (en) 2001-12-20 2002-12-12 Load/move and duplicate instructions for a processor

Publications (2)

Publication Number Publication Date
KR20040068333A KR20040068333A (ko) 2004-07-30
KR100806408B1 true KR100806408B1 (ko) 2008-02-21

Family

ID=21863332

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047009869A KR100806408B1 (ko) 2001-12-20 2002-12-12 프로세서에 사용되는 로드/이동 및 복제 명령어들

Country Status (9)

Country Link
US (6) US7853778B2 (ko)
JP (3) JP2006502464A (ko)
KR (1) KR100806408B1 (ko)
CN (2) CN101520723B (ko)
AU (1) AU2002357263A1 (ko)
DE (1) DE10297581T5 (ko)
RU (1) RU2292581C2 (ko)
TW (1) TW594569B (ko)
WO (1) WO2003054692A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
AU2003256870A1 (en) * 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
EP1508853A1 (en) * 2003-08-19 2005-02-23 STMicroelectronics Limited Computer system and method for loading non-aligned words
WO2006018822A1 (en) * 2004-08-20 2006-02-23 Koninklijke Philips Electronics, N.V. Combined load and computation execution unit
US8996152B2 (en) * 2006-06-28 2015-03-31 Nvidia Corporation Operating system aware hardware mutex
US8321872B2 (en) * 2006-06-28 2012-11-27 Nvidia Corporation Reusable, operating system aware hardware mutex
US20080077772A1 (en) * 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
US8112675B2 (en) * 2006-09-28 2012-02-07 Nvidia Corporation Filesystem directory debug log
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8656139B2 (en) * 2011-03-11 2014-02-18 Telefonaktiebolaget L M Ericsson (Publ) Digital processor for processing long and short pointers and converting each between a common format
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
WO2013095564A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
CN104011643B (zh) * 2011-12-22 2018-01-05 英特尔公司 打包数据重新安排控制索引产生处理器、方法、系统及指令
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
WO2013095563A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions
US20130326199A1 (en) * 2011-12-29 2013-12-05 Grigorios Magklis Method and apparatus for controlling a mxcsr
US9459867B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US20140095847A1 (en) * 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US20140258667A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Memory Operation Bonding
US10540179B2 (en) 2013-03-07 2020-01-21 MIPS Tech, LLC Apparatus and method for bonding branch instruction with architectural delay slot
CN103186363B (zh) * 2013-03-26 2015-09-30 北京经纬恒润科技有限公司 一种数值编辑方法及系统
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
US10423413B2 (en) 2013-07-09 2019-09-24 Texas Instruments Incorporated Vector load and duplicate operations
US9710271B2 (en) 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US9448939B2 (en) 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US9600286B2 (en) 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for transactional execution
US9348643B2 (en) 2014-06-30 2016-05-24 International Business Machines Corporation Prefetching of discontiguous storage locations as part of transactional execution
US9336047B2 (en) 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US9529653B2 (en) * 2014-10-09 2016-12-27 International Business Machines Corporation Processor register error correction management
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160224252A1 (en) * 2015-01-30 2016-08-04 Intel Corporation Hybrid memory architecture
EP3336691B1 (en) 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
EP3336692B1 (en) * 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
JP6995059B2 (ja) 2017-03-14 2022-01-14 株式会社トクヤマ フライアッシュの使用方法
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
RU2713709C1 (ru) * 2019-06-20 2020-02-06 Федеральное государственное унитарное предприятие "Научно-производственный центр автоматики и приборостроения имени академика Н.А. Пилюгина" (ФГУП "НПЦАП") Устройство преобразования информации
KR102307691B1 (ko) 2020-11-19 2021-10-05 주식회사 우드메탈 원적외선 및 음이온 방출 기능을 갖는 가구용 엣지마감재

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0743594A1 (en) * 1995-05-17 1996-11-20 STMicroelectronics Limited Matrix transposition

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4141005A (en) 1976-11-11 1979-02-20 International Business Machines Corporation Data format converting apparatus for use in a digital data processor
JPS61294550A (ja) 1985-06-21 1986-12-25 Nec Corp 電子計算機におけるデ−タ読取書込制御方式
US5522082A (en) 1986-01-23 1996-05-28 Texas Instruments Incorporated Graphics display processor, a graphics display system and a method of processing graphics data with control signals connected to a central processing unit and graphics circuits
US5268995A (en) 1990-11-21 1993-12-07 Motorola, Inc. Method for executing graphics Z-compare and pixel merge instructions in a data processor
US6116768A (en) * 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5613121A (en) 1994-10-19 1997-03-18 International Business Machines Corporation Method and system of generating combined storage references
US5673321A (en) * 1995-06-29 1997-09-30 Hewlett-Packard Company Efficient selection and mixing of multiple sub-word items packed into two or more computer words
US7085795B2 (en) 2001-10-29 2006-08-01 Intel Corporation Apparatus and method for efficient filtering and convolution of content data
US5983253A (en) 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
US5936872A (en) 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
JP3735438B2 (ja) * 1997-02-21 2006-01-18 株式会社東芝 Risc計算機
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6820190B1 (en) * 2000-02-02 2004-11-16 Hewlett-Packard Development Company, L.P. Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
US7155601B2 (en) 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US7631025B2 (en) 2001-10-29 2009-12-08 Intel Corporation Method and apparatus for rearranging data between multiple registers
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
JP4112946B2 (ja) * 2002-10-31 2008-07-02 株式会社東芝 非鉛系接合材、ソルダーペースト及び接合方法
JP2009016397A (ja) 2007-06-29 2009-01-22 Toshiba Corp プリント配線板
JP5229819B2 (ja) 2009-04-01 2013-07-03 株式会社レヨーン工業 除塵装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0743594A1 (en) * 1995-05-17 1996-11-20 STMicroelectronics Limited Matrix transposition

Also Published As

Publication number Publication date
US20120317401A1 (en) 2012-12-13
CN101520723B (zh) 2011-01-12
US8650382B2 (en) 2014-02-11
JP2014089730A (ja) 2014-05-15
US20110258418A1 (en) 2011-10-20
CN100492281C (zh) 2009-05-27
JP5960115B2 (ja) 2016-08-02
JP2010152919A (ja) 2010-07-08
RU2292581C2 (ru) 2007-01-27
US8200941B2 (en) 2012-06-12
US20130219153A1 (en) 2013-08-22
US8539202B2 (en) 2013-09-17
AU2002357263A1 (en) 2003-07-09
JP2006502464A (ja) 2006-01-19
US8032735B2 (en) 2011-10-04
US20030120903A1 (en) 2003-06-26
TW200304091A (en) 2003-09-16
US20130013896A1 (en) 2013-01-10
DE10297581T5 (de) 2004-11-11
CN1605062A (zh) 2005-04-06
US20110047361A1 (en) 2011-02-24
US7853778B2 (en) 2010-12-14
CN101520723A (zh) 2009-09-02
WO2003054692A1 (en) 2003-07-03
RU2004122101A (ru) 2005-03-27
TW594569B (en) 2004-06-21
US9043583B2 (en) 2015-05-26
KR20040068333A (ko) 2004-07-30

Similar Documents

Publication Publication Date Title
KR100806408B1 (ko) 프로세서에 사용되는 로드/이동 및 복제 명령어들
US6721866B2 (en) Unaligned memory operands
JP6456867B2 (ja) 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法
KR102478874B1 (ko) 비순차적 하드웨어 소프트웨어 공동 설계된 프로세서에서 스택 동기화 명령어를 갖는 술어 값의 스택을 구현하고 유지하기 위한 방법 및 장치
CN107077321B (zh) 用于执行融合的单个周期递增-比较-跳转的指令和逻辑
CN109716290B (zh) 用于经融合的乘加的系统、装置和方法
US20110131382A1 (en) Extract Cache Attribute Facility and Instruction Therefore
US20090182988A1 (en) Compare Relative Long Facility and Instructions Therefore
US9280480B2 (en) Extract target cache attribute facility and instruction therefor
KR20110139098A (ko) 명령어가 이용할 수 있는 범용 레지스터의 수를 확장하는 상위-워드 기능
WO2013095608A1 (en) Apparatus and method for vectorization with speculation support
KR101285072B1 (ko) 실행 관련 명령어
CN112148251A (zh) 跳过无意义的矩阵运算的系统和方法
US20090182992A1 (en) Load Relative and Store Relative Facility and Instructions Therefore
US20090182985A1 (en) Move Facility and Instructions Therefore
CN113849221A (zh) 用于操作系统透明指令状态管理的装置、方法和系统
WO2019005169A1 (en) APPARATUS AND METHOD FOR MEMORY OPERATIONS READY FOR DATA
JP2023035849A (ja) Bfloat16平方根および/または逆数平方根命令
CN112988231A (zh) 用于将零的值相乘的指令的装置、方法和系统
CN113050994A (zh) 用于512位操作的系统、装置和方法

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130212

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 12