KR101159603B1 - Risc 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법 - Google Patents

Risc 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법 Download PDF

Info

Publication number
KR101159603B1
KR101159603B1 KR1020107012687A KR20107012687A KR101159603B1 KR 101159603 B1 KR101159603 B1 KR 101159603B1 KR 1020107012687 A KR1020107012687 A KR 1020107012687A KR 20107012687 A KR20107012687 A KR 20107012687A KR 101159603 B1 KR101159603 B1 KR 101159603B1
Authority
KR
South Korea
Prior art keywords
floating point
stack
register
pointer
risc processor
Prior art date
Application number
KR1020107012687A
Other languages
English (en)
Other versions
KR20100081366A (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 KR20100081366A publication Critical patent/KR20100081366A/ko
Application granted granted Critical
Publication of KR101159603B1 publication Critical patent/KR101159603B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/30181Instruction operation extension or modification

Landscapes

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

Abstract

본 발명은 RISC 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법을 공개하였다. 상기 프로세서 장치는 다수 개 부동 소수점 레지스터를 포함한 부동 소수점 레지스터 스택, 상기 RISC 프로세서의 조작 명령어에 대하여 디코딩을 진행하는데 사용되는 디코딩 소자, 상기 디코딩 소자와 연결된 부동 소수점 연산 소자, 상기 부동 소수점 레지스터 스테이지에 대하여 제어를 진행하는 컨트롤 레지스터를 포함하고, 상기 컨트롤 레지스터는 디코딩 소자와 부동 소수점 연산 소자를 제어하고 상기 부동 소수점 레지스터 스택을 이용하여 부동 소수점 레지스터 스택을 에뮬레이션하는데 사용되고, 상기 디코딩 소자는 포인터 레지스터를 포함하여 스택 조작 포인터를 유지보호하고 스택 조작 포인터의 값을 저장하는데 사용되고, 상기 부동 소수점 연산 소자는 포인터 조작 모듈을 포함하여 상기 포인터 레지스터에 대하여 조작을 진행하고, 부동 소수점 레지스터 스택 조작 에뮬레이션 시 포인터 레지스터의 스택 포인터의 스택 조작을 에뮬레이션하고, 스택 포인터의 스테이지를 수정 및 모니터링하는데 사용된다. 본 발명이 제공한 장치와 방법은 가상 머신의 효율을 제고하고, 프로세서의 호환성을 강화한다.

Description

RISC 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법 {RISC PROCESSOR DEVICE AND METHOD OF SIMULATING FLOATING-POINT STACK OPERATION THEREOF}
본 발명은 마이크로 프로세서 기술분야에 관한 것으로, 구체적으로 축소 명령어 집합 컴퓨터 (RISC)프로세서 장치 및 상기 장치의 부동 소수점 스택 조작의 에뮬레이션에 의해 부동 소수점 데이터의 푸시 스택 및 풀 스택 등 스택 조작을 진행하는 방법에 관한 것이다.
센터 프로세서(CPU)는 마이크로 프로세서라고 약칭, 즉 컴퓨터의 핵심 유닛이다. 마이크로 프로세서가 활용하는 명령어 집합, 디자인 규범 (아키텍처)은 컴퓨터의 주요한 특징이고, 이는 컴퓨터가 활용해야 할 주변 기기와 응용 소프트웨어의 유형을 결정한다.
현재 세계적으로 비교적 유행되는 두가지 프로세서 아키텍처로는 MIPS회사의 MIPS32/64명령어 집합을 대표로 하는 축소 명령어 집합 컴퓨터 (Reduced Instruction Set Computing, RISC)프로세서 아키텍처와 Intel 회사의 복잡 명령어 집합 컴퓨터 (Complex Instruction Set Computing, CISC)프로세서 아키텍처가 있다. CISC프로세서 명령어는 수량이 많고, 부분적 명령어는 상당히 복잡한 기능을 집행할수 있어, 일반적으로 많은 클록 주기를 통해 집행해야 한다. RISC프로세서는 비교적 적은 수량의 사용 가능한 명령어를 사용하여, 비교적 빠른 속도로 한 세트의 간단한 기능을 집행한다. 그러나 부동한 아키텍처를 활용한 프로세서에서 운행하는 프로그램 소프트웨어는 프로세서의 아키텍처에 대응되게 별도로 작성해야 하고, 통상적으로 X86의 응용 소프트웨어는 MIPS명령어 집합의 RSIC프로세서 컴퓨터에서 운행할 수 없다. 즉 통상적으로 말하는 호환 불가능이다.
그러나 컴퓨터 제조 업체는 제조한 한가지 아키텍처의 마이크로 프로세서에서 더욱 많은 기존의 소프트웨어를 운행하여 소프트웨어 개발 비용을 절감하려 함과 동시에, 시장 점유율을 최대화 하는 목적에 도달하려 하고 있다.
상기 문제를 해결하기 위하여, 가상 머신이 출현하였다. 일반적으로, 한가지 유형의 아키텍처를 구비한 프로세서(CPU) 컴퓨터를 호스트라고 한다. 동시에 호스트 이뮬레이션이 필요한, 아키텍처 유형과 상관없는 프로세서(CPU) 환경을 타겟 머신이라고 한다. 한가지 응용 프로그램이 필요하되, 동 프로그램은 호스트가 1개 혹은 다수개 응용 프로그램을 실행하도록 하고 소정의 타겟 머신 명령어에 응답하게 하며 타겟 머신을 위해 작성된 소프트웨어를 운행하게 한다. 이런 프로그램을 가상 머신이라고 한다.
현재, 기존의 가상 머신은 SimOS, QEMU, Transmeta 등이 있는데, 기존의 가상 머신은 각종 아키텍처의 커다란 차이로 인해 과대한 가상 머신 운행 비용을 초래하고, 실행 효율이 떨어져 실제 작업 중 응용이 어려운 상황이다.
X86프로세서 아키텍처는 현재 퍼스널 컴퓨터(PC)에서 비교적 유행되는 한가지 구조이다. 따라서, 많은 가상 머신은 모두 X86프로세서 아키텍처를 타겟 머신으로 하고 있어, X86프로세서에 대한 호환성 문제를 해결해야 한다. 알고있는 바와 같이, 시급히 해결해야 할 문제는 X86프로세서가 구비한 특유한 부동 소수점 스택 메커니즘에 대한 에뮬레이션이다. 보편적으로, CISC유형의 프로세서는, 예를 들면 X86, 모두 1개의 부동 소수점 레지스터 스택을 설치하고, 대부분 부동 소수점 연산은 모두 레지스터 스택의 참여하에 진행된다. X86프로세서를 제외 한 기타 프로세서는, 특별히 MIPS명령어 집합의 RISC프로세서는, 유사한 구조가 없다. 이로 인하여, 가상 머신에서 부동 소수점 번역을 진행하는 방법은 많은 가상 머신 연구개발 부문에서 해결해야 되는 핵심 문제로 되고있다.
X86프로세서의 부동 소수점 연산은 푸시 스택 (부동 소수점 로드 명령어), 풀 스택 (부동 소수점 보존 명령어 ), 부동 소수점 연산 명령어 및 기타 보조 명령어를 제공하였고, 프로그램은 부동 소수점 로드 명령어를 통해 메모리 중 부동 소수점 데이터를 부동 소수점 레지스터 스택에 푸시할 수 있고, 부동 소수점 연산 명령어를 통해 부동 소수점 데이터에 대하여 연산을 진행할 수 있고, 부동 소수점 보존 명령어를 통해 풀 스택을 진행할 수 있으며, 스택 톱 레지스터의 내용을 메모리 유닛에 보존할 수 있다.
이런 부동 소수점 연산방식은 CISC프로세서, 예를 들면 X86프로세서만이 구비한 특유의 것이고, 기타 유형의 프로세서, 예를 들면 MIPS 명령어 집합의 RISC 프로세서는 거의 유사한 연산방식이 없다.
일반적으로, 비 CISC 프로세서에 있어서, 예하면 MIPS 명령어 집합을 사용하는 RISC 프로세서는 내부에 몇개의 범용 부동 소수점 레지스터를 설치하고, 상기 부동 소수점 레지스터는 통일적으로 넘버를 설정하며, 명령어는 상기 넘버를 통하여 1개의 고정된 부동 소수점 레지스터를 직접 액세스한다. X86 프로세서에서는 명령어가 조작하는 레지스터가 스택 톱 포인터의 변화에 따라 변화한다. 일반적으로, 이진체계 데이터의 번역 문제를 해결하기 위하여, 비 CISC프로세서, 예를 들면 RISC프로세서는 메모리에서 새로운 공간을 개척하여 시뮬레이션 X86부동 소수점 레지스터 스택을 유지보호하는 것이 필요하다.
출원 번호가 200410074532.6인 중국 출원에 의하면, 이진체계 번역에서 X86 부동 소수점 연산에 대한 처리방법을 공개하였고, 운행 시 환경에서 1개 부동 소수점 스택을 설치하여, X86의 물리 부동 소수점 스택을 시뮬레이션 하는데 사용하고, 부동 소수점 레지스터의 맵핑 (mapping) 처리와 정규(normalizing)방법을 거쳐 소스 이진체계 프로그램 중 각 베이스 블록 (basic block)에 대하여 순차적으로 처리를 진행하는 스텝을 포함한다. 이는 타겟 머신의 레지스터를 통해 X86의 소스 레지스터를 맵핑하여, 타겟 머신에서도 X86프로세서의 부동 소수점 연산이 레지스터에 의하여 실현됨을 보장하고, 연산의 효율을 확보한다. 정규법을 이용하여 각 베이스 블록의 입구가 매회 top 값이 동등하도록 만족시킨다는 가설을 확보한다.
그러나, 상기 종래기술은 각종 X86부동 소수점 조작을 정확하게 시뮬레이션할 수 있지만 효율이 낮고, 기능상의 도약을 가져올 수 없다.
본 발명이 해결 하려는 문제는 RISC 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법을 제공함으로써, RISC 프로세서에서 부동 소수점 스택 조작을 지원하여, 상이한 스트럭쳐(structure)의 가상 머신이 이진체계 번역 작업을 편리하게 진행할 수 있고, 가상 머신의 효율을 제고하고, 프로세서의 호환성을 제고하는 것이다.
본 발명의 상기 문제를 해결하기 위하여, 본 발명은RISC 프로세서 장치를 제공, 동 장치는 다수개 부동 소수점 레지스터를 포함한 부동 소수점 레지스터 파일; RISC프로세서의 조작 명령어에 대하여 디코딩을 진행하는데 사용되는 디코딩 소자; 및 상기 디코딩 소자와 연결된 부동 소수점 연산 소자를 포함하고, 상기 부동 소수점 연산 소자는 상기 디코딩 소자의 출력 값에 의해 상기 부동 소수점 레지스터 파일을 리드 / 라이트하고 부동 소수점 연산을 진행하며, 또한 상기 부동 소수점 레지스터 상태에 대하여 제어를 진행하는 컨트롤 레지스터를 더 포함하고, 상기 컨트롤 레지스터는 상기 디코딩 소자와 상기 부동 소수점 연산 소자를 제어하고 상기 부동 소수점 레지스터 파일을 이용하여 부동 소수점 레지스터 스택 조작을 에뮬레이션하는데 사용되고,
상기 디코딩 소자는 스택 조작 포인터를 유지보호하고, 스택 조작 포인터의 값을 저장하는데 사용되는 1개 포인터 레지스터를 포함하고,
상기 부동 소수점 연산 소자는 상기 포인터 레지스터에 대하여 조작을 진행하고, 상기 부동 소수점 레지스터 스택 조작 에뮬레이션 시, 상기 스택 조작 포인터의 스택 조작을 에뮬레이션하고, 상기 스택 조작 포인터의 상태를 수정 및 모니터링하는데 사용되는 1개 포인터 조작 모듈을 포함하는 것을 특징으로 한다.
상기 컨트롤 레지스터는 1개 스택 이네이블 비트를 유지보호하고, 이네이블 비트가 1일 때, RISC 프로세서가 부동 소수점 레지스터 스택 조작을 에뮬레이션함을 표시하고, 이네이블 비트가 0일 때, RISC 프로세서가 부동 소수점 레지스터 스택 조작을 에뮬레이션하지 않음을 표시하는 것을 특징으로 한다.
상기 부동 소수점 레지스터 파일은 넘버가 0~31인 32개 부동 소수점 레지스터를 포함하는 것을 특징으로 한다.
상기 스택 조작 포인터는 리드, 라이트, 1을 덧셈, 1을 뺄셈하는 조작을 실행하는 스택 조작 포인터인 것을 특징으로 한다.
상기 컨트롤 레지스터 중 스택 이네이블 비트가 1로 설정될 경우, 상기 디코딩 소자는 상기 스택 조작 포인터의 값에 의해 32개 부동 소수점 레지스터 중 8개 레지스터의 넘버에 대하여 전환을 진행하여, X86 프로세서의 부동 소수점 레지스터 스택의 시리얼 넘버가 0~7인 스택 레지스터를 에뮬레이션하는 것을 특징으로 한다.
본 발명의 상기 문제를 해결하기 위하여, 본 발명은 또한 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법을 제공하고, 다수개 부동 소수점 레지스터를 포함한 부동 소수점 레지스터 파일; 디코딩 소자와 부동 소수점 연산 소자를 제어하고 상기 부동 소수점 레지스터 파일을 이용하여 부동 소수점 레지스터 스택 조작을 에뮬레이션하는데 사용되는 컨트롤 레지스터; 상기 RISC 프로세서의 조작 명령어에 대하여 디코딩을 진행하는데 사용되는 디코딩 소자; 및 상기 디코딩 소자와 연결된 부동 소수점 연산 소자를 포함하는 RISC 프로세서에 있어서 상기 부동 소수점 연산 소자는 상기 디코딩 소자의 출력 값에 의해 상기 부동 소수점 레지스터 파일을 리드/라이트하여, 부동 소수점 연산을 진행하고, 상기 컨트롤 레지스터는 1개 스택 이네이블 비트를 유지보호하고, 상기 디코딩 소자는 포인터 레지스터를 포함하며, 상기 부동 소수점 연산 소자는 포인터 조작 모듈을 포함하고, 동 방법은,
상기 스택 이네이블 비트에 의해, 부동 소수점 레지스터를 선정하여 부동 소수점 레지스터 스택 조작 에뮬레이션에 사용할지 여부를 결정하고, 포인터 레지스터를 설정하는 스텝A; 및
부동 소수점 레지스터 스택 조작 에뮬레이션 시, 포인터 레지스터에 대하여 조작을 진행하고, 스택 조작 포인터의 스택 조작을 에뮬레이션하고, 스택 조작 포인터의 스테이지를 수정 및 모니터링하는 스텝B를 포함하는 것을 특징으로 한다.
상기 스텝A는,
컨트롤 레지스터에서 1개 비트를 선택하여 부동 소수점 스택 이네이블 비트로 하고, 이네이블 비트가 1로 설정될 경우, RISC 프로세서가 X86 부동 소수점 레지스터 스택을 에뮬레이션하여 부동 소수점 레지스터 스택 조작을 진행함을 표시하고, 이네이블 비트가 0으로 설정될 경우, RISC 프로세서가 X86 부동 소수점 레지스터 스택을 에뮬레이션하지 않고, 부동 소수점 레지스터 스택 조작을 진행하지 않고, RISC 프로세서는 통상적인 과정에 따라 작업함을 표시하는 스텝A1;
적어도 3 비트인 1개 포인터 레지스터를 설정하고, 스택 조작 포인터의 값을 저장하는 스텝A2를 포함하는 것을 특징으로 한다.
상기 스텝B는,
스택 조작 모드를 세팅하고, 부동 소수점 스택 이네이블 비트를 1로 설정하고, 유저가 부동 소수점 레지스터 스택 조작을 에뮬레이션하는 것을 허락하는 스텝;
스택 조작 모드를 클리어하고, 부동 소수점 스택 이네이블 비트를 0으로 설정하고, 유저가 부동 소수점 레지스터 스택 조작을 에뮬레이션하는 것을 허락하지 않는 스텝;
스택 조작 포인터 값에 대하여 1을 덧셈하는 스텝;
스택 조작 포인터 값에 대하여 1을 뺄셈하는 스텝;
스택 조작 포인터 값을 리드하는 스텝;
스택 조작 포인터 값을 라이트하는 스텝을 포함한다.
본 발명에 있어서, RISC 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법은, RISC 프로세서에서 컨트롤 레지스터에 의해 제어하고 부동 소수점 레지스터 스택을 이용하여 부동 소수점 레지스터 스택 조작을 에뮬레이션하고, 컨트롤 레지스터에서 스택 이네이블 비트를 이네이블로 설정했을 경우, 32개 부동 소수점 레지스터 중 8개 레지스터를 선택하여 X86 프로세서의 부동 소수점 레지스터 스택의 시리얼 넘버가 0?7인 스택 레지스터를 에뮬레이션하여, 부동 소수점 스택 조작을 지원함으로써, 상이한 구조의 가상 머신의 이진체계 번역 작업이 편리하도록 하고, 프로그램의 운행 효율을 제고하고, 프로세서 호환성을 강화한다.
도1은 본 발명 중 RISC 프로세서 장치 구조 예시도이다.
도2는 본 발명 중 RISC 프로세서의 부동 소수점 스택 조작 에뮬레이션 흐름도이다.
도3은 본 발명의 실시예에 있어서 MIPS 명령어 집합을 이용하여 스택 조작 모드를 세팅하고 이네이블 비트를 1로 설정하는 것을 실현하는 명령어 코드의 예시도이다.
도4는 본 발명 실시예에 있어서 MIPS명령어 집합을 이용하여 스택 조작 모드를 클리어하고 이네이블 비트를 0으로 설정하는 것을 실현하는 명령어 코드의 예시도이다.
도5는 본 발명 실시예에 있어서 MIPS명령어 집합을 이용하여 스택 포인터 값에 대하여 1을 덧셈하는 것을 실현하는 명령어 코드의 예시도이다.
도6은 본 발명 실시예에 있어서 MIPS명령어 집합을 이용하여 스택 포인터 값에 대하여 1을 뺄셈하는 것을 실현하는 명령어 코드의 예시도이다.
도7은 본 발명 실시예에 있어서 MIPS명령어 집합을 이용하여 스택 포인터 값을 리드하는 것을 실현하는 명령어 코드의 예시도이다.
도8은 본 발명 실시예에 있어서 MIPS명령어 집합을 이용하여 스택 포인터 값을 라이트하는 것을 실현하는 명령어 코드의 예시도이다.
본 발명의 목적, 기술방안, 기술효과가 더욱 명확하게 하기 위하여, 이하 첨부된 도면과 실시예를 결부하여, 본 발명의 X86가상 머신을 지원하는 RISC프로세서 장치 및 방법에 대하여 진일보 상세한 설명을 진행한다. 또한 이하에서 서술할 구체적인 실시예는 본 발명에 대한 해석일 뿐 본 발명에 대한 제한이 아님을 이해해야 한다.
본 발명 실시예는 MIPS64 명령어 집합의 RISC 프로세서 장치를 실시예로, 본 발명의 RISC 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법에 대하여 설명을 진행한다. 그러나 이는 본 발명에 대한 제한이 아님을 당업자들은 자명할 것이다.
본 발명 실시예에서 RISC 프로세서 및 그의 부동 소수점 스택 조작 에뮬레이션 방법을 제공하였고, 이는 협동 디자인(collaborative design) 가상 머신에 활용되어, RISC 프로세서에서 CISC 프로세서 스트럭쳐 부동 소수점 스택 조작을 지원한다. 예를 들면 X86 프로세서 중 부동 소수점 스택 조작이다.
본 발명을 진일보 이해하기 위하여, 본 발명 실시예는 우선 CISC 프로세서 아키텍처에 대하여 설명한다. 예를 들면, X86프로세서의 부동 소수점 스택 조작 방법이다.
X86 프로세서의 부동 소수점 소자는 1개의 부동 소수점 레지스터 스택을 포함하고, 상기 스택은 8개의 부동 소수점 연산을 직접 진행 할 수 있는 스택 레지스터로 그루핑되고, 순차적으로 넘버드 (numbered)를 진행하여, 각기 0~7로 한다. 상기 레지스터를 부동 소수점 레지스터 스택이라고 하는 것은, X86 프로세서가 이들을 하나의 스택으로 하여 사용하기 때문이다. 부동 소수점 레지스터 스택은 아래로 확장하는 순환 스택이다. 프로세서는 다른 1개의 레지스터의 3개 비트를 이용하여 스택 톱의 위치를 표시하고, 동 3개 비트를 TOP 포인터라고 부른다.
스택 레지스터에 데이터 로드가 필요할 경우, 즉 푸시 스택을 진행할 경우, TOP 포인터의 값에서 1을 뺄셈하고, 데이터를 TOP포인터가 지시하는 부동 소수점 레지스터에 저장하고, TOP포인터 값이 0일 때, 다음 푸시 스택은 데이터를 7번 스택 레지스터에 푸시하고, TOP포인터의 값은 7로 설정된다.
스택 중의 데이터를 메모리에 보존할 경우, 즉 풀 스택을 팝업(pop-up) 시, 풀 스택 조작을 진행하고, 풀 스택 조작과 푸시 스택 조작은 유사하며, TOP 포인터에 대하여 1을 덧셈한다. 만일 이때 TOP 포인터 값이 7이면, 풀 스택 후의 TOP 포인터 값은 0으로 설정된다.
X86 프로세서에서, 상기 푸시 스택과 팝 스택 조작은 하드웨어에 의하여 자동으로 실현되고, 유저에 대하여 투명하다.
명령어를 이용하여 부동 소수점 데이터에 대하여 조작을 진행 시, 볼 수 있는 부동 소수점 레지스터는 ST(0), S(1), ……, ST(7)이다. 그 중, ST(i)는 스택 톱으로부터 i개 유닛 떨어져 있는 레지스터를 가리키고, TOP 포인터 값이 2일 경우, ST(0)은 제2번 레지스터이고, ST(1)은 제3번 레지스터이고, 기타도 이와 같이 순차적으로 추정할 수 있다.
아래, 본 발명의 RISC 프로세서 장치에 대하여 상세히 설명한다.
도1에서 보이는 바와 같이, 본 발명의 RISC 프로세서는 다수 개 부동 소수점 레지스터를 함유한 기존의 부동 소수점 레지스터 스택(4), 상기 RISC 프로세서의 조작 명령어에 대하여 디코딩을 진행하는 디코딩 소자(2), 및 상기 디코딩 소자(2)와 연결된 부동 소수점 연산 소자(3)를 포함하고, 상기 부동 소수점 연산 소자(3)는 상기 디코딩 소자의 출력 값에 따라 상기 부동 소수점 레지스터 스택(4)에 대하여 리드/ 라이트하고, 부동 소수점 연산을 진행한다.
상기 RISC 프로세서는 상기 부동 소수점 레지스터 스테이지에 대하여 제어를 진행하는 컨트롤 레지스터(1)를 더 포함하고, 상기 디코딩 소자(2)와 상기 부동 소수점 연산 소자(3)를 제어하고 부동 소수점 레지스터 스택(4)을 이용하여 부동 소수점 레지스터 스택 에뮬레이션을 이네이블 (enable) 혹은 디스이네이블 (disable)하는데 사용된다. 컨트롤 레지스터(1)가 상기 부동 소수점 레지스터 스테이지에 대하여 제어를 진행하는 것은 당업자에게 있어서 숙지한 것이다. 여기에서 본 발명에 의한 상기 컨트롤 레지스터(1)는 또한 상기 디코딩 소자(2)와 상기 부동 소수점 연산 소자(3)를 제어하고 부동 소수점 레지스터 스택(4)을 이용하여 부동 소수점 레지스터 스택 에뮬레이션을 이네이블 혹은 디스이네이블 하는데 진일보로 사용된다.
컨트롤 레지스터(1)는 한개 스택 이네이블 비트를 유지보호하고, 이네이블 비트가 1일 경우, 프로세서가 X86 프로세서의 부동 소수점 레지스터 스택 조작을 에뮬레이션함을 표시하고, 이네이블 비트가 0일 경우, 프로세서가 X86 프로세서의 부동 소수점 레지스터 스택 조작을 에뮬레이션하지 않고 통상적인 절차에 따라 조작 처리를 진행함을 표시한다.
본 발명 실시예에 있어서, 상기 부동 소수점 레지스터 스택(4)은 넘버가 0~31인 32개 기존의 부동 소수점 레지스터를 포함하고, X86 프로세서의 부동 소수점 레지스터 스택의 에뮬레이션에 사용된다.
상기 디코딩 소자(2)는 1개의 포인터 레지스터(21)를 포함하고, 1개의 TOP포인터(즉 스택 조작 포인터)의 유지보호에 사용된다. 동 TOP 포인터는 리드, 라이트, 1을 덧셈, 1을 뺄셈할 수 있다.
상기 부동 소수점 연산 소자(3)는 포인터 조작 모듈(31)을 포함하고, 포인터 레지스터(21)에 대하여 조작을 진행하고, 부동 소수점 레지스터 스택 조작 에뮬레이션의 경우, 포인터 레지스터(21)의 스택 조작 포인터의 스택 조작을 에뮬레이션하고, 스택 조작 포인터의 상태를 수정 및 모니터링하는데 사용된다.
일 실시예로, 컨트롤 레지스터(1) 중의 스택 이네이블 비트가 1로 설정될 경우, 상기 디코딩 소자(2)는 상기 스택 조작 포인터의 값에 따라 32개 부동 소수점 레지스터 중 8개 레지스터의 넘버에 대하여 전환을 진행하여, X86 프로세서의 부동 소수점 레지스터 스택의 시리얼 넘버가 0~7인 스택 레지스터를 에뮬레이션한다.
컨트롤 레지스터(1) 중 스택 이네이블 비트가 1로 설정될 경우, 연산 과정에서 사용되고, 레지스터가 에뮬레이션한 부동 소수점 레지스터 스택이 존재함을 표시하고, 따라서 부동 소수점 연산 명령어 중 사용되는 넘버가 8 이하인 레지스터는 모두 부동 소수점 레지스터 스택의 스택 레지스터로 사용되어, X86 프로세서의 부동 소수점 레지스터 스택을 에뮬레이션한다.
그런후, 포인터 조작 모듈(31)은 TOP 포인터를 사용하여 스택 레지스터 번호에 대하여 전환을 진행한다. 즉 유저가 볼수 있는 부동 소수점 레지스터 번호와 프로그램이 사용하는 부동 소수점 레지스터 번호를 전환한다. 예를 들면, 레지스터 번호는 스택 톱과 i개 유닛 떨어져 있는 레지스터 ST(i)에 TOP 포인터 값을 더한 것이다. 만일 TOP 포인터 값이 2이면, ST(0)은 제2번 레지스터이고, ST(1)은 제3번 레지스터이다. 만일 오버플로도 상응한 처리과정이 있다고 할 경우, 동 그룹의 레지스터는 1개 순환 스택을 형성하여, 본 발명이 실현하려는 x86 부동 소수점 레지스터 스택 기능의 에뮬레이션을 완성할 수 있다. 계속하여 후속 작업을 진행하고, 후속 작업은 스택 이네이블을 설정하지 않은 것과 같다.
컨트롤 레지스터(1) 중의 스택 이네이블 비트가 0으로 설정될 경우, 즉 0으로 클리어 되면, 연산 중 레지스터 에뮬레이션 스택이 존재하지 않는 것으로 판단하고, 기존의 작업 스텝에 따라 통상적으로 작업을 진행한다.
아래 본 발명의 RISC 프로세서의 부동 소수점 스택 조작 에뮬레이션 방법에 대해 진일보 설명하도록 한다. 도1에서 보이는 바와 같이, 상기 RISC프로세서는 다수개 부동 소수점 레지스터를 포함한 부동 소수점 레지스터 파일(4); 부동 소수점 레지스터 스택 상태에 대하여 제어를 진행하는 컨트롤 레지스터(1), 동 컨트롤 레지스터는 디코딩 소자(2)와 부동 소수점 연산 소자(3)를 제어하고 상기 부동 소수점 레지스터 파일(4)을 이용하여 부동 소수점 레지스터 스택의 조작을 에뮬레이션하는데 사용되고; 상기 RISC 프로세서의 조작 명령어에 대하여 디코딩을 진행하는데 사용되는 디코딩 소자(2); 상기 디코딩 소자(2)와 연결된 부동 소수점 연산 소자(3)를 포함한다. 상기 부동 소수점 연산 소자(3)는 상기 디코딩 소자(2)의 출력 값에 따라 상기 부동 소수점 레지스터 파일(4)에 대하여 리드/ 라이트 하고, 부동 소수점 연산을 진행한다. 그 중, 상기 컨트롤 레지스터(1)는 1개 스택 이네이블 비트를 유지보호하고, 상기 디코딩 소자(2)는 포인터 레지스터(21)를 포함하고, 상기 부동 소수점 연산 소자(3)는 포인터 조작 모듈(31)을 포함한다. 상기 방법은 RISC 프로세서의 8개 부동 소수점 레지스터로 부동 소수점 레지스터 파일을 구성하고, 컨트롤 레지스터(1)를 이용하여 X86의 TOP포인터 기능(즉 스택 포인터 조작 기능)을 에뮬레이션함으로써 부동 소수점 레지스터의 스택 조작에 대한 에뮬레이션을 완성한다.
도2에서 보이는 바와 같이, 본 발명의 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법은 하기와 같은 스텝을 포함한다.
스텝 S100, 상기 스택 이네이블 비트에 의해, 8개 부동 소수점 레지스터를 선택하여 부동 소수점 레지스터 스택 중 8개 스택 레지스터의 에뮬레이션에 사용할지 여부를 결정하고, 부동 소수점 레지스터 스택 조작을 에뮬레이션하고, 포인터 레지스터를 설정한다.
상기 스텝 S100은 아래와 같은 스텝을 포함한다.
스텝 S110, 컨트롤 레지스터(1)에서 1개 비트를 부동 소수점 스택 이네이블 비트로 선택하고, 이네이블 비트가 1로 설정될 경우, X86 프로세서의 부동 소수점 스택을 에뮬레이션함을 표시하고, 부동 소수점 스택 조작을 진행하고; 이네이블 비트가 0으로 설정될 경우, X86 프로세서의 부동 소수점 스택을 에뮬레이션하지 않음을 표시함으로, 부동 소수점 스택 조작을 진행할 수 없고 프로세서는 통상적인 과정에 따라 작업을 진행한다.
스텝 S120, 적어도 3 비트인 포인터 레지스터(21) 1개를 설치하고, TOP 포인터의 값을 저장한다.
상기 TOP 포인터의 값은 리드, 라이트, 1을 덧셈, 1을 뺄셈할 수 있고, TOP 포인터의 범위는 0~7이다.
TOP 포인터는 푸시 스택 시, 7번 레지스터를 푸시하고, TOP 포인터의 값은 6으로 설정된다. 팝 스택 시, 만일 TOP 포인터 값이 7이면, 팝 스택 후 TOP 포인터 값을 0으로 설정한다.
TOP 포인터는 영원히 스택 톱 레지스터를 가리킨다. 따라서 본 스택은 위로부터 아래로 생장한다. 즉 푸시 스택 시 TOP 포인터 값에 대하여 1을 뺄셈하고, 팝업 시 TOP 포인터 값에 대하여 1을 덧셈한다. 따라서 7번 레지스터에 데이터를 저장할 때 (즉 7번 레지스터에 푸시 스택할 때), TOP포인터 값은 응당 뺄셈하여 6으로 변해야 한다. 7번 레지스터부터 데이터를 팝업할 때, TOP 포인터 값에 대하여 응당 1을 덧셈하여 8로 변하도록 한다. 그러나 0?7번까지 총 8개 레지스터뿐이므로, TOP 포인터 값의 최대치는 7이고, 1을 덧셈 시, TOP 포인터는 응당 다음 레지스터를 가리킨다. 즉 순환 스택 중 0번 레지스터이다. 이 때, TOP 포인터 값은 0으로 변한다.
예를 들면, 만약 TOP 포인터의 값이 3이고, 이네이블 비트가 1일 경우, 연산에 참여한 부동 소수점 레지스터가 $f(i):i<=7이면, 부동 소수점 레지스터 $f(j)으로 부동 소수점 레지스터 $f(i)을 교체하여 연산을 진행하고, 그 중 j=(i+3) mod 8;
만약 레지스터가 $f(i):i>7이면, 교체할 필요가 없이 부동 소수점 레지스터 $f(i)을 직접 사용하면 된다.
스텝 S200, 부동 소수점 레지스터 스택 조작 에뮬레이션의 경우, 포인터 레지스터(21)에 대하여 조작을 진행하고, 스택 조작 포인터의 스택 조작을 에뮬레이션하고, 스택 조작 포인터의 스테이지를 수정 및 모니터링한다.
상기 스텝 S200은 아래와 같은 스텝을 포함한다.
스텝 S210, 스택 조작 모드를 세팅하고, 부동 소수점 스택 이네이블 비트를 1로 설정하고, 유저가 부동 소수점 레지스터 스택을 에뮬레이션하여 부동 소수점 스택 조작을 진행하도록 허락한다.
일 실시예로, 부동 소수점 스택 에뮬레이션 모드를 설정하고, X86부동 소수점 스택 모드를 1로 설정하는 것은 아래와 같은 명령어에 의해 실행된다.
명령어 포맷: SETTM
본 발명이 제공하는 확장 명령어의 명령어 코드는 도3과 같이, MIPS명령어 집합 중 SPECIAL2의 보이드 슬롯(void slot)의 보유 값(retention value)을 이용하여 확장 명령어를 정의한다.
명령어에 의해 이네이블 비트를 1로 설정하는 조작을 완성하고, X86부동 소수점 스택 모드를 위하여 비트를 설정하고, 유저가 x86부동 소수점 스택을 사용하여 부동 소수점 조작을 진행하도록 허락한다.
스텝 S220, 스택 조작 모드를 클리어하고, 부동 소수점 스택 이네이블 비트를 0으로 설정하여, 유저가 부동 소수점 레지스터 스택을 에뮬레이션하여 부동 소수점 스택 조작을 진행하는 것을 허락하지 않는다.
일 실시예로, 본 발명 실시예는 부동 소수점 스택 에뮬레이션 모드를 클리어한다. X86부동 소수점 스택 모드를 0으로 설정하는 명령어 포맷: CLRTM
본 발명이 제공하는 확장 명령어의 명령어 코드는 도4에서 보이는 바와 같다.
동 명령어 코드는 X86부동 소수점 스택 모드의 비트를 클리어 하고, 유저가 x86부동 소수점 스택을 사용하는 것을 허락하지 않고, 단지 MIPS프로세서의 부동 소수점 레지스터를 사용하여 부동 소수점 조작을 진행하도록 한다.
상기 비트를 설정하거나 클리어하는 스택 포인터 조작 명령어는 각기 부동 소수점 레지스터 스택의 활성화 및 금지 작업을 완성할 수 있다.
스텝 S230, 스택 조작 포인터 값에 대하여 1을 덧셈한다. 즉 TOP 포인터의 값에 대하여 1을 덧셈한다.
일 실시예로, 본 발명 실시예에서 스택 포인터 값에 대하여 1을 덧셈함에 있어서, 즉 TOP포인터의 값에 대하여 1을 덧셈하는 명령어 포맷은 INCTOP이다.
본 발명이 제공하는 확장 명령어의 명령어 코드는 도5에서 보이는 바와 같다.
스텝 S240, 스택 조작 포인터 값에 대하여 1을 뺄셈한다. 즉 TOP 포인터 값에 대하여 1을 뺄셈한다.
일 실시예로, 본 발명 실시예에서 스택 포인터 값에 대하여 1을 뺄셈함에 있어서, 즉 TOP 포인터 값에 대하여 1을 뺄셈하는 명령어 포맷은 DECTOP 이다.
본 발명이 제공하는 확장 명령어의 명령어 코드는 도6에서 보이는 바와 같다.
상기 TOP 포인터 값에 대하여 1을 덧셈하거나, 1을 뺄셈하는 명령어는 각기 X86프로세서 부동 소수점 스택 중 스택 인(in), 스택 아웃(out) 작업을 에뮬레이션할 수 있다.
스텝 250, 스택 조작 포인터 값을 리드한다. 즉 TOP포인터의 값을 판독한다.
일 실시예로, 본 발명 실시예에서 TOP 포인터 값을 리드인(read in)하는 조작의 명령어 포맷은 MFTOP rd이다.
동 명령어의 기능은 X86부동 소수점 스택 톱 포인터의 값을 레지스터 GPR[rd]에 저장(write in)하는 것이다.
본 발명이 제공하는 확장 명령어의 명령어 코드는 도7에서 보이는 바와 같다.
스텝 S260, 스택 조작 포인터 값을 라이트한다. 즉 포인터 레지스터 21에 현재 TOP포인터의 값을 저장한다.
일 실시예로, 본 발명 실시예에서 TOP포인터 값 라이트를 완성하는 조작의 명령어 포맷은 MTTOP imm이다.
동 명령어의 기능은 3 비트인 이미디어트 넘버 imm를 x86부동 소수점 스택 톱 포인터에 라이트 한다.
본 발명이 제공하는 확장 명령어의 명령어 코드는 도8에서 보이는 바와 같다.
상기 TOP포인터를 리드, 라이트 하는 명령어는 부동 소수점 스택을 간편하게 제어 조작할 수 있다.
본 발명의 RISC프로세서 부동 소수점 스택 조작 에뮬레이션 방법을 더 잘 이해하기 위하여, 하기에 가법 연산 중 스택 포인터 조작을 예로 설명을 진행한다.
이네이블 비트가 1이고, TOP 포인터 값이 2일 때, add.s $f(6), $f(1), $f(9) 연산은 RISC 프로세서 내부에서 아래와 같은 전환을 진행한다.
X86부동 소수점 스택 에뮬레이션 조작이 가동된다. 즉 이네이블 비트를 1로 설정한다.
$f(0)으로 $f(6)을 교체; // 6+2 mod 8 =0
$f(3)으로 $f(1)을 교체; // 1+2 mod 8 =3
$f(9) 전환 불필요; // 9>7 이므로 전환 불 필요, 레지스터 $f(9)를 직접 사용
최종적으로, 실제 연산을 진행하는 포뮬러(formula)는 add.s $f(0), $f(3), $f(9) 이다.
그러나 이 때 스택 인과 스택 아웃 조작은 없다. 때문에 TOP 값은 변하지 않는다.
상세한 과정은 스텝S100에서 서술한 것과 같다. x86의 순환 스택 구조를 에뮬레이션하고, 프로세서 사이의 호환성을 증가하고, 가상 머신과 컴파일러(compiler)에서의 이진체계 번역을 위하여 편리를 제공하였고, 프로그램의 운행 효율을 제고하였다.
본 발명의 유익한 기술효과는, 본 발명의 RISC프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법에 있어서 강유력한 시뮬레이션 지원을 제공하였고, 부동 소수점 스택에 대한 에뮬레이션 유지보호 절차를 절감하였고, 메모리 판독에 있어서의 시간과 공간 손실을 절감했으며, 작업 효율을 제고하였다. 또한 상이한 프로세서 아키텍처 사이의 차이를을 축소하였고, 가상 머신의 협동 디자인 및 RISC와 CISC프로세서 사이의 호환성에 있어서 탁월한 공헌을 하였다.
첨부된 도면을 결부한 본 발명의 구체적인 실시예에 대한 설명을 거쳐, 동 기술분야에 숙지한 자는 본 발명의 기타 방면과 특징에 대하여 응당 자명할 것이다.
이상, 본 발명의 구체적인 실시예에 대하여 묘사 및 설명을 진행하였으며, 이러한 실시예는 예시적인 것으로 본 발명에 대한 제한은 아니고, 본 발명의 보호범위는 첨부된 청구서에 의해 한정되어야 한다.

Claims (13)

  1. 다수개 부동 소수점 레지스터를 포함한 부동 소수점 레지스터 파일; RISC프로세서의 조작 명령어에 대하여 디코딩을 진행하는데 사용되는 디코딩 소자; 및 상기 디코딩 소자와 연결된 부동 소수점 연산 소자를 포함하고, 상기 부동 소수점 연산 소자는 상기 디코딩 소자의 출력 값에 의해 상기 부동 소수점 레지스터 파일을 리드 / 라이트하고 부동 소수점 연산을 진행하는 RISC 프로세서 장치에 있어서,
    상기 부동 소수점 레지스터 상태에 대하여 제어를 진행하는 컨트롤 레지스터를 더 포함하고, 상기 컨트롤 레지스터는 상기 디코딩 소자와 상기 부동 소수점 연산 소자를 제어하고 상기 부동 소수점 레지스터 파일을 이용하여 부동 소수점 레지스터 스택 조작을 에뮬레이션하는데 사용되고,
    상기 디코딩 소자는 스택 조작 포인터를 유지보호하고, 스택 조작 포인터의 값을 저장하는데 사용되는 1개 포인터 레지스터를 포함하고,
    상기 부동 소수점 연산 소자는 상기 포인터 레지스터에 대하여 조작을 진행하고, 상기 부동 소수점 레지스터 스택 조작 에뮬레이션 시, 상기 스택 조작 포인터의 스택 조작을 에뮬레이션하고, 상기 스택 조작 포인터의 상태를 수정 및 모니터링하는데 사용되는 1개 포인터 조작 모듈을 포함하는 것을 특징으로 하는 RISC 프로세서 장치.
  2. 청구항 1의 RISC 프로세서 장치에 있어서,
    상기 컨트롤 레지스터는 1개 스택 이네이블 비트를 유지보호하고, 이네이블 비트가 1일 때, RISC 프로세서가 부동 소수점 레지스터 스택 조작을 에뮬레이션함을 표시하고, 이네이블 비트가 0일 때, RISC 프로세서가 부동 소수점 레지스터 스택 조작을 에뮬레이션하지 않음을 표시하는 것을 특징으로 하는 RISC 프로세서 장치.
  3. 청구항 2의 RISC 프로세서 장치에 있어서,
    상기 부동 소수점 레지스터 파일은 넘버가 0~31인 32개 부동 소수점 레지스터를 포함하는 것을 특징으로 하는 RISC 프로세서 장치.
  4. 청구항 1의 RISC 프로세서 장치에 있어서,
    상기 스택 조작 포인터는 리드, 라이트, 1을 덧셈, 1을 뺄셈하는 조작을 실행하는 스택 조작 포인터인 것을 특징으로 하는 RISC 프로세서 장치.
  5. 청구항 3의 RISC 프로세서 장치에 있어서,
    상기 컨트롤 레지스터 중 스택 이네이블 비트가 1로 설정될 경우, 상기 디코딩 소자는 상기 스택 조작 포인터의 값에 의해 32개 부동 소수점 레지스터 중 8개 레지스터의 넘버에 대하여 전환을 진행하여, X86 프로세서의 부동 소수점 레지스터 스택의 시리얼 넘버가 0~7인 스택 레지스터를 에뮬레이션하는 것을 특징으로 하는 RISC 프로세서 장치.
  6. 다수개 부동 소수점 레지스터를 포함한 부동 소수점 레지스터 파일; 디코딩 소자와 부동 소수점 연산 소자를 제어하고 상기 부동 소수점 레지스터 파일을 이용하여 부동 소수점 레지스터 스택 조작을 에뮬레이션하는데 사용되는 컨트롤 레지스터; RISC 프로세서의 조작 명령어에 대하여 디코딩을 진행하는데 사용되는 디코딩 소자; 및 상기 디코딩 소자와 연결된 부동 소수점 연산 소자를 포함하는 RISC 프로세서에 있어서 상기 부동 소수점 연산 소자는 상기 디코딩 소자의 출력 값에 의해 상기 부동 소수점 레지스터 파일을 리드/라이트하여, 부동 소수점 연산을 진행하고, 상기 컨트롤 레지스터는 1개 스택 이네이블 비트를 유지보호하고, 상기 디코딩 소자는 포인터 레지스터를 포함하며, 상기 부동 소수점 연산 소자는 포인터 조작 모듈을 포함하는 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법에 있어서,
    상기 스택 이네이블 비트에 의해, 부동 소수점 레지스터를 선정하여 부동 소수점 레지스터 스택 조작 에뮬레이션에 사용할지 여부를 결정하고, 포인터 레지스터를 설정하는 스텝A;
    부동 소수점 레지스터 스택 조작 에뮬레이션 시, 포인터 레지스터에 대하여 조작을 진행하고, 스택 조작 포인터의 스택 조작을 에뮬레이션하고, 스택 조작 포인터의 스테이지를 수정 및 모니터링하는 스텝B를 포함하는 것을 특징으로 하는 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법.
  7. 청구항 6의 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법에 있어서,
    상기 스텝A는
    컨트롤 레지스터에서 1개 비트를 선택하여 부동 소수점 스택 이네이블 비트로 하고, 이네이블 비트가 1로 설정될 경우, RISC 프로세서가 X86 부동 소수점 레지스터 스택을 에뮬레이션하여 부동 소수점 레지스터 스택 조작을 진행함을 표시하고, 이네이블 비트가 0으로 설정될 경우, RISC 프로세서가 X86 부동 소수점 레지스터 스택을 에뮬레이션하지 않고, 부동 소수점 레지스터 스택 조작을 진행하지 않고, RISC 프로세서는 통상적인 과정에 따라 작업함을 표시하는 스텝A1;
    적어도 3 비트인 1개 포인터 레지스터를 설정하고, 스택 조작 포인터의 값을 저장하는 스텝A2를 포함하는 것을 특징으로 하는 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법.
  8. 청구항 6 또는 7의 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법에 있어서,
    상기 스텝B는 스택 조작 모드를 세팅하고, 부동 소수점 스택 이네이블 비트를 1로 설정하고, 유저가 에뮬레이션된 X86 부동 소수점 레지스터 스택을 이용하는 것을 허용하는 스텝을 포함하는 것을 특징으로 하는 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법.
  9. 청구항 6 혹은 7의 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법에 있어서,
    상기 스텝B는 스택 조작 모드를 클리어하고, 부동 소수점 스택 이네이블 비트를 0으로 설정하고, 유저가 부동 소수점 레지스터 스택 조작을 에뮬레이션하는 것을 허락하지 않는 스텝을 포함하는 것을 특징으로 하는 RISC 프로세서 부동 소수점 스택 조작 모의 방법.
  10. 청구항 6 혹은 7의 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법에 있어서,
    상기 스텝B는 스택 조작 포인터 값에 대하여 1을 덧셈하는 스텝을 포함하는 것을 특징으로 하는 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법.
  11. 청구항 6 혹은 7의 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법에 있어서,
    상기 스텝B는 스택 조작 포인터 값에 대하여 1을 뺄셈하는 스텝을 포함하는 것을 특징으로 하는 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법.
  12. 청구항 6 혹은 7의 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법에 있어서,
    상기 스텝B는 스택 조작 포인터 값을 리드하는 스텝을 포함하는 것을 특징으로 하는 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법.
  13. 청구항 6 혹은 7의 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법에 있어서,
    상기 스텝B는 스택 조작 포인터 값을 라이트하는 스텝을 포함하는 것을 특징으로 하는 RISC 프로세서 부동 소수점 스택 조작 에뮬레이션 방법.
KR1020107012687A 2007-12-28 2008-12-12 Risc 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법 KR101159603B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2007103046562A CN101216756B (zh) 2007-12-28 2007-12-28 一种risc处理器装置及其模拟浮点栈操作的方法
CN200710304656.2 2007-12-28
PCT/CN2008/002005 WO2009094827A1 (en) 2007-12-28 2008-12-12 Risc processor device and method of simulating floating-point stack operation thereof

Publications (2)

Publication Number Publication Date
KR20100081366A KR20100081366A (ko) 2010-07-14
KR101159603B1 true KR101159603B1 (ko) 2012-06-27

Family

ID=39623195

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107012687A KR101159603B1 (ko) 2007-12-28 2008-12-12 Risc 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법

Country Status (7)

Country Link
US (1) US8788796B2 (ko)
EP (1) EP2226718A4 (ko)
JP (1) JP5441918B2 (ko)
KR (1) KR101159603B1 (ko)
CN (1) CN101216756B (ko)
CA (1) CA2709613C (ko)
WO (1) WO2009094827A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216756B (zh) 2007-12-28 2011-03-23 中国科学院计算技术研究所 一种risc处理器装置及其模拟浮点栈操作的方法
US8347288B1 (en) * 2009-12-28 2013-01-01 Amazon Technologies, Inc. System and method for verification of repeatable virtualized computing
US8572613B1 (en) 2009-12-28 2013-10-29 Amazon Technologies, Inc. Comparison of virtual computing states by performing identified repeatable computations in a changing virtual computing environment
US10169043B2 (en) 2015-11-17 2019-01-01 Microsoft Technology Licensing, Llc Efficient emulation of guest architecture instructions
US10423218B1 (en) 2018-03-12 2019-09-24 Micron Technology, Inc. Power management integrated circuit with in situ non-volatile programmability
US10802754B2 (en) * 2018-03-12 2020-10-13 Micron Technology, Inc. Hardware-based power management integrated circuit register file write protection
JP7487535B2 (ja) * 2020-04-08 2024-05-21 富士通株式会社 演算処理装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4811208A (en) 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
JP3544333B2 (ja) * 1992-03-31 2004-07-21 トランスメタ コーポレイション コンピュータシステム
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6651159B1 (en) * 1999-11-29 2003-11-18 Ati International Srl Floating point register stack management for CISC
JP2001331305A (ja) * 2000-05-22 2001-11-30 Hitachi Ltd 浮動小数点演算命令エミュレーション方法
US6725361B1 (en) * 2000-06-16 2004-04-20 Transmeta Corporation Method and apparatus for emulating a floating point stack in a translation process
EP1410174A2 (en) * 2001-04-23 2004-04-21 Atmel Corporation Microprocessor for executing byte compiled java code
US7363475B2 (en) * 2004-04-19 2008-04-22 Via Technologies, Inc. Managing registers in a processor to emulate a portion of a stack
CN100345117C (zh) 2004-09-07 2007-10-24 中国科学院计算技术研究所 二进制翻译中对x86中浮点运算的处理方法
US7478224B2 (en) * 2005-04-15 2009-01-13 Atmel Corporation Microprocessor access of operand stack as a register file using native instructions
CN101216756B (zh) 2007-12-28 2011-03-23 中国科学院计算技术研究所 一种risc处理器装置及其模拟浮点栈操作的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction

Also Published As

Publication number Publication date
US20100274991A1 (en) 2010-10-28
CN101216756B (zh) 2011-03-23
KR20100081366A (ko) 2010-07-14
JP2011508324A (ja) 2011-03-10
EP2226718A4 (en) 2011-01-12
CN101216756A (zh) 2008-07-09
WO2009094827A1 (en) 2009-08-06
CA2709613A1 (en) 2009-08-06
JP5441918B2 (ja) 2014-03-12
EP2226718A1 (en) 2010-09-08
CA2709613C (en) 2015-10-27
US8788796B2 (en) 2014-07-22

Similar Documents

Publication Publication Date Title
KR101159603B1 (ko) Risc 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법
KR101296025B1 (ko) 컴퓨터 시스템에서의 네스티드 가상화 성능의 개선
EP2267598B1 (en) Risc processor apparatus and method for supporting x86 virtual machine
US8578351B2 (en) Hybrid mechanism for more efficient emulation and method therefor
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
KR101812569B1 (ko) 다중 명령 세트에 의해 사용되는 레지스터 간의 매핑
US7917740B1 (en) Virtualization assist for legacy x86 floating point exception handling
US8561060B2 (en) Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
US20110231633A1 (en) Operand size control
RU2638641C2 (ru) Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы
US20060236077A1 (en) Microprocessor access of operand stack as a register file using native instructions
WO2009094163A2 (en) Alternate address space to permit virtual machine monitor access to guest virtual address space
KR20100095604A (ko) Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법
KR101640769B1 (ko) 가상화 시스템 및 그것의 명령어 실행 방법
US11693722B2 (en) Fast memory mapped IO support by register switch
KR20070108410A (ko) 호스트 제어기 상에서의 독립적이면서 동시적인 데이터전달을 위한 방법 및 장치
CA1202425A (en) Multiprocessor system including firmware
CN114116003A (zh) 支持多指令集体系结构的程序运行方法、计算机设备及系统
Blundell Writing a Simple Operating System—from Scratch
Andrea et al. Process for translating instructions for an arm-type processor into instructions for a LX-type processor; relative translator device and computer program product

Legal Events

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

Payment date: 20150515

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180530

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 8