KR100401799B1 - 명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션 - Google Patents
명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션 Download PDFInfo
- Publication number
- KR100401799B1 KR100401799B1 KR10-2001-7004574A KR20017004574A KR100401799B1 KR 100401799 B1 KR100401799 B1 KR 100401799B1 KR 20017004574 A KR20017004574 A KR 20017004574A KR 100401799 B1 KR100401799 B1 KR 100401799B1
- Authority
- KR
- South Korea
- Prior art keywords
- data format
- format
- processor
- bit
- memory
- Prior art date
Links
- 230000007704 transition Effects 0.000 title description 14
- 238000000034 method Methods 0.000 claims abstract description 60
- 230000015654 memory Effects 0.000 claims description 50
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 21
- 238000006243 chemical reaction Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
-
- 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/30109—Register structure having multiple operands in a single register
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
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 데이터 포맷으로 변환된다. 그리고 나서, 프로세서는 제2 데이터 포맷으로 결과를 생성하기 위해 제2 데이터 포맷으로 명령어를 실행한다. 결과는 제2 데이터 포맷으로부터 제1 데이터 포맷으로 변환된다.
Description
프로세서에 진보된 능력이 결합되도록 개선될 때, 이전 모델로 개발된 애플리케이션을 이용하여 소프트웨어 호환성을 유지하는 것이 중요하다. 특별한 문제점 하나는 논리적 및/또는 산술적인 연산을 위한 데이터의 표현이다.
예를 들어, 부동소수점(floating-point : FP) 수 포맷은 단일-정밀도(single-precision : SP) 및 이중-정밀도(double-precision : DP) 데이터 포맷을 가진다. SP 포맷은 통상적으로 32-비트 표현에 의해 표현되고, DP 포맷은 2개의 상이한 표현 타입 - 정규 64-비트 포맷 및 확장된 82-비트 포맷 - 을 가질 수 있다. 정규 프로세서는 통상적으로 레지스터 및 메모리에 모두 저장되는 오퍼랜드에 대해 정규의 64-비트 FPDP 포맷을 사용한다. 진보된 프로세서는 통상적으로 레지스터에 저장되는 오퍼랜드에 대해서는 확장된 82-비트 FPDP 포맷을 사용하고, 메모리에 저장되는 오퍼랜드에 대해서는 정규의 64-비트 FPDP 포맷을 사용한다. 예를 들어, 인텔 아키텍처(IA) 프로세서는 32-비트 모델 및 진보된 64-비트 모델: IA-32 프로세서 및 IA-64 프로세서를 가진다. IA-32 프로세서는 레지스터 및 메모리에 모두 저장되는 오퍼랜드에 대해 64-비트 FPDP 포맷을 사용한다. IA-64 프로세서는 메모리 오퍼랜드에 대해서는 64-비트 FPDP 포맷을, 레지스터 오퍼랜드에 대해서는 확장된 82-비트 FPDP 포맷을 사용한다.
정규 데이터 포맷으로 동작하는 하나의 명령어 세트로부터 진보된 데이터 포맷으로 동작하는 다른 명령어 세트로의 천이(transition)를 명령어 세트 아키텍처(instruction set architecture : ISA) 천이라 부른다. 정규 모드의 연산(예로, 64-비트 FPDP)을 이용하여 기록된 애플리케이션 프로그램이 진보된 모드의 연산(예로, 82-비트 FPDP)을 이용하는 프로세서로 전송되거나 또는 그 역이 되는 이러한 ISA 천이에서, 오퍼랜드 부정합(mismatch)이 발생할 수 있다. 이러한 부정합은 성능 저하를 야기시키고, 많은 경우에 소프트웨어가 호환되지 않도록 야기시킬 수 있다.
따라서, 확장된 데이터 포맷으로 동작하는 프로세서 상에서의 하나의 데이터 포맷에 대한 명령어 세트를 에뮬레이팅하는 방법을 제공하는 기술의 필요성이 존재한다.
본 발명은 컴퓨터 시스템에 관한 것으로, 특히 마이크로프로세서 명령어의 에뮬레이션(emulation)에 관한 것이다.
본 발명의 특징 및 장점은 다음의 상세한 설명으로부터 명확해질 것이다.
도1은 본 발명의 일실시예가 실시될 수 있는 컴퓨터 시스템을 도시한 도면.
도2는 본 발명의 일실시예에 따른 태깅된 아키텍처를 도시한 도면.
도3은 본 발명의 일실시예에 따른 포맷 변환을 도시한 도면.
도4는 본 발명의 일실시예에 따른 모드 천이를 도시한 도면.
도5는 본 발명의 일실시예에 따른 문맥 전환을 도시한 도면.
도6은 본 발명의 일실시예에 따른 수 포맷 변환을 도시한 도면.
도7은 본 발명의 일실시예에 따른 논리 명령어를 에뮬레이팅하는 과정을 도시한 도면.
도8은 본 발명의 일실시예에 따른 호출 연산을 도시한 도면.
도9는 본 발명의 일실시예에 따른 객체 코드 천이(OCT) 과정을 도시한 순서도.
발명의 요약
본 발명은 프로세서 상에서 명령어를 에뮬레이팅하기 위한 방법 및 장치이다. 명령어는 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 프로세서는 제2 데이터 포맷으로 연산한다. 그리고 나서, 프로세서는 제2 데이터 포맷으로 결과를 생성하기 위해 제2 데이터 포맷으로 명령어를 실행한다. 그 결과는 제2 데이터 포맷으로부터 제1 데이터 포맷으로 변환된다.
본 발명은 하나의 데이터 포맷 표현(representation)으로 연산하는 명령어를 다른 데이터 포맷 표현을 가지는 프로세서 상에서 에뮬레이팅하기 위한 방법 및 장치이다. 이 기술은 많은 실시예를 포함한다. 태깅된 아키텍처는 각 레지스터에 연관되는 태그 비트를 제공한다. 데이터 표현을 변환하기 위한 다양한 구조가 제공된다. 적합한 코드로 점프하기 위한 점프 명령어를 이용한 코드 패칭(code patching)은 모드 천이(mode transition) 또는 문맥 전환(context switch)으로 사용된다. 변환 명령어는 아키텍처 및 논리 명령어에 대한 정수와 부동소수점 수 간의 데이터 표현을 변환한다. 본 발명은 프로세서 아키텍처와 진보된 프로세서 아키텍처 간에 소프트웨어 호환성을 제공한다.
다음의 설명에서는, 설명의 편의를 위해, 다양한 세목들이 본 발명의 완전한 이해를 제공하기 위해 기재된다. 그러나, 이 기술 분야의 통상의 지식을 가진 자는 이러한 특정 세목들이 본 발명을 실시하기 위해 반드시 요구되지는 않는다는 것을 이해할 것이다. 다른 예에서, 주지된 전자 구조 및 회로들은 본 발명을 모호하지 않도록 하기 위해 블록도로 도시된다.
도1은 본 발명의 일실시예가 실시될 수 있는 컴퓨터 시스템을 도시한 도면이다. 컴퓨터 시스템(100)은 프로세서(110), 호스트 버스(130), 메모리 제어기(140) 및 저장 장치(150)를 포함한다.
프로세서(110)는 CISC(complex instruction set computers), RISC(reduced instruction set computers), VLIW(very long instruction word) 또는 하이브리드아키텍처(hybrid architecture)와 같은, 모든 타입의 아키텍처의 중앙 처리 장치를 나타낸다. 이 실시예는 단일 프로세서 컴퓨터 시스템에 대해 기재되지만, 본 발명은 다수-프로세서 컴퓨터 시스템에서 구현될 수 있다.
메모리 제어기(140)는 저장 장치(150)에 대한 다양한 액세스 기능을 제공한다. 메모리 제어기(140)는 프로세서를 저장 장치(150)에 액세스하도록 하는 호스트 버스(130)에 연결된다. 저장 장치(150)는 정보를 저장하기 위한 하나 또는 그 이상의 메커니즘을 나타낸다. 예를 들어, 저장 장치(150)는 비휘발성 또는 휘발성 메모리를 포함할 수 있다. 이러한 메모리의 예는 플래시 메모리, ROM, RAM을 포함한다.
도1은 또한 그 안에 프로그램 코드(152) 및 데이터(154)를 저장하고 있는 저장 장치(150)를 도시하고 있다. 프로그램 코드(152)는 본 발명에서의 기술의 일부 및/또는 전부를 수행하기 위한 필수 코드를 나타낸다. 특히, 프로그램 코드(152)는 에뮬레이션 코드(153)를 포함한다. 에뮬레이션 코드(153)는 프로세서(110) 상에서 하나의 데이터 포맷(또는 모드)으로 명령어를 에뮬레이팅한다. 데이터 블록(154)은 프로그램 코드(154), 그래픽 데이터 및 일시적인 데이터로 사용되는 데이터를 저장한다. 물론, 저장 장치(150)는, 본 발명을 이해하는데 필요하지 않은, 추가의 소프트웨어(미도시)를 포함하는 것이 바람직하다.
도1은 또한 디코딩 유닛(112), 실행 유닛(114), 레지스터 세트(116) 및 내부 버스(111)를 포함하는 프로세서를 도시하고 있다. 물론, 프로세서(110)는, 본 발명을 이해하는데 필요하지 않은, 추가의 회로를 포함한다. 디코딩 유닛(112)은 프로세서(110)에 의해 수신된 명령어를 제어 신호 및/또는 마이크로코드 엔트리포인트(microcode entry point)로 디코딩하는데 사용된다. 이들 제어 신호 및/또는 마이크로코드 엔트리 포인트에 응답하여, 실행 유닛(114)은 적합한 연산을 수행한다. 레지스터 세트(116)는, 레지스터 포맷으로 언급된 포맷2로 표현된 데이터를 저장하는 다수의 레지스터를 포함한다.
일실시예에서, 프로세서(110)는 인텔 아키텍처(Intel Architecture-64 : IA-64) 프로세서이다. IA-64 는 64-비트 데이터를 처리하는 64-비트 프로세서이다. IA-64에서, 64-비트 부동소수점 이중-정밀도(floating-point double-precision : FPDP) 수는 레지스터 세트(116)(확장 또는 레지스터 포맷)에서는 82-비트 FPDP로 표현되지만, 메모리(155)(정규 또는 메모리 포맷)에서는 64-비트 FPDP로 표현된다. 32-비트 프로세서(예로, IA-32)는 레지스터 및 메모리 모두에서, 정규 포맷(regular format)이라 부르는 64-비트 FPDP 포맷으로 64-비트 FPDP 수를 표현한다. 32-비트 프로세서(예로, IA-32)를 위해 개발된 프로그램을 64-비트 프로세서(예로, IA-64)로 포팅(porting)시 소프트웨어 호환성을 유지하기 위해, 일부 번역(translation) 또는 변환(conversion)이 필요하다. 본 발명에서의 기술은 64-비트 프로세서 상에서 32-비트 명령어를 에뮬레이팅하도록 사용될 수 있다. 다음의 논의에서, 프로세서(110)는 플랫폼 프로세서로 언급되고, 32-비트 명령어 세트를 이용하여 기록된 프로그램 또는 소프트웨어는 포팅 프로그램 또는 소프트웨어로 언급된다.
에뮬레이션은 많은 방식으로 구현될 수 있다. 하나의 방식은 플랫폼 프로세서 상에서 가벼운 하드웨어 수정을 포함한다. 다른 방식은 포팅 프로그램에 대한패칭 코드로 데이터 포맷의 변환을 포함한다.
본 발명에서 기재된 기술을 구현한 컴퓨터 프로그램 또는 소프트웨어는 머신 판독가능 매체에 저장 및/또는 전송될 수 있다. 이러한 머신 판독가능 기록 매체의 예는 RAM, ROM, EROM, 플래시 메모리, 자기 매체, CDROM, 플로피 디스켓, 하드 디스크, 광 디스크, 신호, 반송파 등과 같은 반도체 메모리를 포함한다. 컴퓨터 프로그램 또는 코드 시퀀스는, 프로세서가 제2 데이터 포맷으로 연산하는 동안, 제1 데이터 포맷으로 적어도 하나의 오퍼랜드를 연산하는 명령어를 에뮬레이팅한다. 컴퓨터 프로그램 또는 코드 시퀀스는 많은 연산을 수행하는 코드 세그먼트, 서브-프로그램, 서브-루틴 또는 함수를 포함한다. 이들 연산의 예는 제1 데이터 포맷으로부터 제2 데이터 포맷으로 변환하는 것, 제2 데이터 포맷으로 결과를 생성하기 위해 프로세서에 의해 제2 데이터 포맷으로 명령어를 에뮬레이팅하는 것, 제2 데이터 포맷으로부터의 결과를 제1 데이터 포맷으로 변환하는 것을 포함한다. 추가의 코드 세그먼트는 다음에서 더 설명되는 다른 기능들을 수행하는데 사용된다.
도2는 본 발명의 일실시예에 따른 태깅된 아키텍처(tagged architecture)를 도시한 도면이다. 태깅된 아키텍처는 레지스터 세트에 연관되는 태그 구조를 포함한다.
도2에 도시된 바와 같이, 프로세서(110)는 레지스터 세트(116a) 및 대응 태그 세트(116b)를 포함한다. 레지스터 세트(116a)는 N개의 레지스터(2101~210N)를 포함한다. 태그 세트(116b)는 N개의 레지스터(2101~210N)에 각각 대응하는 N개의 태그(2121~212N)를 포함한다.
각 태그(2121~212N)는 대응하는 레지스터의 포맷을 지시하는 태그 비트를 저장하고 있다. 예를 들어, 태그 비트는, 레지스터 포맷이 64-비트 정규 포맷이라는 것을 나타낼 때는 0, 레지스터 포맷이 82-비트 확장 포맷이라는 것을 나타낼 때는 1이 될 수 있다. 이 기술 분야의 통상의 지식을 가진 자에게 주지된 바와 같이, 다른 비트 패턴이 사용될 수 있다. 태그 세트는 연산과 피연산자(오퍼랜드) 사이에 포맷의 부정합이 존재하는지를 검출하기 위한 수단을 제공한다. 검출 논리 회로는 연산 타입을 대응하는 태그 비트와 비교하도록 구현될 수 있다. 포맷 부정합이 존재하는 경우, 오퍼랜드의 포맷을 바꾸기 위해 마이크로-루틴에 대한 제어를 지시하도록 트랩이 일어난다. 포맷 부정합은 자주 발생하지는 않는다. 따라서, 마이크로-트랩 어시스트(micro-trap assist)에 의해 초래되는 지연(latency)이 허용될 수 있다.
레지스터로부터 메모리로 모두 저장할 때, 포맷은 확장 포맷에서 메모리 포맷으로 변경된다. 도2는 레지스터K(210K)의 컨텐츠를 메모리(230)로 옮기기 위한 저장 명령어를 도시하고 있다.
문맥 전환(context switch)에서, 레지스터 세트(116a)는 저장 명령어(예로, FXSAVE)에 의해 레지스터(24)에 저장되거나 재저장 명령어(예로, FXRESTOR)에 의해 재저장에 따라 메모리에 저장된다. 연산 및 오퍼랜드 포맷 부정합시, 데이터의 제2 사용에서 포맷이 변환된다. 태그 세트(116a)는 저장 명령어에 의해 저장되지 않는다. 태그는 재저장에 대한 메모리 포맷을 나타내도록 리셋된다.
도3은 본 발명의 일실시예에 따른 포맷 변환을 도시한 도면이다. 포맷 변환방법은 모든 연산 전에 64-비트 포맷을 82-비트 포맷으로 변환하고, 모든 연산 후에 82-비트 포맷을 64-비트 포맷으로 변환한다. 포맷 변환은 포맷1 변환기(320), 포맷2 변환기(360) 및 연산(340)을 포함한다.
도3은 오퍼랜드(310, 330, 350, 370)를 보여주고 있다. 오퍼랜드(310, 370)는 포맷1(예로, 64-비트)로, 오퍼랜드(330, 350)는 포맷2(예로, 82-비트)로 될 수 있다. 포맷1 변환기는 연산 전에 오퍼랜드(310)를 포맷1로부터 포맷2의 오퍼랜드(330)로 변환한다. 연산(340)은 포맷2를 이용하여 수행된다. 연산 후에, 오퍼랜드(350)는 포맷2 변환기(360)에 의해 포맷1의 오퍼랜드(370)로 다시 변환된다.
도4는 본 발명의 일실시예에 따른 모드 천이를 도시한 도면이다. 모드 천이(예로, ISA 천이)는 제1 모드(예로, IA32)로 실행되는 애플리케이션이 제2 모드(예로, IA64)의 애플리케이션에 대해 호출하는 경우에 발생한다.
모드 천이는 모드1 애플리케이션(410), 모드1 도메인(420), 모드2 도메인(430) 및 모드2 애플리케이션(440)을 포함한다. 모드1 애플리케이션(410)은 모드2 애플리케이션(440)으로 호출한다. 모드2 애플리케이션(440)은 모드1 포맷(예로, 레지스터 포맷)에 대해 알지 못한다. 모드1 도메인(420)은 점프 명령어(예로, JUMPE)에 의해 모드2로의 점프를 제공한다. 모드2 도메인(430)은 파라미터의 모드2 변환을 제공한다. 그리고 나서, 연산은 모드2 애플리케이션(440)에서 발생한다.
모드2 애플리케이션(440)으로부터 모드1 애플리케이션(410)으로의 모드 천이시, 분기 명령어(예로, BR_IA)가 모드2 애플리케이션(440)으로부터 모드2 애플리케이션(410)으로의 출구(exit)를 제공한다.
모드1 애플리케이션(410)에서, 이중 정밀도 데이터는 메모리 또는 레지스터에서의 확장 포맷으로 표현될 수 있다. 모드1 도메인(420)에서, 모드1 애플리케이션(410) 내의 모든 레지스터가 메모리에 저장된다. 모드2 도메인(430)은 사용에 따른 포맷으로 메모리로부터 파라미터를 로딩한다. 모드2 애플리케이션(440)에서, 이중 정밀도 데이터는 레지스터에서의 확장 포맷으로 변환된다. 연산 후에, 모드2 애플리케이션에서, 분기 명령어는 모드2 애플리케이션(410)에 대한 메모리에서의 결과 파라미터를 패스한다.
도5는 본 발명의 일실시예에 따른 문맥 전환(500)을 도시한 도면이다. 문맥 전환(500)은 인터럽트로 인해 발생하고, 모드1 애플리케이션(410) 및 모드2 운영체제(520)를 포함한다. 이 기술 분야의 통상의 지식을 가진 자에게 주지된 바와 같이, 문맥 전환을 야기시키는 다른 것으로 프로세스 스와핑(swapping), 멀티태스킹(multitasking) 등이 가능하다.
모드1 애플리케이션은 모드1 명령어 세트(예로, IA32)로 실행하는 애플리케이션이다. 모드1 애플리케이션(410)은 호출 코드(512) 및 리턴 코드(514)를 포함한다. 모드2 운영체제(OS)(520)는 모드2 명령어 세트(예로, IA64)로 실행되는 운영 체제이다. 모드2 OS(520)는 패치 코드(522), 저장 코드(524), 모드2 코드(525), 재저장 코드(526) 및 리턴 코드(528)를 포함한다.
도5에 도시된 문맥 전환(500)에서, 모드1 애플리케이션(410)은 인터럽트를 수신한다. 모드1 애플리케이션(410)의 레지스터는 메모리 및 확장 포맷으로 된다.호출 코드(512)는 모드2 OS(520)에 대해 호출한다. 제어가 모드2 OS(520)로 패스함에 따라, 패치 코드(522)는,JUMPE 명령어와 같은 패치 명령어를 실행함으로써, 에뮬레이션 모드로부터 원시 모드(native mode)로의 천이를 수행한다. 모든 레지스터는 패치 명령어에 대해 메모리 포맷으로 변환된다. 저장 코드(524)는 모든 모드1 레지스터를 비트 저장 명령어를 이용하여 비트로 저장한다. 비트 저장 명령어(예로, STF.SPILL)는 레지스터의 컨텐츠를 변환하지 않고 저장한다. 예를 들어, IA32 FP 레지스터는 변환되지 않고 16바이트로 메모리에 저장된다.
그 후, 모드2 코드(525)는 인터럽트 또는 다른 태스크를 적합하게 제공하기 위해 모드2 명령어 세트(예로, IS64)의 실행을 진행한다. 모드2 코드(525)가 실행을 완료한 후, 재저장 코드(526)는 비트 재저장 명령어를 이용하여 저장된 모드1 레지스터를 비트로 재저장한다. 비트 재저장 명령어(예로, LDF.FILL)는 비트 저장 명령어에 의해 메모리에 저장된 레지스터 비트를 레지스터로 재저장한다. 예를 들어, IA32 FP 레지스터는 변환없이 16바이트로 재저장된다. 그리고 나서, 리턴 코드(528)는 분기 명령어(예로, BR_IA)를 실행함으로써, 모드1 애플리케이션으로 리턴하는 ISA 천이를 야기시킨다. 모드1 애플리케이션(410)에서의 리턴 코드(514)에 대한 리턴시, 모든 레지스터는 메모리 포맷으로 재저장된다. 태깅된 아키텍처가 사용된 경우, 모든 내부 태그는 메모리 포맷으로 리셋된다. 모드1 애플리케이션(410)에서의 리턴 코드(514)는 모드1 환경에서의 연산을 지속한다.
도6은 본 발명의 일실시예에 따른 수 포맷 변환(number format conversion)을 도시한 도면이다. 수 포맷 변환은 패킹된 32-비트 정수(INT) 항목(610)을 패킹된 32-비트 단일 정밀도(SP) 항목(660)으로, 및 그 역으로 변환한다. 패킹된 32-비트 INT 항목(610)은 변환 시퀀스(605)에 의해 패킹된 32-비트 SP 항목(660)으로 변환된다. 패킹된 32-비트 SP 항목(660)은, fpcvt 명령어와 같은 원시 변환 명령어를 이용함으로써, 패킹된 32-비트 INT 항목(610)으로 변환된다.
변환 시퀀스(605)는, 항목(610)을 각 부분이 32-비트 INT 항목인 2개의 개별 부분으로 언패킹함으로써, 패킹된 32-비트 INT 항목(610)을 언패킹된 32-비트 INT 항목(620)으로 변환한다. 각각의 32-비트 INT 항목을 대응하는 64-비트 INT 항목으로 변환함으로써, 언패킹된 32-비트 INT 항목(620)이 언패킹된 64-비트 INT 항목(630)으로 변환된다. 그리고 나서, 각각의 64-비트 INT 항목을 대응하는 82-비트 DP 항목으로 변환함으로써, 언패킹된 64-비트 INT 항목(630)이 언패킹된 82-비트 DP 항목(640)으로 변환된다. 그리고, 82-비트 DP 항목을 패킹된 포맷으로 패킹 또는 결합함으로써, 언패킹된 82-비트 DP 항목(640)이 패킹된 82-비트 DP 항목(650)으로 변환된다. 최종적으로, 패킹된 82-비트 DP 항목(650)은 32-비트 DP 항목(660)으로 변환된다.
도7은 본 발명의 일실시예에 따른 논리 명령어를 에뮬레이팅하는 과정(700)을 도시한 도면이다.
START 후에, 프로세스(700)는 명령어가 ANDNDP, ANDDPD, ORDP, XORDP와 같은 논리적 이중 정밀도(DP) 명령어인지를 판단한다(블록710). 만일, 그렇지 않다면, 프로세스(700)는 종료된다. 만일, 그 명령어가 논리적 DP 명령어 중 하나라면, 다음으로 프로세스(700)는 오퍼랜드가 메모리 포맷인지를 판단한다(블록720). 만일,그렇지 않다면, 프로세스(700)는 종료된다. 만일, 오퍼랜드가 메모리 포맷이라면, 프로세스(700)는 유효자리(significand)가 제로인지를 판단한다. 만일, 그렇지 않다면, 프로세스(700)는 지수 필드를 0x1003E로 설정하고(블록750), 논리 연산을 수행하도록 진행한다(블록760). 만일, 유효자리가 제로라면, 프로세스(700)는 지수 필드를 0x0으로 설정하고(블록740), FAND, FANDCM, FOR, FXOR과 같은 대응하는 논리 연산(블록760)을 수행하도록 진행한다.
도8은 본 발명의 일실시예에 따른 호출 연산(800)을 도시한 도면이다. 호출 연산(800)은 호출자(caller)(810) 및 피호출자(callee)(820)를 포함한다.
호출자(810)는 하나의 데이터 포맷으로 애플리케이션을 실행하여, 피호출자(820)를 호출한다. 피호출자(820)는 다른 데이터 포맷으로 애플리케이션을 실행한다. 호출자는 그 레지스터의 사용법을 알고 있고, 이에 따라 피호출자(820)를 호출하기 전에 보존될 필요가 있는 레지스터만을 저장한다. 피호출자(820)는 레지스터를 메모리에 비트로 저장함으로써, 태그 비트에 따라 레지스터를 비운다. 연산 후에, 피호출자(820)는 메모리에 저장된 레지스터 비트를 메모리 포맷으로 재저장한다. 포맷 부정합이 존재하는 경우, 피호출자(820)는 호출자 명령어를 실행시에 다시 변환한다. 호출자(810)에게 리턴되면, 호출자는 의사 데이터 타입 변환(spurious data type conversion)을 피한다.
도9는 본 발명의 일실시예에 따른 객체 코드 번역(object code translation)을 위한 프로세스(900)를 도시한 흐름도이다.
START 후에, 프로세스(900)는 명령어가 진보된 모드(enhanced mode : EM) 원시 명령어인지를 판단한다(블록910). 만일, 그렇지 않다면, 프로세스(900)는 종료된다. 만일, 명령어가 EM 원시 명령어라면, 프로세스(900)는 그것이 패킹된 DP 명령어 중 하나인지를 판단한다. 만일, 그렇지 않다면, 프로세스(900)는 종료된다. 만일, 그 명령어가 패킹된 DP 명령어라면, 프로세스(900)는 명령어를 대응하는 원시 DP 명령어로 에뮬레이팅한다(블록930). 프로세스(900)는 메모리 포맷(예로, 64-비트 DP)을 확장 DP 포맷(예로, 82-비트 DP)으로 변환하기 위해 적합한 변환 명령어를 삽입한다. 변환 명령어는 통상적으로 저장 및 로드 시퀀스를 포함한다.
다음으로, 프로세스(900)는 DP 명령어를 확장 DP 포맷(예로, 82-비트 DP)으로 실행한다. 실행 후에, 프로세서(900)는 확장 DP 포맷(예로, 82-비트)을 메모리 포맷(예로, 64-비트)으로 변환하기 위해 변환 명령어를 삽입한다. 또한, 변환 명령어는 통상적으로 저장 및 로드 시퀀스를 포함한다. 그리고 나서, 프로세스(900)가 종료된다.
본 발명은 확장 정밀도 포맷 표현을 가진 프로세서 상에서 이중 정밀도 명령어 세트를 에뮬레이팅하는 기술을 제공한다. 이 기술은 포맷 변환, 문맥 전환, 태깅된 아키텍처, 호출 절차 및 변환 명령어를 포함한다.
본 발명이 특정한 예시적인 실시예를 참조하여 설명되었다. 그러나, 첨부된 청구항에서 기술되는 바와 같이, 본 발명의 보다 넓은 사상 및 범위에서 벗어나지 않는 한, 다양한 수정 및 변경이 가능하다는 것은 명백한 사실이다. 따라서, 본 명세서 및 도면은 제한적 관점이라기 보다는 하나의 예시로서 간주되어야 한다. 이에 따라, 본 발명의 범위는 첨부한 청구항에 의해서만 제한되어야 한다.
Claims (28)
- 프로세서 상에서 명령어를 에뮬레이팅하기 위한 방법 - 상기 명령어는 적어도 하나의 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 상기 프로세서는 제2 데이터 포맷으로 연산함 - 에 있어서,적어도 하나의 오퍼랜드를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환하는 단계;상기 제2 데이터 포맷으로 결과를 생성하기 위해, 상기 프로세서에 의해 상기 명령어를 상기 제2 데이터 포맷으로 실행하는 단계; 및상기 결과를 상기 제2 데이터 포맷으로부터 상기 제1 데이터 포맷으로 변환하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 제1 데이터 포맷은 DPFP(double-precision floating-point) 포맷인방법.
- 제2항에 있어서,상기 제2 데이터 포맷은 EDPFP(expanded double-precision floating-point) 포맷인방법.
- 제3항에 있어서,상기 DPFP 포맷은 64-비트 표현(representation)을 가지는방법.
- 제4항에 있어서,상기 EDPFP 포맷은 82-비트 표현을 가지는방법.
- 제5항에 있어서,상기 64-비트 DPFP 포맷은 메모리에서 사용되고, 상기 82-비트 EDPFP 포맷은 상기 프로세서의 레지스터에서 사용되는방법.
- 제6항에 있어서,상기 레지스터가 상기 제1 및 제2 데이터 포맷 중의 하나로 되어있는지를 나타내기 위해, 상기 프로세서의 레지스터 중 하나에 태그 비트를 연관시키는 단계를 더 포함하는 방법.
- 제7항에 있어서,상기 태그 비트와 상기 대응하는 명령어 사이에 부정합(mismatch)이 존재하는 경우. 상기 프로세서는 상기 오퍼랜드를 상기 제1 및 제2 데이터 포맷 중의 하나로 변환하는방법.
- 제8항에 있어서,상기 레지스터 중 하나를 상기 제2 데이터 포맷으로 상기 메모리에 저장하는 단계를 더 포함하는 방법.
- 제9항에 있어서,문맥 전환(context switch)시에 저장 연산이 존재하는 경우, 레지스터의 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리에 저장하는 단계를 더 포함하는 방법.
- 제10항에 있어서,문맥 전환시에 재저장 연산이 존재하는 경우, 상기 레지스터에 저장된 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리로부터 상기 레지스터로 재저장하는 단계를 더 포함하는 방법.
- 프로세서 상에서 명령어를 에뮬레이팅하기 위해, 상기 프로세서에 의한 처리를 위한 컴퓨터 프로그램이 구현된 머신 판독가능 매체 - 상기 명령어는 적어도 하나의 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 상기 프로세서는 제2 데이터 포맷으로 연산함 - 에 있어서,상기 컴퓨터 프로그램은,적어도 하나의 오퍼랜드를 상기 제1 데이터 포맷으로부터 상기 제2 데이터포맷으로 변환하기 위한 제1 코드 세그먼트;상기 제2 데이터 포맷으로 결과를 생성하기 위해, 상기 프로세서에 의해 상기 명령어를 상기 제2 데이터 포맷으로 실행하기 위한 제2 코드 세그먼트; 및상기 제2 데이터 포맷으로부터의 상기 결과를 상기 제1 데이터 포맷으로 변환하기 위한 제3 코드 세그먼트를 포함하는머신 판독가능 매체.
- 제12항에 있어서,상기 제1 데이터 포맷은 DPFP 포맷인머신 판독가능 매체.
- 제13항에 있어서,상기 제2 데이터 포맷은 EDPFP 포맷인머신 판독가능 매체.
- 제14항에 있어서,상기 DPFP 포맷은 64-비트 표현을 가지는머신 판독가능 매체.
- 제15항에 있어서,상기 EDPFP 포맷은 82-비트 표현을 가지는머신 판독가능 매체.
- 제16항에 있어서,상기 64-비트 DPFP 포맷은 메모리에서 사용되고, 상기 82-비트 EDPFP 포맷은 상기 프로세서의 레지스터에서 사용되는머신 판독가능 매체.
- 제17항에 있어서,상기 컴퓨터 프로그램은, 상기 레지스터가 상기 제1 및 제2 데이터 포맷 중의 하나로 되어있는지를 나타내기 위해, 상기 프로세서의 레지스터 중 하나에 태그 비트를 연관시키기 위한 제4 코드 세그먼트를 더 포함하는머신 판독가능 매체.
- 제18항에 있어서,상기 컴퓨터 프로그램은, 상기 태그 비트와 상기 대응하는 명령어 사이에 부정합이 존재하는 경우, 상기 오퍼랜드를 상기 제1 및 제2 데이터 포맷 중의 하나로 변환하기 위한 제5 코드 세그먼트를 더 포함하는머신 판독가능 매체.
- 제19항에 있어서,상기 컴퓨터 프로그램은 상기 레지스터 중 하나를 상기 제2 데이터 포맷으로 상기 메모리에 저장하기 위한 제6 코드 세그먼트를 더 포함하는머신 판독가능 매체.
- 제20항에 있어서,상기 컴퓨터 프로그램은, 문맥 전환시에 저장 연산이 존재하는 경우, 레지스터의 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리에 저장하기 위한 제7 코드 세그먼트를 더 포함하는머신 판독가능 매체.
- 제21항에 있어서,상기 컴퓨터 프로그램은, 문맥 전환시에 재저장 연산이 존재하는 경우, 상기 레지스터에 저장된 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리로부터 상기 레지스터로 재저장하기 위한 제8 코드 세그먼트를 더 포함하는머신 판독가능 매체.
- 프로세서; 및상기 프로세서에 연결된 메모리 - 상기 메모리는 상기 프로세서가 상기 프로세서 상에서 명령어를 에뮬레이팅하도록 야기시키는 코드 시퀀스를 저장하고, 상기 명령어는 적어도 하나의 오퍼랜드에 대해 제1 데이터 포맷으로 연산하고, 상기 프로세서는 제2 데이터 포맷으로 연산함 -를 포함하고,상기 코드 시퀀스는,적어도 하나의 오퍼랜드를 상기 제1 데이터 포맷으로부터 상기 제2 데이터 포맷으로 변환하기 위한 제1 코드 세그먼트;상기 제2 데이터 포맷으로 결과를 생성하기 위해, 상기 프로세서에 의해 상기 명령어를 상기 제2 데이터 포맷으로 실행하기 위한 제2 코드 세그먼트; 및상기 제2 데이터 포맷으로부터의 상기 결과를 상기 제1 데이터 포맷으로 변환하기 위한 제3 코드 세그먼트를 포함하는시스템.
- 제23항에 있어서,상기 코드 시퀀스는, 상기 레지스터가 상기 제1 및 제2 데이터 포맷 중의 하나로 되어있는지를 나타내기 위해, 상기 프로세서의 레지스터 중 하나에 태그 비트를 연관시키기 위한 제4 코드 세그먼트를 더 포함하는시스템.
- 제24항에 있어서,상기 코드 시퀀스는, 상기 태그 비트와 상기 대응하는 명령어 사이에 부정합이 존재하는 경우, 상기 오퍼랜드를 상기 제1 및 제2 데이터 포맷 중의 하나로 변환하기 위한 제5 코드 세그먼트를 더 포함하는시스템.
- 제25항에 있어서,상기 코드 시퀀스는 상기 레지스터 중 하나를 상기 제2 데이터 포맷으로 상기 메모리에 저장하기 위한 제6 코드 세그먼트를 더 포함하는시스템.
- 제26항에 있어서,상기 코드 시퀀스는, 문맥 전환시에 저장 연산이 존재하는 경우, 레지스터의 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리에 저장하기 위한 제7 코드 세그먼트를 더 포함하는시스템.
- 제27항에 있어서,상기 코드 시퀀스는, 문맥 전환시에 재저장 연산이 존재하는 경우, 상기 레지스터에 저장된 컨텐츠를 상기 제2 데이터 포맷으로 상기 메모리로부터 상기 레지스터로 재저장하기 위한 제8 코드 세그먼트를 더 포함하는시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/170,131 | 1998-10-12 | ||
US09/170,131 US6163764A (en) | 1998-10-12 | 1998-10-12 | Emulation of an instruction set on an instruction set architecture transition |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010080104A KR20010080104A (ko) | 2001-08-22 |
KR100401799B1 true KR100401799B1 (ko) | 2003-10-17 |
Family
ID=22618665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2001-7004574A KR100401799B1 (ko) | 1998-10-12 | 1999-10-06 | 명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6163764A (ko) |
KR (1) | KR100401799B1 (ko) |
CN (1) | CN1126034C (ko) |
AU (1) | AU1104000A (ko) |
DE (1) | DE19983632B4 (ko) |
GB (1) | GB2357876B (ko) |
WO (1) | WO2000022524A1 (ko) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US6763452B1 (en) | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
US8074055B1 (en) * | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US8065504B2 (en) | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US7111290B1 (en) * | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US6779107B1 (en) | 1999-05-28 | 2004-08-17 | Ati International Srl | Computer execution by opportunistic adaptation |
US6529862B1 (en) * | 1999-06-30 | 2003-03-04 | Bull Hn Information Systems Inc. | Method and apparatus for dynamic management of translated code blocks in dynamic object code translation |
US6516295B1 (en) * | 1999-06-30 | 2003-02-04 | Bull Hn Information Systems Inc. | Method and apparatus for emulating self-modifying code |
US6564179B1 (en) * | 1999-07-26 | 2003-05-13 | Agere Systems Inc. | DSP emulating a microcontroller |
US6845353B1 (en) * | 1999-12-23 | 2005-01-18 | Transmeta Corporation | Interpage prologue to protect virtual address mappings |
US6609247B1 (en) * | 2000-02-18 | 2003-08-19 | Hewlett-Packard Development Company | Method and apparatus for re-creating the trace of an emulated instruction set when executed on hardware native to a different instruction set field |
US6601163B1 (en) * | 2000-05-08 | 2003-07-29 | International Business Machines Corporation | Method and system for executing adapter configuration routines utilizing different operating modes |
GB2376098B (en) * | 2001-05-31 | 2004-11-24 | Advanced Risc Mach Ltd | Unhandled operation handling in multiple instruction set systems |
US7092869B2 (en) * | 2001-11-14 | 2006-08-15 | Ronald Hilton | Memory address prediction under emulation |
US20030093774A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | State-specific variants of translated code under emulation |
US6907519B2 (en) * | 2001-11-29 | 2005-06-14 | Hewlett-Packard Development Company, L.P. | Systems and methods for integrating emulated and native code |
US7171546B2 (en) * | 2002-05-23 | 2007-01-30 | Adams Phillip M | CPU life-extension apparatus and method |
US7779407B2 (en) * | 2002-05-29 | 2010-08-17 | Adams Phillip M | Computer-hardware, life-extension apparatus and method |
US7299170B2 (en) * | 2003-06-28 | 2007-11-20 | Transitive Limited | Method and apparatus for the emulation of high precision floating point instructions |
US7287173B2 (en) * | 2003-12-19 | 2007-10-23 | Intel Corporation | Method for computing power consumption levels of instruction and recompiling the program to reduce the excess power consumption |
US8255882B2 (en) * | 2004-12-30 | 2012-08-28 | Intel Corporation | Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture |
US7447882B2 (en) * | 2005-04-20 | 2008-11-04 | Arm Limited | Context switching within a data processing system having a branch prediction mechanism |
US7360031B2 (en) * | 2005-06-29 | 2008-04-15 | Intel Corporation | Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces |
US7408484B1 (en) * | 2007-02-20 | 2008-08-05 | International Business Machines Corporation | Method of doing PACK unicode zSeries instructions |
US7394409B1 (en) * | 2007-02-20 | 2008-07-01 | International Business Machines Corporation | Method of doing pack ASCII zSeries instructions |
US8832679B2 (en) * | 2007-08-28 | 2014-09-09 | Red Hat, Inc. | Registration process for determining compatibility with 32-bit or 64-bit software |
US9652210B2 (en) | 2007-08-28 | 2017-05-16 | Red Hat, Inc. | Provisioning a device with multiple bit-size versions of a software component |
CN101676863B (zh) * | 2008-08-15 | 2012-12-26 | 北京北大众志微系统科技有限责任公司 | 一种双宽度指令系统的性能无损切换方法及其应用系统 |
US9727336B2 (en) | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
US9411585B2 (en) * | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US8694973B2 (en) * | 2011-09-27 | 2014-04-08 | Unisys Corporation | Abstracting computational instructions to improve performance |
US9563432B2 (en) | 2013-04-19 | 2017-02-07 | Nvidia Corporation | Dynamic configuration of processing pipeline based on determined type of fetched instruction |
US11263010B2 (en) * | 2019-07-09 | 2022-03-01 | Micron Technology, Inc. | Bit string lookup data structure |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4951195A (en) * | 1988-02-01 | 1990-08-21 | International Business Machines Corporation | Condition code graph analysis for simulating a CPU processor |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
US5507030A (en) * | 1991-03-07 | 1996-04-09 | Digitial Equipment Corporation | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5685009A (en) * | 1994-07-20 | 1997-11-04 | Exponential Technology, Inc. | Shared floating-point registers and register port-pairing in a dual-architecture CPU |
US5742794A (en) * | 1995-10-13 | 1998-04-21 | Dell Usa, L.P. | Emulation techniques for computer systems having mixed processor/software configurations |
US5701508A (en) * | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
US5764959A (en) * | 1995-12-20 | 1998-06-09 | Intel Corporation | Adaptive 128-bit floating point load and store instructions for quad-precision compatibility |
US5729724A (en) * | 1995-12-20 | 1998-03-17 | Intel Corporation | Adaptive 128-bit floating point load and store operations for quadruple precision compatibility |
US5740093A (en) * | 1995-12-20 | 1998-04-14 | Intel Corporation | 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility |
US5920721A (en) * | 1997-06-11 | 1999-07-06 | Digital Equipment Corporation | Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments |
US5870575A (en) * | 1997-09-22 | 1999-02-09 | International Business Machines Corporation | Indirect unconditional branches in data processing system emulation mode |
-
1998
- 1998-10-12 US US09/170,131 patent/US6163764A/en not_active Expired - Lifetime
-
1999
- 1999-10-06 CN CN99812059A patent/CN1126034C/zh not_active Expired - Fee Related
- 1999-10-06 DE DE19983632T patent/DE19983632B4/de not_active Expired - Fee Related
- 1999-10-06 GB GB0107747A patent/GB2357876B/en not_active Expired - Fee Related
- 1999-10-06 KR KR10-2001-7004574A patent/KR100401799B1/ko not_active IP Right Cessation
- 1999-10-06 WO PCT/US1999/023376 patent/WO2000022524A1/en active IP Right Grant
- 1999-10-06 AU AU11040/00A patent/AU1104000A/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2000022524A1 (en) | 2000-04-20 |
GB2357876A (en) | 2001-07-04 |
GB2357876B (en) | 2003-08-27 |
AU1104000A (en) | 2000-05-01 |
DE19983632T1 (de) | 2001-09-27 |
WO2000022524A9 (en) | 2001-01-04 |
CN1328666A (zh) | 2001-12-26 |
KR20010080104A (ko) | 2001-08-22 |
US6163764A (en) | 2000-12-19 |
GB0107747D0 (en) | 2001-05-16 |
DE19983632B4 (de) | 2007-02-22 |
CN1126034C (zh) | 2003-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100401799B1 (ko) | 명령어 세트 아키텍처 천이에 대한 명령어 세트의에뮬레이션 | |
JP5501338B2 (ja) | X86の仮想機をサポートするriscプロセッサ装置及び方法 | |
RU2292581C2 (ru) | Команды загрузки/перемещения и копирования для процессора | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
US5781750A (en) | Dual-instruction-set architecture CPU with hidden software emulation mode | |
KR100327776B1 (ko) | 다중 명령세트를 사용하는 데이터 처리방법 | |
US7434030B2 (en) | Processor system having accelerator of Java-type of programming language | |
US5638525A (en) | Processor capable of executing programs that contain RISC and CISC instructions | |
US9146740B2 (en) | Branch prediction preloading | |
JP2000029704A (ja) | デ―タ型によるコプロセッサの操作コ―ドの分割 | |
GB2540948A (en) | Apparatus with reduced hardware register set | |
KR0167005B1 (ko) | 중앙처리장치 | |
JP3193650B2 (ja) | オペレーティング・システムに影響を与えないエミュレーション・コンテキストの保管と復元を行う方法およびシステム | |
JP2002512399A (ja) | 外部コプロセッサによりアクセス可能なコンテキストスイッチレジスタセットを備えたriscプロセッサ | |
JP2013242918A (ja) | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ | |
JPH0496825A (ja) | データ・プロセッサ | |
US5327567A (en) | Method and system for returning emulated results from a trap handler | |
US6442676B1 (en) | Processor with different width functional units ignoring extra bits of bus wider than instruction width | |
JPH11353305A (ja) | ベクトルレジスタのアドレス指定 | |
US5155818A (en) | Unconditional wide branch instruction acceleration | |
US5754810A (en) | Specialized millicode instruction for certain decimal operations | |
JP2004508607A (ja) | 例外ルーチンを有するプロセッサのレジスタライトトラフィックを減じる装置及び方法 | |
US7039792B1 (en) | Method and system for implementing a floating point compare using recorded flags | |
JP2559929B2 (ja) | プログラマブルコントローラ | |
CN117742727A (zh) | 二进制翻译方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20110930 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20120919 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |