KR19990082747A - 압축기억된십진수나눗셈에대한전문밀리코드명령 - Google Patents

압축기억된십진수나눗셈에대한전문밀리코드명령 Download PDF

Info

Publication number
KR19990082747A
KR19990082747A KR1019990008697A KR19990008697A KR19990082747A KR 19990082747 A KR19990082747 A KR 19990082747A KR 1019990008697 A KR1019990008697 A KR 1019990008697A KR 19990008697 A KR19990008697 A KR 19990008697A KR 19990082747 A KR19990082747 A KR 19990082747A
Authority
KR
South Korea
Prior art keywords
millicode
instructions
milli
instruction
decimal
Prior art date
Application number
KR1019990008697A
Other languages
English (en)
Other versions
KR100317769B1 (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 KR19990082747A publication Critical patent/KR19990082747A/ko
Application granted granted Critical
Publication of KR100317769B1 publication Critical patent/KR100317769B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/40Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
    • G06F7/44Multiplying; Dividing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

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

Abstract

하드웨어 제어 실행 유닛에서 비교적 간단한 명령 세트를 실행하고 상기 하드웨어 제어 실행 유닛에서 간단한 명령의 밀리코드 시퀀스 (millicode sequence)와의 밀리-모드 (milli-mode) 설계 상태로 비교적 복잡한 명령 세트를 실행하는 파이프라인 컴퓨터 프로세서 (pipelined computer processor)를 갖춘 컴퓨터 시스템에서, 밀리코드는 시스템이 계속하여 프로세서 밀리-레지스터를 사용하게 하도록 상기 프로세서에 의한 매크로-모드 (macro-mode) 복호화가 중단되고 프로세서의 디코더가 이들을 복호화하여 프로세서 밀리-모드로의 엔트리에서의 실행을 위해 스케쥴처리할 때 밀리-모드 상태로 동작된다. 밀리코드 플래그 (millicode flag)는 전문 업데이트 및 브랜치 (update and branch) 명령을 허용하고, 플래그는 밀리코드 명령에 대해 특정하게 설정되거나 클리어된다. 편집 기능을 위한 밀리코드 명령은 한 바이트의 입력 패턴 스트링을 처리하고, 한 바이트의 출력 스트링을 발생하여, 스트링에서 다음 바이트의 처리를 준비하도록 다양한 포인터와 상태 표시를 업데이트한다. 번역 인출 (Translate Fetch, TRFET) 밀리코드 명령은 번역 및 테스트 (Translate and Test, TRT, TRT는 ESA/390 번역 및 테스트 명령을 칭함) 명령을 지지하고, 오퍼랜드 억세스, 점검, 준비, 및 저장 기능을 제공하기 위한 가산 (Add)을 포함하는 더 간단한 압축 기억된 십진수 연산 (packed decimal operation)을 지지하고 DP 명령에 필요한 경우 몫의 디지트를 발생하도록 설계된 데이터플로우 논리 (dataflow logic)와 하드웨어 제어를 사용하는 압축 기억된 십진수 나눗셈(packed decimal divide)에 대한 전문 밀리코드 명령은 전체 DP 기능을 하드웨어로 실행하기 보다는 내부 코드 명령으로 실행되고, 또한 제어는 내부 코드에 보존되어 보통과 다른 경계 조건의 처리를 더 간단하게 하도록 허용한다.

Description

압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령{SPECIALIZED MILLICODE INSTRUCTIONS FOR PACKED DECIMAL DIVISION}
본 발명은 하드웨어 제어 실행 유닛에서 비교적 단순한 명령을 실행하고, 같은 하드웨어 제어 실행 유닛에서 실행되는 수직 마이크로코드 (microcode) (즉, 밀리코드(millicode)) 루틴을 갖춘 밀리-모드 설계 상태에서 비교적 복잡한 명령을 실행하는 파이프라인 컴퓨터 프로세서 (pipelined computer processor)에 관한 것이다. 보다 특정하게, 본 발명은 압축 기억된 십진수 나눗셈 (Packed Decimal Division)을 위한 전문 밀리코드 명령에 관한 것이다.
근년에 IBM사(International Business Machines Corporation)는 G4 세대로 알려진, 신세대 S/390 ESA CMOS 기계를 소개했다. 그 후 밀리코드의 사용에 제공되고 밀리-모드 설계 상태에서 밀리코드 범용 레지스터(millicode general register, MGR)에 저장된 마스크로 프로그램 상태어의 유효성을 시험하는 파이프라인 컴퓨터 프로세스가 소개되었다. 마스크는 단어가 유효한 경우 0이 되는 프로그램 상태어내의 비트를 지시한다. 대응하게 위치하는 단어내의 비트와 마스크내의 비트 사이에는 논리적 AND 연산이 실행되고, 부가적으로 대응하게 위치하는 비트 이외의 적어도 하나의 단어내 다른 비트의 상태가 점검된다.
밀리-모드 연산은 대형이고, 하드웨어 제어되고, 파이프라인처리되고, 범용인 디지털 컴퓨터에서 마이크로프로세서 없이 복잡한 기능의 실행을 가능하게 한다. 밀리-모드는 펌웨어(firmware)에 의해 제공되는 탄력성으로 복잡한 기능들을 실행하여, 마이크로프로세서 하드웨어를 포함함으로서 제시되는 패키지 문제점을 방지한다. 마이크로프로세서 보다는 밀리-모드가 파이프라인 프로세서의 하드웨어 제어 실행 유닛과 전부터 존재하는 데이터플로우를 사용해 복잡한 기능을 성취한다. 부가적인 하드웨어 제어 명령(사설 밀리-모드 전용 명령)는 제어 기능을 제공하거나 실행도를 개선시키기 위해 부가된다. 이들 사설 밀리-모드 명령은 설계된 명령 세트를 증가시킨다. 밀리-모드 루틴은 1997년 12월 2일 부여된 미국 특허 No. 5,694,587에 의해 설명되는 바와 같이, 복잡한 기능을 실행하도록 밀리-모드전용 명령을 설계된 명령과 혼합할 수 있다. 특허 No. 5,694,587은 PSW 유효성 테스트, 억세스 테스트로의 부하, 및 문자 번역 보조에 대한 전문 밀리코드화 명령을 설명하는 것으로, 이는 1997년 소개되었던 G4 S/390 기계로 공지된 IBM 기계에서 사용되었다. IBM사에 의해 1997년 소개된 같은 G4 S/390에서 실행되는 밀리-코드에 관련된 추가 출원은 미국 특허 No. 5,694,587에 관련된다. 이들은 다음과 같다:
1995년 3월 31일 출원된 "엔트리 포인트 패치 제어를 갖춘 밀리코드 판독 전용 저장기 (Millicode Read-Only Storage with Entry Point Patch Control)"명의 출원 일련 No. 08/414,821.
1995년 3월 31일 출원된 "미리코드 프로세서를 위한 하드웨어 재시도 트랩 (Hardware Retry Trap for Millicoded Processor)"명의 출원 일련 No. 08/414,977.
1995년 3월 31일 출원된 "밀리코드를 사용한 어드레싱 확장 메모리 (Addressing Extended Memory Using Millicode)"명의 출원 일련 No. 08/414,158.
1995년 3월 31일 출원된 "밀리코드 어드레스지정가능 프로세서 상태 레지스터 어레이로의 맵핑 프로세스 상태 (Mapping Processor State Into A Millicode Addressable Processor State Register Array)"명의 출원 일련 No. 08/414,812.
1995년 3월 31일 출원된 "밀리코드 오퍼랜드 억세스와의 프로그램 억세스 레지스터 번호의 링크 (Linking Program Access Register Number With Millicode Operand Access)"명의 출원 일련 No. 08/414,164.
1995년 3월 31일 출원된 "시스템 순차화를 위한 우선순위 및 회복 방법(Priority and Recovery Method For System Serialization (Quiesce)"명의 출원 일련 No. 08/414,975.
그러나, 밀리코드 환경은 아직 개선될 수 있음을 발견하였다. 새로운 밀리코드 개선안의 그룹을 채택하는 밀리코드 실행에 대한 새로운 양식을 새로운 기계에 사용하게 된다. 여기서는 그들의 관계를 이해하기 위해 현재 개선안의 그룹이 함께 설명된다.
설명을 위해, 다양한 조건을 설정 및 테스트하는데 필요한 것에 응답하도록 새롭고 효율적인 수단을 제공함으로서, IBM사의 ESA/390 설계를 실행하고 복잡한 연산에 대한 내부 코드로 밀리코드를 사용하는 프로세서에서의 개선안을 얻었다. 이 영역에서는 과거의 다양한 상태형으로 비트 및 조건 코드가 내부 코드에서 사용되었다. ESA/390 조건 코드의 밀리코드 카피(copy) 및 대응하는 조건상의 브랜치(Branch on Condition) 명령은 널리 사용되도록 2-비트 포맷에 의해 제한되어, 조건 코드가 많은 명령에 걸쳐 정보를 보유하는 것을 방지한다. 밀리코드 레지스터의 비트는 다양한 조건을 기록하도록 정의될 수 있고 브랜치 지점에 연결될 수 있지만, 이는 실행도에 민감한 밀리코드 루틴에서 유용성을 제한하는 파이프라인 프로세서에 문제점을 생성한다. 대안으로, 밀리코드 레지스터내의 상태 비트가 밀리코드 조건 코드 및 조건상의 브랜치 명령을 통해 명확히 테스트될 수 있지만, 이는 다수의 명령을 요구하여 특정한 루틴에서 실행도에 영향을 줄 수 있다. 이 구조는 또한 다양한 조건의 검출에 응답해 플래그를 조작하도록 분리된 밀리코드 명령을 요구하므로, 일부 경우에서 다시 실행도에 영향을 준다. 다양한 조건을 설정 및 테스트하는데 필요한 것을 만족시키기 위한 새로운 양식에서의 바람직한 본 실시예에 대해 "전문 업데이트 및 브랜치 명령에서의 밀리코드 플래그 (Millicode Flags with Specialized Update and Branch Instructions)"명으로 이후 언급된다.
또 다른 개선안으로, 제2 스트링(string)을 패턴으로 사용해 문자와 십진수 디지트의 스트링을 처리하는 ESA/390 명령 편집(Edit)과 편집 및 마크(Edit and Mark)에 초점을 둔다. 일반적으로, 밀리코드를 내부 코드로 사용하는 ESA/390 실행에서는 ESA/390에 의해 정의되는 모든 경우 및 상태를 처리하는데 상당한 수의 CP 싸이클을 요구하는 것으로 인식된다. 이는 이러한 ESA/390 명령들의 실행도에 영향을 주므로, 이 명령들을 사용하는 프로그램의 실행도에도 영향을 준다. 과거 S/390 ( 및 그 이전) CPU는 편집(ED, ED는 ESA/390 편집 명령임)과 편집 및 마크(EDMK, EDMK는 ESA/390 편집 및 마크 명령임) 명령을 실행하는데 다양한 알고리즘을 사용한다. 대부분 이들은 내부 코드를 사용하고, 일부 경우에서는 특수한 내부 코드 명령이 이 기능을 가속화시키도록 정의된다. 이 명령들의 실행도를 개선시키기 위해서는 새로운 세대의 기계가 필요하다. 이를 위한 주요 양식에 대해, "편집 기능을 위한 전문 밀리코드 명령 (Specialized Millicode Instruction for Editing Functions)"명으로 이후 언급된다.
1997년 12월 2일 부여된 미국 특허 No. 5,694,587에 의해 설명되는 바와 같이 개선되었더라도, ESA/390 명령에서 번역 및 테스트(Translate and Test, TRT)는 2개의 일반 레지스터(GR)에 대한 업데이트와 연산 결과를 반영하는 조건 코드를 요구한다. 과거 S/390 ( 및 그 이전) CPU는 번역 및 테스트(TRT) 명령을 실행하는데다양한 알고리즘을 사용한다. 대부분 이들은 내부 코드를 사용하고, 일부 경우에서는 특수한 내부 코드 명령이 이 기능을 가속화시키도록 정의된다. 밀리코드를 내부 코드로 사용하는 ESA/390 실행에서는 오퍼랜드 바이트의 번역 및 테스트가 완료된 이후라도 이들 결과의 계산 및 전파가 상당한 수의 CP 싸이클을 요구한다. 이는 번역 및 테스트 명령의 실행도에 영향을 주므로, 이 명령을 사용하는 프로그램의 실행도에도 영향을 준다. 실행도를 개선하기 위해서는 "번역 및 테스트를 위한 전문 밀리코드 명령 (Specialized Millicode Instruction for Translate and Test)"명으로 이후 설명되는 새로운 전문 명령이 제공된다.
마지막으로, 본 내용에서는 압축 기억된 십진수 나눗셈(packed decimal division)을 개선한다. 과거 S/390 ( 및 그 이전) CPU는 십진수 나눗셈(Divide Decimal, DP) 명령을 실행하는데 다양한 알고리즘을 사용한다. 대부분 이들은 내부 코드를 사용하고, 일부 경우에서는 특수한 내부 코드 명령이 이 기능을 가속화시키도록 정의된다. 압축 기억된 십진수 나눗셈은 특히 이용가능한 압축 기억된 십진수 산술 하드웨어가 단지 가산기(일반적인 경우와 같이)뿐일 때 계산적으로 복잡한 연산이다. 이 때문에, ESA/390 명령 십진수 나눗셈(DP)을 지지하는데 요구되는 내부 코드 시퀀스는 많은 수의 싸이클을 요구할 수 있다. 이 연산을 적당한 회수로 사용하는 어플리케이션이라도, DP 명령을 실행하는데 소모되는 시간은 프로세서 실행도에 상당한 악영향을 가질 수 있다. 이에 대하여, "압축 기억된 십진수 나눗셈을 위한 전문 밀리코드 명령 (Specialized Millicode Instructions for Packed Decimal Division)"명으로 이후 언급된다.
본 발명의 목적은 비교적 자주 호출되는 복잡한 특정 연산을 실행하는데 요구되는 밀리코드 명령의 수와 기계 싸이클을 줄이는 전문 밀리코드 명령 세트(specialized millicode instruction set)를 제공하는 것이다.
본 발명의 또 다른 목적은 정상적인(즉, 밀리코드가 아닌) 연산에 대한 명령 포맷에 따르고 전문 세트에 유일한 최소 하드웨어를 요구하는 전문 밀리코드 명령 세트를 제공하는 것으로, 이를 위해 이후 기술될 바와 같이, CMOS 실행에 대한 ESA/390 환경에 좋은 전문 업데이트 및 브랜치 명령에서의 밀리코드 플래그; 편집 기능을 위한 전문 밀리코드 명령; 번역 및 테스트를 위한 전문 밀리코드 명령; 및 압축 기억된 십진수 나눗셈을 위한 전문 밀리코드 명령에 관련되어 설명되는 개선안이 제공된다.
도 1은 미국 특허 5,694,587에서 사용된 시스템에 공통된 것으로, 본 발명의 바람직한 특정 실시예에 따른 밀리코드 시스템 (millicode system)의 구성성분을 설명하는 블록도.
도 2는 전문 업데이트 및 브랜치 (update and branch) 명령에서의 밀리코드 플래그 (millicode flag)를 나타내는 것으로, 플래그 설정 (Set Flag) 명령은 도 2a로 정의되고, 플래그 재설정 (Reset Flag) 명령은 도 2b로 정의되고, 플래그 로드 (Load Flag) 명령은 도 2c로 정의되고, 또한 플래그상의 상대적 브랜치 (Branch Relative on Flag) 명령은 도 2d로 정의되는 도면.
도 3은 편집 기능을 위한 전문 밀리코드 명령으로서 정의된 EDBYT 명령을 나타내는 도면.
도 4는 번역 및 테스트 (Translate and Test) 명령에 대한 TRT 종료 전문 밀리코드 명령을 나타내는 도면.
도 5는 압축 기억된 십진수 나눗셈 (packed decimal divide)에 대한 전문 밀리코드 명령을 나타내는 것으로, 도 5a는 십진수 나눗셈 인출 (Divide Decimal Fetch) 명령을 나타내고, 도 5b는 십진수 나눗셈 몫 (Divide Decimal Quotient) 명령을 나타내고, 또한 도 5c는 십진수 나눗셈 저장 (Divide Decimal Store) 명령을 나타내는 도면.
<도면의 주요 부분에 대한 부호의 설명>
11 : 시스템 저장기
12 : 캐시 유닛
18 : 명령 레지스터
20 : 명령 디코더
21, 23 : 억세스 레지스터
24 : 실행 유닛
25 : 명령 인출 제어 논리부
26 : 밀리-모드 검출 논리부
30 : 완료 논리부
40 : 프로세서 상태 유닛
여기서 설명되는 개선안은 전문 업데이트 및 브랜치 명령에서의 밀리코드 플래그; 편집 기능을 위한 전문 밀리코드 명령; 번역 및 테스트를 위한 전문 밀리코드 명령; 및 압축 기억된 십진수 나눗셈을 위한 전문 밀리코드 명령에 대한 것이고, 이들 각각은 참고된 명칭에 의한 소제목하에서 설명된다. 그러나, 이들 개선안은 모두 하드웨어 제어 실행 유닛에서 비교적 단순한 명령 세트를 실행하고 하드웨어 제어 실행 유닛에서 단순한 명령의 밀리코드 시퀀스로 밀리-모드 설계 상태에서 비교적 복잡한 명령을 실행하는 파이프라인 컴퓨터 프로세서에 관련된다. 밀리코드는 자주 사용되고, 기계의 저장 계층구조 중 제1 레벨로 동작되는 고속 캐시어레이(cache array)를 통해 기계 버퍼 제어소자 저장기의 밀리코드 부분에 밀리코드를 인출하는 밀리-모드로 들어가려는 요구를 명령 복호화 논리가 검출할 때 필요로 하기 이전에 L1 캐시의 확장부로 로드된다. 밀리코드는 사용될 레지스터에 특정 데이터를 제공하는 지정된 필드 (field)를 포함한다.
복합 명령 세트 컴퓨팅 (Complex Instruction Set Computing, CISC)이라 칭하여지는 설계를 채택한 컴퓨터 시스템에서 사용되는 명령 세트는 단순 명령 (예를 들면, 로드(Load) 또는 가산(Add))와 복합 명령 (예를 들면, 프로그램 호출(Program Call) 또는 어드레스 공간 매개변수 로드(Load Address Space Parameters)) 모두를 포함한다. 이들 복합 명령은 "IBM 기업 시스템 설계/370 동작 원리 (IBM Enterprise Systems Architecture/390 Principles of Operation)" (공지되어 있지만 출판번호 SA22-7201-02인 IBM사, Armonk, N.Y으로부터 이용가능한)에서 설명된다. 이 컴퓨터 시스템들 (예를 들면, ESA/390 설계를 사용한 IBM 시스템 S/390 시스템)은 보다 강력해지므로, 더 많은 퍼센트의 명령 세트가 시스템 실행도를 증가시키도록 하드웨어 실행 유닛을 사용해 실시된다. 종래에는 이들을 실행하기 위한 하드웨어 실행 유닛을 조립하는 것이 비싸고 에러를 범하기 쉬우므로, 복합 기능이 마이크로코드(microcode)로 실시된다. 마이크로코드는 예를 들면, 1997년 G4 레벨의 기술을 소개하기 이전에 G3 S/390 기계의 특징이었다.
복합 기능을 마이크로코드로 실시하면, 나중에 추가 기능이 포함될 수 있다는 점에서 확장가능성과 문제 해결의 탄력성이 제공된다. 많은 프로세서가 하드웨어 제어되는 종래 기술의 특정 기계에서는 복합 기능을 실행하기 위해 때로 실행유닛을 기초로 한 전용 마이크로프로세서가 제공된다. 이 유닛은 인터럽트 조건을 처리하는 것과 같은 복합 기능 및 복합 명령을 실행하기 위해 마이크로프로그램될 수 있다.
보다 최근에는 밀리-모드 연산 기능을 갖춘 기계에 대해 종래 기술의 제안이 향상되었다: 예를 들어, 여기서 참고로 포함되는 1992년 9월의 IBM 기술 발표 사보 (IBM Technical Disclosure Bulletin) Vol. 35, No. 4A와, 여기서 또한 참고로 포함되고 본 발명의 양수인에게 선임된 미국 특허 No. 5,280, 593 및 5,226,164를 참고한다.
새로운 개념을 소개하기 위해, 배경으로 명령 복호화 논리에서 밀리-모드로 들어가려는 요구를 검출하는 밀리-모드 검출 논리가 설명되고, 이는 밀리코드 루틴이 인출되게 한다. 밀리코드 루틴은 디코더 하드웨어에 의해 복호화되고, 설계된 매크로-명령(macro-instruction) (시스템-모드 명령)와 같은 방식으로 실행되도록 신속히 처리된다.
실질적으로, 하드웨어 제어 명령으로 실시되는 모든 설계된 매크로-명령은 밀리-모드에서 실행될 수 있다. 밀리-모드에서 이용가능한 명령 세트는 프로세서가 실행할 수 있는 다른 방법의 설계로 생각될 수 있다.
밀리코드에 대해서만 유효한 하드웨어 실행 명령은 일반적으로 ESA/390 명령과 유사한 기능 및 포맷이다. 이 방법으로, 이 명령들을 실시하는데 요구되는 유일한 하드웨어가 최소화되고, 하드웨어 설계가 간단하게 유지된다. 하드웨어 제어가 간단한 것은 유일한 하드웨어를 상당히 더 많이 요구하는 다른 형태의 내부 코드(예를 들면, 마이크로코드)에 대한 밀리코드의 주요 이점이다.
밀리코드 설계의 불편한 점은 일부 복합 연산이 마이크로코드 형태 보다 더 많은 내부 코드 명령 및/또는 더 많은 기계 싸이클을 요구한다는 점이다. 일부 경우에서, 이는 이 복합 연산들을 실행하는데 사용될 때 베이스 기지 세트(예를 들면, 하드웨어로 실행되는 ESA/390 명령)가 비효율적이기 때문이다. 이 연산들이 실행되는 회수에 의존해, 전체 시스템 실행도에 대해 상당한 영향을 줄 수 있다.
1997년 12월 2일 부여된 미국 특허 No. 5,694,587에 의해 설명되는 바와 같이, 번역 및 테스트에 대한 이전 생각이 설명됨을 주목한다. ESA/390 명령 번역(TR)과 번역 및 테스트(TRT)는 바이트의 스트링을 번역하는데 256 바이트의 테이블을 사용한다. ESA/390 명령 각각에 대해, 각 스트링 바이트는 테이블에 대한 인덱스로 사용되고, 선택된 테이블 바이트는 인출된다. 번역을 위해, 선택된 테이블 바이트는 저장기에서 원래 스트링을 대신한다. 번역 및 테스트를 위해, 선택된 바이트는 테스트되고, 처음으로 0이 아닌 선택된 테이블 바이트는 이를 선택했었던 스트링 바이트의 어드레스와 함께 일반 레지스터내의 프로그램으로 복귀된다; 번역 및 테스트는 또한 조건 코드를 설정하고 저장기를 업데이트하지는 않는다. 이 특허 No. 5,694,587에서는 번역과 번역 및 테스트에 대해 이상적인 실행도를 제공하기 위해 밀리코드 설계의 탄력성 및 간략성을 유지하면서, 특허 No. 5,694,587에서 "번역 인출 (Translate Fetch, TRFET)"이라 칭하여지는 밀리코드 명령이 특히 ESA/390 번역과 번역 및 테스트 명령의 실행에서 사용되도록 제공되었음을 주목한다. 이 번역 인출 밀리코드 명령은 RX 포맷을 사용하지만, X sub 2 및 D sub 2 필드의 해석을 수정한다. 바이트 오프셋을 지정하는 대신에, D sub 2 필드가 3-비트 마스크 (M sub 2)로 사용되고, D sub 2의 나머지 비트는 무시된다. 이 마스크의 하위 2 비트는 X sub 2 레지스터의 4 바이트 중 하나를 선택하여 실제 인덱스로 사용한다 (전체 X sub 2 레지스터가 사용되기 보다는). 부가하여, 3-비트 마스크는 R sub 1로 지정된 밀리코드 일반 레지스터(MGR)쌍의 8 바이트 중 하나를 선택하여 오퍼랜드 2 어드레스에 의해 억세스되는 저장 바이트를 수신한다. 결과적인 MGR쌍 R sub 1의 내용은 0이 아닌 값에 대해 테스트되고, 그에 따라 조건 코드가 설정된다. 이 밀리코드 번역 인출 명령에 대해 특별히 요구되는 데이터플로우 하드웨어는 단지 어드레스 가산기로의 X sub 2 입력에 대한 4-대-1 바이트 멀티플렉서이다.
1997년 12월 2일 부여된 미국 특허 No. 5,694,587에 의해 설명되는 바와 같이, 본 발명의 다음 실시예는 일반적으로 IBM의 현재 390 시스템 설계에 따른 시스템의 전체적인 문맥에 적용될 수 있다. G4 개발로 시작하여 새로운 기계에서는 원래의 쌍극 ESA/390 기계 또는 이후의 수평 마이크로코드 기계에서 이용가능하지 않았던 시스템 상태를 조작하도록 추가 명령 뿐만 아니라, 매크로-명령에 사용되는 레지스터에 부가하여 밀리코드 일반 레지스터, 억세스 레지스터(MAR), 및 제어 레지스터(MCR)의 분리된 세트를 밀리코드에 사용한다. 이 해결법은 밀리코드 루틴이 완전한 ESA/390 기능을 실시하도록 허용한다. 390 시스템 프로세스와 같은 종래 소자에 대한 보다 상세한 설명은 예를 들면, 인쇄된 것처럼 그대로 여기서 참고로 포함되고 본 발명과 같은 양수인에게 선임된 존 립테이(John S. Liptay)의 미국 특허 No. 4,901,233에서 볼 수 있다. 시스템 390 환경이 한 예로 사용되지만, 본 발명은 또한 다른 IBM (예를 들면, IBM 시스템 370) 및 비IBM 설계에도 용이하게 적용될 수 있는 것으로 이해되어야 한다. 제한되는 것은 아니지만, 본 발명은 여기서 또한 참고로 포함되고 1993년 11월 9일 출원된 일련 No. 08/149,260으로, 지금은 본 출원의 양수인에게 선임된 미국 특허 No. 5,504,859에서 설명되는 증진된 에러 회복 시스템과 연관되어 사용되는데 특히 적합하다. G4 기계의 특성은 G4 레벨의 기계가 소개되었던 1997년 7/9월 IBM J. 연구 개발 (Research and Development), Vol. 41, No 4/5의 페이지 463..473에서 논의된다. 웹(C.F. Webb) 및 립테이(J.S. Liptay)에 의한 "고주파수 커스텀 CMOS S/390 마이크로프로세서 (A high frequency custom CMOS S/390 microprocessor)"명의 기사가 참고로 포함된다.
이제 도 1을 참고로, 본 발명에 관련된 시스템의 소자는 시스템 저장기(11)와 캐시 메모리 유닛(12)을 포함한다. 시스템 저장기(11)는 프로세서가 실행하고 있는 명령 뿐만 아니라 이 명령들이 조작하는 데이터를 포함한다. 본 실시예에서, 프로세서가 현재 실행하고 있는 명령 및 데이터의 카피를 포함하는 캐시 메모리 유닛(12)은 인터리브(interleave)된 이중 단어 어드레싱을 제공하는 캐시이다. 캐시 메모리(12)는 인접하게 어드레스지정가능한 기록가능 내부 코드 어레이(13)(G4로부터의 변화)를 포함하고, 여기서는 자주 호출되는 특정한 밀리-모드 루틴을 실행하는 코드가 저장된다.
명령 유닛 서브시스템(16)은 명령 버퍼(도 1에서는 도시되지 않은), 명령 레지스터(18), 및 명령 디코더(20)를 포함한다. 명령 유닛 서브시스템은 캐시 메모리 유닛(12)으로부터 매크로명령(macro-instruction), 밀리코드 명령, 및 데이터를수신한다. 명령들은 분석되어 명령 레지스터(18)에 배치된다. 디코더(20)는 명령 레지스터(18)의 내용을 판독하고, 명령을 복호화하여 (또는 예외 연산을 발생시켜), 그 명령을 하드웨어 명령 유닛(24)이 순차적으로 실행하는 명령 대기열(queue)에 전달한다. 각 하드웨어 실행 유닛(24)은 정상적인 매크로코드 명령 실행을 위한 억세스 레지스터(21)와 범용 레지스터의 세트 및 밀리코드 명령 실행을 위한 억세스 레지스터(23)와 범용 레지스터의 세트에 억세스한다. 제어 논리부는 밀리코드 루틴을 시작하거나 종료할 때 두 세트의 레지스터 사이에서 데이터의 교환을 제어한다.
밀리-모드 검출 논리부(26)는 명령 레지스터에 연결되고, 복호화되고 있는 매크로명령이 밀리-모드 연산에서 해석되어야 하는 종류일 때를 검출한다. 그런 경우, 밀리-모드 검출 논리부(26)는 엔트리 지점 어드레스를 발생하고, 이 어드레스를 명령 인출 제어 논리부(25)에 따라 전달하여 디코더(20)를 밀리-모드 연산 상태로 놓는다. 이 상태에서, 디코더는 밀리-모드 명령을 복호화하도록 인에이블된다. 밀리-모드 명령은 수직 마이크로코드로서, 정규적인 마이크로 명령과 특수한 밀리-모드 전용 명령의 혼합으로 구성되고, 이들 모두는 실행 유닛(24)에서 실행될 수 있다. 특수한 명령은 밀리코드 루틴에 의해 필요로 하는 제어 기능을 제공한다. 밀리코드 루틴의 세트는 프로그램 어드레스지정가능 저장기 밖에 놓인다.
실행되는 명령의 시스템 효과는 완료 논리부(30)에서 설계적으로 보여질 수 있다. 완료 논리부(30)와 디코더(20) 사이의 신호선은 디코더(20)가 명령 완료를 계속 추적할 수 있도록 허용한다. 레지스터(31)내의 프로그램 상태어 (programstatus word, PSW)는 매크로프로그램의 실행을 제어한다. 유사하게, 시스템은 또한 밀리-루틴의 실행을 제어하는 밀리-PSW 레지스터(33)를 포함한다. 실행 유닛(24)과 완료 논리부(30)는 모두 PSW 및 밀리-PSW로의 판독/기록 레지스터에 연결된다. 그래서, 소정의 시점에, 실행 유닛이나 완료 논리부는 PSW 및/또는 밀리-PSW 레지스터 중 적당한 것을 판독 또는 업데이트할 수 있다. 프로세서 상태 유닛(40)은 정규적인 모드 및 밀리-모드 연산 모두에서 설계된 시스템의 업데이트된 전체 상태를 보유한다. 에러가 검출되는 경우, 프로세서 상태 유닛(40)은 에러를 일으킨 동작의 재시도를 허용하기 위해 점검 지점 상태로부터 시스템의 상태를 재생성하는 자원을 제공한다.
밀리-모드는 복호화되고 있는 매크로명령이 밀리코드로 실행되어야 함을 밀리-모드 검출 논리부(26)가 인식할 때 인에이블된다. 이러한 인식에 응답하여, 검출 논리부(26)는 디코더(20), 명령 인출 제어부(35), 및 실행 유닛(24)내의 레지스터 제어부에 신호를 전한다. 검출 논리부(26)로부터의 밀리-모드 인식 신호에 응답해, 디코더(20)는 매크로-모드 복호화를 일시 중지시키고, 실행 유닛 레지스터 제어부는 GPR(21)의 내용을 밀리-레지스터에 복사하여, 시스템이 밀리-레지스터(23)를 계속 사용하게 한다. 밀리-모드 검출 논리부(26)는 밀리코드 엔트리 지점 어드레스를 발생한다.
엔트리 지점 어드레스 (밀리-모드 검출 논리부(26)에 의해 발생되는)는 제어 논리부(35)에 의해 캐시(12)의 어드레스를 지정하는데 사용된다. 캐시로부터의 밀리-명령은 명령 레지스터(18)로 전달되고, 디코더(20)는 이들을 복호화하고 실행을스케쥴처리한다.
프로세서가 밀리-모드로 들어갈 때, 이는 개념적으로 엔트리를 밀리-모드로 되게 했던 명령 이전에 파이프라인에서 이미 매크로명령을 실행하여 완료시킨다. 프로세서가 매크로 명령을 완료했으므로, 이는 적절한 GPR을 업데이트한다. 동시에, 프로세서는 엔트리를 밀리-모드로 되게 했던 매크로명령을 실행하는 밀리-명령을 복호화하여 실행한다.
일부 경우에서는 엔트리를 밀리-모드로 되게 했던 명령 직전의 매크로명령이 완료 논리부(30)에서 완료된 것으로 나타내진다. 이때에는 프로세서가 단지 밀리-명령을 완료시키기 시작한다. 이어서, 프로세서는 계속하여 밀리-명령을 복호화하여 실행하고, 또한 완료시킨다.
결국, 검출 논리부(26)는 밀리코드 END (MEND) 밀리-명령을 인식한게 된다. 검출 논리부(26)가 MEND 밀리-명령을 검출할 때, 이는 프로세서가 밀리-명령의 인출을 중단하게 한다. 또한, MEND가 검출될 때, 검출 논리부는 디코더를 매크로-모드로 놓고, 프로세서가 매크로명령의 인출을 시작하게 한다. 밀리코드는 모든 레지스터를 명확하게 업데이트하므로, 밀리-모드 연산에서 정규 동작으로 될 때 레지스터의 내용이 전달되지 않는다.
MEND 밀리-명령이 완료되면, 프로세서 완료 논리부는 매크로명령을 완료시키기 시작한다.
프로세서는 또한 인터럽트(interrupt)에 응답해 밀리-모드로 들어갈 수 있다. 완료 논리부가 인터럽트를 검출할 때, 인터럽트 우선순위 논리부(interruptpriority logic)(45)는 인터럽트 서비스가 주어져야 함을 결정하고, 명령 인출 유닛에 신호를 전달하여, 디코더가 밀리-모드를 초기화하게 한다. 인터럽트 상태가 인식되면, 프로세서는 다음 인터럽트가능 지점에서 매크로-모드 실행을 중지시킨다. 인터럽트 우선순위 논리부(45)는 또한 밀리-모드 검출 논리부에 의해 사용되는 제어 입력을 발생하여, 캐시의 어드레스를 지정하는 엔트리 지점 어드레스를 발생한다. 이 밀리-명령들은 명령 레지스터로 전달되고, 디코더는 이들을 복호화하여 적절한 하드웨어 실행 소자에서의 실행을 스케쥴처리한다.
프로세서는 인터럽트에 대한 밀리-루틴에서 밀리-명령을 복호화하여 실행하고, 또한 완료시키도록 진행한다. 결국, 디코더는 MEND 밀리-명령을 인식하게 된다. 이는 디코더가 밀리-모드에서의 복호화를 중단하게 한다. 서비스를 요구하는 추가 인터럽트가 있는가 여부에 의존해, 디코더 하드웨어는 인터럽트 처리를 다시 실행하거나 캐시로부터의 복호화 매크로명령으로 복귀한다.
전문 업데이트 및 브랜치 명령에서의 밀리코드 플래그
여기서 발표된 해결법은 밀리코드 레지스터에 조건 코드의 일부 특성과 상태 비트 일부를 갖는 밀리코드 플래그 (millicode flag)의 세트이다. 플래그는 전문 밀리코드 명령의 세트에 의해 명확하게 설정되고 변경될 수 있다. 플래그는 또한 확장된 조건 코드로 동작되는 특정한 전문 밀리코드 명령에 의해 함축적으로 업데이트되고, 전문 밀리코드 명령의 실행을 변경시킬 수 있다. "편집 기능을 위한 전문 밀리코드 명령" 및 "번역 및 테스트를 위한 전문 밀리코드 명령"명의 섹션을 참고한다. 플래그는 명령에 대한 밀리코드로의 엔트리에 특수하게 설정되거나 클리어 (clear)되고, 다시 확장된 밀리코드 조건 코드로 동작된다.
초기 실행에서, 밀리코드 플래그는 장기 이동 및 장기 비교 (Move Long and Compare Long) (오퍼랜드 1 또는 오퍼랜드 2에 대해서는 0의 길이이고, 두 오퍼랜드에 대해서는 같은 길이) 및 제어 로드 (Load Control) (CR6만의 로드, CR0만의 로드)에 대한 특수 조건을 나타내는데 사용된다. 밀리코드 엔트리에서 부가적인 하드웨어 싸이클을 요구하지 않는 이러한 설정들은 대응하는 밀리코드 루틴에서 각각 수개의 밀리코드 명령을 제거한다.
밀리코드 플래그는 정적 브랜치 분해능에 대한 브랜치점으로 사용될 수 있다. 부가하여. 새로운 조건부 브랜치 명령은 조건상의 브랜치 (Branch on Condition)와 유사한 방식으로, 다양하게 조합된 밀리코드 플래그 설정에서 밀리코드가 분기되는 것을 허용하는 밀리코드에 의해 사용되도록 정의된다. 이 새로운 플래그상의 브랜치 (Branch on Flags) 명령에는 또한 조건상의 브랜치와 유사한 방식으로, 예를 들어 브랜치 내력 테이블 (Branch History Table) 또는 브랜치 타겟 버퍼 (Branch Target Buffer)를 통해 동적인 브랜치 예측이 행해진다.
본 발명의 초기 실행은 ESA/390 밀리코드 설계에 자연스럽게 조화되고 본 목적에 충분한 4개의 밀리코드 플래그를 사용한다. 이는 다른 플래그수로 용이하게 확장될 수 있다. 도 2는 도 2a, 도 2b, 도 2c, 및 도 2d로 도시되는 전문 밀리코드 명령인 플래그 설정 (Set Flags), 플래그 재설정 (Reset Flags), 플래그 로드 (Load Flags), 및 플래그상의 브랜치 (Branch on Flags)에 대한 상세한 정의를 설명한다.
밀리코드 플래그는 도 2a에서 정의된 바와 같이 설정된다. 제2 오퍼랜드 어드레스 D2(B2)는 억세스 저장에 사용되지 않는다; 대신에, 이 어드레스 중 하위 4개 비트 (비트 28:31)는 어느 밀리코드 플래그가 설정되어야 하는가를 선택하는 마스크 (mask)로 사용된다. 대응하는 마스크 비트가 '1'b인 플래그는 '1'b로 설정되고; 대응하는 마스크 비트가 '0'b인 플래그는 변화되지 않는다.
결과 플래그는 이어지는 플래그상의 상대적 브랜치 (Branch Relative on Flags) 동작의 결과에서 반영된다. 밀리코드는 이 명령과 이 명령에 의해 업데이트된 밀리코드 플래그값을 테스트하는 특수 상대적 브랜치 (Branch Relative Special) 명령 사이에 충분한 파이프라인 공간이 있음을 보장하여야 한다.
밀리코드 플래그는 도 2b에서 정의된 바와 같이 재설정된다. 제2 오퍼랜드 어드레스 D2(B2)는 억세스 저장에 사용되지 않는다; 대신에, 이 어드레스 중 하위 4개 비트 (비트 28:31)는 어느 밀리코드 플래그가 설정되어야 하는가를 선택하는 마스크로 사용된다. 대응하는 마스크 비트가 '1'b인 플래그는 '1'b로 재설정되고; 대응하는 마스크 비트가 '0'b인 플래그는 변화되지 않는다.
결과 플래그는 이어지는 플래그상의 상대적 브랜치 (Branch Relative on Flags) 동작의 결과에서 반영된다. 밀리코드는 이 명령과 이 명령에 의해 업데이트된 밀리코드 플래그값을 테스트하는 특수 상대적 브랜치 (Branch Relative Special) 명령 사이에 충분한 파이프라인 공간이 있음을 보장하여야 한다.
밀리코드 플래그는 도 2c에서 정의된 바와 같이 로드된다. 제2 오퍼랜드 어드레스 D2(B2)는 억세스 저장에 사용되지 않는다; 대신에, 이 어드레스 중 하위 4개 비트 (비트 28:31)는 4개의 밀리코드 플래그로 기록된다.
결과 플래그는 이어지는 플래그상의 상대적 브랜치 (Branch Relative on Flags) 동작의 결과에서 반영된다. 밀리코드는 도 2d에서 정의된 바와 같이, 이 명령과 이 명령에 의해 업데이트된 밀리코드 플래그값을 테스트하는 특수 상대적 브랜치 (Branch Relative Special) 명령 사이에 충분한 파이프라인 공간이 있음을 보장하여야 한다.
(M1) 및 (M3)으로 지정된 밀리코드 플래그의 논리적 기능이 논리적인 것이면, 밀리코드 명령 어드레스는 브랜치 어드레스로 대치되고; 그렇지 않은 경우, 업데이트된 밀리코드 명령 어드레스로 정상적인 명령 시퀀스가 진행된다. (I2) 필드의 내용은 브랜치 어드레스를 발생하도록 명령 어드레스에 부가된 반단어의 수를 지정하는 부호표시된 이진 정수이다.
(M1) 필드는 브랜치가 취해지는가 여부를 결정하는데 4개의 밀리코드 플래그 중 어느 것이 사용되는가를 선택한다. (M1)의 비트는 4개의 플래그 비트와 일대일로 대응하고, 결정하는데는 (M1)에서 '1'b 비트에 대응하는 플래그만이 사용된다.
(M3) 필드는 브랜치가 취해지는가 여부를 결정하는데 어느 논리적 기능이 사용되는가를 선택한다. 다음의 기능이 이용가능하다:
코드 기능
'0000'b '1'b인 선택 플래그가 있으면 브랜치
'0001'b 모든 선택 플래그가 '0'b이면 브랜치
'0010'b 모든 선택 플래그가 '1'b이면 브랜치
'0011'b '0'b인 선택 플래그가 있으면 브랜치
'0100'b 선택 플래그가 '0'b와 '1'b의 혼합이면 (즉, 적어도 하나의
선택 플래그가 '0'b이고 적어도 하나가 '1'b이면) 브랜치
'0101'b 선택 플래그가 '0'b와 '1'b의 혼합이 아니면 브랜치
(M3)의 다른 값은 다른 논리적 기능에 대해 브랜치가 취해지는가 여부를 결정하도록 정의될 수 있다.
(M1)이 '0000'b이면, 브랜치가 취해질 것인가 여부를 예측할 수 없다.
본 실시예는 밀리코드를 내부 코드로 사용하는 ESA/390 실행에 적용가능하다. 명확한 설정과 함축적인 설정을 조합하고, 플래그를 브랜치 지점 (명령 복호화시 정적 브랜치 분해능에 대해) 및 복합 조건 코드 (브랜치 처리와 같은 조건상의 브랜치에 대해)로 모두 사용하는 것을 조합하면, 다른 해결법 보다 일반적으로 더 나은 밀리코드 실행도와 더 큰 탄력성이 허용된다. 본 실시예는 밀리코드 또는 밀리코드에 유사한 형태나 구조의 내부 코드를 사용하는 ESA/390 프로세서를 사용해 이용될 수 있다.
편집 기능을 위한 전문 밀리코드 명령
여기서 발표된 해결법은 ESA/390 명령 편집 (Edit, ED)과 편집 및 마크 (Edit and Mark, EDMK)를 지지하는 내부 코드 (밀리코드)로 사용되기 위한 새로운 명령을 정의하는 것이다. 이 명령은 한 바이트의 패턴 스트링을 처리하여, 한 바이트의 출력 스트링을 발생하고, 또한 다음 바이트의 처리를 준비하도록 다양한 포인터와 상태 표시를 업데이트한다.
이 명령의 형식적인 정의로 이어진다. 본 발명은 또한 분리된 내용에 포함되는 밀리코드 플래그를 사용한다.
ESA/390 편집 또는 편집 및 마크 명령에서는 단일 바이트가 처리된다. MGR R2쌍은 비트 16:23에 처리되는 패턴 바이트 (ED 또는 EDMK의 오퍼랜드 1로부터)를 포함하고; 비트 8:15에 필(fill) 바이트를 포함하고; 또한 비트 56:63 (즉, MGR R2+1의 비트 24:31)에는 ED 또는 EDMK로부터의 다음 오퍼랜드 2 바이트를 포함한다. 발생된 결과 바이트는 이 명령에 의해 MGR R1의 비트 24:31에 배치된다. MGR R1에 배치된 값의 비트 0:23은 예측가능하지 않다.
도 3에 의해 정의되는 EDBYT 명령은 밀리코드 플래그를 설정 및 사용하고, ED 또는 EDMK 상태 시퀀스의 동작 상태를 반영한다. 플래그 0은 유의 표시자로 사용된다. 플래그 1은 소스 바이트 중 어느 디지트 (좌측 또는 우측)가 다음에 사용되는가를 나타낸다. 플래그 2는 "마크 (mark)" 지점 (EDMK에 대한)이 식별되었나 여부 (즉, EDMK에 의해 조건 코드 2 또는 조건 코드 3이 나타내지는가 여부를 설정하는)를 나타낸다. 플래그 3은 현재 필드에서 0이 아닌 디지트가 발견되었음을 나타낸다. 이 플래그들은 모두 ED 또는 EDMK 밀리코드 루틴이 시작될 때 '0'b로 설정되어야 한다; 플래그에 대한 순차적인 업데이트는 EDBYT 명령의 일부로 하드웨어에 의해 실행된다.
결과 바이트의 형성과 밀리코드 플래그의 업데이트를 포함하는 EDBYT의 실행은 ESA/390 동작 원리에서 편집 명령의 정의인 도 8-3에 따라 행해진다. (참고 도면의 복사본인 페이지 25상의 도면을 참고)
코드 조건
0 아래 조건 중 아무 것도 만족되지 않음
1 새로운 오퍼랜드 2 바이트가 필요함
2 EDMK를 위한 오퍼랜드 1 위치를 마크
3 새로운 오퍼랜드 2 바이트가 필요하고
EDMK를 위한 오퍼랜드 1 위치를 마크
편집 기능 요약 테이블
번역 및 테스트를 위한 전문 밀리코드 명령
여기서 발표된 해결법은 ESA/390 명령 번역 및 테스트 (Translate and Test, TRT)를 지지하는 내부 코드 (밀리코드)로 사용되기 위한 새로운 명령을 정의하는 것이다. 이 명령은 일반 레지스터내의 정보, 조건 코드, 및 밀리코드 플래그를 사용하여 요구되는 값을 발생하고, ESA/390 설계에 의해 요구되는 바와 같이, 일반 레지스터(1), 일반 레지스터(2), 및 조건 코드를 업데이트한다.
이 명령의 형식적인 정의로 이어진다. 부가하여, 본 발명은 상술된 바와 같이 이전 디자인에서 실시되었던 밀리코드 명령 번역 인출 (Translate Fetch)로부터의 결과를 사용한다. "번역 인출 (TRFET, TRFET는 새로운 번역 인출 밀리코드 명령을 칭함)"은 특별히 ESA/390 번역 (Translate)과 번역 및 테스트 (Translate and Test) 명령의 실행에서 사용되도록 제공되었다. 본 발명에서, 이전에 소개된 번역 인출 명령은 밀리코드 플래그를 또한 업데이트하도록 수정되었다. 본 발명은 또한 논의되었던 밀리코드 플래그를 사용한다. TRT 종료(Ending)는 도 4에 의해 도시된다.
ESA/390 번역 및 테스트(TRT) 명령에 대한 결과값 (프로그램 GR1, 프로그램 GR2, 및 프로그램 조건 코드)를 형성하는데는 MGR (R1, R1+1)쌍과 (R2, R2+1)쌍, 조건 코드, 및 밀리코드 플래그가 사용된다. 이 사용법 (단지 이 명령에 대해 지지되는 사용법인)에서, MGR (R1, R1+1)쌍은 0이 아닌 결과 바이트가 발견된 (즉, CC≠0) TRFET 명령의 결과를 포함하여야 하고; MGR R2는 프로그램 GR2의 현재값을 포함하여야 하고; 또한 MGR R2+1은 TRFET에 의해 MGR R1중 최좌측 바이트로 번역된 오퍼랜드 1 (TRT 명령으로부터)의 바이트 어드레스를 포함하여야 한다. 조건 코드와 밀리코드 플래그는 MGR (R1, R1+1)쌍을 로드시킨 TRFET에 의해 설정되었어야 한다.
하드웨어는 조건 코드 및 밀리코드 플래그를 사용해 TRFET 결과에서 처음으로 0인 아닌 바이트의 위치를 결정한다. 이 바이트는 MGR R1또는 R1+1로부터 추출되어, MGR R2에서 그 값의 바이트로 삽입되고, 그 결과는 프로그램 GR2에 기록된다.MGR (R1, R1+1)쌍으로부터 선택된 바이트의 바이트 인덱스는 MGR R2+1내의 값에 부가되어, ESA/390 TRT 명령에 대해 GR1에 기록되는 어드레스를 형성한다. 프로그램이 24-비트 모드에 있을 때, 이 어드레스의 비트 8:31은 프로그램 GR1의 비트 8:31에 기록되고, 프로그램 GR1의 비트 0:7은 변하지 않는다. 프로그램이 31-비트 모드일 때, 이 어드레스의 비트 1:31은 프로그램 GR1의 비트 1:31에 기록되고, 프로그램 GR1의 비트 0은 0으로 설정된다. 프로그램 조건 코드는 1로 설정된다.
밀리코드 GR은 TRTX에 의해 기록되지 않고, 밀리코드 조건 코드는 변하지 않는다.
하드웨어 인터로크(interlock)는 TRTX가 실행되도록 대기하고 있는 동안 ESA/390 (즉, 밀리코드가 아닌) 명령의 복호화를 금지한다. 이는 TRTX가 밀리코드 루틴에서 MCEND로 곧 이어질 때에도 순차적인 프로그램 명령의 실행에서 TRTX에 의한 프로그램 GR로의 업데이트가 적절하게 반영됨을 보장한다.
압축 기억된 십진수 나눗셈을 위한 전문 밀리코드 명령
여기서 발표된 해결법은 ESA/390 명령 십진수 나눗셈 (Divide Decimal)을 지지하는 내부 코드 (밀리코드)로 사용되기 위한 3개의 새로운 명령의 세트를 정의하는 것이다. 이 명령들은 오퍼랜드 억세스, 점검, 준비, 및 기능 저장을 제공하기 위한 더 간단한 압축 기억된 십진수 동작 (가산(Add)과 같은)을 지지하고, DP 명령에 필요한 경우 몫의 디지트를 발생하도록 설계된 하드웨어 제어 및 데이터플로우논리를 사용한다. 현존하는 논리를 사용함으로서, DP 지지에 요구되는 유일한 하드웨어가 최소로 유지된다; 전체적인 DP 기능을 하드웨어로 실시하기 보다는, 이들을 내부 코드 명령으로 실시함으로서, 제어가 내부 코드로 보존되어, 보통과 다른 경계 조건을 더 간단하게 처리할 수 있다.
제1 명령인 십진수 나눗셈 인출 (Divide Decimal Fetch)은 저장기로부터 오퍼랜드를 인출하고, 필요한 경우 좌측에서 이들을 0의 디지트로 확장하고, 유효성에 대해 디지트와 부호를 점검하고, 부호를 떼어내어 기록하고, 각 오퍼랜드에서 유의 디지트의 수를 계산하고, 그 결과를 일반 레지스터와 조건 코드에 저장한다. 이 명령은 ESA/390 DP 명령의 각 실행에 한 번씩 사용된다.
제2 명령인 십진수 나눗셈 몫 (Divide Decimal Quotient)는 일반 레지스터에 저장된 오퍼랜드를 사용해 한 디지트의 몫을 계산한다. 이는 발생되는 각 몫의 디지트에 한 번씩 사용된다.
제3 명령인 십진수 나눗셈 저장 (Divide Decimal Store)은 부호를 삽입하고 결과의 십진수를 저장기에 기록한다. 이는 몫과 나머지에 대해 각각 한 번씩, 또한 DP에 대해 내부 코드로 두 번씩 사용된다.
십진수 나눗셈 인출 (Divide Deciaml Fetch)을 나타내는 도 5a에서 이 명령의 형식적인 정의로 이어진다.
ESA/390 십진수 나눗셈 (DP) 명령에 대해 압축 기억된 십진수 오퍼랜드는 DP 동작의 실행을 준비하도록 인출되어 분석된다. 제1 오퍼랜드 (피제수)는MGR1.24:27을 길이 필드로 사용하여 D1(B1)에 의해 지정된 저장 위치로부터 인출된다. 제2 오퍼랜드 (제수)는 MGR1.28:31을 길이 필드로 사용하여 D2(B2)에 의해 지정된 저장 위치로부터 인출된다. 두 오퍼랜드는 모두 유효한 십진수 디지트 및 부호인가에 대해 점검되고, 유효하지 않은 디지트나 부호가 발견되면 디지털 데이터는 강제로 제외된다. 피제수는 0이 아닌 최상위 디지트가 MGR2.4:7에 있고, MGR2.0:3에는 0이 있고, 피제수의 최종 디지트 우측까지의 모든 디지트 위치에는 0이 있고, 부호 디지트는 제거되도록 좌측-정렬되어 MGR 2-5에 저장된다. 제수는 0이 아닌 최상위 디지트가 MAR6.4:7에 있고, MAR6.0:3에는 0이 있고, 제수의 최종 디지트 우측까지의 모든 디지트 위치에는 0이 있고, 부호 디지트는 제거되도록 좌측-정렬되어 MAR 6-7에 저장된다. (ESA/390 설계는 제수의 길이 (DP 명령의 L2)가 8 바이트 보다 크지 않으므로, 부호가 제거되고 여기서 정의된 바와 같이 정렬되면, MAR 6-7내에 맞추어지도록 보장됨을 주목한다. 대응하는 점검은 DP 명령이 복호화될 때 하드웨어에 의해 실행되므로, 길이가 그 요구를 만족시키는 이 명령에 의해서는 점검이 이루어지지 않는다.)
각 십진수 오퍼랜드에서 유의 디지트의 수는 0이 아닌 최좌측 디지트로 시작되어 최우측 디지트로 끝나는 십진수 디지트를 카운트함으로서 계산된다 (Op1DS, Op2SD): 0이 아닌 수에서 트레일링 (trailing) 0들은 유의 디지트로 카운트되고, 0의 값은 0의 유의 디지트를 갖는 것으로 간주한다. 잠재적 몫의 디지트 (potential quotient digit, QSD)는 QSD = Op1SD - Op2SD + 1로 계산된다; Op2SD >Op1SD이면, QSD = 0. Op1SD는 MAR1.25:29에 기록되고, Op2SD는 MGR6.25:29에 기록되고, QSD는 MGR7.27:31에 기록된다; MAR1.0:24, MAR1.30:31, MGR6.0:24, MGR6.30:31, 및 MGR7.0:26에는 0이 기록된다.
밀리코드 플래그 0은 몫이 음수이면 '1'b로 설정되고, 양수이면 '0'b로 설정된다. 유사하게, 밀리코드 플래그 1은 나머지의 부호 (오퍼랜드 1의 부호화 같은)로 설정된다. 밀리코드 플래그 3은 Op2SD < 8이면 '1'b로 설정되고, 그렇지 않은 경우에는 '0'b로 설정된다.
조건 코드는 제수가 0 (Op2SD = 0)이면 3으로 설정된다; 그렇지 않은 경우, 조건 코드는 Op1SD > 15이면 2로 설정된다; 그렇지 않은 경우, 조건 코드는 Op1SD < Op2SD (Op1SD = 0인 경우를 포함하여)이면 1로 설정된다; 그렇지 않은 경우, 조건 코드는 0으로 설정된다.
도 5b는 십진수 나눗셈 몫 (Divide Decimal Quotient) 명령을 설명한다. ESA/390 십진수 나눗셈(DP) 명령에 대해 한 디지트의 몫이 계산된다. (R1)은 16 디지트까지의 부호표시 되지 않은 십진수값을 포함하는 MGR의 짝수/홀수쌍을 지정한다; 계획된 용도에서, 이는 많아야 하나의 0 디지트를 선두에 갖고 좌측-정렬된 DP 동작에 대한 실행 피제수이다. (R2)는 16 디지트까지의 부호표시되지 않은 십진수값을 포함하는 MAR의 짝수/홀수쌍을 지정한다; 계획된 용도에서, 이는 정확히 하나의 0 디지트를 선두에 갖고 좌측-정렬된 DP 동작에 대한 제수이다. (R3)는 이 명령에 의해 계산된 몫의 디지트를 포함하는 MGR의 짝수/홀수쌍을 지정한다; 계획된용도에서, 이는 DP 동작에 대한 부분 몫이다.
MGR R1쌍내의 십진수값은 MAR R2쌍내의 십진수값의 정수 배수 만큼 감소되므로, 결과(감소된) 값은 MAR R2쌍내의 십진수값 보다 더 작다. 이 결과값은 이어서 좌측으로 4 비트 쉬프트되고, 비트 60:63에 0을 삽입하고, 또한 MGR R1쌍에 기록된다. (계획된 용도에서, MAR R2쌍내의 값 중 비트 0:3은 0이어야 하므로, 감소된 값의 비트 0:3은 이 쉬프트 동작 이전에 0이 되어야 함을 주목한다.)
몫의 디지트 (quotient digit, QX)는 MGR R1쌍내의 값이 감소된 MAR R2쌍내의 값의 배수로 계산된다. (계획된 용도에서, 이는 0-9 범위의 정수이어야 하고; 다른 용도는 예측불가능한 결과를 산출함을 주목한다.) MGR R3쌍내의 값은 좌측으로 4 비트 쉬프트되고, QX는 비트 60:63에 삽입되고, 또한 결과는 MGR R3쌍에 기록된다.
이 명령은 QX 값에 의존해 다양한 실행 싸이클수을 요구한다.
이 명령에 의해서는 조건 코드가 변화되지 않는다.
십진수 나눗셈 저장 (Divide Decimal Store)은 도 5c에 의해 도시된다. MGR 4-7에서의 십진수 결과는 제2 오퍼랜드 어드레스에 저장된다. 저장되는 오퍼랜드의 길이는 MGR1.28:31으로 지정된다; MGR1의 비트 24:27은 0이어야 하고, MGR1의 비트 0:23은 무시된다. 저장되는 십진수값은 MGR7.28:31의 하위 십진수 디지트로 MGR 4-7에서 우측-정렬되어야 한다. 밀리코드 플래그 0이 '0'b이면, 십진수값은양수로 저장된다; 플래그 0이 '1'b이면, 그 값은 음수로 저장된다.
십진수 오퍼랜드는 좌측으로 4 비트 쉬프트되고, 지정된 부호에 대해 바람직한 부호 코드가 우측에 삽입된다. 부호표시된 이 십진수 중 최우측 <n> 바이트는 D2(B2)에 의해 지정된 저장 어드레스의 시작부에 저장된다. 여기서, <n> = (1 + MGR1.28:31)이다. 이 길이의 오퍼랜드를 형성하는데 요구되지 않는 MGR 4-7의 일부분은 무시된다. 오퍼랜드 2에 대해 제외된 저장 억세스는 MGR1.28:31에 의해 나타내지는 바이트에 의해서만 취해진다.
이 명령에 의해서는 조건 코드가 변화되지 않는다.
이 바람직한 실시예는 일반적인 내부 코드 명령 세트만을 사용하는 것 보다 더 나은 실행도를 제공한다. 이는 실질적으로 완전히 하드웨어로 구현될 수 있는 방법 보다 더 간단하고 더 탄력적이다. 본 실시예는 밀리코드 또는 밀리코드와 유사한 형태나 구조를 갖는 다른 내부 코드를 사용하는 ESA/390 프로세서를 설계하는데 사용된다.
본 발명의 바람직한 실시예가 설명되었지만, 현재 또는 미래의 종래 기술에 숙련된 자는 이어지는 청구항의 범위내 드는 다양한 개선 및 향상이 이루어질 수 있음을 이해하게 된다. 이 청구항들은 먼저 발표된 발명에 대해 적절한 보호를 유지하도록 구성되어야 한다.

Claims (5)

  1. 하드웨어 제어 실행 유닛에서 비교적 간단한 명령 세트를 실행하고 상기 하드웨어 제어 실행 유닛에서 간단한 명령의 밀리코드 시퀀스 (millicode sequence)와의 밀리-모드 (milli-mode) 설계 상태로 비교적 복잡한 명령 세트를 실행하는 파이프라인 컴퓨터 프로세서 (pipelined computer processor)를 갖춘 컴퓨터 시스템에서, 전문 업데이트 및 브랜치 (update and branch) 명령으로 조건들을 설정 및 테스트하는 밀리코드 방법에 있어서,
    내부 코드 어레이에 밀리-모드 루틴을 상기 간단한 밀리코드 명령의 세트로 저장하는 단계; 및
    상기 프로세서의 명령 레지스터에 연결된 밀리-모드 검출 논리부가, 복호화되고 있는 매크로-명령 (macro-instruction)가 상기 밀리-모드 설계 동작 상태에서 해석되어야 하는 종류인 것으로 검출하면, 상기 밀리-모드 설계 상태가 밀리-모드 인식 신호로 인에이블되고, 상기 프로세서에 의한 매크로-모드 (macro-mode) 복호화가 중단되어 상기 시스템이 계속하여 프로세서 밀리-레지스터를 사용하도록 하는 단계
    를 포함하며,
    상기 내부 코드 어레이에 저장된 밀리코드의 어드레스를 지정하기 위해, 상기 내부 코드 어레이로부터 인출되어 상기 프로세서 명령 레지스터로 전달되는 밀리-모드 엔트리 지점 어드레스가 발생되고, 상기 프로세서의 디코더는 이들을 복호화하여 프로세서 밀리-모드로의 엔트리에서의 실행을 위해 스케쥴처리하고,
    밀리-모드 밀리코드 루틴으로의 엔트리에서 오퍼랜드 억세스, 점검, 준비, 및 저장 기능을 제공하기 위한 가산 (Add)을 포함하는 더 간단한 압축 기억된 십진수 연산 (packed decimal operation)을 지지하고 DP 명령에 필요한 경우 몫의 디지트를 발생하도록 설계된 데이터플로우 논리 (dataflow logic)와 하드웨어 제어를 사용하는 압축 기억된 십진수 나눗셈에 대한 하나 이상의 전문 밀리코드 명령이 전체 DP 기능을 하드웨어로 실행하기 보다는 내부 코드 명령으로 실행되고, 제어는 내부 코드에 보유되어, 보통과 다른 경계 조건의 처리를 더 간단하게 하도록 허용하는 방법.
  2. 제1항에 있어서,
    압축 기억된 십진수 나눗셈에 대한 상기 전문 밀리코드 명령 중 하나인 십진수 나눗셈 인출 (Divide Decimal Fetch) 명령은 저장기로부터 오퍼랜드를 인출하고, 필요한 경우 이들을 좌측에 0의 디지트를 가해 확장하고, 디지트 및 부호를 유효성에 대해 점검하고, 부호를 떼어내어 기록하고, 각 오퍼랜드에서 유의 디지트의 수를 계산하고, 또한 그 결과를 일반 레지스터 및 조건 코드에 저장하는 방법.
  3. 제2항에 있어서,
    상기 십진수 나눗셈 인출 (Divide Decimal Fetch) 명령은 ESA/390 십진수 나눗셈 (DP) 명령의 각 실행에 대해 한 번씩 사용되는 방법.
  4. 제2항에 있어서,
    압축 기억된 십진수 나눗셈에 대한 상기 전문 밀리코드 명령 중 하나인 십진수 나눗셈 몫 (Divide Decimal Quotient) 명령은 일반 레지스터에 저장된 오퍼랜드를 사용해 한 디지트의 몫을 계산하고, 상기 십진수 나눗셈 몫 (Divide Decimal Quotient) 명령은 발생되는 각 몫의 디지트에 대해 한 번씩 사용되는 방법.
  5. 제2항에 있어서,
    압축 기억된 십진수 나눗셈에 대한 상기 전문 밀리코드 명령 중 하나인 십진수 나눗셈 저장 (Divide Decimal Store) 명령은 부호를 삽입하여 십진수 결과를 저장기에 기록하고, 십진수 나눗셈 저장 (Divide Decimal Store) 명령은 DP에 대한 내부 코드에서는 두 번씩 사용되고, 몫과 나머지에 대해서는 각각 한 번씩 사용되는 방법.
KR1019990008697A 1998-04-07 1999-03-15 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령 KR100317769B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/056,486 US6067617A (en) 1998-04-07 1998-04-07 Specialized millicode instructions for packed decimal division
US09/056,486 1998-04-07
US9/056,486 1998-04-07

Publications (2)

Publication Number Publication Date
KR19990082747A true KR19990082747A (ko) 1999-11-25
KR100317769B1 KR100317769B1 (ko) 2001-12-22

Family

ID=22004720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990008697A KR100317769B1 (ko) 1998-04-07 1999-03-15 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령

Country Status (3)

Country Link
US (1) US6067617A (ko)
JP (1) JP2000137612A (ko)
KR (1) KR100317769B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190060777A (ko) * 2016-09-30 2019-06-03 인터내셔널 비지네스 머신즈 코포레이션 십진수 시프트 및 나누기 명령

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6968545B1 (en) * 2000-09-11 2005-11-22 Agilent Technologies, Inc. Method and apparatus for no-latency conditional branching
US7467174B2 (en) * 2004-09-23 2008-12-16 Wisconsin Alumni Research Foundation Processing unit having decimal floating-point divider using Newton-Raphson iteration
US9009452B2 (en) * 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8176301B2 (en) * 2008-02-15 2012-05-08 International Business Machines Corporation Millicode assist instructions for millicode store access exception checking
US7913068B2 (en) * 2008-02-21 2011-03-22 International Business Machines Corporation System and method for providing asynchronous dynamic millicode entry prediction
US7966474B2 (en) * 2008-02-25 2011-06-21 International Business Machines Corporation System, method and computer program product for translating storage elements
US9223714B2 (en) 2013-03-15 2015-12-29 Intel Corporation Instruction boundary prediction for variable length instruction set
US10437597B2 (en) 2015-09-09 2019-10-08 International Business Machines Corporation Silent mode and resource reassignment in branch prediction logic
US10235170B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Decimal load immediate instruction

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4384341A (en) * 1980-12-24 1983-05-17 Honeywell Information Systems Inc. Data processor having carry apparatus supporting a decimal divide operation
JPS63245522A (ja) * 1987-03-31 1988-10-12 Toshiba Corp マイクロプロセツサ
JPS63317828A (ja) * 1987-06-19 1988-12-26 Fujitsu Ltd マイクロコ−ド読み出し制御方式
US5226164A (en) * 1991-04-24 1993-07-06 International Business Machines Corporation Millicode register management and pipeline reset
CA2060555A1 (en) * 1991-04-24 1992-10-25 Robert J. Bullions, Iii System and method for draining an instruction pipeline
US5345567A (en) * 1991-06-10 1994-09-06 International Business Machines Corporation System and method for modifying program status word system mask, system access key, and address space code with overlap enabled
JPH06290043A (ja) * 1992-06-15 1994-10-18 Matsushita Electric Ind Co Ltd データ処理用プロセッサ
JPH07129399A (ja) * 1993-10-28 1995-05-19 Motohiro Kurisu 命令属性レジスターを使用して多機能命令を実行する マイクロコンピュータ
US5802359A (en) * 1995-03-31 1998-09-01 International Business Machines Corporation Mapping processor state into a millicode addressable processor state register array
US5694587A (en) * 1995-03-31 1997-12-02 International Business Machines Corporation Specialized millicode instructions for test PSW validity, load with access test, and character translation assist
US5694617A (en) * 1995-03-31 1997-12-02 International Business Machines Corporation System for prioritizing quiesce requests and recovering from a quiescent state in a multiprocessing system with a milli-mode operation
US5754810A (en) * 1996-03-12 1998-05-19 International Business Machines Corporation Specialized millicode instruction for certain decimal operations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190060777A (ko) * 2016-09-30 2019-06-03 인터내셔널 비지네스 머신즈 코포레이션 십진수 시프트 및 나누기 명령

Also Published As

Publication number Publication date
US6067617A (en) 2000-05-23
KR100317769B1 (ko) 2001-12-22
JP2000137612A (ja) 2000-05-16

Similar Documents

Publication Publication Date Title
US5748951A (en) Specialized millicode instructions which reduce cycle time and number of instructions necessary to perform complex operations
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
EP0381471B1 (en) Method and apparatus for preprocessing multiple instructions in a pipeline processor
KR100513358B1 (ko) Risc형명령세트및슈퍼스칼라마이크로프로세서
US6351804B1 (en) Control bit vector storage for a microprocessor
KR100315739B1 (ko) 다중명령세트를사용하는데이터처리장치
JP6807383B2 (ja) 転送プレフィックス命令
US5504932A (en) System for executing scalar instructions in parallel based on control bits appended by compounding decoder
US6594754B1 (en) Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
EP0730226A2 (en) Hardware support for fast software emulation of unimplemented instructions
US5749084A (en) Address generation unit with segmented addresses in a microprocessor
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
KR100317769B1 (ko) 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령
KR100322726B1 (ko) 번역 및 테스트를 위한 전문 밀리코드 명령
US6957323B2 (en) Operand file using pointers and reference counters and a method of use
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그
US5713035A (en) Linking program access register number with millicode operand access
KR20010053623A (ko) 명령들의 철회시 물리적인 레지스터들을 선택적으로자유롭게 사용하도록 구성된 프로세서
US5754810A (en) Specialized millicode instruction for certain decimal operations
EP0545927B1 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
US6944745B2 (en) Exception handling for single instructions with multiple data
EP1235139B1 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
EP0825529A2 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JPH08263289A (ja) 複数命令流パイプライン計算機
EP0110613B1 (en) Digital data processing system

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: 20041012

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee