KR101139395B1 - Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법 - Google Patents

Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법 Download PDF

Info

Publication number
KR101139395B1
KR101139395B1 KR1020107013400A KR20107013400A KR101139395B1 KR 101139395 B1 KR101139395 B1 KR 101139395B1 KR 1020107013400 A KR1020107013400 A KR 1020107013400A KR 20107013400 A KR20107013400 A KR 20107013400A KR 101139395 B1 KR101139395 B1 KR 101139395B1
Authority
KR
South Korea
Prior art keywords
register
flag
emulation
bits
bit
Prior art date
Application number
KR1020107013400A
Other languages
English (en)
Other versions
KR20100095604A (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 KR20100095604A publication Critical patent/KR20100095604A/ko
Application granted granted Critical
Publication of KR101139395B1 publication Critical patent/KR101139395B1/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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30138Extension of register space, e.g. register cache
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 RISC 프로세서 및 그의 레지스터 플래그 비트 처리방법에 관한 것이다. 상기 프로세서는 물리 레지스터 스택, 상기 물리 레지스터 스택과 연결된 연산소자 및 상기 연산소자와 연결된 디코더를 포함하고, 상기 물리 레지스터 스택은 CISC 프로세서의 플래그 레지스터 플래그 비트에 대한 실현을 시물레이션하는데 사용되는 에뮬레이션 플래그 레지스터를 포함하고, 상기 연산 소자는 에뮬레이션 플래그 레지스터 플래그 비트의 값을 리드/라이트 하는데 사용되는 플래그 리드/라이트 모듈을 포함한다. 상기 연산소자는 연산 컨트롤러를 더 포함하고, 동 컨트롤러는 연산 과정 중, RISC 프로세서가 X86 가상머신 작업 모드에 처해 있을 때, 에뮬레이션 플래그 레지스터 플래그 비트의 값에 따라 연산 제어를 진행하는데 사용된다.

Description

RISC 프로세서 및 그의 레지스터 플래그 비트 처리방법{RISC PROCESSOR AND ITS REGISTER FLAG BIT PROCESSING METHOD}
본 발명은 컴퓨터 프로세서 기술분야에 관한 것으로, 특히는 축소 명령어 집합 컴퓨터 (RISC) 프로세서 및 그의 레지스터 플래그 비트 처리방법에 관한 것이다.
가상머신은 20세기 60년대에 IBM사에서 제안하고 실현한 콘셉이다. 당시 주로 사용되는 컴퓨터는 메인프레임이고, 메인프레임을 다수 개 가상머신으로 분할하여, 가상머신 모니터 (Virtual Machine Monitor, VMM)의 분할을 통하여, 다수 개 어플리케이션 혹은 유저가 동 희소 자원을 공유할 수 있다.
그러나, 하드웨어 원가가 감소되고, 컴퓨팅 능력이 강화, 및 멀티 태스크 오퍼레이팅 시스템 (OS)의 출현에 따라, 가상머신 모니터가 역사 무대에서 퇴출하고, 마이크로 컴퓨터와 퍼스널 컴퓨터(PC)가 유행되고 있다.
가상머신의 강대 및 성공은 유저가 명령어 집합의 조합만을 거쳐 형성된 기능과 설비에 대하여 액세싱 및 이용 가능하다는 점에 있다. 따라서, 최근 들어 가상머신 모니터는 다시 학술계 및 산업계의 주목을 끌고 있다. 가상머신 모니터는 현대 시스템 아키텍처의 제한성에 대해 가상 솔루션을 제공하여, 이로 하여금 강대한 도구로 변하도록 하였고, 동 도구는 현대 컴퓨터 시스템의 기능을 확장 가능하다.
현재 복잡 명령어 집합 컴퓨터 (Complex Instruction Set Computing, CISC) 프로세서 구조는, 예를 들면 X86 명령어 집합의 CISC 프로세서 구조는 많은 활용 가운데서 주도적 위치를 차지하고 있고, 많은 대형 서버식 활용은 모두 X86 명령어 집합의 CISC 프로세서 구조이다. 축소 명령어 집합 컴퓨터 (Reduced Instruction Set Computing, RISC) 구조의 마이크로 프로세서는 서비스를 광범위하게 활용하기 위하여, CISC 프로세서와의 호환을 실현하는 것이 필수적인 것으로 되었다. 그리고, 기존 CISC 프로세서 컴퓨터에서 서비스 유형이 다양하고, 상업 소프트웨어는 모두 CISC 프로세서에 기반한 것이기 때문에 RISC 프로세서에서 더욱 광범위하게 다양화된 활용을 실행하려면 CISC 프로세서에 대한 호환을 실현하는 것이 필요하다.
MIPS 명령어 집합의 RISC 프로세서는 RISC 프로세서의 한 개 큰 분지로서, 현재 많은 오픈 소스(open source) 가상머신 플랫폼이 있어 MIPS 명령어 집합의 RISC 프로세서로부터 X86 명령어 집합의 CISC 프로세서까지의 이성구조 (support for heterogeneous)의 지원을 실현할 수 있다.
MIPS 명령어 집합의 RISC 프로세서에서 가상머신을 사용하여 X86 명령어 집합의 CISC 프로세서를 호환하려면 여러 가지를 고려해야 한다. 그 중 한가지는 X86 명령어 집합의 CISC 프로세서에서 플래그 레지스터 (EFLAGS) 플래그 비트를 사용하는 것이다.
X86 명령어 집합 중, 플래그 레지스터 (EFLAGS)는 주로 하기 3가지 내용을 포함하고 있다.
1. 상태 플래그 (Status Flags), 이는 CF(자리 올림 플래그), PF(패리티 비트), AF(보조 자리 올림 비트), ZF(제로 플래그), SF(부호 플래그) 및 OF(오버 플로), 총 6비트를 포함하고,
2. DF (방향 플래그) 플래그, 문자열 처리 명령어의 방향 제어에 사용되고,
3. 기타 시스템 플래그와 I/O 특권 도메인 (IOPL 도메인), 이러한 플래그는 싱글 스텝(single step) 모드 플래그, 중단 이네이블, I/O 우선 레벨 등을 포함하고, 유저 프로그램은 이러한 플래그를 수정하지 못한다.
X86 명령어 집합의 고정점 (fixed point) 연산 명령어는 총 6 비트(Bit), 즉 CF, PF, AF, ZF, SF, OF 등 6비트 플래그 레지스터 (EFLAGS)의 플래그 비트 연산을 지원한다. 즉, 많은 연산 명령어는 데이터 값을 형성하는 외에, 플래그 레지스터의 플래그 비트를 형성하여, 부분적 이전 명령어가 플래그 비트를 이전 조건으로 하여, 명령어 점프를 실현하도록 한다.
그러나, 기존 RISC 프로세서의 X86 가상머신 기술 중, 플래그 레지스터 6 비트의 플래그 비트 연산을 실현 시, 에물레이션을 거쳐 실현하는데, 이는 엄청난 스펜딩(spending)을 초래하고, 기능에 대해 큰 영향을 끼친다.
본 발명이 해결하려는 문제는 RISC 프로세서 및 그의 레지스터 플래그 비트 처리방법을 제공하는 것이다. 이는 RISC 프로세서에서 플래그 레지스터 6 비트의 플래그 비트 연산을 실현하고, X86 명령어 집합과의 호환을 실현하며, 가상머신의 기능을 제고한다.
상기 과제를 해결하기 위하여 본 발명이 제공한 물리 레지스터 스택, 상기 물리 레지스터 스택과 연결된 연산소자 및 상기 연산소자와 연결된 디코더를 포함하는 RISC 프로세서에 있어서,
상기 물리 레지스터 스택은 CISC 프로세서의 플래그 레지스터 플래그 비트 실현을 에물레이션하는데 사용되는 에뮬레이션 플래그 레지스터를 포함하고,
상기 연산 소자는 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 리드/라이트 하는데 사용되는 플래그 리드/라이트 모듈을 포함하는 것을 특징으로 한다.
상기 디코더는, 연산이 에뮬레이션 EFLAGS 작업 모드에 처해 있음을 식별하고, 상이한 명령어에 의해 에뮬레이션 플래그 레지스터를 소스 레지스터 및/혹은 타겟 레지스터로 디코딩하는데 사용되는 모드 표시 모듈을 포함하는 것을 특징으로 한다.
상기 연산소자는, 연산 과정 중에 RISC 프로세서가 X86 가상머신 작업 모드에 처해 있을 경우 에뮬레이션 플래그 레지스터의 플래그 비트의 값에 의해 연산 제어를 진행하는데 사용되는 연산 컨트롤러를 더 포함하는 것을 특징으로 한다.
상기 플래그 리드/라이트 모듈은 플래그 페치 모듈과 플래그 수정 모듈을 포함하고, 그 중,
상기 플래그 페치 모듈은, 1개 비트 혹은 다수 개 비트의 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 페치하고, 명령어 중 8 비트 마스크 값에 의해 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 페치를 제어하고, 페치한 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 타겟 레지스터에 저장하는데 사용되고,
상기 플래그 수정 모듈은 1개 비트 혹은 다수 개 비트의 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 수정하고, 명령어 중 8 비트 마스크 값에 의해 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 수정을 제어하고, 소스 레지스터 중의 값을 사용하여 에뮬레이션 플래그 레지스터에 대하여 수정을 진행하는데 사용되는 것을 특징으로 한다.
상기 연산 제어는 연산 결과에 따라 신규 에뮬레이션 플래그 레지스터의 플래그 비트를 획득하고, 에뮬레이션 플래그 레지스터의 플래그 비트 중 1개 비트 혹은 다수 개 비트에 따라 분지 점프 명령어를 실행하는 것을 포함하는 것을 특징으로 한다.
상기 에뮬레이션 플래그 레지스터의 하위 6 비트는 하위부터 고위까지 각기 CF 비트, PF 비트, AF 비트, ZF 비트, SF 비트 및 OF 비트를 표시하는 것을 특징으로 한다.
본 발명의 과제를 실현하기 위한 RISC 프로세서의 RISC 프로세서 레지스터 플래그 비트 처리방법에 있어서, 상기 RISC 프로세서는 물리 레지스터 스택, 상기 물리 레지스터 스택과 연결된 연산소자 및 상기 연산소자와 연결된 디코더를 포함하고, 상기 물리 레지스터 스택은 CISC 프로세서의 플래그 레지스터 플래그 비트에 대한 실현을 시물레이션하는데 사용되는 에뮬레이션 플래그 레지스터를 포함하고, 상기 연산소자는 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 리드/라이트 하는데 사용되는 플래그 리드/라이트 모듈을 포함하고, 상기 처리방법은
RISC 프로세서에서 에뮬레이션 플래그 레지스터를 사용 가능으로 설정하는 스텝A,
RISC 프로세서가 연산 과정 중, RISC 프로세서의 X86 가상머신 작업 모드에 처해 있을 경우, 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 리드/라이트하고, 및/혹은 에뮬레이션 플래그 레지스터 플래그 비트의 값에 따라 연산 제어를 진행하는 스텝B를 포함하는 것을 특징으로 한다.
상기 스텝A와 B 사이에는
디코더가 연산이 시뮬레이션 EFLAGS 작업 모드에 있음을 식별 해내고, 다음 상이한 명령어에 따라 에뮬레이션 플래그 레지스터를 소스 레지스터 및/혹은 타겟 레지스터로 디코딩하는 스텝을 더 포함하는 것을 특징으로 한다.
상기 스텝B는
RISC 프로세서의 X86 가상머신 작업 모드에 처했을 경우, 에뮬레이션 플래그 레지스터의 플래그 비트의 1개 비트 혹은 다수 개 비트의 값을 페치하고, 그 중 8 비트 마스크 값에 의해 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 페치를 제어하고, 페치한 에뮬레이션 플래그 레지스터 플래그 비트의 값을 타겟 레지스터에 저장하는 스텝 B1,
RISC 프로세서의 X86 가상머신 작업 모드에 처했을 경우, 에뮬레이션 플래그 레지스터 플래그 비트의 1개 비트 혹은 다수 개 비트의 값을 수정하고, 그 중 8 비트 마스크 값에 따라 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 수정을 제어하고, 소스 레지스터의 값을 사용하여 에뮬레이션 플래그 레지스터에 대하여 수정을 진행하는 스텝B2를 포함하는 것을 특징으로 한다.
상기 스텝 B 중, 상기 연산 제어 과정은
연산 결과에 따라 에뮬레이션 플래그 레지스터의 플래그 비트를 획득하는 스텝B1'
에뮬레이션 플래그 레지스터 플래그 비트 중 1개 비트 혹은 다수 개 비트에 의해, 분지 점프 명령어를 실행하는 스텝B2'를 포함하는 것을 특징으로 한다.
상기 에뮬레이션 플래그 레지스터의 하위 6 비트는 하위부터 고위까지 각기 CF 비트, PF 비트, AF 비트, ZF 비트, SF 비트 및 OF 비트를 표시하는 것을 특징으로 한다.
본 발명의 RISC 프로세서 및 그의 레지스터 플래그 비트 처리방법은 MIPS 명령어 집합의 RISC 프로세서에서, X86 명령어 집합의 CISC 프로세서의 플래그 레지스터 (EFLAGS)의 6 비트(bit) 플래그 비트에 대하여 필요한 하드웨어 지원을 제공한다. 즉 에뮬레이션 플래그 레지스터를 활용하여 X86 명령어 집합의 CISC 프로세서의 플래그 레지스터 플래그 비트에 대한 실현을 시물레이션한다. 본 발명은 가상머신의 최적화 공간을 확대하고, 가상머신의 기능을 제고하는 목적에 도달할 수 있다.
도 1은 본 발명 RISC 프로세서의 구조 예시도이다.
도 2는 본 발명의 에뮬레이션 플래그 비트 레지스터의 예시도이다.
도 3은 본 발명 중 RISC 프로세서 레지스터 플래그 비트 처리방법의 흐름도이다.
도 4는 본 발명의 실시예에 있어서 에뮬레이션 플래그 레지스터를 표시하는 SETFLAG 명령어 코드의 예시도이다.
도 5는 본 발명 실시예에 있어서 에뮬레이션 플래그 레지스터 플래그 비트를 수정하는 명령어 MTFLAG 명령어 코드의 예시도이다.
도 6은 본 발명 실시예에 있어서 에뮬레이션 플래그 레지스터 플래그 비트를 리드하는 명령어 MFFLAG 명령어 코드의 예시도이다.
도 7은 본 발명 실시예에 있어서 에뮬레이션 플래그 레지스터 플래그 비트를 수정하는 가법 명령어 (add command) X86ADD 명령어 코드의 예시도이다.
도 8은 시뮬레이션 플래그 레지스터 플래그 비트에 따라 분지 (branching) 점프를 진행하는 X86J M-EFLAGS 명령어 코드의 예시도이다.
본 발명의 목적, 기술방안, 기술효과가 더욱 명확하게 하기 위하여, 이하 첨부된 도면과 실시예를 결부하여, 본 발명의 RISC 프로세서 및 그의 레지스터 플래그 비트 처리방법에 대하여 진일보로 설명한다. 또한 이하에서 묘사할 구체적인 실시예는 본 발명에 대한 해석일 뿐, 본 발명에 대한 제한이 아니다.
본 발명 실시예는 MIPS64 명령어 집합의 RISC 프로세서 장치를 예로하여, 본 발명에 대하여 설명한다. 그러나 응당 해명할 것은, 동 실시예는 본 발명에 대한 제한이 아니고 기타 명령어 집합의 RISC 프로세서에도 적용된다.
도 1에서 보이는 바와 같이, 본 발명을 실현하기 위하여 제공하는 RISC 프로세서에 있어서, 물리 레지스터 스택(1), 상기 물리 레지스터 스택(1)과 연결된 연산소자(3) 및 상기 연산소자(3)와 연결된 디코더(2)를 포함한다.
상기 물리 레지스터 스택(1)은 X86 명령어 집합의 CISC 프로세서의 플래그 레지스터 (EFLAGS) 플래그 비트를 실현하는 것을 에뮬레이션하는데 사용되는 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)를 포함하고, 도 2에서 보이는 바와 같이, 상기 레지스터의 하위(law) 6 비트는 하위부터 고위(high)까지 각기 CF 비트, PF 비트, AF 비트, ZF 비트, SF 비트 및 OF 비트를 표시한다.
그 중,
OF는, 결과가 오버플로일 경우, 1로 설정, 아니면 0으로 클리어함을 표시하고,
SF는, 결과의 최고 비트를 보존함을 표시하고,
ZF는, 결과가 0일 경우 1로 설정, 아니면 0으로 클리어함을 표시하고,
AF는, 연산 중 제3 비트가 제4 비트로 자리 올림 하거나 혹은 자리 내림 할 경우, 1로 설정하고, 아니면 0으로 클리어함을 표시하고,
PF는, 결과 최저 바이트에 짝수개 1이 있을 경우, 1로 설정하고, 아니면 0으로 클리어함을 표시하고,
CF는, 연산 중 최고 비트가 더 높은 비트로 자리 올림하거나 혹은 자리 내림하면, 상기 비트를 1로 설정하고, 아니면 0으로 클리어함을 표시한다.
상기 디코더(2)는 모드표시모듈(21)을 포함하며, 모드표시모듈(21)은 연산이 RISC 프로세서의 X86 가상머신 작업 모드, 즉 에뮬레이션 EFLAGS 작업모드에 처해 있음을 식별해 내고, 다음 상이한 명령어에 따라, 시뮬레이션 플래그 레지스터를 소스 레지스터 및/혹은 타겟 레지스터로 디코딩 하는데 사용된다.
상기 연산소자(3)는 플래그 리드/라이트 모듈(31)을 포함하고, 플래그 리드/라이트 모듈(31)은 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 리드/라이트 하는데 사용된다.
상기 플래그 리드/라이트 모듈(31)은 플래그 페치 (fetch) 모듈(311) 및 플래그 수정 모듈(312)을 포함하고, 그 중,
상기 플래그 페치 모듈(311)은 1 비트 혹은 다수 개 비트의 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 페치하고, 그 중 8 비트 마스크 (mask) 값에 의해 에뮬레이션 플래그 레지스터(4)에서 1 비트 혹은 다수 개 비트를 페치하는 것을 제어하고, 페치한 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 타겟 레지스터에 저장하는데 사용된다.
상기 플래그 수정 모듈(312)은 1개 비트 혹은 다수 개 비트의 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 수정하고, 그 중의 8 비트 마스크 (mask) 값에 의해 에뮬레이션 플래그 레지스터(4)에서 1개 비트 혹은 다수 개 비트를 수정하는 것을 제어하고, 소스 레지스터 중 값을 사용하여 에뮬레이션 플래그 레지스터(4)에 대하여 수정을 진행하는데 사용된다.
상기 연산소자(3)는 연산 컨트롤러(32)를 더 포함하고, 동 연산 컨트롤러(32)는 RISC 프로세서 연산 과정 중 RISC 프로세서의 X86 가상머신 작업 모드에 처해 있을 때, 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값에 따라, 연산 제어를 진행하는데 사용된다.
상기 연산 제어는 연산 결과에 따라 신규 에뮬레이션 플래그 레지스터(4)(M-EFLAGS) 플래그 비트를 획득하고, 에뮬레이션 플래그 레지스터(4)(M-EFLAG) 플래그 비트 중 1개 비트 혹은 다수 개 비트에 의해 분지 점프 명령어를 실행하는 것을 포함한다.
아래, 본 발명의 RISC 프로세서 레지스터 플래그 비트 처리방법에 대해 상세히 설명한다. 상기 RISC 프로세서는 물리 레지스터 스택(1), 상기 물리 레지스터 스택(1)과 연결된 연산소자(3) 및 상기 연산소자(3)와 연결된 디코더(2)를 포함하고, 상기 물리 레지스터 스택(1)은 에뮬레이션 플래그 레지스터(4)를 포함하고, CISC 프로세서의 플래그 레지스터 플래그 비트를 실현하는 것을 에뮬레이션하는데 사용되고, 상기 연산소자(3)는 플래그 리드/라이트 모듈(31)을 포함하고, 동 플래그 리드/라이트 모듈(31)은 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 리드/라이트 하는데 사용된다. 도 3에서 보이는 바와 같이, 상기 방법은 아래와 같은 스텝을 포함한다.
스텝 S100, RISC 프로세서에서 RISC 프로세서에 처한 X86 가상머신 작업모드를 설정하고, 즉 에뮬레이션 플래그 레지스터(4)는 사용 가능하고, 디코더는 연산이 RISC 프로세서의 X86 가상머신 작업모드(즉 시뮬레이션 EFLAGS 작업 모드)에 처해 있음을 식별해 내고, 다음 부동한 명령어에 따라 에뮬레이션 플래그 레지스터를 소스 레지스터 및/혹은 타겟 레지스터로 디코딩한다.
시뮬레이션 플래그 레지스터(4)(M-EFLAGS)는 X86 명령어 집합의 플래그 레지스터 (EFLAGS) 플래그 비트를 실현하는 것을 모의하고, 상기 레지스터의 하위(low) 6 비트는 하위부터 고위까지 각기 CF 비트, PF 비트, AF 비트, ZF 비트, SF 비트 및 OF 비트를 표시한다.
그 중,
OF는, 결과가 오버플로일 경우, 1로 설정하고, 아니면 0으로 클리어함을 표시하고,
SF는, 결과의 최고 비트를 보존함을 표시하고,
ZF는, 결과가 0일 경우, 1로 설정하고, 아니면 0으로 클리어함을 표시하고,
AF는, 연산 중 제3 비트가 제4 비트로 자리 올림 하거나 혹은 자리 내림 할 경우, 1로 설정하고, 아니면 0으로 클리어함을 표시하고,
PF는, 결과 최저 바이트에 짝수개 1이 있을 경우, 1로 설정하고, 아니면 0으로 클리어함을 표시하고,
CF는, 연산 중 최고 비트가 더 높은 비트로 자리 올림 하거나 혹은 자리 내림할 경우, 상기 비트를 1로 설정하고, 아니면 0으로 클리어함을 표시한다.
에뮬레이션 플래그 레지스터(4)가 사용 가능 시, 상기 연산이 RISC 프로세서의 X86 가상머신 작업모드 (즉 에뮬레이션 EFLAGS 작업모드)에 있음을 식별해 내고, 실행 결과에 따라 상응한 에뮬레이션 플래그 레지스터(4)의 값을 수정하고, 다음 상이한 명령어에 따라, 시뮬레이션 플래그 레지스터를 소스 레지스터 및/혹은 타겟 레지스터로 디코딩하고, 따라서 기존의 타겟 레지스터에 결과를 보존하지 않아도 된다.
일 실시예로, 에뮬레이션 플래그 레지스터와 관련된 명령어가 에뮬레이션 플래그 레지스터의 플래그 비트를 수정 시, 상기 명령어 전에 상기 명령어가 RISC프로세서의 X86 가상머신 작업 모드에 있음을 표시하는 전치 명령어 SETFLAG가 있고, 그 다음의 명령어가 X86 가상머신 모드에 처해 있음을 표시한다.
명령어 포맷은 SETFLAG / 에뮬레이션 EFLAGS 작업 모드 전치 명령어로 구성되며,
상기 명령어 뒤에 인접한 1개 명령어는 에뮬레이션 EFLAGS작업 모드에 처해 있음을 표시한다.
해당 코드는 도 4에서 보이는 바와 같다.
따라서 상기 명령어가 실행되면, 실행 결과에만 의해 상응한 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 수정하고, 타겟 레지스터에는 결과를 보존하지 않는다. 예를 들면 아래와 같다.
통상적인 MIPS명령어는 다음과 같다.
ADD $5,$1,$2
여기서, 제1 범용 레지스터와 제2 범용 레지스터 중의 값을 서로 가함을 표시하고, 결과는 제5 범용 레지스터에 보존되며,
에뮬레이션 플래그 레지스터(4)의 플래그 비트를 수정하는 명령어는 다음과 같다.
SETFLAG
ADD $5,$1,$2
여기서, 제1 범용 레지스터와 제2 범용 레지스터 중의 값을 서로 가함을 표시하고, 연산 결과는 보존하지 않고, 결과에 의해 에뮬레이션 플래그 레지스터 중의 플래그 비트에 상응하는 비트를 수정한다.
디코더(2)의 입력 세트는 모든 가능한 32비트 코드이고, 모든 합법 (legal) 및 비법 (illegal) 명령어를 포함한다. 이런 방식에 대하여, 디코더(2)는 합법 입력 SETFLAG를 새로 증가하고, 상기 명령어 뒤에 인접한 명령어가 RISC프로세서의 X86 가상머신 작업 모드에 처해 있음을 표시한다. 즉 에뮬레이션 EFLAGS 작업 모드이다.
디코더 2는 전치 명령어에 의해 전치 명령어 다음의 명령어에 대해 디코딩을 진행할 경우, 그 출력은 에뮬레이션 EFLAGS 작업 모드에 따라 내부 조작 코드를 조절하여 연산소자에 전송한다. 이때, 동 명령어의 목적 레지스터는 디코딩을 거쳐 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)로 변하고, 그 중 1개 소스 레지스터도 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)이다. 부분적 연산은 일부분 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)만 수정하므로 기존의 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)를 연산소자(3)에 전송하는 것이 요구된다.
그 중, 상기 내부 조작 코드의 조절은 리네임 (rename), 즉 로직 레지스터부터 물리 레지스터까지의 매핑, 및 레지스터 포트에 대한 리드/라이트 등 조작을 포함하며 이러한 것은 동 기술분야에 숙지한 자들에게 있어서 익숙한 내용이기에, 본 발명에서 상세히 설명하지 않도록 한다.
디코딩 후, 디코더(2)는 명령어를 연산소자(3)에 출력하고, 연산소자(3)는 내부 조작 코드를 판단한다. 판단 결과, 통상적인 명령어일 경우, 정상 스텝에 따라 연산하고, 에뮬레이션 EFLAGS 작업 모드일 경우, 먼저 결과를 계산하고, 다음 계산 결과와 중간 결과에 따라 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)의 플래그 비트를 설치, 계산 결과는 타겟 레지스터에 보존하지 않을 수 있다.
다른 일 실시예로, 본 발명에서 사용 빈도가 높은 에뮬레이션 플래그 레지스터(4)의 플래그 비트 수정 명령어에 대하여, X86명령어와 일대일로 대응시키고, 이럴 경우 1개 명령어는 기존의 2개 명령어 (하나는 SETFLAG, 다른 하나는 정상적인 MIPS명령어)에 해당된다. 예를 들면 아래와 같다.
사용 빈도가 높은 에뮬레이션 플래그 레지스터(4)의 수정 플래그 비트의 가법 명령어 (ADD)에 대하여, 명령어 X86ADD를 정의하고, 따라서
X86ADD $5,$1,$2는
SETFLAG
ADD $5,$1,$2와 등가로 된다.
이러한 사용 빈도가 높은 명령어는 디코딩 시 단독 명령어 슬롯을 배분하고, 기능소자가 이러한 명령어를 식별 후, 발생된 결과는 타겟 레지스터에 발송하지 않고, 결과에 따라 상응한 에뮬레이션 플래그 레지스터(4) (M-EFLAGS) 플래그 비트를 발생하고, 플래그 비트를 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)에 발송한다.
스텝 S200에서, 연산 과정 중, RISC프로세서가 X86 가상머신 작업 모드에 처할 경우, 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 리드/라아이트, 및/ 혹은 에뮬레이션 플래그 레지스터(4)의 플래그 비트 값에 의해 연산 제어를 진행한다.
상기 스텝 S200 에서, 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값에 대한 리드/라이트는 아래와 같은 스텝을 포함한다.
스텝S210에서, RISC프로세서가 X86 가상머신 작업 모드에 처할 경우, 1개 비트 혹은 다수 개 비트 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 페치(fetch)하고, 그 중 8비트 마스크 (mask) 값에 의해 에뮬레이션 플래그 레지스터(4) 중 1개 비트 혹은 다수 개 비트에 대한 페치를 제어하고, 페치한 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값은 타겟 레지스터에 저장한다.
스텝S220, RISC프로세서가 X86 가상머신 작업 모드에 처해 있을 경우, 1개 비트 혹은 다수 개 비트 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 수정하고, 그 중 8비트 마스크 (mask) 값에 따라 에뮬레이션 플래그 레지스터(4) 중 1개 비트 혹은 다수 개 비트에 대한 수정을 제어하고, 소스 레지스터 중의 값을 이용하여 에뮬레이션 플래그 레지스터(4)에 대하여 수정을 진행한다.
일 실시예로, 본 발명 실시예는 2개의 명령어 MTFLAG와 MFFLAG를 통해 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 수정 혹은 판독하고, 동 2개 명령어의 명령어 코드는 도 5와 도 6에서 보이는 바와 같이, 8비트 마스크 (mask)를 사용하여 에뮬레이션 플래그 레지스터(4)의 상응한 플래그 비트를 수정 혹은 판독하고, 이들은 각기 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 라이트 가능하고 또한 에뮬레이션 플래그 레지스터(4)의 플래그 비트의 값을 리드하여 지정한 범용 레지스터에 저장할 수 있다.
MTFLAG명령어는 1개 비트 혹은 다수 개 비트 에뮬레이션 플래그 레지스터(4) (M-EFLAGS) 플래그 비트의 값에 대한 페치를 실현하고, 명령어 중 8비트 마스크 (mask) 값 (이미디어트 넘버로 표시)에 의해 에뮬레이션 플래그 레지스터(4) 중 1개 비트 혹은 다수 개 비트에 대한 페치를 제어하고, 페치한 에뮬레이션 플래그 레지스터(4) (M-EFLAGS) 플래그 비트의 값은 타겟 레지스터 GPR[rt]에 저장한다.
에뮬레이션 플래그 레지스터(4) 중 플래그 비트를 마스크 (mask)로부터 페치하는 것의 실현은 아래와 같은 관계식으로 표시한다.
GPR[rt] ← M-EFLAGS & mask
예하면, 마스크 (mask) 값이 0x00000100이면, 에뮬레이션 플래그 레지스터(4) (M-EFLAGS) 제2 비트, 즉 AF비트의 내용을 페치하여 타겟 레지스터 GPR[rt]에 저장한다.
MTFLAG 명령어는 직접 1개 비트 혹은 다수 개 비트의 에뮬레이션 플래그 레지스터(4) (M-EFLAGS) 플래그 비트의 값을 수정하고, 명령어 중 8비트 마스크 (mask) 값 (이미디어트 넘버로 표시)에 의해 에뮬레이션 플래그 레지스터(4) (M-EFLAGS) 중 1개 비트 혹은 다수 개 비트에 대한 수정을 제어하고, GPR[rs] 소스 레지스터 중의 값을 사용하여 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)에 대하여 수정을 진행한다.
마스크 (mask)로 에뮬레이션 플래그 레지스터(4) (M-EFLAGS) 중 플래그 비트에 대한 수정을 제어하는 것에 대한 실현은 아래와 같은 관계식으로 표시한다.
M-EFLAGS & mask ← GPR[rs]
예하면, GPR[rs] 하위 8비트의 내용은 0x00010010이고, 마스크 (mask) 필드의 값이 0x00110011이면, 동 명령어는 에뮬레이션 플래그 레지스터(4) (M-EFLAGS) 중 CF, PF, SF 및 OF 비트를 수정하고, 동 4개 비트의 값을 각기 0, 1, 1 및 0으로 설정한다.
상기 스텝 S200 중, 상기 연산 제어 과정은 아래와 같은 스텝을 포함한다.
스텝S210'에서, 연산 결과에 따라 에뮬레이션 플래그 레지스터(4) (M-EFLAG) 플래그 비트를 획득한다.
예를 들면, 에뮬레이션 플래그 레지스터(4) (M-EFLAG) 플래그 비트에 의해 직접 연산한 명령어는 X86ADD명령어와 같다.
x86ADD / EFLAGS 비트의 32비트 가법에만 영향준다.
명령어 형식:
X86ADD rs, rt
여기서, X86ADD 명령어는 GPR [rs] 레지스터 중 32비트의 정수와 GPR [rt] 레지스터 중 32비트 정수의 가법을 실현하고, 32비트의 결과를 산생, 결과를 보존하지 않고, 결과에만 의해 에뮬레이션 플래그 레지스터(4) (M-EFLAGS)의 OF/SF/ZF/AF/PF비트를 수정한다.
그 코드는 도 7에서 보이는 바와 같다.
스텝S220'에서, 시뮬레이션 플래그 레지스터(4) (M-EFLAG) 플래그 비트 중 1개 비트 혹은 다수 개 비트에 의해 분지 점프 명령어를 실행한다.
예를 들면, X86J M-EFLAGS 조건 전이는 다음과 같다.
명령어 형식:
X86J.fmt offset
여기서, X86J 명령어는 EFLAGS의 임의개 비트에 대한 비교를 실현하고, 상응한 조건에 따라 프로세서 관련 점프를 진행한다.
해당 코드는 도 8에서 보이는 바와 같다.
그 중, 상이한 명령어 후치 (fmt)는 상이한 조건을 대표한다. 예를 들면, X86J.a fmt=0은 CF=0 및 ZF=0일 때 점프함을 표시한다.
MIPS64 명령어 집합의 32비트 명령어 코드의 상위 6비트 (31bit: 26bit)는 opcode 도메인이다. 그 중 SPECIAL2 (opcode은 011100) 명령어 슬롯은 MIPS의 규정에 의하면 유저 자체로 정의할 수 있다. 본 발명 실시예에서 새로 추가한 명령어는 모두 기존 MIPS64 명령어 집합 중 보류한 SPECIAL2 엠프티 슬롯의 값을 이용하여 실현한다.
본 발명의 기술효과는, 본 발명의 RISC 프로세서 및 그의 레지스터 플래그 비트 처리방법은 MIPS 명령어 집합의 RISC 프로세서에서 X86 명령어 집합의 CISC 프로세서의 플래그 레지스터 (EFLAGS)의 6개 (bit) 플래그 비트에 대하여 필요한 하드웨어 지원을 제공하고, 가상머신의 최적화 공간을 확대함으로, 가상머신 기능 제고의 목적에 도달할 수 있다.
본 발명의 RISC 프로세서 장치 및 그의 데이터 처리방법은 MIPS 구조에서 EFLAGS 플래그 비트에 대하여 필요한 지원을 제공하고, 가상머신의 최적화 공간을 확대하고, 가상머신의 기능을 제고하는 목적에 도달할 수 있다.
첨부된 도면을 결부한 본 발명 구체적인 실시예에 대한 설명을 거쳐, 동 기술분야에 숙지한 자라면 본 발명의 기타 내용과 특징에 대하여 응당 자명할 것이다.
이상, 본 발명의 구체적인 실시예에 대하여 묘사 및 설명을 진행했고, 이러한 실시예는 예시적인 것으로 본 발명에 대한 제한은 아니고, 본 발명의 보호범위는 첨부된 청구범위에 따라 한정되어야 한다.

Claims (17)

  1. 물리 레지스터 스택, 상기 물리 레지스터 스택과 연결된 연산소자 및 상기 연산소자와 연결된 디코더를 포함하는 RISC 프로세서에 있어서,
    상기 물리 레지스터 스택은 CISC 프로세서의 플래그 레지스터 플래그 비트 실현을 시물레이션하는데 사용되는 에뮬레이션 플래그 레지스터를 포함하고,
    상기 연산 소자는 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 리드/라이트 하는데 사용되는 플래그 리드/라이트 모듈을 포함하는 것을 특징으로 하는 RISC 프로세서.
  2. 청구항 1에 있어서,
    상기 디코더는, 연산이 에뮬레이션 EFLAGS 작업 모드에 처해 있음을 식별해 내고, 다음 상이한 명령어에 의해 상기 에뮬레이션 플래그 레지스터를 소스 레지스터와 타겟 레지스터로 디코딩하는데 사용되는 모드 표시 모듈을 포함하는 것을 특징으로 하는 RISC 프로세서.
  3. 청구항 1에 있어서,
    상기 디코더는, 연산이 에뮬레이션 EFLAGS 작업 모드에 처해 있음을 식별해 내고, 다음 상이한 명령어에 의해 상기 에뮬레이션 플래그 레지스터를 소스 레지스터 혹은 타겟 레지스터로 디코딩하는데 사용되는 모드 표시 모듈을 포함하는 것을 특징으로 하는 RISC 프로세서.
  4. 청구항 1에 있어서,
    상기 연산소자는, 연산 과정 중에
    상기 RISC 프로세서가 X86 가상머신 작업 모드에 처해 있을 경우 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값에 의해 연산 제어를 진행하는데 사용되는 연산 컨트롤러를 더 포함하는 것을 특징으로 하는 RISC 프로세서.
  5. 청구항 1에 있어서,
    상기 플래그 리드/라이트 모듈은 플래그 페치 모듈과 플래그 수정 모듈을 포함하고, 그 중,
    상기 플래그 페치 모듈은, 1개 비트 혹은 다수 개 비트의 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 페치하고, 명령어 중 8 비트 마스크 값에 의해 상기 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 페치를 제어하고, 상기 페치한 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 타겟 레지스터에 저장하는데 사용되고,
    상기 플래그 수정 모듈은 1개 비트 혹은 다수 개 비트의 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 수정하고, 명령어 중 8 비트 마스크 값에 의해 상기 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 수정을 제어하고, 소스 레지스터 중의 값을 사용하여 상기 에뮬레이션 플래그 레지스터에 대하여 수정을 진행하는데 사용되는 것을 특징으로 하는 RISC 프로세서.
  6. 청구항 4에 있어서,
    상기 연산 제어는 연산 결과에 따라 신규 에뮬레이션 플래그 레지스터의 플래그 비트를 획득하고, 상기 에뮬레이션 플래그 레지스터의 플래그 비트 중 1개 비트 혹은 다수 개 비트에 따라 분지 점프 명령어를 실행하는 것을 포함하는 것을 특징으로 하는 RISC 프로세서.
  7. 청구항 1, 2, 3, 4, 5 혹은 6에 있어서,
    상기 에뮬레이션 플래그 레지스터의 하위 6 비트는 하위부터 고위까지 각기 CF 비트, PF 비트, AF 비트, ZF 비트, SF 비트 및 OF 비트를 표시하는 것을 특징으로 하는 RISC 프로세서.
  8. 물리 레지스터 스택, 상기 물리 레지스터 스택과 연결된 연산소자 및 상기 연산소자와 연결된 디코더를 포함하고, 상기 물리 레지스터 스택은 CISC 프로세서의 플래그 레지스터 플래그 비트에 대한 실현을 시물레이션하는데 사용되는 에뮬레이션 플래그 레지스터를 포함하고, 상기 연산소자는 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 리드/라이트 하는데 사용되는 플래그 리드/라이트 모듈을 포함하는 RISC 프로세서의 RISC 프로세서 레지스터 플래그 비트 처리방법에 있어서,
    상기 RISC 프로세서에서 상기 에뮬레이션 플래그 레지스터를 사용 가능으로 설정하는 스텝A,
    상기 RISC 프로세서가 연산 과정 중, 상기 RISC 프로세서의 X86 가상머신 작업 모드에 처해 있을 경우, 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 리드/라이트하고, 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값에 따라 연산 제어를 진행하는 스텝B를 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  9. 청구항 8에 있어서,
    상기 스텝A는,
    상기 디코더가 연산이 시뮬레이션 EFLAGS 작업 모드에 있음을 식별 해내고, 다음 상이한 명령어에 따라 상기 에뮬레이션 플래그 레지스터를 소스 레지스터와 타겟 레지스터로 디코딩하는 스텝을 더 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  10. 청구항 8에 있어서,
    상기 스텝A는,
    상기 디코더가 연산이 시뮬레이션 EFLAGS 작업 모드에 있음을 식별 해내고, 다음 상이한 명령어에 따라 상기 에뮬레이션 플래그 레지스터를 소스 레지스터 혹은 타겟 레지스터로 디코딩하는 스텝을 더 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  11. 물리 레지스터 스택, 상기 물리 레지스터 스택과 연결된 연산소자 및 상기 연산소자와 연결된 디코더를 포함하고, 상기 물리 레지스터 스택은 CISC 프로세서의 플래그 레지스터 플래그 비트에 대한 실현을 시물레이션하는데 사용되는 에뮬레이션 플래그 레지스터를 포함하고, 상기 연산소자는 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 리드/라이트 하는데 사용되는 플래그 리드/라이트 모듈을 포함하는 RISC 프로세서의 RISC 프로세서 레지스터 플래그 비트 처리방법에 있어서,
    상기 RISC 프로세서에서 상기 에뮬레이션 플래그 레지스터를 사용 가능으로 설정하는 스텝A,
    상기 RISC 프로세서가 연산 과정 중, 상기 RISC 프로세서의 X86 가상머신 작업 모드에 처해 있을 경우, 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 리드/라이트하고, 혹은 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 값에 따라 연산 제어를 진행하는 스텝B를 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  12. 청구항 11에 있어서,
    상기 스텝A는,
    상기 디코더가 연산이 시뮬레이션 EFLAGS 작업 모드에 있음을 식별 해내고, 다음 상이한 명령어에 따라 상기 에뮬레이션 플래그 레지스터를 소스 레지스터와 타겟 레지스터로 디코딩하는 스텝을 더 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  13. 청구항 11에 있어서,
    상기 스텝A는,
    상기 디코더가 연산이 시뮬레이션 EFLAGS 작업 모드에 있음을 식별 해내고, 다음 상이한 명령어에 따라 상기 에뮬레이션 플래그 레지스터를 소스 레지스터 혹은 타겟 레지스터로 디코딩하는 스텝을 더 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  14. 청구항 8 또는 11에 있어서,
    상기 스텝B는,
    상기 RISC 프로세서의 상기 X86 가상머신 작업 모드에 처했을 경우, 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 1개 비트 혹은 다수 개 비트의 값을 페치하고, 그 중 8 비트 마스크 값에 의해 상기 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 페치를 제어하고, 상기 페치한 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 타겟 레지스터에 저장하는 스텝 B1,
    상기 RISC 프로세서의 상기 X86 가상머신 작업 모드에 처했을 경우, 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 1개 비트 혹은 다수 개 비트의 값을 수정하고, 그 중 8 비트 마스크 값에 따라 상기 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 수정을 제어하고, 소스 레지스터의 값을 사용하여 상기 에뮬레이션 플래그 레지스터에 대하여 수정을 진행하는 스텝B2를 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  15. 청구항 9, 10, 12 또는 13 중 어느 한 항에 있어서,
    상기 스텝B는,
    상기 RISC 프로세서의 상기 X86 가상머신 작업 모드에 처했을 경우, 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 1개 비트 혹은 다수 개 비트의 값을 페치하고, 그 중 8 비트 마스크 값에 의해 상기 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 페치를 제어하고, 상기 페치한 에뮬레이션 플래그 레지스터의 플래그 비트의 값을 상기 타겟 레지스터에 저장하는 스텝 B1,
    상기 RISC 프로세서의 상기 X86 가상머신 작업 모드에 처했을 경우, 상기 에뮬레이션 플래그 레지스터의 플래그 비트의 1개 비트 혹은 다수 개 비트의 값을 수정하고, 그 중 8 비트 마스크 값에 따라 상기 에뮬레이션 플래그 레지스터 중 1개 비트 혹은 다수 개 비트에 대한 수정을 제어하고, 상기 소스 레지스터의 값을 사용하여 상기 에뮬레이션 플래그 레지스터에 대하여 수정을 진행하는 스텝B2를 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  16. 청구항 8, 9, 10, 11, 12 또는 13 중 어느 한 항에 있어서,
    상기 스텝 B 중, 상기 연산 제어 과정은,
    연산 결과에 따라 상기 에뮬레이션 플래그 레지스터의 플래그 비트를 획득하는 스텝B1',
    상기 에뮬레이션 플래그 레지스터 플래그 비트 중 1개 비트 혹은 다수 개 비트에 의해, 분지 점프 명령어를 실행하는 스텝 B2'를 포함하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
  17. 청구항 8, 9, 10, 11, 12 또는 13 중 어느 한 항에 있어서,
    상기 에뮬레이션 플래그 레지스터의 하위 6 비트는 하위부터 고위까지 각기 CF 비트, PF 비트, AF 비트, ZF 비트, SF 비트 및 OF 비트를 표시하는 것을 특징으로 하는 RISC 프로세서 레지스터 플래그 비트 처리방법.
KR1020107013400A 2007-12-29 2008-11-24 Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법 KR101139395B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNB2007103085711A CN100530164C (zh) 2007-12-29 2007-12-29 一种risc处理器及其寄存器标志位处理方法
CN200710308571.1 2007-12-29
PCT/CN2008/001906 WO2009086727A1 (zh) 2007-12-29 2008-11-24 一种risc处理器及其寄存器标志位处理方法

Publications (2)

Publication Number Publication Date
KR20100095604A KR20100095604A (ko) 2010-08-31
KR101139395B1 true KR101139395B1 (ko) 2012-04-27

Family

ID=39547296

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107013400A KR101139395B1 (ko) 2007-12-29 2008-11-24 Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법

Country Status (7)

Country Link
US (1) US9189232B2 (ko)
EP (1) EP2226731B1 (ko)
JP (1) JP5299979B2 (ko)
KR (1) KR101139395B1 (ko)
CN (1) CN100530164C (ko)
CA (1) CA2709753C (ko)
WO (1) WO2009086727A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100530164C (zh) * 2007-12-29 2009-08-19 中国科学院计算技术研究所 一种risc处理器及其寄存器标志位处理方法
JP5193624B2 (ja) 2008-02-19 2013-05-08 ルネサスエレクトロニクス株式会社 データプロセッサ
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
CN101876954B (zh) * 2009-12-23 2012-08-15 中国科学院计算技术研究所 一种虚拟机控制系统及其工作方法
US9811338B2 (en) * 2011-11-14 2017-11-07 Intel Corporation Flag non-modification extension for ISA instructions using prefixes
CN104126167B (zh) * 2011-12-23 2018-05-11 英特尔公司 用于从通用寄存器向向量寄存器进行广播的装置和方法
CN103377031B (zh) * 2012-04-27 2017-09-26 腾讯科技(深圳)有限公司 一种多数据处理方法和装置
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
JP5610551B2 (ja) * 2013-02-04 2014-10-22 ルネサスエレクトロニクス株式会社 データプロセッサ
JP5767374B2 (ja) * 2014-07-30 2015-08-19 ルネサスエレクトロニクス株式会社 データプロセッサ
CN105446791B (zh) * 2014-08-26 2018-11-20 龙芯中科技术有限公司 标志位模拟方法、装置和处理器
CN110825436B (zh) * 2018-08-10 2022-04-29 昆仑芯(北京)科技有限公司 应用于人工智能芯片的计算方法和人工智能芯片
US20230098724A1 (en) * 2021-09-25 2023-03-30 Intel Corporation Copy a subset of status flags from a control and status register to a flags register

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100354324B1 (ko) 1994-08-18 2003-01-08 아드밴스트 마이크로 디이바이시스 인코포레이티드 명령어큐스캐닝장치및그방법

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
JPH0668724B2 (ja) * 1988-02-01 1994-08-31 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン シミユレーシヨン方法
US5077657A (en) * 1989-06-15 1991-12-31 Unisys Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
US5463778A (en) * 1989-11-16 1995-10-31 Texas Instruments Incorporated User controlled trap handler
JP2507638B2 (ja) * 1989-12-01 1996-06-12 三菱電機株式会社 デ―タ処理装置
JPH04199331A (ja) * 1990-11-29 1992-07-20 Hitachi Ltd マイクロコンピュータ
EP0651320B1 (en) * 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superscalar instruction decoder
US5884057A (en) * 1994-01-11 1999-03-16 Exponential Technology, Inc. Temporal re-alignment of a floating point pipeline to an integer pipeline for emulation of a load-operate architecture on a load/store processor
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
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
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US6076155A (en) * 1995-10-24 2000-06-13 S3 Incorporated Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets
JPH1153189A (ja) * 1997-07-31 1999-02-26 Toshiba Corp 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体
US6055624A (en) * 1998-04-07 2000-04-25 International Business Machines Corporation Millicode flags with specialized update and branch instructions
US6807625B1 (en) * 2000-02-18 2004-10-19 Hewlett-Packard Development Company, L.P. Method and apparatus for efficiently generating, storing, and consuming arithmetic flags between producing and consuming macroinstructions when emulating with microinstructions
US7076639B2 (en) * 2001-10-23 2006-07-11 Ip-First, Llc Apparatus and method for masked move to and from flags register in a processor
GB0202728D0 (en) * 2002-02-06 2002-03-27 Transitive Technologies Ltd Condition code flag emulation for program code conversion
GB0225649D0 (en) * 2002-11-04 2002-12-11 Transitive Technologies Ltd Incremental validation
CN1216327C (zh) * 2003-05-15 2005-08-24 复旦大学 采用双指令集的32位嵌入式微处理器
US8429356B2 (en) * 2005-11-02 2013-04-23 Ati Technologies Ulc Write data mask method and system
CN100530164C (zh) * 2007-12-29 2009-08-19 中国科学院计算技术研究所 一种risc处理器及其寄存器标志位处理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100354324B1 (ko) 1994-08-18 2003-01-08 아드밴스트 마이크로 디이바이시스 인코포레이티드 명령어큐스캐닝장치및그방법

Also Published As

Publication number Publication date
CA2709753C (en) 2016-08-23
CN100530164C (zh) 2009-08-19
EP2226731A4 (en) 2010-12-29
CA2709753A1 (en) 2009-07-16
JP2011508921A (ja) 2011-03-17
JP5299979B2 (ja) 2013-09-25
EP2226731B1 (en) 2018-04-18
US9189232B2 (en) 2015-11-17
EP2226731A1 (en) 2010-09-08
KR20100095604A (ko) 2010-08-31
WO2009086727A1 (zh) 2009-07-16
CN101196869A (zh) 2008-06-11
US20100268916A1 (en) 2010-10-21

Similar Documents

Publication Publication Date Title
KR101139395B1 (ko) Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법
US5781750A (en) Dual-instruction-set architecture CPU with hidden software emulation mode
US8949580B2 (en) RISC processor apparatus and method for supporting X86 virtual machine
US6957321B2 (en) Instruction set extension using operand bearing NOP instructions
US9250904B2 (en) Modify and execute sequential instruction facility and instructions therefor
US7478224B2 (en) Microprocessor access of operand stack as a register file using native instructions
US9146740B2 (en) Branch prediction preloading
US11914997B2 (en) Method and system for executing new instructions
US11669328B2 (en) Method and system for converting instructions
US11803383B2 (en) Method and system for executing new instructions
US20220206809A1 (en) Method and system for executing new instructions
US11604643B2 (en) System for executing new instructions and method for executing new instructions
US11625247B2 (en) System for executing new instructions and method for executing new instructions
US8108843B2 (en) Hybrid mechanism for more efficient emulation and method therefor
Mihocka et al. Virtualization without direct execution or jitting: Designing a portable virtual machine infrastructure
US7219337B2 (en) Direct instructions rendering emulation computer technique
US11789736B2 (en) Method and system for executing new instructions

Legal Events

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

Payment date: 20160318

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180403

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 8