KR100322725B1 - 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그 - Google Patents

전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그 Download PDF

Info

Publication number
KR100322725B1
KR100322725B1 KR1019990008700A KR19990008700A KR100322725B1 KR 100322725 B1 KR100322725 B1 KR 100322725B1 KR 1019990008700 A KR1019990008700 A KR 1019990008700A KR 19990008700 A KR19990008700 A KR 19990008700A KR 100322725 B1 KR100322725 B1 KR 100322725B1
Authority
KR
South Korea
Prior art keywords
millicode
flag
instruction
instructions
milli
Prior art date
Application number
KR1019990008700A
Other languages
English (en)
Other versions
KR19990082750A (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 KR19990082750A publication Critical patent/KR19990082750A/ko
Application granted granted Critical
Publication of KR100322725B1 publication Critical patent/KR100322725B1/ko

Links

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30018Bit or string 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/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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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
    • G06F9/3017Runtime instruction translation, e.g. macros

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

전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그{MILLICODE FLAGS WITH SPECIALIZED UPDATE AND BRANCH INSTRUCTION}
본 발명은 하드웨어 제어 실행 유닛에서 비교적 단순한 명령을 실행하고, 같은 하드웨어 제어 실행 유닛에서 실행되는 수직 마이크로코드 (microcode) (즉, 밀리코드(millicode)) 루틴을 갖춘 밀리-모드 설계 상태에서 비교적 복잡한 명령을 실행하는 파이프라인 컴퓨터 프로세서 (pipelined computer processor)에 관한 것이다. 보다 특정하게, 본 발명은 전문 갱신 및 분기 지시에서의 밀리코드 플래그 (millicode flags with specialized update and branch instruction) 에 관한 것이다.
근년에 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-비트 포맷에 의해 제한되어, 조건 코드가 많은 명령에 걸쳐 정보를 보유하는 것을 방지한다. 밀리코드 레지스터의 비트는 다양한 조건을 기록하도록 정의될 수 있고 분기 지점에 연결될 수 있지만, 이는 실행도에 민감한 밀리코드 루틴에서 유용성을 제한하는 파이프라인 프로세서에 문제점을 생성한다. 대안으로, 밀리코드 레지스터내의 상태 비트가 밀리코드 조건 코드 및 조건상의 분기 명령을 통해 명시적으로(explicitly) 테스트될 수 있지만, 이는 다수의 명령을 요구하여 특정한 루틴에서 실행도에 영향을 줄 수 있다. 이 구조는 또한 다양한 조건의 검출에 응답해 플래그를 조작하도록 분리된 밀리코드 명령을 요구하므로, 일부 경우에서 다시 실행도에 영향을 준다. 다양한 조건을 설정 및 테스트하는데 필요한 것을 만족시키기 위한 새로운 양식에서의 바람직한 본 실시예에 대해 '전문 갱신 및 분기 명령에서의 밀리코드 플래그 (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 forPacked 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 : 시스템 저장장소(storage)
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)내의 프로그램 상태어 (program status 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)에 응답해 밀리-모드로 들어갈 수 있다. 완료 논리부가 인터럽트를 검출할 때, 인터럽트 우선순위 논리부(interrupt priority logic)(45)는 인터럽트 서비스가 주어져야 함을 결정하고, 명령 인출 유닛에 신호를 전달하여, 디코더가 밀리-모드를 초기화하게 한다. 인터럽트 상태가 인식되면, 프로세서는 다음 인터럽트가능 지점에서 매크로-모드 실행을 중지시킨다. 인터럽트 우선순위 논리부(45)는 또한 밀리-모드 검출 논리부에 의해 사용되는 제어 입력을 발생하여, 캐시의 주소를 지정하는 진입 지점 주소를 발생한다. 이 밀리-명령들은 명령 레지스터로 전달되고, 디코더는 이들을 복호화하여 적절한 하드웨어 실행 소자에서의 실행을 스케쥴처리한다.
프로세서는 인터럽트에 대한 밀리-루틴에서 밀리-명령을 복호화하여 실행하고, 또한 완료시키도록 진행한다. 결국, 디코더는 MEND 밀리-명령을 인식하게 된다. 이는 디코더가 밀리-모드에서의 복호화를 중단하게 한다. 서비스를 요구하는 추가 인터럽트가 있는가 여부에 의존해, 디코더 하드웨어는 인터럽트 처리를 다시 실행하거나 캐시로부터의 복호화 매크로명령으로 복귀한다.
전문 갱신 및 분기 명령에서의 밀리코드 플래그
여기서 발표된 해결법은 밀리코드 레지스터에 조건 코드의 일부 특성과 상태 비트 일부를 갖는 밀리코드 플래그 (millicode flag)의 세트이다. 플래그는 전문 밀리코드 명령의 세트에 의해 명시적으로 설정되고 변경될 수 있다. 플래그는 또한 확장된 조건 코드로 동작되는 특정한 전문 밀리코드 명령에 의해 암시적으로(implicitly) 갱신되고, 전문 밀리코드 명령의 실행을 변경시킬 수 있다. '편집 기능을 위한 전문 밀리코드 명령' 및 '번역 및 테스트를 위한 전문 밀리코드 명령'명의 섹션을 참고한다. 플래그는 명령에 대한 밀리코드로의 진입에 특수하게 설정되거나 클리어 (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 (14)

  1. 비교적 간단한 명령 세트는 하드웨어 제어 실행 유닛에서 실행하고 비교적 복잡한 명령 세트는 상기 하드웨어 제어 실행 유닛에서 간단한 명령의 밀리코드 시퀀스 (millicode sequence)로 밀리-모드 (milli-mode) 설계 상태에서 실행하는 파이프라인 컴퓨터 프로세서 (pipelined computer processor)를 갖춘 컴퓨터 시스템에서, 전문 갱신 및 분기 명령(specialized update and branch instructions)으로 조건들을 설정하고 테스트하는 밀리코드 방법에 있어서,
    내부 코드 어레이에 밀리-모드 루틴을 상기 간단한 밀리코드 명령의 세트로 저장하는 단계; 및
    상기 프로세서의 명령 레지스터에 연결된 밀리-모드 검출 논리부가, 복호화되고 있는 매크로-명령 (macro-instruction)이 상기 밀리-모드 설계 동작 상태에서 해석되어야 하는 종류라는 것을 검출하면, 상기 밀리-모드 설계 상태가 밀리-모드 인식 신호로 인에이블되고, 상기 프로세서에 의한 매크로-모드 (macro-mode) 복호화가 중단되어 상기 시스템이 후속하여 프로세서 밀리-레지스터를 사용하도록 하는 단계
    를 포함하며,
    상기 내부 코드 어레이로부터 인출되어 상기 프로세서 명령 레지스터로 전달되는, 상기 내부 코드 어레이에 저장된 밀리코드의 주소를 지정하기 위해 밀리-모드 진입 지점 주소가 발생되고, 상기 프로세서의 디코더는 프로세서 밀리-모드로 진입할 때 실행을 위해 이들을 복호화하여 스케쥴 처리하며,
    상기 밀리-모드 설계 상태 밀리코드 루틴으로의 진입 이후에, 하나 이상의 밀리코드 플래그 (millicode flag)가 밀리코드 명령에 대해 특별히 설정되거나 클리어 (clear)되고,
    전문 밀리코드 명령에 대한 상기 밀리코드 플래그는 설정 플래그 (Set Flag), 재설정 플래그 (Reset Flag), 로드 플래그 (Load Flag), 및 분기 플래그 (Branch on Flag)를 포함하고, 설정 플래그 명령(Set Flag instruction)에 대해 제2 오퍼랜드 주소 D2(B2)가 저장장소(storage)를 접근하는데 사용되지 않고, 상기 주소의 하위 4개 비트 (비트 28:31)가 어느 밀리코드 플래그가 설정되어야 하는지를 선택하기 위한 마스크 (mask)로서 사용되는
    밀리코드 방법.
  2. 제1항에 있어서,
    상기 밀리코드 플래그 세트는 전문 밀리코드 명령의 세트에 의해 명시적으로(explicitly) 설정 및 변경되고,
    상기 플래그는 확장된 조건 코드로 작용하는 편집 기능을 위한 전문 밀리코드 명령에 의해 암시적으로(implicitly) 갱신되고, 번역 및 테스트에 대한 전문 밀리코드 명령의 실행을 변경시킬 수 있는 밀리코드 방법.
  3. 제2항에 있어서,
    확장된 밀리코드 조건 코드로 작용하는 편집 기능을 위한 전문 밀리코드 명령을 위한 밀리코드에 추가 하드웨어 싸이클을 할당하지 않고 상기 플래그가 진입시에 특별히 설정되거나 클리어되고,
    초기 실행시, 상기 밀리코드 플래그는 롱 이동 및 롱 비교(Move Long and Compare Long)와 로드 제어 (Load Control)를 위한 특수한 조건을 지시할 수 있는 밀리코드 방법.
  4. 제1항에 있어서,
    상기 밀리코드 플래그는 정적 분기 결정(static branch resolution)을 위한, 그리고 조건상의 분기 명령(Branch on Condition instruction)과 동일한 방식으로 동적 분기 예측에 따른 밀리코드 플래그 설정의 다양한 조합에 따라 밀리코드가 분기되도록 하는 밀리코드에 의해 사용하기 위해 정의된 조건부 분기 명령을 위한, 분기점을 위한 플래그상 분기 명령(Branch on Flag instruction)으로 사용되는 밀리코드 방법.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    플래그 설정 명령에 대해 대응하는 마스크 비트가 '1'b인 플래그는 '1'b로 설정되고, 대응하는 마스크 비트가 '0'b인 플래그는 변경되지 않는 밀리코드 방법.
  8. 제7항에 있어서,
    플래그 설정 명령에 대해, 결과 플래그는 후속하는 플래그상의 상대적 분기 (Branch Relative on Flag) 동작의 결과에 반영되고,
    밀리코드 루틴은 설정 플래그 밀리코드 명령과 상기 명령에 의해 갱신되는 밀리코드 플래그값을 테스트하는 특수한 상대적 분기 명령(Branch Relative Special instruction) 사이에 충분한 파이프라인 공간을 제공하는 밀리코드 방법.
  9. 제1항에 있어서,
    재설정 플래그 명령에 대해, 밀리코드 플래그가 재설정될 때 상기 제2 오퍼랜드 주소 D2(B2)가 저장장소를 접근하는 데 사용되지 않고, 상기 주소의 하위 4개 비트 (비트 28:31)가 어느 밀리코드 플래그가 설정되어야 하는지를 선택하기 위한 마스크로서 사용되는 밀리코드 방법.
  10. 제9항에 있어서,
    밀리코드 플래그가 재설정될 때 대응하는 마스크 비트가 '1'b인 플래그는 '0'b로 설정되고, 대응하는 마스크 비트가 '0'b인 플래그는 변경되지 않는 밀리코드 방법.
  11. 제10항에 있어서,
    결과 플래그는 후속하는 플래그상 상대적 분기 (Branch Relative on Flag) 동작의 결과에 반영되고,
    밀리코드 루틴은 상기 명령과 상기 명령에 의해 갱신되는 밀리코드 플래그값을 테스트하는 특수한 상대적 분기 명령(Branch Relative Special instruction) 사이에 충분한 파이프라인 공간이 있도록 보장하는 밀리코드 방법.
  12. 제1항에 있어서,
    로드 플래그 명령에 대해, 밀리코드 플래그가 로드될 때 상기 제2 오퍼랜드 주소 D2(B2)가 저장장소를 접근하는 데 사용되지 않고, 대신에 상기 주소의 하위 4개 비트 (비트 28:31)가 설정 플래그 (Set Flag), 재설정 플래그 (Reset Flag), 로드 플래그 (Load Flag), 및 분기 플래그 (Branch on Flag)로 기입되고,
    결과 플래그는 후속하는 플래그상 상대적 분기 (Branch Relative on Flag) 동작의 결과에 반영되고, 밀리코드 루틴은 상기 명령과 상기 명령에 의해 갱신되는 밀리코드 플래그값을 테스트하는 특수한 상대적 분기 명령(Branch Relative Special instruction) 사이에 충분한 파이프라인 공간이 있도록 보장하는 밀리코드 방법.
  13. 제1항에 있어서,
    플래그상 브랜치 명령에 대해 M1및 M3에 의해 지정된 밀리코드 플래그의 논리 함수가 논리 1인 경우, 밀리코드 명령 주소가 분기 주소에 의해 대체되고, 그렇지 않은 경우에는 갱신된 밀리코드 명령 주소로 정상적인 명령 순차가 진행되는 밀리코드 방법.
  14. 제1항에 있어서,
    설정 플래그에 의해 명시적 또는 암시적으로 결정되는 플래그 설정의 조합과 함께 밀리코드를 내부 코드로 사용함으로써, 분기점과 복합 조건 코드(complex condition codes) 양자가 결정되는 밀리코드 방법.
KR1019990008700A 1998-04-07 1999-03-15 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그 KR100322725B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/056,485 1998-04-07
US9/056,485 1998-04-07
US09/056,485 US6055624A (en) 1998-04-07 1998-04-07 Millicode flags with specialized update and branch instructions

Publications (2)

Publication Number Publication Date
KR19990082750A KR19990082750A (ko) 1999-11-25
KR100322725B1 true KR100322725B1 (ko) 2002-02-07

Family

ID=22004714

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990008700A KR100322725B1 (ko) 1998-04-07 1999-03-15 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그

Country Status (2)

Country Link
US (1) US6055624A (ko)
KR (1) KR100322725B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001188691A (ja) * 1999-12-28 2001-07-10 Toshiba Corp 検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体
TWI265093B (en) * 2005-12-29 2006-11-01 Ind Tech Res Inst Integrated circuit of inkjet print system and control circuit thereof
CN100530164C (zh) * 2007-12-29 2009-08-19 中国科学院计算技术研究所 一种risc处理器及其寄存器标志位处理方法
US7913068B2 (en) * 2008-02-21 2011-03-22 International Business Machines Corporation System and method for providing asynchronous dynamic millicode entry prediction
US9086886B2 (en) 2010-06-23 2015-07-21 International Business Machines Corporation Method and apparatus to limit millicode routine end branch prediction
US9223714B2 (en) 2013-03-15 2015-12-29 Intel Corporation Instruction boundary prediction for variable length instruction set
CN117008977B (zh) * 2023-08-08 2024-03-19 上海合芯数字科技有限公司 一种可变执行周期的指令执行方法、系统和计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR880011657A (ko) * 1987-03-11 1988-10-29 아오이 죠이치 마이크로프로세서
KR890000973A (ko) * 1987-06-19 1989-03-17 야마모도 다꾸마 마이크로코드 판독 제어 시스템
JPH06290043A (ja) * 1992-06-15 1994-10-18 Matsushita Electric Ind Co Ltd データ処理用プロセッサ
JPH07129399A (ja) * 1993-10-28 1995-05-19 Motohiro Kurisu 命令属性レジスターを使用して多機能命令を実行する マイクロコンピュータ
JPH09198247A (ja) * 1996-01-17 1997-07-31 Yamaha Corp プロセッサおよび該プロセッサの割込制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4541048A (en) * 1978-10-06 1985-09-10 Hughes Aircraft Company Modular programmable signal processor
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
CA2060555A1 (en) * 1991-04-24 1992-10-25 Robert J. Bullions, Iii System and method for draining an instruction pipeline
US5226164A (en) * 1991-04-24 1993-07-06 International Business Machines Corporation Millicode register management and pipeline reset
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
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
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
US5754810A (en) * 1996-03-12 1998-05-19 International Business Machines Corporation Specialized millicode instruction for certain decimal operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR880011657A (ko) * 1987-03-11 1988-10-29 아오이 죠이치 마이크로프로세서
KR890000973A (ko) * 1987-06-19 1989-03-17 야마모도 다꾸마 마이크로코드 판독 제어 시스템
JPH06290043A (ja) * 1992-06-15 1994-10-18 Matsushita Electric Ind Co Ltd データ処理用プロセッサ
JPH07129399A (ja) * 1993-10-28 1995-05-19 Motohiro Kurisu 命令属性レジスターを使用して多機能命令を実行する マイクロコンピュータ
JPH09198247A (ja) * 1996-01-17 1997-07-31 Yamaha Corp プロセッサおよび該プロセッサの割込制御方法

Also Published As

Publication number Publication date
KR19990082750A (ko) 1999-11-25
US6055624A (en) 2000-04-25

Similar Documents

Publication Publication Date Title
US5694587A (en) Specialized millicode instructions for test PSW validity, load with access test, and character translation assist
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
KR100513358B1 (ko) Risc형명령세트및슈퍼스칼라마이크로프로세서
EP0381471B1 (en) Method and apparatus for preprocessing multiple instructions in a pipeline processor
EP0071028B1 (en) Instructionshandling unit in a data processing system with instruction substitution and method of operation
US5517651A (en) Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
US6351804B1 (en) Control bit vector storage for a microprocessor
US6334176B1 (en) Method and apparatus for generating an alignment control vector
US6029240A (en) Method for processing instructions for parallel execution including storing instruction sequences along with compounding information in cache
US5504932A (en) System for executing scalar instructions in parallel based on control bits appended by compounding decoder
RU2137184C1 (ru) Отображение с помощью мультинаборов команд
EP0380859B1 (en) Method of preprocessing multiple instructions
US6594754B1 (en) Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
EP0381469A2 (en) Method and data processing unit for pipeline processing of register and register modifying specifiers within the same instruction
EP0730226A2 (en) Hardware support for fast software emulation of unimplemented instructions
JP2006079652A (ja) 多重命令セットによるデータ処理
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
KR100317769B1 (ko) 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령
KR100322726B1 (ko) 번역 및 테스트를 위한 전문 밀리코드 명령
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그
KR20010053623A (ko) 명령들의 철회시 물리적인 레지스터들을 선택적으로자유롭게 사용하도록 구성된 프로세서
US5713035A (en) Linking program access register number with millicode operand access
EP0545927B1 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
EP1235139B1 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130102

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20131227

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20141215

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20151228

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20161228

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20171227

Year of fee payment: 17

LAPS Lapse due to unpaid annual fee