KR900007565B1 - 서브 루틴 및 인터럽트용 프로그램 카운터 스택킹 방법 및 장치 - Google Patents

서브 루틴 및 인터럽트용 프로그램 카운터 스택킹 방법 및 장치 Download PDF

Info

Publication number
KR900007565B1
KR900007565B1 KR1019830005727A KR830005727A KR900007565B1 KR 900007565 B1 KR900007565 B1 KR 900007565B1 KR 1019830005727 A KR1019830005727 A KR 1019830005727A KR 830005727 A KR830005727 A KR 830005727A KR 900007565 B1 KR900007565 B1 KR 900007565B1
Authority
KR
South Korea
Prior art keywords
address
register
return
interrupt
microinstruction
Prior art date
Application number
KR1019830005727A
Other languages
English (en)
Other versions
KR840007187A (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 KR840007187A publication Critical patent/KR840007187A/ko
Application granted granted Critical
Publication of KR900007565B1 publication Critical patent/KR900007565B1/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
    • 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
    • G06F9/30054Unconditional branch 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

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)

Abstract

내용 없음.

Description

서브 루틴 및 인터럽트용 프로그램 카운터 스택킹 방법 및 장치
제1도는 본 발명을 활용한 데이타 처리 시스템의 일반적인 블록 다이어그램.
제2도는 본 발명의 원리를 수행하는 제1도의 마이크로프로세서의 제어부에 대한 블록 다이어그램.
제3도는 제1도의 마이크로프로세서에 대한 퍼엄 웨어 마이크로명령 워어드 필드를 도시한 도면.
제4도는 본 발명에 따른 두개의 서브루틴 및 두개의 하드웨어 인터럽트 서비스루틴을 통해 주 루틴에서 마이크로 프로그램의 마이크로 명령의 실행에 대한 시작이 연속적인 순서로 되는 순서도.
제5도는 본 발명에 따른 제2도의 제어부를 활용한 회로의 논리블록 다이어그램.
* 도면의 주요부분에 대한 부호의 설명
20 : 중앙처리장치 22 : 모니터 논리부
30 : 마이크로프로세서 28 : 내부 버스
42 : 입출력 제어기 44 : 주변 장치
50 : 테스트 플립플롭 52 : F-카운터
57 : 주 브랜치 논리부 63 : ROS 어드레스 레지스터
66 : ROS 어드레스 히스토리 레지스터 70 : 리턴 어드레스 스택
71 : 상부 레지스터 102 : 제1레벨 서브 루틴
106 : 제1하드웨어 인터럽트 서비스 루틴
본 발명은 데이타 처리 시스템에 관한 것으로, 특히 내포 서브 루틴(nested subroutine) 및 인터럽트를 실행할 수 있게 하는 데이타 처리 시스템에 관한 것이다.
데이타 처리 시스템에서 수행되는 동작과, 그 동작의 발생순서는 메모리에 기억된 프로그램에 기술된다. 프로그래머가 수행될 일련의 동작들을 각각 완전하게 상술하여야 하는 문제를 경감시키기 위해서 또한 데이타 처리기의 처리 능력을 더 잘 활용하기 위해, 어느 한 프로그램에서 여러번 요구되거나 다른 프로그램들에서 사용될 수 있는 공통 기능이 일반적으로 제공된다. 이러한 각각의 공통 기능은 일련의 명령을 포함하는 서브 루틴으로서 규정될 수 있다.
이러한 서브 루틴은 예를들면, 수학적 근사값을 이용한 삼각함수에 대해서도 활용될 수 있다. 프로그래머는 일련의 동작을 여러번 재기록 하지 말고 단지 동작을 수행하는 어떤 명령 세트를 기록하여 그것을 여러번 호출하여야 한다. 따라서, 루틴이 코사인과 같은 삼각함수치를 요구하는 동안 디지탈 데이타 프로세서내의 코사인 서브 루틴의 브랜치 동작이 실행된다.
한 서브 루틴은 그 동작을 완료하기 위해 또다른 서브 루틴을 자주 호출한다. 이러한 상항이 발생하면 리턴 어드레스 즉, 브랜칭 서브 루틴으로부터의 다음 어드레스가 반드시 데이타 처리기에 의해 기억되고 재호출되어야 하기 때문에 복잡성이 증가한다. 따라서 전체 프로그램의 능률은 데이타 처리기내의 단지 한 장소에서 특별한 기능을 위해 제공됨으로써 증가될 수 있지만, 시간 고려와 하드웨어 및/또는 스페이스 제한에 관해 여러 서브 루틴으로부터의 호출 및 리턴에 있어서는 상당히 비능률적일 때도 있다.
종래 기술에 있어서는 서브 루틴으로 그리고 서브 루틴으로부터 전송하기 위한 다수의 해결 방법(solution)이 존재하는데, 그중의 한 방법은 서브 루틴의 제1로케이션으로 다음 명령로케이션을 전송하는 것을 포함한다. 이러한 경우 최종 서브 루틴 명령은 서브 루틴의 제1로케이션을 액세스한다. 이러한 제1로케이션은 다음 명령(즉, 서브 루틴으로 브랜치된 명령후의 명령)에 리턴 어드레스를 포함함으로써 데이타 프로세서가 프로그램을 통해 계속하여 시퀀싱을 인에이블링한다.
이러한 방법은 몇개의 공통 전송의 처리가 상황을 오히려 복잡한 결점을 갖는다. 예컨대, 제1서브 루틴에서 이 제1서브 루틴을 활용한 제2서브 루틴으로 동작(opertation)을 전송하는 것은 이점이 될 수 있다.
다른 상황에 있어서도 만일 제1루틴이 이 제1루틴 자체를 재호출 한다면 이점이 될 수 있다. 이러한 전송은 어려운 문제로서, 명령을 증가시키지 않거나 혹은 수정하지 않고서 상술한 방식의 데이타 처리 시스템에 의해 이루어진다는 것은 거의 불가능하다. 제1서브 루틴이 처음으로 호출될 때, 주 루틴내의 다음 마이크로 명령의 어드레스는 제1서브 루틴 로케이션으로 전달된다. 제1서브 루틴이 중간 루틴에 의해 재호출될때, 중간 루틴내의 다음 명령의 어드레스는 제1서브 루틴내의 동일 로케이션에 전달됨으로써 본래의 내용을 파괴한다. 그 결과 제1서브 루틴이 중간 루틴으로 복귀할 수 있지만, 주 루틴으로 복귀할 수는 없다.
제1서브 루틴 혹은 이 제1서브 루틴을 재호출하는 제2서브 루틴이 호출 가능한 데이타 처리시스템에 있어서, 어떤 명령이 리턴 어드레스를 지정된(specified) 기억부 로케이션에 이동시키기 위해 제공될 것이다. 다음에, 최종 서브 루틴 명령은 지정된 기억부 로케이션의 어드레스를 내포하도록 변화된다.
이러한 시스템은 하나의 서브 루틴이 또다른 서브 루틴을 호출하도록 즉, 후자의 서브 루틴이 내포되어 부분적으로 종료된 서브 루틴으로 하여금 다른 목적을 위해 뒤이어 사용될 수 있도록 하지만, 어떤 예비 메모리 로케이션 및 다수의 명령이 각각의 내포(hesting)레벨을 위해 필요하다.
각각의 내포 서브 루틴용의 이러한 메모리 로케이션 수의 증가는 제어 회로군을 복잡하게 만든다. 아울러, 프로그래밍 복잡성은 최종 서브 루틴 명령이 각각의 서브 루틴에 대해 적합한 메모리 로케이션을 어드레스하도록 수정되어야 하기 때문에 더욱 증가된다. 그러므로, 이러한 접근 방법은 내포 레벨들의 수가 증가하기 때문에 더욱 어렵게 된다.
다른 타입의 데이타 처리 시스템에서는 이미 실행된 서브 루틴 혹은 루틴의 리턴 어드레스를 기억하기 위해 메모리내의 로케이션을 활용하는데, 상기 서브 루틴의 최종 명령은 지정된 메모리 로케이션으로 브랜치 한다. 그러나 이러한 시스템을 개발하기 위해서는 두개의 레지스터, 즉 그 하나는 빈 메모리 로케이션으로의 포인터이고, 다른 하나는 레지스터의 현재값 및 메모리 어드레스를 위해 제공된 레지스터인 2개 레지스터가 필요하다. 이러한 타입의 데이타 처리 시스템은 전술한 몇가지 문제점을 해결할 수 있는 반면에 그 시스템은 보다 많은 병행 실행 시간이 요구되는 서브 루틴들의 각각의 새로운 레벨을 지시하기 위한 부가적인 명령을 발생시킨다.
이러한 문제점들을 해결하기 위한 보다 최근의 방법이 "제어기억 장치와, 내포된 서브 루틴용 푸쉬 다운스택을 활용한 데이타 처리 시스템"이란 명칭을 갖는 미합중국 특허 제3,909,797호에 기재되어 있다. 여기에는 중앙처리 서브 시스템의 시퀀싱을 인에이블 하는 마이크로 프로그램된 제어기억 장치를 갖는 데이타 처리 시스템이 기재되어 있다. 그리고 여기서는 제어기억 장치를 제어하는 퍼엄웨어내에 프로그램된 서브 루틴들의 내포에 대해 개시하였으나, 본 발명의 원리는 소프트웨어 프로그램이나 또는 퍼엄웨어 마이크로 프로그램에도 동일하게 응용할 수 있다.
예를들면, 데이타 처리 시스템을 인터럽트 함으로써 입/출력(I/O)장치는 상기 입/출력 장치가 데이타 처리 시스템에 의한 어텐션(attention)이나 서비스를 필요로 한다는 신호를 전송할 수 있다. 이러한 인터럽트들은 메모리 에러와 같은 시스템의 고장이나 I/O장치 동작의 종료를 알리는데 사용될 수 있다.
서브 루틴의 경우와 마찬가지로 인터럽트들은 프로그램 흐름을 바꾼다. 인터럽트들의 경우에 있어서, 프로그램 흐름은 이 인터럽트를 발생시킨 사상의 유형을 취급하게끔 프로그램된 인터럽트 서비스 루틴으로 전환된다. 인터럽트 서비스 루틴의 실행을 완료하면, 이 인터럽트 서비스 루틴은 데이타 처리기가 인터럽트시에 기억된 리턴 어드레스에서 프로그램 실행을 재개하도록 한다.
리턴 어드레스를 기억하기 위한 한 방법은 인터럽트된 프로그램의 리턴 어드레스를 기억하기 위해 각 인터럽트의 유형에 따라 메모리내에 고정된 로케이션을 할당하는 것이다. 이러한 방법을 사용하여 인터럽트 서비스 루틴이 완료되면, 그것은 특정 인터럽트와 관련된 고정 메모리 로케이션에서 데이타 처리기의 프로그램 카운터를 다시 로우드 할 수 있으며 그리고 인터럽트 발생 바로 전에 실행하고 있었던 프로그램의 실행을 재개할 수 있다.
이러한 방법은, 인터럽트 프로그램에 리턴하기 위해 서비스 루틴이 각 인터럽트마다 다른 고정 메모리 로케이션에서 인터럽트 리턴 어드레스를 반드시 회수하여야 하기 때문에, 인터럽트 서비스 루틴들이 공통 프로그램 명령들을 쉽게 공유할 수 없다는 결점이 있다.
인터럽트 리턴 어드레스를 처리하기 위한 다른 한 방법은 "중앙에 존재하지 않는 메모리 어드레스 검출부를 갖는 데이타 처리 시스템"이란 명칭의 미합중국 특허 제4,340,933호에 기재되어 있다. 이 특허에서는 퍼엄웨어 마이크로 프로그램의 실행을 인터럽트 하는 하드웨어 인터럽트가 취급되었는데 이 마이크로 프로그램 리턴 어드레스는 특정 레지스터(하드웨어 인터럽트 리턴 어드레스 레지스터)에 기억되어 있으며 또한 하드웨어 인터럽트는 마이크로 프로그램 하드웨어 인터럽트 서브 루틴의 종료까지 방지된다.
뒤따른 인터럽트들을 금지하는 것은 하드웨어 인터럽트 리턴 어드레스 레지스터내에 기억된 제1마이크로 프로그램 리턴 어드레스가 제2하드웨어 인터럽트의 발생에 의해 그곳에 기억될 제2리턴 어드레스에 의해 파손되지 않도록 보장할 것이다.
이러한 방법은, 모든 인터럽트 서비스 루틴들이 하나의 인터럽트 리턴 어드레스 레지스터로부터 프로그램 카운터를 다시 로우딩 함으로써 인터럽트된 프로그램으로 실행을 다시 복귀하기 때문에 공통 프로그램을 인터럽트 서비스 루틴들이 공유할 수 있지만, 인터럽트 및 서브 루틴들을 공통 프로그램 명령을 쉽게 공유할 수 없다는 결점을 갖는다.
따라서, 서브 루틴의 내포와 인터럽트들의 서비스가 공통 및 효율적인 한 방법으로 가능하게 하는 리턴 어드레스 기억 방법이 필요하게 된다. 따라서, 본 발명의 주 목적은 서브 루틴의 전송 및 인터럽트들이 신속해진 개량된 데이타 처리 시스템을 제공하는 것이다.
본 발명의 다른 한 목적은 서브 루틴으로 브랜칭할 때, 즉 비동기 인터럽트들에 반응할 때 리턴 어드레스들을 기억하고, 브랜치된 서브 루틴 또는 인터럽트 반응루틴을 자동으로 인에이블링 하여 종료시에 리턴 어드레스에서 프로그램 실행을 재개할 수 있는 새롭게 개선된 시스템을 제공하는 것이다.
본 발명의 또다른 목적은 데이타 처리 및 컴퓨터 시스템에서 사용하기 위해 내포 서브 루틴 및 인터럽트를 사용하기 위한 효율적이며, 신뢰성이 높고 전체 시간을 줄이는 개량된 방법을 제공하는 것이다.
본 발명은 첨부된 특허청구범위내에 잘 나타나 있다. 본 발명의 장점 및 전술한 목적 및 다른 목적들이 첨부 도면을 참조한 이하의 설명으로부터 더욱 명백해질 것이다.
본 발명의 일실시예에 따라서 전술한 목적은 데이타 처리 시스템의 마이크로프로세서내에 이 마이크로프로세서의 시퀀싱을 인에이블하는 제어부를 제공함으로써 상기 시스템의 한 동작모드에 따라서 얻어질 수 있다. 제어부는 기억되고 있는 현재 동작 루틴의 리턴 어드레스를 인에이블링 하기 위한 마이크로 지령을 거쳐 서브 루틴에 브랜칭 마이크로 명령을 제공한다.
마이크로 지령은 또한 이미 기억된 리턴 어드레스들이 한 레벨 푸쉬 다운 되게끔 푸쉬 다운 스택을 인에이블한다. 또한 이 제어부는 최고차 순위의 금지안된 펜딩 인터럽트에 해당하는 백터 인터럽트 어드레스를 발생시키기 위해 제공된다. 이러한 백터 인터럽트 어드레스는 현재 마이크로 명령에 의해 발생되는 어드레스 대신에 다음 어드레스 레지스터로 제공되며, 현재 마이크로 명령에 의해 발생되는 어드레스는 인터럽트가 발생하면 즉시 한 레벨 다운시키는 푸쉬 다운 스택에서 푸쉬된다.
서브 루틴 혹은 인터럽트 서비스 루틴이 완료되자마자 제어부는 이 제어부내의 다음 어드레스 레지스터에 제공되도록 푸쉬 다운 스택에 포함된 리턴 어드레스를 선택하게끔 멀티플렉서를 인에이블링 하기 위한 어드레스 필드를 제공한다.
이러한 푸쉬 다운 스택의 팝핑(popping)은 또한 미리 기억된 리턴 어드레스를 한 레벨 높인다. 또한, 서브 루틴 혹은 인터럽트 서비스 루틴으로부터 리턴될 때 인터럽트가 발생한다면, 푸쉬 다운 스택이 팝되거나 푸쉬되지도 않고 백터 어드레스가 실행될 다음 마이크로 명령의 어드레스로서 공급되도록 하는 수단도 제공된다. 본 발명의 양호한 실시예에 있어서 푸쉬 다운 스택은 시프트 레지스터를 사용하여 실시된다.
이하 본 발명의 방법과 본 발명의 장치의 구성 방법 및 동작등을 첨부한 도면들을 참조하면서 설명한다.
본 발명의 배경에 대한 상기 설명에서는 주로 소프트웨어 루틴들의 내포 및 인터럽트들의 견지에서 설명하였지만, 본 발명의 원리들은 마찬가지로 퍼엄웨어 루틴 및 인터럽트에 응용될 수 있다.
본 발명의 아래의 설명은 본 발명의 양호한 실시예에 대한 것으로서 여기에서 본 발명은 내포 퍼엄웨어 서브 루틴 및 인터럽트에 사용하기 위한 마이크로프로세서내에 사용되었다.
도면과 관련하여 본 발명의 구조 및 동작을 설명하기 전에 먼저 설명의 편의상 도면에 예시한 실시예는 4개의 서브 루틴, 혹은 인터럽트 레벨을 내포할 수 있도록 도시되어 있다는 것을 주목하여야 한다. 그러나 물론 실제로는 서브 루틴 혹은 인터럽트 레벨들의 수는 사용되는 하드웨어에서 4개 이상으로 할 수도 있다. 다른 방법으로는 하드웨어 확장을 하기 보다는 오히려 오우버 플로우 처리가 사용될 수도 있다.
후자의 상태에 있어서, 4이상의 서브 루틴 또는 인터럽트 레벨들을 내포하는 것이 바람직할 경우에는 마이크로프로세서는 4이상의 서브 루틴들 또는 인터럽트들을 처리하기 위한 다른 수행 메카니즘으로 되돌아갈 것이다.
도면에 설명된 본 실시예는 주어진 회로 배열을 가지고 실시될 수 있다. 그러나, 다른 논리 배열도 다양한 데이타 프로세서에 본 발명을 적용하여 본 발명을 실시하는데 사용될 수 있음을 이해하여야 한다. 따라서, 본 발명은 도면에 도시한 특정 실시예로 국한되는 것은 아니다.
제1도는 본 발명의 내포 서브 루틴 및 인터럽트 수행이 사용될 수 있는 전체 시스템을 도시한다. 더 구체적으로 말하면, 제1도는 주 메모리 서브 시스템(10), 중앙처리장치(20) 및 입/출력 장치(40)를 도시한다. 주 메모리 서브 시스템(10)은 3개의 금속 산화물 반도체 모듈(12, 14, 16)로 구성된다.
이러한 3개의 모듈은 주 버스(26)를 거쳐 중앙처리버스(20) 및 입/출력 버스(40)에 접속된다. 주 버스(26)는 모든 메모리 모듈 및 입/출력 장치의 제어 및 액세스하는 능력이 있다.
중앙처리장치(20)는 고정 및 가변 길이 필드상에서 수행하는 워어드 중심(word oriented) 명령을 실행한다. 중앙처리기내 정보의 기본 단위는 두개의 8비트 바이트로 구성되는 16비트 워어드이다. 이러한 정보 워어드는 명령 혹은 고정 또는 부동점 오퍼랜드를 위해 하나, 둘 또는 네개의 그룹으로 사용된다. 또한, 바이트는 가변 길이 필드내에서 십진수 혹은 영문자 데이타로서 사용된다.
CPU(20)는 마이크로프로세서(30), 모니터 논리(22) 및 판독 전용 기억부(ROS) 24)로 구성되어 있다. 마이크로프로세서(30)는 양호한 실시예에서 ROS(24)에 포함되는 48비트 외부 퍼엄웨어 마이크로 명령 워어드에 의해 구동되는 연산, 논리 및 제어 동작이 가능한 NMOS 16비트 칩이다. 마이크로프로세서(30)는 CPU(20)가 16비트 소프트웨어 명령 목록을 실행할 수 있도록 한다.
마이크로프로세서(30)는 통합 시스템 설계를 용이하게 하도록 입/출력 장치 및 메모리 동작을 직접 제어한다. 마이크로스로세서(30)는 48비트 마이크로 명령 워어드에 대해 동시에 발생하는 12개의 마이크로 동작까지 허용하는 실제 수평(true horizontal) 마이크로 프로그램을 제공하는 48비트 외부 퍼엄웨어 마이크로 명령워어드를 사용함으로써 더 큰 제어 및 통합이 가능하도록 설계된다.
또한, 마이크로프로세서(30)는 퍼엄웨어 제어로 처리되는 5개의 외부 소프트웨어 인터럽트를 허용할 수 있을 뿐 아니라 퍼엄웨어 마이크로 프로그램 루틴으로의 백터를 발생하는 8개의 외부 하드웨어 인터럽트를 허용할 수 있도록 설계된다. 아울러 마이크로프로세서(30)는, 퍼엄웨어내에 수행될 정밀한 브랜칭 동작을 허용하는 마이크로프로세서 제어부(36)내의 논리에 의한 주 브랜치 동작 및 정밀한 테스트 브랜치에 의해 감지되고 제어되는 모니터 논리(22)에서 시작된 10개의 외부 모니터 비트를 위해 제공된다.
마이크로프로세서(30)는 제1도에 도시된 바와 같이 3개의 주 내부 하드웨어 논리부로 구성되어 있다. 5개의 주 논리부는 연산 논리 장치(ALU)를 포함한 데이타 조작부(32), 메모리 관리 장치(MMU) (34), 제어부(36), 프로세서 버스(37) 및 내부 버스(38)를 포함한다.
프로세서 버스(37)는 20개의 어드레스/데이타 라인, 한개의 메모리 어드레스 침입(Violation)라인 및 3개의 제어 라인으로 구성되어 있다. 프로세서 버스(37)는 주 버스(26)에 접속되어 주 메모리(10) 및 입/출력 장치(40)에 어드레스 지정하여 주 메모리(10) 및 입/출력 장치(40)에 데이타를 수신 및 전송하기 위해 사용된다.
내부 버스(38)는 마이크로프로세서 칩의 다른 4개의 부 사이의 정보 통신용 주 통로이다. 내뷰 버스(38)는 20비트 폭을 갖는다. 여기에는 48비트 마이크로 명령 워어드내의 11마이크로 명령 코드(OP)의 제어로 내부 버스(38)에 대한 12개의 정보 소오스들이 있다. ALU는 11개의 규정된 마이크로 명령 코드들중 어느 하나도 사용되지 않은 경우에 내부 버스(38)에 대한 디폴트(default) 소오스이다.
데이타 조작부(32)는 데이타에 대해 연산 및 논리 동작을 수행하며 메모리 어드레스를 발생한다. 데이타 조작부(32)는 인디케이터 레지스터, 여러개의 디스크리트(discrreet) 레지스터, 레지스터 파일, 연산 논리 장치(ALU) 및 시프팅 기구로 구성된다.
이러한 디스크리트 레지스터들중 하나는 CPU에 대한 20비트 메모리 어드레스 레지스터로서 사용된다. 이러한 프로그램 카운터는 중앙처리장치(20)에 의해 실행되는 소프트웨어 명령의 20비트 메모리 어드레스를 포함한다. 레지스터 파일들은 CPU(20)에 의해 실행되는 소프트웨어 프로그램과 관련된 모든 다양한 다른 레지스터, 7개의 소프트웨어 어드레스 지정 가능 베이스 레지스터, 7개의 16비트 소프트웨어 어드레스 지정 가능 데이타 어드레스 레지스터를 포함한다.
또한 레지스터 파일은 퍼엄웨어 동작동안 정보를 일시 기억하기 위한 ROS(24)로부터의 퍼엄웨어 프로그램에 의해 사용되는 여러가지의 작업 레지스터를 포함한다. 시프팅 기구는 16비트 또는 32비트 오퍼랜드에 대해 다수의 시프트 동작(에컨대 개방/폐쇄, 연산/논리, 좌측/우측)을 수행하기 위해 사용된다.
마이크로프로세서(30)의 제어부(36)는 제어에 대한 입력 래치들, 테스트 가능한 레지스터 및 다음 어드레스 발생부의 3개부로 논리적으로 분할된다. 제어부(36)는 제2도와 관련하여 이하에서 상술한다.
마이크로프로세서(30)의 MMU(34)는 주로 다음과 같이 구성된다. 즉, 하나의 레지스터 파일, 베이스 재배치용의 12비트 어드레스, 메모리 세그멘트의 크기를 검사하기 위한 9비트 비교기, 주어진 세그먼트에 대해 액세스 기록을 평가하기 위한 몇개의 2비트링 비교기, 잠재적인 메모리 칩입을 표시하기 위한 기억 플립플롭들로 구성된다. CPU가 메모리 어드레스 사이클을 발생하는 동안, MMU(34)는 세그멘트 번호와, 블록 번호와, 내부 버스(38)로 제공된 오프셋 값을 포함한 소프트웨어 논리 어드레스를 물리적 어드레스로 , 즉 주 버스(26)를 경유해 주 메모리(10)로 전송되도록 프로세서 버스(37)상에 위치된 논리 어드레스로 변환된다.
지금까지의 설명으로부터 알수 있듯이 CPU(20)는 그 명령이 주 메모리(10)로부터 인출되어 데이타에 대해 또한 주 메모리에 기억된 데이타에 대해 산술 및 논리 연산을 실행하도록 하는 소프트웨어 프로그램을 실행한다. CPU(20)에 의해 실행되는 소프트웨어 프로그램은 소프트웨어 비저블(visible)한 일반 및 베이스 어드레스 레지스터들을 조작할 수 있으며, 현재의 소프트웨어 명령은 프로그램 카운터에 의해서 포인트된다.
이러한 일반적인 레지스터, 베이스 어드레스 레지스터 및 프로그램 카운터는 CPU(20)에 의해 실행되는 소프트웨어가 볼 수 있는 것으로서, 마이크로프로세서(30)의 데이타 조작부(32)내에 물리적으로 포함되어 있다.
제1도의 CPU(20)에 대한 상세한 동작은 ROS(24)에 기억된 퍼엄웨어 마이크로 명령의 제어하에 마이크로프로세서(30)에 의해 제어된다. ROS(24)내에서 각 로케이션은 하나의 마이크로프로세서 머시인 사이클을 제어하는 것으로 해석될 수 있다. ROS(24)의 각 로케이션이 판독될 때 그 내용은 마이크로프로세서(30)내의 특정 동작을 발생하도록 제어부(36)에 의해 판독된다. ROS로케이션을 집단화 함으로써, 퍼엄웨어 마이크로 명령 시퀀스들이 CPU(20)와 관련된 특정 동작 혹은 소프트웨어 명령을 수행할 수 있도록 얻어진다.
각 소프트웨어 명령이 초기화되면 소프트웨어 명령의 연산 코드부내의 어떤 비트들이 ROS(24)내에 포함된 퍼엄웨어 마이크로 명령 루틴의 초기 어드레스를 결정하기 위해 사용된다. 마이크로프로세서(30)에 의해 행해진 소프트웨어 명령 해독으로 세트 또는 리세트되는 특정 플립플릅들을 테스팅함으로써 마이크로프로세서가 필요한 경우 ROS(24)내의 다수의 특정 퍼엄웨어로 브랜치 할 수 있게 한다.
입/출력 장치(40)는 주 버스(26)에 접속되어 있다. 입/출력 제어기(42)는 주 버스(26)를 거쳐 주변 장치(44)로부터 주 메모리(10)까지의 데이타 경로를 완성하는 입/출력 장치(40)의 일부이다. I/O제어기(42)는 주변 명령이 개시되고 아울러 데이타 전송을 야기하게끔 제어하는 경로를 제공한다.
제2도는 제1도의 제어부(36)를 더욱 상세하게 도시한 것이다. 제어부(36)는 부가 논리부 및 회로군을 포함하는데 본 발명의 목적을 위해 이 논리부는 제2도에 도시한 것처럼 제한된다. 제2도는 내부 버스(38), 모니터 논리(22), 및 판독 전용 기억부(ROS) (24)를 예시한다.
제2도에서 블록의 우측 코너 상부의 숫자는 블록으로 표시된 레지스터내에 포함된 다수의 정보 비트수를 나타낸다. ROS(24)는 ROM 혹은 RAM 혹은 퍼엄웨어 마이크로 명령을 홀딩할 수 있는 어떤 다른 형태의 메모리 장치일 수도 있다. ROS(24)는 또한 중앙 처리 장치의 동작을 제어하도록 특히 CPU(20)의 소프트웨어 명령을 실행하도록 마이크로프로세서에 의해 사용되는 퍼엄웨어 마이크로 명령(혹은 제어 워어드)을 포함한다. 각각의 마이크로프로세서 머시인 사이클동안 제어 워어드는 ROS(24)로부터 인출된다.
ROS(24)는 판독 전용 기억부(24)로부터 인출되는 마이크로 명령 워어드를 수신하는 ROS데이타 레지스터(65)에 결합된다. 각각의 마이크로 명령은 어드레스부 및 지령부를 포함한다. 마이크로 명령 워어드내의 어드레스부는, 마이크로프로세서(30)에 의해 실행되기 위해 다음 마이크로 명령인 판독 전용 기억부(24)에서 판독된 다음 로케이션의 어드레스를 식별한다. 마이크로 명령의 지령부는 현재 마이크로 명령의 실행동안 마이크로프로세서에 의해 수행될 동작을 식별한다.
마이크로 명령 워어드의 어드레스부는 소정수의 비트들내에 포함될 수 있는데, 예를들면 양호한 실시예에 있어서 0 내지 12까지의 마이크로 명령 워어드(제3도 참조) 비트내에 포함된다. 마이크로 명령의 지령부도 또한 소정수의 비트내에 포함될 수 있는데, 예를들면 양호한 실시에에 있어서 그것은 13 내지 47까지(제3도 참조)의 비트내에 포함된다. 지령부는 또한 마이크로 명령의 부지령을 구성하는 다수의 필드로 나눠질 수도 있다.
제3도에 관해 더욱 상세한 마이크로 명령 워어드를 설명하기 전에 제2도의 다른 요소가 설명될 것이다. 모니터 논리(22)는 CPU(20)에 대한 상태 정보를 제공하는 것으로 그 상태가 퍼엄웨어에 의해 검사되도록 테스트 플립플롭(50)내에 로우드된다. 모니터 논리(22)로부터 동적 정보 상태의 10비트를 홀딩함과 더불어 테스트 플립플롭(50)은 여러가지 CPU 옵숀(option)을 샘플링하는 5비트를 홀드한다.
CPU 옵숀 비트는 성질상 정적인 것으로서 생각되어야 하는 것으로 특정 하드웨어 옵숀이 데이타 처리 시스템내에 제공되었는지를 표시한다. 아울러, 테스트 플립플롭(50)은 퍼엄웨어의 제어하에 전송되는 비트를 가지거나 세트 또는 리세트되도록 하는 4개의 제어 플립플롭을 포함한다. 이러한 4개의 제어 플립플롭은 퍼엄웨어에 의해 테스트 가능하다. 또한 플립플롭(50)에는 10개의 임시 플립플롭들이 있는데, 이들 모두는 ALU의 비트(16)로부터 캐리나 오버플로우 또는 ALU의 비트(20)로 부터 캐리나 오버플로우가 있는지, 또는 내부 버스(38)상의 특정비트들이 0과 같은지의 여부등에 관한 동적 정보를 각 퍼엄웨어 사이클중에 싣게 된다. 이러한 10개의 임시 플립플롭도 역시 퍼엄웨어에 의해 테스트 가능하다.
F-레지스터(51)는 내부 버스(38)로부터 로우드 되는 16비트 명령 레지스터이다. F-레지스터의 모든 비트는 퍼엄웨어에 의해 테스트 가능하다. F-레지스터(51)의 하위 4비트는 또한 5비트 계수 F-카운터(52)의 하위 4비트를 구성한다. F-카운터(52)는 내부 버스(38)로부터 로우드 될 수 있는 5비트 카운터이며 증분 혹은 감소될 수 있다.
F-카운터(52)의 4개의 하위 비트는 또한 16비트 마스크가 퍼엄 웨어 제어하에 내부 버스(38)상에 배치되게끔 해독된다.
소프트웨어 인터럽트를 일으킬 수 있는 5가지의 가능한 조건이 있는데, 이 조건들은 소프트웨어 인터럽트 레지스터(53)에서 래치된다. 소프트웨어 인터럽트 프리넷(prinet) (54)은 이러한 조건들을 우선순위 처리하여 주 브랜치 논리부(57)로 입력시키기 위한 벡터 어드레스를 발생한다.
제어부(36)의 다음 어드레스 발생단(55)은 판독 전용 기억부(ROS) (24)를 순차 동작시키는데 필요한 논리부를 갖추고 있다. 테스트 브랜치 논리부(56)는 ROS 어드레스 레지스터(63)용의 2방향 브랜치 어드레스를 발생할 수 있는 64가지 시험 조건을 시험하는데 사용된다. 이러한 64시험 조건은 퍼엄웨어의 제어하에서 시험될 수 있으며 이때 테스트 브랜치 논리부(56)의 출력은 어드레스 멀티플렉서(60)로 유입되는 1비트 정보이다. 테스트 브랜치 논리부(56)에 대한 입력은 시험 플립플롭(50), F-레지스터(51) 및 F-카운터(52)에 의해 공급된다.
주 브랜치 논리부(57)는 15개의 테스트 브랜치 행렬을 제공해준다. 이 행렬의 입력중 대다수는 F-레지스터(51)로부터 (여러가지 조합으로) 나온 것이다. 다른 입력은 모니터로부터 나온 것이며 테스트 플립플롭(50)의 비트들을 선택한다. 주 브랜치 논리부(57)의 출력은 어드레스 멀티플렉서(60)에 공급되는 4비트의 어드레스 정보이다.
레지스터(58)는 하드웨어 인터럽트를 일으킬 수 있는 10가지의 가능한 조건에 대응하는 정보 비트들을 제공한다. 하드웨어 인터럽트 프리넷(59)은 이러한 열가지 가능한 조건을 초기 설정하여 어드레스 멀티플렉서 2(62)에 의해 사용되는 4비트 출력을 생성하여 상기 10가지 가능한 조건중 하나가 발생할때 12비트의 하드웨어 인터럽트 벡터 어드레스를 생성한다.
어드레스 멀티플렉서 1(60)의 출력은 ROS 어드레스 레지스터(63)에 로우드 되어 ROS(24)로부터 다음 마이크로 명령을 인출하는데 쓰일 다음 12비트 명목 어드레스를 공급한다. 이 12비트 어드레스는 하드웨어 인터럽트가 발생하지 않을 경우에만 다음 어드레스로서 사용될 것이라는 의미에서 명목이란 말을 붙인 것이다. 하드웨어 인터럽트가 전혀 계류(pending)되지 않았거나 계류중인 하드웨어 인터럽트가 마이크로 명령어 내에 인터럽트 금지 비트를 설정함으로써 금지될 경우에는 하드웨어 인터럽트가 발생하지 않을 것이다(제3도의 비트 34를 참조).
어드레스 멀티플렉서 2(62)는 멀티플렉서 9(60)에 의해 발생된 다음 12비트 명목 어드레스와, 퍼엄웨어 인터럽트 프리넷(59)으로 부터 나온 4비트와 8개의 앞선 0비트를 조합함으로써 생성된 하드웨어 인터럽트 벡터 어드레스중에서 선택하는데 쓰인다. 어드레스 멀티플렉서 2(62)의 출력은 ROS 어드레스 레지스터(RAR) (63)에 로우드되는 12비트의 다음 어드레스이다. RAR(63)의 출력은 ROS(24)로부터 인출될 다음 마이크로 명령의 어드레스를 제공하는데 쓰인다. RAR(63)의 출력은 또한 ROS 어드레스 히스토리(history)레지스터에도 입력된다.
ROS 어드레스 히스토리 레지스터(66)는 ROS 데이타 레지스터(65)에 내장된 현재의 마이크로 명령의 실행 초기에, 다음 마이크로 명령 어드레스가 전개되어 ROS 어드레스 레지스터(63)에 전송될 동안, ROS 어드레스 히스토리 레지스터가 현재의 마이크로 명령의 어드레스를 홀드하도록 마련되어 있다. 이 현재의 마이크로 명령 어드레스는 현재의 마이크로 명령이 다음 마이크로 명령 어드레스의 사용을 요구하면 다음 마이크로 명령 어드레스를 전개하는데 사용된다. ROS 어드레스 히스토리 레지스터(66)로부터 나온 현재의 어드레스는 또한 마이크로 서브 루틴 및 하드웨어 인터럽트 서비스 루우틴으로부터의 리턴 어드레스로서 인크리멘터(64)에 의해 증분된 후에 사용된다.
인크리멘터(64)는 RAR 어드레스 히스토리 레지스터(66)에 내장된 어드레스를 소정의 수만큼(본 실시예에서는 1만큼) 증분시킨다. 인크리멘터(64)는 PUSH 마이크로 지령동안 리턴 멀티플렉서(61)를 거쳐 리턴 어드레스 스택(70)을 동작시키는데 사용될 12비트 인크리멘터이다. 인크리멘터(64)의 출력은 다음 어드레스 값을 INC 및 INCK 마이크로 지령을 위한 RAR(63)에 어드레스 멀티플렉서 1(60) 및 어드레스 멀티플렉서 2(62)를 거쳐 공급하는데에도 사용된다. INC 마이크로 지령은 다음 ROS 어드레스가 1만큼 증분된 현재의 ROS 어드레스가 되도록 지정하고 INCK 마이크로 지령은 현재의 어드레스 값에 1을 더한 것이고 아울러 마이크로 지령내의 다른 비사용 어드레스 필드 비트들에서 지정된 것처럼 내부 버스(38)상에 놓여야 함을 지정한다.
리턴 어드레스 스택(79)은 서브 루틴 및 하드웨어 인터럽트의 리턴 어드레스를 기억하는데에 사용된 후입력-선출력(Last in first out : LIFO)식 4×12비트 어레이이다. 리턴 어드레스 스택(70)은 클리어 시간동안 16진수 001로 초기 설정되고 그것의 바닥 로케이션은 각 POP(리턴)마이크로 지령동안 001(16진수)로 셋트된다. PUSH 마이크로 명령은 리턴 어드레스 스택의 최상부가 인크리멘터(64)의 출력에 의해 공급되게 한다. 하드웨어 인터럽트는 스택(70)의 최상부가 다음 명목 어드레스인 어드레스 멀티플렉서 1(60)의 출력에 의해 공급되게 한다. 인크리멘터(64)는 ROS 데이타 레지스터(65)의 다음 지령 부분의 한 서브필드가 PUSH 마이크로 명령을 지령할때 ROS 어드레스 내역 레지스터(66)로부터 증분된 어드레스 내역을 리턴 어드레스 스택(70)에 전송된다. 이 PUSH 마이크로 지령은 마이크로 프로그램 서브 루틴에 브랜치할 동안 실행중인 마이크로 프로그램의 마이크로 명령의 리턴 어드레스를 기억하게 한다.
PUSH 마이크로 지령에 응하여, 인크리멘터(64)는 증분된 현재의 ROS가 ROS 어드레스 히스토리 레지스터(66)로부터, 다수의 레지스터(71 내지 74)로 구성한 리턴 어드레스 스택(70)으로 어드레스 지정하도록 한다. 기능상으로, 리턴 어드레스 스택(70)은 1열로 배열된 다수의 작업 레지스터로 구성한 푸쉬 다운 기억장치이다. 상기 스택으로부터의 유일한 출력은 어드레스 멀티플렉서 1(60)에 연결되어 있는 맨 상단의 레지스터(71)로부터 된다. 리턴 어드레스 스택(70)은 상단 및 바닥으로부터 입력된다. 어드레스가 스택(70)에 푸쉬되면, 스택에 있는 다른 어드레스들이 배열된 한 레지스터를 푸쉬 다운한 후에 레지스터(71)로 들어간다. 어드레스가 상기 열에서 이동(팝업)되면, 상단 레지스터(71)에 의해 그 어드레스는 어드레스 멀티플렉서 1(60)로 공급되고, 리턴 어드레스 스택(70)에 저장된 각 어드레스는 그 열에서 한 하드웨어 레지스터를 위로 이동시킨다. 이 팝 동작동안에, 비워진 바닥 레지스터(74)는 어드레스 001(16진수)로 로우드 된다. 스택은 카드들의 데크로서 보이게 될 수 있다. 즉, 데크의 카드들로의 액세스는 데크의 상단으로 또는 상단으로부터 한번에 하나씩 카드를 더하거나 제거함에 의해서만 가능하고 소정의 카드(16진수치 001)는 각 카드가 데크의 상단에서 제거될때 데크의 바닥에 부가된다.
따라서, 리턴 어드레스 스택(70)은 실행중인 마이크로 프로그램이 서브 루틴에 분기할 경우 ROS 어드레스 히스토리 레지스터(66)로부터 제공되었을때 증분된 현재의 어드레스를 저장한다. 게다가, 하드웨어 인터럽트가 발생할때, 즉 발생된 특정 하드웨어 인터럽트에 의해 결정된 바와 같이 ROS(24)내의 특정 로케이션으로 퍼엄웨어 실행을 백터할때마다 어드레스 멀티플렉서 1(60)에 의해 출력된 명목상의 다음 어드레스를 상기 리턴 어드레스 스택(70)이 기억한다. 리턴 어드레스 스택(70)에 기억된 이들 어드레스들은 마이크로 프로그램 서브 루틴으로의 브랜칭이나 마이크로 프로그램 인터럽트 핸들링 루틴으로의 브랜칭의 발생이 없으면 실행될 수 있는 마이크로 프로그램의 다음 단계를 포인팅한다. 마이크로 프로그램 서브 루틴으로의 브랜칭이 발생하거나 하드웨어 인터럽트가 발생할때 이들 어드레스들이 기억될 것이기 때문에, 리턴 어드레스 스택(70)내의 어드레스들은 서부 루틴이나 하드웨어 인터럽트 핸들링 루틴내의 최후 마이크로 명령을 실행하자마자 적당한 시퀀스로 마이크로 프로그램을 복귀하게 한다. 이것에 대하여 이후에 제4도를 참조하여 좀더 설명하겠다.
제3도는 양호한 실시예인 마이크로프로세서(30)의 퍼엄웨어 마이크로 명령 워어드 난을 도시한다. 이 마이크로 명령 워어드는 48비트(비트 0-47)로 구성되어 있다. 비트 0에서 12까지는 ROS 어드레스 난으로 사용되고, 비트 13에서 17까지는 레지스터 파일내에서 레지스터를 선택하는데 사용되고, 비트 18에서 22까지는 ALU의 산술 및 논리 기능과 그 부분으로의 입력을 제어하는데 사용되고, 비트 23에서 25까지는 버스 제어로서 사용되고, 비트 26에서 30까지는 레지스터 수정난으로서 사용되고, 비트 31에서 33까지는 메모리 관리 장치의 제어로서 사용되고, 비트 34는 하드웨어 인터럽트의 발생을 금지하는데 사용되고, 비트 35에서 47까지는 특별 제어난으로서 사용된다.
특별 제어난(RDDT 비트 35-47)은 마이크로 명령 퍼엄웨어 워어드에서 약간의 다른 난들을 수정하고 보충하는데에 사용된다. 이 특별 제어난은 주어진 마이크로 사이클동안 세개까지 마이크로 지령을 동시에 마련한다. 상기 특별 제어난은 제3도에 도시된 바와 같이 4개의 서브 필드(A 내지 D)로 분할된다. 어떤 서브 필드의 해석은 다른 서브 필드의 내용에 달려 있다.
마이크로 명령의 48비트는 마이크로 명령 실행의 초기에 ROS 데이타 레지스터(65)로 로우드 된다. 이들 48비트는 신호 RDDT 00 내지 RDDT 47로서 언급된다.
ROS 어드레스 난은 13비트(RDDT 00-RDDT 12)를 포함하며, 주어진 마이크로 프로그램 시퀀스내에서 다음 단게의 퍼엄웨어 어드레스를 발생시키는데 사용된다. 이 다음 어드레스를 발생시키는 방법은 표 1에서 아래에 보여준 바와 같이 ROS 어드레스 난의 처음 다섯 비트로서 한정된다.
[표 1]
Figure kpo00002
PUSH 마이크로 지령은 표 1에 열거된 처음 다섯 동작중의 어느 것과도 관련하여 사용될 수 있다. PUSH 마이크로 지령은, 점프나 브랜치 마이크로 지령과 함께 사용될때, 마이크로 프로그래머가 브랜치된 서브 루틴의 종료시에 리턴하기를 원하는 리턴 어드레스를 리턴 어드레스 스택(70)으로 마이크로 프로그래머가 기억시킨다. 마이크로 프로그램을 작성하는 사람에 의해 이 리턴 어드레스를 용이하게 기억하게 하도록 PUSH 마이크로 지령은 리턴 어드레스 스택(70)의 상단에 인크리멘터(64)에 의해 1씩 증분된 ROS 히스토리 어드레스 레지스터(66)의 내용을 푸시한다. 이때 리턴(팝) 마이크로 지령은 마이크로 프로그램 서브 루틴을 호출한 마이크로 명령후에 최초 위치로 리턴하도록 호출된 서브 루틴의 최후 퍼엄웨어 단계로서 마이크로 프로그래머에 의해 사용된다.
표 1에 기술된 여섯 동작으로 정의된 다음 어드레스 발생의 한 예외는 하드웨어 인터럽트이다. 하드웨어 인터럽트가 초기화되면, 다음 ROS 어드레스는 하드웨어 벡터로서 제공되고, 제공된 퍼엄웨어 워어드의 ROS 어드레스 난에 의해 발생된 ROS 어드레스는, 리턴 멀티플렉서(61)의 출력으로서 선택되고 리턴 어드레스 스택(70)상에 푸쉬되는 어드레스 멀티플렉서 1(60)의 출력에 의해 리턴 어드레스 스택(70)의 상단에 제공된다. 만일(서브 필드 A 및 B의 특정 부호 방식과 관련된 RDDT 42-RDDT 44의 특별 제어난 C에 의해 지정된 바와 같이)PUSH 마이크로 지령이 표 1에서 기재된 최초 다섯 동작중의 하나와 함께 사용된다면, 마이크로 프로그래머는 하드웨어 인터럽트 발생의 결과로 실행되는 서로 모순되는 푸쉬 동작을 하지 못하게 하기 위하여 RDDT 비트 34가 2진수 "1"인 것으로 지정함으로써 하드웨어 인터럽트를 금지해야 한다. 하드웨어 인터럽트가 이미 주어진 퍼엄웨어 마이크로 프로그램 시퀀스의 종료전에 어느때라도(외부 비동기 사건의 발생에 의해 보통) 발생할 수 있기 때문에 하드웨어 인터럽트의 발생을 허락하도록 특별한 배려가 있어야 한다.
표 1에 정의된 여섯 동작의 브랜치 능력은 페이지 브랜칭 및 뱅크 브랜칭이라 한다. 페이지는 ROS(24)내의 64 연속적인 메모리 로케이션으로 정의되고, 뱅크는 ROS(24)내의 1024 메모리 로케이션(16페이지)이라고 정의된다. 테스트 브랜치 동작을 위한 브랜치 경계는 한 페이지내의 임의의 로케이션으로 제한된다. 주 브랜치의 브랜치 경계는 뱅크내의 임의의 로케이션으로 제한된다. 표 1의 나머지 4동작은 한 뱅크로부터 다른데로 브랜칭하거나 증분될 수 있다.
점프 동작은 ROS(24)의 가능한 4096 로케이션들중 임의의 어느 하나로의 브랜치를 가능하게 하는 표 1의 유일한 다음 어드레스 발생 방법이다. 이것은, ROS 어드레스난 내에서, 실행될 다음 퍼엄웨어 마이크로 명령의 12-비트 직접 어드레스를 제공함으로써 달성된다.
RDDT 비트 0이 2진수 "1"일때, ROS 데이타 레지스터(65)내에 포함된 바와 같이 현재의 ROS 데이타 워어드(퍼어웨어 마이크로 명령)의 RDDT 비트 1-12는, 방해하는 하드웨어 인터럽트가 발생하지 않는다는 가정하에, 퍼엄웨어 마이크로 프로그램의 다음 어드레스와 같이 어드레스 멀티플렉서 1(60) 및 어드레스 멀티플렉서 2(62)를 통해 ROS 어드레스 레지스터(63)에 직접 전달된다. 하드웨어 인터럽트가 발생하면, 이 명목적인 다음 어드레스는, 어드레스 멀티플렉서 2(62)의 출력이 다음번 ROS 어드레스로서 ROS 어드레스 레지스터(63)내에 로우드될 것이므로 하드웨어 인터럽트 프리넷(59)의 네 비트 출력과 8개의 상위 2진수 제로 비트를 연결함으로써 발생되는 바와 같이, 발생된 하드웨어 인터럽트 벡터 어드레스 및 리턴 어드레스 스택(70)의 상단에 푸쉬된다.
PUSH 마이크로 지령(특별 제어난 C에 의해 정의된 바와같이)은 점프 동작과 함께 사용될 수 있다. 하드웨어 인터럽트 금지 비트 RDDT 34는 PUSH 마이크로 지령이 점프 동작과 함께 사용될때 하드웨어 인터럽트를 금하도록 2진수 "1"로 세트되어야 한다. PUSH 마이크로 지령동안, ROS 어드레스 히스토리 레지스터(66)에 보유된 현재의 ROS 어드레스는 1씩 증분되고, RDDT 비드 1-12에 지정된 바와 같이 다음 어드레스가 ROS 어드레스 레지스터(63)내에 로우드되기 전에 리턴 멀티플렉서(61)에 의해 리턴 어드레스 스택(70)의 상단에 푸쉬된다.
표 1의 테스트 브랜치 동작은 비트 3-8 내의 ROS 어드레스 난의 일부분으로서 지정된 64 테스트 조건중 하나의 결과를 사용한 2방식 브랜치이다. 모든 테스트 브랜치들은 현재의 페이지 내에서의 브랜칭으로 제한된다. 즉, 테스트 결과로 발생된 다음 ROS 어드레스는 항상 주 로케이션중의 하나(테스트 결과에 따라 달라짐, 즉 참 또는 거짓)가 될 것인데 현재 분리되었으나 64 로케이션내에 있는 8로케이션은 ROS 어드레스 레지스터(63)에 의한 어드레스이다. 즉, 테스트 브랜치의 결과에 따라서, 다음 마이크로 명령은 히스토리 레지스터(66)로부터의 현재 ROS 어드레스에서 6개의 상위 비트들을 위해서 결정되는 로케이션으로부터 인출되는데 상기 현재의 ROS 어드레스는 ROS 어드레스 난의 비트 2, 9, 10, 11 및 12에서 되는 6개의 하위 비트와 연결된다. 이런 비트들은 명목상의 다음 ROS 어드레스내에서 각각 비트 위치 7, 8, 10, 11 및 12에 대해 사용되고 상기 테스트 결과(참 또는 거짓에 각각 대응하는 1 또는 0)는 명목상의 다음 ROS 어드레스 내에서 비트 위치 9로서 사용된다.
전술한 바와 같은 비트들로 구성되며, 현재의 퍼엄웨어 마이크로 명령 워어드내에서 비트 0 내지 13에 지정된 바와 같이 테스트 브랜치의 결과로 발생되는 이러한 명목상의 다음 ROS 어드레스는, 아무런 하드웨어 인터럽트 간섭도 발생하지 않는다고 가정하면, 다음 ROS 어드레스가 된다. 그러나 하드웨어 인터럽트가 발생하면, 이 어드레스는 리턴 어드레스 스택(70)의 상단에 놓여지고, 발생된 하드웨어 인터럽트 벡터 어드레스가 ROS 어드레스 레지스터(63)내의 다음 ROS 어드레스의 내용으로 그것을 교체한다.
PUSH 마이크로 지령은 또한 테스트 브랜치 동작과 함께 사용될 수 있다. 전술한 바와 같이, PUSH 마이크로 지령이 사용된다면 (RDDT 비트 34를 이진수 "1"로 설정함으로써)하드웨어 인터럽트는 금지되어야 한다. 만약 PUSH 마이크로 지령이 테스트 브랜치 동작과 함께 사용된다면, 1씩 증분된 (ROS 어드레스 히스토리 레지스터(66)로부터) 테스트 브랜치 마이크로 명령의 어드레스인 현재의 ROS 어드레스는 리턴 어드레스 스택(70)의 상단에 놓여지고, 마이크로 프로그램은 테스트 브랜치 논리(56)의 출력에 의해 결정된 바와 같이 명목상의 다음 어드레스로 브랜치할 것이다.
주 브랜치 동작은 비트 5-8의 ROS 어드레스난의 일부분으로 지정된 15 테스트 그룹의 결과를 사용하는 16-방식 브랜치이다. 모든 주 브랜치들은 현재의 뱅크(1024 로케이션)내의 브랜칭으로 제한된다. 즉, 주 브랜치 테스트의 결과로 발생된 명목상의 다음 ROS 어드레스는 ROS 어드레스 내역 레지스터(66)에 의해 어드레스되는 뱅크(1024 로케이션)내에 그러나 분리된 16로케이션(주 브랜치 매트릭스의 출력에 따른)중의 하나에 있을 것이다.
명목상의 다음 ROS 어드레스는 현재의 ROS 어드레스로부터 비트 0 및 1을 취하고, 명목상의 다음 ROS어드레스 내에 비트 0 및 1로서 그것들을 사용하고, ROS 어드레스난으로부터 비트 3, 4, 9, 10, 11, 12를 받아들이고, 그 비트들을 각각 명목상의 다음 ROS 어드레스에서 비트 2, 3, 8, 9, 10, 11로 사용함으로써 발생된다. 게다가, 명목상의 다음 ROS 어드레스내의 비트 4-7들은 주 브랜치 논리(57)에 의한 4-비트 출력에 의해 결정된다.
전술한 바와 같은 명목상의 다음 ROS 어드레스는, 아무런 하드웨어 인터럽트도 발생하지 않는다고 가정하면 ROS 데이타 레지스터(65)에 포함된 현재의 퍼엄웨어 마이크로 명령 워드의 비트 0 내지 12로 지정된 주 브랜치 동작 결과가 다음 ROS 어드레스인 것처럼 발생된다. 그러나 하드웨어 인터럽트가 발생한다면, 새로 발생된 명목상의 다음 ROS 어드레스는 리턴 어드레스 스택(70)의 상단에 놓이며, 발생된 하드웨어 인터럽트 벡터 어드레스는 그것을 RAR(63)내의 다음번 ROS 어드레스로 대체한다.
테스트 브랜치 동작에서와 같이, PUSH 마이크로 지령은 주 브랜치 동작과 함께 사용될 수 있다. 다시, 상술한 바와 같이, 하드웨어 인터럽트는 비트 RDDT 34를 이진수 "1"로 세팅함으로서 금지되어야 한다. 만일 PUSH 마이크로 지령이 주 브랜치 동작과 함께 사용되는 경우에, 주 브랜치 마이크로 명령의 어드레스에 1을 더한 현재의 ROS 어드레스(ROS 어드레스 히스토리 레지스터(66)로 부터의)는 리턴 어드레스 스택(70)의 상단에 놓여지고, 마이크로 프로그램은 주 브랜치 논리(57)의 출력에 의해 결정된 바와 같이 명목상의 다음 어드레스로 브랜치 한다.
현재의 마이크로 명령의 ROS 어드레스난(13-비트난의 비트 0-3)에 지정된 바와 같이 일정한 동작(INCK 마이크로 지령)으로 증분하는 것은 1씩 증분된 ROS 어드레스 히스토리 레지스터(66)의 현재의 값이 다음 마이크로 사이클중에 ROS 어드레스 레지스터내에 있도록 한다. 이 다음번 어드레스 발생에 부가하여, 나머지 9개 비트들(RDDT 비트 4-12)은 현재의 마이크로 사이클동안 20-비트 폭의 내부 버스(38)에 9-비트 플러스 필러(filler)를 발생하는데에 사용된다.
ROS 어드레스 히스토리 레지스터(66)에 포함된 현재의 어드레스는 인코리멘터(64)에 의해 증분되어, 그 결과, 일정한 마이크로 지령의 증분이 마이크로 명령의 ROS 어드레스난에 지정될 경우, 어드레스 멀티플렉서 1(60) 및 어드레스 멀티플렉서 2(62)를 통해 ROS 어드레스 레지스터(63)에 복귀된다. 하드웨어 인터럽트가 발생할 경우, 이 새로 발생된 다음번 어드레스는 리턴 멀티플렉서(61)를 통해 리턴 어드레스 스택(70)의 상단에 놓이고 하드웨어가 발생된 인터럽트 벡터 어드레스는 다음 ROS 어드레스로 사용될 ROS 어드레스 레지스터(63)에 놓인다. PUSH 서브 지령은 증분 동작들과 사용될 수 있다. 모든 PUSH 서브 지령들을 가질 경우 하드웨어 인터럽트는 증분 동작과 관련하여 PUSH 서브 지령을 사용할때 RDDT 비트 34를 이진수 "1"로 세팅함으로써 금지되어야 한다. 만일 PUSH 마이크로 지령이 증분 동작과 함께 사용될 경우, 1씩 증분된 현재의 ROS 어드레스는 다음번 ROS 어드레스가 되도록 리턴 어드레스 스택(70)의 상단에 놓인다.
마이크로 명령의 ROS 어드레스난에 지정된 바와 같이 증분동작(INC)서브 지령은 아무런 상수도 내부버스(38)상에 발생하지 않는 경우 외에는 일정한(INCK 마이크로 지령) 동작으로 증분하도록 상술한 바와같이 동일한 동작을 시작한다.
리턴 동작(POP 마이크로 지령)은 리턴 어드레스 스택(70)상단의 내용이 다음번 마이크로 사이클에 대한 ROS 어드레스로 사용될 수 있도록 어드레스 멀티플렉서 1(60) 및 어드레스 멀티플렉서 2(62)를 통해 ROS 어드레스 레지스터(63)내에 로우드 되게 한다. 게다가 001(16진수)의 ROS 어드레스는 리턴 어드레스 스택(70)이 한 위치씩 팝될때마다 레지스터(74)내에의 스택의 바닥으로 로우드된다. 1의 ROS 어드레스로 리턴 어드레스 스택(70)의 바닥으로의 이 로우딩은 스택의 오버 팜핑의 경우를 검출하는데 사용된다. 스택의 오버 팝핑은 마이크로프로세서가 ROS 로케이션 1에서 시작하는 마이크로 프로그램 에러 시퀀스로 벡터되는 결과를 초래한다. 리턴 동작(POP 마이크로 지령)은 ROS 어드레스난의 비트 0-4로 완전히 지정되기 때문에, ROS 어드레스난의 비트 5-12는 리턴 동작의 일부분으로 사용되지 않는다.
리턴 동작이 ROS 어드레스난의 비트 0-4에 지정되면, ROS 어드레스 레지스터(63)는 아무 방해하는 하드웨어 인터럽트가 발생하지 않는 경우에 리턴 어드레스 스택 상단의 내용을 수신한다. 하드웨어 인터럽트가 발생한 경우, 리터(또는 팝) 동작은 효과적으로 바이패스 되거나 취소(제거)된다. 리턴 동작 하드웨어 인터럽트가 발생할때 팝 스택 동작 이런 취소는 리턴 어드레스 스택(70)의 상단으로부터 리턴 어드레스를 팝핑하고, 즉시 동일 마이크로 사이클내에서 그것을 다시 리턴 어드레스 스택(70)의 상단으로 푸싱하는논리와 동일하다. 리턴 어드레스 스택이 하드웨어 인터럽트와 마이크로 프로그램 서브 루틴 호출에 대해 리턴 어드레스들을 포함하기 위해 사용되도록 하는 것은 리턴 동작중 하드웨어가 발생할때의 리턴 어드레스 스택(70)을 팝핑하는 것을 취소하거나 바이패스 하는 것이다.
하드웨어 인터럽트 루틴에 대한 리턴 어드레스를 저장하는 것과 관련된 스택으로의 푸쉬 동작이 마이크로 프로그램 서브 루틴으로부터의 리턴시 또는 하드웨어 서비스 루틴의 완료시 스택에 실행될 팝 동작을 취소하게 함으로써, 리턴 어드레스 스택(70)은 한 마이크로 사이클중 처음에 팝업 그리고나서 푸쉬 다운으로, 즉 두 방향으로 동시에 이동할 수 없어야 된다. 두 방향으로의 동시 이동을 방지하는 방법(즉, 푸쉬 동작이 팝 동작을 제거하는 방법)은 다음 제5도를 참조하여 상세히 설명된다. 아래 제4도 설명에서 볼 수 있는 바와 같이, 하드웨어 인터럽트의 발생과 관련한 푸쉬 동작의 발생에 의하여 리턴 동작과 관련된 스택 팝 동작의 제거는, 그 마이크로 프로그램된 인터럽트 서비스 루틴에서 최종 단계로서 하드웨어 인터럽트 루틴이 리턴 동작을 실행하기 때문에, 마이크로 프로그램내의 제어의 흐름에 역영향을 미치지 않는다.
특별 제어난(RDDT 비트 35-47)에 코드화 PUSH 마이크로 지령은 양호한 실시예에서 마이크로프로세서(30)내의 결과가 지정되지 않기 때문에 ROS 어드레스난(RDDT 비트 0-12)내에서 코드화된 리턴 동작과 함께 동일한 마이크로 명령에 사용되지 않아야 한다.
상술된 바와 같이, 하드웨어 인터럽트는 고정된 ROS 어드레스로 브랜치 하게 한다. 이 ROS 어드레스는 레지스터(58)로부터의 입력으로 인터럽트 요구 및 각종 에러 신호들을 가진 프리넷(59 : 우선순위 회로)에 의해 결정된다. 하드웨어 인터럽트들은 다음번 퍼엄웨어로 발생된 ROS 어드레스가 리턴 어드레스 스택(70)의 상단에 푸쉬되게 한다. 만일 다음번 ROS 어드레스가 리턴 마이크로 지령을 통해 리턴 어드레스 스택으로부터 발생된 경우, 리턴 어드레스 스택(70)의 팝핑은 금지된다. 하드웨어 인터럽트는 스택을 이중으로 푸쉬하는 요건을 방지하도록 PUSH 마이크로-동작이 실행될때마다 금지되어서, 제1푸쉬는 PUSH 마이크로 지령 자체와 관련되고 제2푸쉬는 하드웨어 인터럽트에 리턴 어드레스의 저장과 연관된다.
하드웨어 인터럽트 금지난(RDDT 비트 34)이 2진수 "1"일때 하드웨어 인터럽트들은 금지되고, 메모리 재생 및 데이타 요구와 연관된 것과 같은 비-에러 상태 하드웨어 인터럽트들은 금지된다(현재의 마이크로 명령의 실행과 다음번 마이크로 명령의 실행과의 사이에서 간섭하는 것이 방지된다). 프리넷(59)의 하드웨어 에러 조건 입력들은(시스템 클리어, 존재하지 않는 소오스로의 액세스, 액세스 위배, 메모리 패리티 에러와 같은) RDDT 비트 34의 제어하에 있지 않고, 임의의 두 주어진 마이크로 사이클 사이를 간섭할 수 있다. 이들 에러 조건들과 관련한 하드웨어 인터럽트가 금지 될 수 없으므로 PUSH 마이크로 지령을 포함하는 마이크로 명령중에 발생할 수 있다는 사실은 문제가 되지 않는다. 왜냐하면 이들 금지 불가능한 에러 조건들과 관련한 하드웨어 인터럽트 서비스 루틴이 결국 리턴 동작을 하지 않고 따라서 유효하도록 리턴 어드레스 스택(70)의 내용에 의존하지 않기 때문이다. RDDT 비트 34가 이진수 "0"일때, 모든 하드웨어 인터럽트들은 허용된다.
제4도는 도면번호 100으로 표시된 마이크로 프로그램의 주 루틴을 형성하는 퍼엄웨어 마이크로 명령 시퀀스이다. 주 루틴(100)은 주 마이크로 프로그램 루틴 또는 마이크로 서브 프로그램 루틴 그 자체일 수 있고, 기능을 실행하도록 설계된 마이크로 명령들의 어떤 공동 시퀀스이다. 마이크로 명령의 어떤 공통 시퀀스로 브랜치를 실행할 수 있는 것은 바람직하다. 실시예를 위해, 제1레벨 서브 루틴용으로 102 그리고 제2레벨 서브 루틴용으로 104로 표시된 두개의 마이크로 서브 루틴들이 도시되었다. 이들 서브 루틴들에의 브랜치는 루틴이나 서브 루틴 어떤 곳에서도 일어날 수 있다. 게다가, 마이크로 루틴(100)이나 그와 관련한 마이크로 서브 루틴의 명령 실행중에 일어나는 어떤 하드웨어 인터럽트를 처리하도록 하드웨어 인터럽트 서비스 루틴을 실행할 수 있게 설계되었다. 보기의 목적으로, 제1하드웨어 인터럽트 서비스 루틴을 위한 106 그리고 제2하드웨어 인터럽트 서비스 루틴을 위한 108로 표시된 두개의 하드웨어 인터럽트 서비스 루틴들이 도시되었다. 제4도에서, 마이크로 프로그램에서의 사각형 박스는 마이크로 명령을 표시한다. 마이크로 명령의 내용은 ROS 데이타 레지스터(65)에 포함된 것 같이 ROS(24)의 출력으로 표시되었다.
제4도에서, 제1레벨 서브 루틴으로의 점프를 결정하는 마이크로 명령은 마이크로 명령 P에서 발견된다. 이 마이크로 명령은 마이크로 명령 Q에의 조건이나 비조건적인 브랜치를 가진 ROS 어드레스난과, 하드웨어 인터럽트를 금지하도록 세트된 하드웨 어 인터러브 비트와 함께 PUSH 마이크로 지령을 지시하는 특별 제어난으로 구성된다. 마이크로 명령 Q에 브랜치하며, 리턴어드레스를 푸시하여, 하드웨어 인터럽트를 금지하는 이 퍼엄웨어 마이크로 명령은 사각 박스 P에 도시되었다. 이 마이크로 명령이 마이크로 프로그램의 시퀀싱중에 도달되면, 후속 동작이 일어난다. 마이크로 명령의 ROS 어드레스난은 브랜치 동작이 실행되어야 한다는 것을 지시한다. 특별 제어난은 ROS 어드레스 히스토리 레지스터(66)내의 현재의 ROS 어드레스가 인크리멘터(64)에 의해 증분되고 리턴 멀티플렉서(61)를 통해 리턴 어드레스 스택(70)의 상단에 푸시되어야 할 것을 지시한다. 이것은, 인크리멘터(64)가 명령 P의 ROS 어드레스를 적절하게 이 시점에서 포함하는 ROS 어드레스 히스토리 레지스터(66)의 내용을 취하고, 그것을 1만큼 증분하여 인크리멘터(64)의 출력이 명령 P+1과 관련한 어드레스가 되게 하고, 그것을 레지스터(71)인 리턴 어드레스 스택(70)의 상단 레지스터로 리턴 멀티플렉서(61)를 통해 기억하게 함으로써 달성된다. 따라서, 이 시점에서 레지스터(71)는 어드레스 P+1을 적절히 포함한다. 또한 ROS(24)의 어드레스 P에서 존재하는 상기 마이크로 명령은, 위치 Q에서의 마이크로 명령인 제1레벨 서보루틴은 제1명령과 위치 P에서의 마이크로 명령의 실행과의 사이에 하드웨어 인터럽트의 발생을 금지하도록 세트되게 하는 하드웨어 인터럽트 비트를 갖는다.
Q에 도시된 바와 같이 브렌치의 발생에 뒤이어, 마이크로 서브 루틴의 정상적인 시퀀싱이 일어난다. 만일 제1레벨 서브 루틴(102)이 사각 박스 R에 도시된 바와 같은 다른 서브 루틴을 필요로 한다면, 마이크로 서브 루틴에의 또하나의 브랜치가 샐행된다. 이와 같이, 명령 P에서 발생된 바와 같은 동일한 단계가 제1레벨 서브 루틴(102)이 제2레벨 서브 루틴(104)에 브랜치할 경우 명령 R에 적용 가능하다. 따라서, 명령 R에서, 조건적 또는 비조건적 브랜치는 ROS(24)에서의 어드레스 S에서 시작하는 제2레벨 서브 루틴(104)에 실행된다. 명령 R이 실행될때, ROS 어드레스 히스토리 레지스터(66)에서의 현재의 ROS 어드레스는 인크리멘터(64)에 의해 1씩 증분되고, 리턴 어드레스 레지스터 스택(70)에 전송되고, 최상단 레지스터(71)에 보유되고, 레지스터(71)의 이전 내용들은 레지스터(72)에 푸시다운 된다. 따라서, 마이크로 프로그램 실행시의 이 포인트에서, 레지스터(71)는 어드레스 R+1을 포함하고 레지스터(72)는 어드레스 P+1을 포함한다. 그런데, 어드레스 R+1은 제2레벨 서브 루틴이 그 완료시 리턴되는 제1레벨 서브 루틴내의 명령이고, 어드레스 P+1은 제1레벨 서브 루틴이 그 완료시 리턴되는 주 루틴내의 어드레스이다. 로케이션 R에서의 마이크로 명령의 ROS 어드레스난은 마이크로 프로그램이 사각형 박스(마이크로 명령) S로 브랜치 하게 하는 값이다.
제4도에 도시된 바와 같이, 제1하드웨어 인터럽트는 사각박스 R과 관련된 마이크로 명령의 실행중 계류하게 된다. 이 제1인터럽트는 2진수 1과 동등한 하드웨어 인터럽트 금지 비트(RDDT 34)를 설정함에 의해 금지될 수 있는 타입이므로 하드웨어 인터럽트는 퍼엄웨어 후속 마이크로 명령 R의 정상 흐름을 전환하지는 않는다. 그러므로, 마이크로 명령 R의 실행 완료시, 로케이션 S로의 브랜치는 완료되고 사각 박스 S와 관련된 마이크로 명령이 실행된다. 만일 제1인터럽트가 에러 인터럽트 타입이었다면, 하드웨어 인터럽트는 마이크로 명령 R의 완료시 일어났을 것이고, 마이크로 프로그램 실행의 흐름은 하드웨어 에러인터럽트와 관련된 로케이션으로 벡터되었을 것이다.
마이크로 명령 S의 실행중, ROS(24)로부터 인출될 다음번 마이크로 명령의 ROS 어드레스는 제4도를 고찰함으로써 알 수 있는 바와 같이 계산된다. 로케이션 V에서 시작하는 제1서비스 루틴(106)으로 퍼엄웨어의 실행을 벡터하는 상기 하드웨어 인터럽트의 발생이 없다면, 정상적인 다음번 어드레스는 S+1일 것이다. 이 어드레스는 점프를 지시할 수 있는 ROS 데이타 레지스터(65)에 포함된 S 마이크로 명령의 ROS 어드레스를 사용함으로써 결정되거나 또는 브렌치 동작에 의해 결정되는데 이 경우 ROS 데이타 레지스터(65)내의 ROS 어드레스난 내의 비트들은 테스트 브랜치 논리부(56) 또는 구 브랜치 논리부(57)로부터의 비트들의 추가로 또는 그 추가없이 어드레스 멀티플렉서 1(60)을 통해 멀티플렉스될 것이다. 이와 달리, 만일 인크리멘트 동작이 마이크로 명령 S의 ROS 어드레스난에 표시된다면, ROS 어드레스 히스토리 레지스터(66)의 내용은 인크리멘트(64)에 의해 1씩 증분되고, 12비트 출력이 멀티플렉서 1(60)을 통해 멀티플렉스 된다. 어떤 경우에도, 어드레스 멀티플렉서 1(60)의 출력은 어드레스 S+1이 될 것이다.
마이크로 명령 S가 인터럽트를 금지하지 않고 하드웨어 인더럽트가 비결정 상태이기 때문에, 어드레스 멀티플렉서 1(60)의 출력은 리턴 멀티플렉서(61)를 통해 멀티플렉스 되며 레지스터(71)내로 리턴 어드레스(70)의 상단에 푸시되고, 어드레스 P+1은 레지스터(72)로부더 레지스터(72)로 푸시되고, 어드레스 R+1은 레지스터(71)로부터 레지스터(72)로 푸시될 것이다. 동시에, 어드레스 멀티플렉서 2(62)는 프리넷(59)의 출력을 통해 멀리플렉싱 하고 그리하여 제1하드웨어 인터럽트와 관련된 어드레스가 ROS 어드레스 레지스터(63)로 입력되어 ROS 어드레스 레지스터(63)는 사각 박스 V와 관련된 어드레스를 포함하고 마이크로 명령은 ROS(24)로부터 인출될 것이다. 마이크로 명령 S의 실행 완료시, 마이크로 명령 V는 ROS(24)로부터 인출될 것이고 ROS 데이타 레지스터(65)에서 디코딩 및 실행에 쓰일 수 있다.
마이크로 명령 V-X를 포함하는 제1하드웨어 인터럽트 서비스루틴(106)의 실행을 서술하기 전에, 마이크로 명령 R이 하드웨어 인터럽트 금지 마이크로 지령을 포함하지 않을 경우 마이크로 명령 R의 실행중 마이크로 프로그램의 적당한 실행 시퀀스를 보존하기 위하여 리턴 어드레스 스택(70)의 이중 푸시가 요구되는 상황이 일어날 수도 있다는 것을 주목해야 한다. 즉, 리턴 멀티플렉서(61)로 인크리멘터(64)에 의한 출력과 같은 두개의 어드레스 R+1은 리턴 멀티플렉서(61)를 통해 어드레스 멀티플렉서 1(60)에 의한 출력과 같은 어드레스 S에 의해 후속된 리턴 어드레스 스택(70)상에 푸시되어야 한다. 이중 푸시 동작이 한 마이크로 사이클의 실행중에 가능하지 않기 때문에, 하드웨어 인터럽트의 금지가 요구된다.
만일 마이크로 명령 R을 실행하는중에 계류된 제1인터럽트가 마이크로 명령 R이 실행된 후 하드웨어 금지 비트 34를 금지할 수 없는 하드웨어 에러 인터럽트였다면, 마이크로프로세서는 마이크로명령 V로 브랜치할 것이고, 제1하드웨어 인터럽트 서비스 루틴은 마이크로 명령 S의 실행을 방해하지 않고 실행을 시작할 것이다. 그러나 이 경우, 제1하드웨어 서비스 루틴(106)은 하드웨어 에러인터럽트들과 관련된 서비스 루틴들이 팝 동작으로 종료되지 않는다는 점에서 제4도에서 도시한 바와는 다르다. 그대신에, 그것들은 어떤 시스템의 재초기화 기능을 한 후 미리 결정된 곳으로 브랜칭 함으로써 종료한다. 이들 하드웨어 에러 인터럽트들은 팝이 중단된 곳에서 마이크로 프로그램의 실행을 다시 시작하도록 하기 때문에 팝 동작을 하지 않는다. 금지할 수 없는 이들 하드웨어 에러들은, 복귀될 수 있는 형이 아니고, 그러므로 중단점으로의 제어의 복귀가 안된다.
이제, 마이크로 명령 V 내지 X를 제1하드웨어 서비스 루틴(106)으로 되돌아가서, 명령 V 및 W와 그 사이의 모든 명령들은 그들내에 금지 하드웨어 인터럽트 마이크로 코드(예를들면 2진수 "1"로 세트된 비트 34)를 가진다. 하드웨어 인터럽트 서비스 루틴의 최종(POP) 마이크로 명령외의 모든 명령중에 하드웨어 인터럽트의 발생을 금지함으로써 마이크로 프로그래머는 제2 또는 후속 하드웨어 인터럽트의 발생이 제1하드웨어 인터럽트의 처리를 중단하지 않도록 보장해야 한다. 이것이, 한 마이크로 명령에 의해 시작되는 종속 시퀀스들이 어느 임의의 시간에서 시퀀스가 시작 및 종료 마이크로 명령 사이의 시간을 연장하는 어떤 방해하는 하드웨어 인터럽트 없이 후속 마이크로 명령에 의해 완료될 수 있다는 것을 확실하게 한다. 또한 양호한 실시예에서 리턴 어드레스 스택의 단지 4개의 레벨이 있음으로써, 스택의 3레벨이 마이크로 프로그램 서브 루틴 호출용으로 사용되고, 하드웨어 인터럽트가 한 레벨 이상으로 내포되어야할 가능성 없이 제4레벨이 하드웨어 인터럽트로 남아 보존될 수 있다는 이점을 갖는다. 제2도의 논리는 실제로 하드웨어 인터럽트의 내포를 허용하며, 만일 이 스택이 그것의 깊이에다 허용된 마이크로 서브 루틴 호출의 최대 깊이를 더한 깊이를 초과하지 않고서도 모든 하드웨어 인터럽트가 발생할 수 있도록 하는 충분한 깊이를 갖는 것이라면 하드웨어 인터럽트 서비스 루틴중에 이런 인터럽트들의 금지는 필요하지 않을 것이다(주어진 하드웨어 인터럽트가 그 스스로를 중단할 수 없다는 가정에 근거하여 필요하지 않을 것이다).
제1하드웨어 인터럽트 서비스 루틴(l06)을 실행중에 V 내지 W까지의 마이크로 명령은 중단함이 없이 순차적으로 실행된다. 마이크로 명령 X는 마이크로 명령 W에 제공된 금지 마이크로 지령 때문에 중단함이없이 마이크로 명령 W의 실행을 따른다.
V 내지 W까지의 마이크로 명령은 발생한 측정 하드웨어 인티럽트를 서비스 하는 동작을 수행하는 INH(금지) 마이크로 지령에 부가하여, 다른 마이크로 지령을 포함한다는 것을 이해해야 한다. 마찬가지로, 마이크로 명령 X는 POP 마이크로 명령외에 다른 마이크로 지령을 포함할 수 있다. 마이크로 명령 X의 실행중, ROS 데이타 레지스터(65)는 그안에 ROS 어드레스난에 코드화된 리턴(팝) 동작을 가진 마이크로 명령 X를 포함하고 있다. 이 리턴 동작은 실행되는 POP 마이크로 지령 이전에 어드레스 레지스터(74)내에 어드레스 001(16진수), 어드레스 레지스터(73)내에 P+1, 어드레스 레지스터(72)내에 R+1 및, 어드레스 레지스터(71)내에 어드레스 S+1을 상술한 바와 같이 포함하는 리턴 어드레스 스택(70)의 팝핑을 발생한다. 마이크로 명령(X)의 POP 마이크로 지령은 리턴 어드레스 스택(70)이 한 위치를 팝되게 한다. 마이크로 명령(X)의 POP 마이크로 지령은 어드레스 S+1이 레지스터(71)로부터 리턴 어드레스 스택(70)밖으로 팝되게하고, 레지스터(72)의 내용이 레지스터(7l)로 로우드 되게 하고, 레지스터(73)의 내용이 레지스터(72)로 로우드 되게 하고, 레지스터(74)의 내용이 레지스터(73)로 로우드 되게 하고, 값 001(16진수)이 레지스터(74)로 로우드 되게 하나, 어드레스 S+1은 ROS 데이타 레지스터(65)로 로우드 되도록 ROS(24)로부터의 S+1 마이크로 명령을 추출시키는데 사용되는 ROS 어드레스 레지스터(63)로 어드레스 멀티플렉서 1(60) 및 어드레스 멀티플렉서 2(62)를 통해 로우드 된다. 이와 같이, 마이크로 명령 X의 실행을 뒤이어, 제2레벨 서브 루틴(104)의 실행이 마이크로 명령 S+1의 실행으로 다시 시작한다.
제2레벨 서브 루틴(104)의 실행은 마이크로 명령 T가 도달할때까지 명령 기초에 의한 명령으로 마이크로 명령 S+1으로부터 계속한다. 마이크로 명령 X후 및 마이크로 명령 T의 실행 이전에, 리턴 어드레스 스택(70)은 레지스터(71)의 어드레스 R+1과, 레지스터(72)의 어드레스 P+1 및, 레지스터(73과 74)의 어드레스 001(16진수)를 포함한다.
제4도는 제2하드웨어 인터럽트가, 제2인터럽트의 발생이 없을시 리턴 어드레스 스택(70)의 상단으로부터 어드레스 R+1을 팝핑함에 의해 마이크로 명령 R+1에 마이크로 프로그램의 실행을 리턴하는 POP 서브 지령을 포함하는 마이크로 명령 T를 실행하는 중에 계류되는 것을 도시한 것이다. 그러나, 상술한 바와같이, POP 마이크로 지령이 하드웨어 인터럽트 지령과 동시에 일어날때, 리턴 어드레스 스택(70)의 팝핑은 하드웨어 인터럽트에 반응하는 것과 관련된 암시적인 푸싱에 의해 취소된다. 그러므로, 리턴 어드레스 스택(70)은 마이크로 명령 T의 실행중에 팝되거나 푸시되지도 않고, 그 스택은 변화하지 않은채 남아서 레지스터(71)가 어드레스 R+1을 포함하고, 레지스터(72)가 어드레스 P+1을 포함하고, 레지스터(73 및 74)가 어드레스 001(16진수)을 포함한다.
마이크로 명령 T의 실행중, 프리넷(59)은 제2하드웨어 인터럽트 서비스 루틴으로 벡터된 어드레스를 발생시켜서 어드레스 Y가 어드레스 멀티플렉서 2(62)를 통해 ROS 어드레스 레지스터(63)로 로우드 되게 한다. 마이크로 프로그램의 실행은 명령 Y 및 명령 Z로 구성된 제2하드웨어 인터럽트 서비스 루틴(108)에서의 제1명령인 마이크로 명령 Y의 실행으로 계속된다. 다시, 상술한 바와 같이, 하드웨어 인터럽트 서비스루틴내의 각 명령은 최종 마이크로 명령을 제외하고 하드웨어 인터럽트를 금지해야 한다. 또한, 상술한 바와 같이, 명령 Y는 금지 마이크로 지령외에 다른 마이크로 지령들을 포함하며, 마이크로 명령 Z는 유사하게 POP 마이크로 지령 외에 다른 마이크로 지령들을 포함할 수 있다.
마이크로 명령 Z의 실행중 ROS 데이타 레지스터(65)는 ROS 어드레스난에서의 리턴 동작을 포함한다.
이 리턴(POP) 마이크로 지령은 리턴 어드레스 스택(70)이 한 로케이션을 팝되게 하여 레지스터(71)내의 어드레스 R+1이 어드레스 멀티플렉서 1(60) 및 어드레스 멀티플렉서 2(62)를 통해 ROS 어드레스 레지스터(61)로 로우드 되게 한다. 또한, 레지스터(72)의 내용은 레지스터(71)의 내용을 교제하고, 레지스터(73)의 내용은 레지스터(72)의 내용을 교체하고, 레지스터(74)의 내용은 레지스터(73)의 내용을 교체하며 어드레스 001은 레지스터(74)로 로우드 된다. 따라서, 마이크로 명령 Z의 종료시에 리턴 어드레스 스택(70)은 레지스터(71)에 어드레스 P+1과 레지스터(72, 73, 74)에 어드레스 001(16진수)을 포함할 것이다.
마이크로 명령 Z에 있는 POP 마이크로 지령에 의한 리턴 어드레스 스택(70)의 팝핑은 제1레벨 서브 루틴(102)에서 마이크로 명령 R+1을 실행함으로써 마이크로 프로그램의 실행을 계속하게 한다. 제1레벨 서브 루틴(102)은, 상기 제1레벨 서브 루틴에 브랜치된 마이크로 명령후의 마이크로 명령으로 마이크로 프로그램의 실행을 리턴하는 팝 마이크로 지령을 포함하는 마이크로 명령 U에 이를때까지, 그것의 마이크로 명령의 실행을 계속한다. 마이크로 명령 U의 POP 마이크로 지령을 리턴 어드레스 스택(70)을 한 로케이션씩 팝하여 어드레스 P+1가 어드레스 멀티플렉서(60)와 어드레스 멀티플렉서 2(62)을 거쳐 ROS 어드레스 레지스터(63)로 로우드 되게 한다. 이라하여 ROS(24)내의 로케이션 P+1에 위치된 마이크로 명령이 ROS 데이타 레지스더(65)로 로드되어 실행된다. 따라서 마이크로 프로그램의 실행은 마이크로 명령 P+1의 ROS 어드레스난에 의해 어드레스된 다음번 마이크로 명령에 앞서서 주 루틴(100)내의 마이크로 명령 P+1으로 계속할 것이다.
제4도에 도시한 실시예를 참조로 한 상기 설명에서 알 수 있는 바와 같이, 서브 루틴으로 브랜칭 하는것과 관련된 마이크로 코드된 각각의 명백한 PUSH 마이크로 지령은, 한 하드웨어 인터럽트에 반응하는것과 관련된 각각 암시적으로 실행되는 푸쉬 동작에서처럼, 리턴 어드레스 스택(70)이 한 로케이션씩 푸쉬다운 되게 한다. 전술한 바와 같이, 상기 예에서 리턴 어드레스 스택은 3개의 레벨로 푸쉬 되었으므로, 제1의 푸쉬는 명령 P가 제1레벨 서브 루틴으로 브랜치 될때 발생하고 제2의 푸쉬는 멍령 R이 제2의 레벨서브 루틴으로 브랜치될때 발생하고 제3의 푸쉬는 제1의 하드웨어 인터럽트 서비스 루틴으로 벡터링을 준비하는 명령 S중에 발생한다.
제4도의 예에서, 리턴 어드레스 스택(70)의 팝핑은 3번 일어나는데, 첫번째 팝핑은 마이크로 명령 X의 제1하드웨어 서비스 루틴의 완료시에 일어나며, 제2의 마이크로 명령 Z의 실행중에 제2의 하드웨어 인터럽트 서비스 루틴의 종료에서 일어나며, 제3의 팝핑은 제1레벨 서브 루틴이 주 루틴으로 복귀할때 마이크로 명령 U의 실행중에 일어난다. 마이크로 명령 T에 의해 서브 루틴된 제2레벨의 마지막에서 통상 수행되는 팝 동작은 제2하드웨어 인터럽트 서비스 루틴으로 벡터링 하는 것과 관련된 암시적인 푸쉬 동작에 의해 취소되어서 마이크로 명령 Y로 실행이 시작된다.
이제 제5도에 도시한 상세한 회로도를 참조하면, 이전에 사용된 동일한 참조 번호는 하드웨어 구성의 동작에 필요한 회로에 부가하여 도시하였다. 제5도에서, 여러 소자들의 입력과 출력에 있는 작은 원형들은 그 입력이나 출력을 반전시킴을 표시한다.
제5도에서, 리턴 어드레스 스택(70)은 텍사스 인스트루먼트시에서 제조되고 그들의 데이타 북 "디자인엔지니어를 위한 TTL 데이타 북"2판(1976)에 기술된 SN74LSl94형의 4비트 쌍방향성 유니버설 시프트 레지스터 12개로 구성되어 있다. 여기서 리턴 어드레스의 최상위 비트를 홀드하고 있는 시프트 레지스터(70A)와 최하위 비트 이전까지 홀드하고 있는 시프트 레지스터(70K)와 최하위 비트를 홀드하고 있는 시프트 레지스터(70L)는 실제 도시되었지만 레지스터(70B) 내지 레지스터(70J)는 편의상 간략을 위해 도시를 생략하였다. 이런 어드레스의 레지스터(71-74)는 각각 1비트가 시프트 레지스터(70A-70L)에 저장되어 있다.
푸시다운 스택으로서 사용되는 12개 4비트 레지스터에 의한 방법은 이하 상세히 기술되었다.
제5도에서, 마이크로 프로세서(30)를 포함하는 다양한 유니트에 의해 실행되어질 마이크로 명령을 저장하는 판독 전용 메모리(24)는 ROS 어드레스 레지스터(63)의 내용에 의해서 어드레스 되어진다. 이것은 어드레스에 의해 지정된 로케이션의 내용이 ROS 데이타 레지스터(65)내로 판독되도록 한다.
제5도에서, ROS 데이타 레지스터(65)는 제5도와 관련하여 설명되는 3개의 개벌적인 마이크로 명령들을 포함하는 것으로 도시된다. 실제 동작에서, 이들 마이크로 명령중 오직 어느 하나가 ROS 데이타 레지스터(65)내의 주어진 시간에서 제공되어진다. 최상부 마이크로 명령은 마이크로 명령 S로 점프하도록 수행되고 PUSH 마이크로 지령을 포함한다. 이 마이크로 명령은 제4도의 마이크로 명령을 표시하는 것으로 제2레벨 서브 루틴(104)으로 브랜치 한다. 중간의 마이크로 명령은 마이크로 명령내에서 하드웨어 인터럽트(HI)를 2진수 1로 세팅함으로써 금지되어진 하드웨어 인터럽트를 가지지 않는 어떤 마이크로 명령일 수 있다.
최하부의 마이크로 명령은 ROS 어드레스난내의 POP 마이크로 지령을 포함하는 마이크로 명령이며 제4도에 U, T, X, Z와 같은 POP 명령중의 어느 하나일 수 있다. 이 POP 마이크로 명령은 서브 루틴 또는 하드웨어 인터럽트 서비스 루틴으로부터 리턴을 하는데 사용된다.
액세스될 다음 어드레스를 포함하는 마이크로 명령 워드와, 마이크로프로세서(30)의 서브 시스템을 제어하기 위한 다음 지령의 난들을 제1도 및 2도에 도시된 기능 유니트들에 의해 전송 및 디코드된다. 각각의 기능 유니트는 시스템 타이밍 동작의 제어하에 마이크로 명령 워드로 지정된 필수 서브 지령을 해독하기 위한 논리 회로들을 갖는다.
제1레벨 서브루틴(102)의 푸쉬(PUSH) 및 금지(INH) 마이크로 지령으로 S마이크로 명령으로 브랜치를 수행함으로써 제2레벨 서브 루틴(104)을 호출하면, 뒤이은 시퀀스가 발생한다. 즉, 브랜치 마이크로 명령이 판독전용 메모리(24)로부터 독출되고 ROS 데이타 레지스터(65)내로 로우드되고, 브랜치 동작은 독출동작에 뒤따른 주기내에서 일어나며 비트위치 ZERO 내의 2진수 1을 가지는 ROS 어드레스 난으로부터 발생된다. 브랜치 마이크로 명령 워어드는 또한 PUSH 마이크로 지령과 금지 하드웨어 인터럽트 마이크로 지령을 가지며, 후자는 각각 리턴 어드레스 스택(70)으로 리턴 어드레스를 저장시키고 하드웨어 인터럽트를 금지시킨다.
더욱 상세히, JUMP 마이크로 지령은 ROS 어드레스 필드의 비트위치 0으로부터 2진수 1을 수신하고 신호 JUMP와 같은 2진수 0을 출력시키는 인버터(87)에 의해 디코드 된다. 상기 신호는 드라이버(60A)의 출력 인에이블(F) 입력에 연결되며 드라이버(60A)의 입력을 그 출력에서 인에이블 시켜서 어드레스 멀티플렉서 1(60)의 출력이 S 마이크로 명령의 어드레스를 포함하는 ROS 어드레스 난의 비트(1-12)로 되게한다.드라이버(60A)는 어드레스 멀티플렉서 1(60)를 포함한 버스 드라이버들중 하나만이 어느 주어진 시간에 인에이블 되는 출력을 갖는 3상태 출력들을 갖는 타입의 한 버스드라이버이다. 어드레스 멀티플렉서 1(60)는 제5도에 도시한 드라이버(60A, 60B) 이상의 것으로 구성되며 도시된 것 이외의 다른 입력들을 포함하고 있음을 주지하여야 한다.
어드레스 멀티플렉서 2(62)의 A 입력에서 어드레스 멀티플렉서 1(60)의 출력은 2진수 1로 되는 셀렉트 입력(SEL)에 의해 선택된 것이므로 어드레스 멀티플렉서 2(62)의 출력은 ROS 어드레스 난의 비트(1-12)에서 나타나는 마이크로 명령 S의 어드레스가 될 것이다. 멀티플렉서 2(62)의 출력은 ROS 어드레스 레지스터(63)에 로우드되어 명령 S가 판독 전용 메모리(24)에서 어드레스 지정된다.
어드레스 멀티플렉서 2(62)의 리턴 멀티플렉서(61)의 셀렉트입력(SEL)에서 나타나는 셀렉트 입력신호 LDRSAR+는 멀티플렉서(62, 61)의 A 및 B 입력사이에서 선택되도록 사용된다. 엔코더(54)의 출력 Q1 내지 Q8중의 하나가 2진수 0의 상태에 있으면 하드웨어 인터럽트 프리넷 엔코더(54)의 액티브 출력(P)에 나타나는 신호 LDRSAR+는 2진수 0의 상태로 될 것이다. 엔코더(54)의 출력 Q1-Q8중의 하나가 0이 되는경우는 만일 입력 I0 내지 I10중의 하나가 2진수 0상태에 있고 엔코더(54)의 인에이블 입력(EI)의 입력 인에이블 신호 DISHIP+가 2진수 0의 상태로 될때이다.
본 발명의 양호한 실시예에서, 하드웨어 인터럽트 프리넷 엔코더(54)는 텍사스 인스트루먼트사에서 제조하고 그들이 발생한 "디자인 엔지니어를 위한 TTL 데이타 북(제2판)"에 기재된 2개의 캐스케이드 형태로된 SN 74148 8라인과 -3라인 프라이어티 엔코더로 구성된다. 엔코더(54)의 IO 입력은 하드웨어 클리어 조건동안 2진수 0일 될 신호 CLEARX-에 접속된다. 다른 입력신호 I1-I10들은 하드웨어 인터럽트 요구 또는 하드웨어 오류조건을 나타내는 여러가지 신호들에 접속된다. 그러나 이들 입력신호중 하나가 2진수 0상태일때마다 엔고더(54)는 2진수로 변환되는 출력 Q1-Q8상에 최우선 순위 하드웨어 인터럽트 또는 하드웨어 에러 요구 서비스에 해당하는 신호를 발생할 것이다.
ROS 데이타 레지스터(65)에 기재된 제1마이크로 명령이 하드웨어 인터럽트 금지난에서 2진수 1을 포함하기 때문에, 신호 RDDT 34+는 부분적으로 AND 게이트(84)를 인에이블링 시키는 2진수 1로 된다. 신호 CLEARX-는 그것이 클리어 상태가 아니기 때문에 역시 2진수 1로 된다. AND 게이트(84)의 제3입력, 신호 STOPIT+는 만일 아무런 하드웨어 에러상태가 나타나지 않는다면 2진수 1이 되어 AND 게이트(84)의 출력신호 DISHIP+는 2진수 1이되고 엔코더(54)의 출력을 디스에이블 시켜 신호 LDRSAR+를 2진수 1로 만든다.
제1마이크로 명령의 PUSH 마이크로 지령은 NOR 게이트(80, 81, 82)의 NAND 게이트(83), 인버터(85)에 의해 디코드된다. PUSH 서브지령은 마이크로 명령 워어드의 특별 제어난에서 A서브 필드는 2진수 000, B 필드는 XOXO 이진수(여기서 X 비트는 켄트케어(Can't Care)를 말함), C필드는 100이진수를 갖는것에 의해 지정된다. A서브 필드는 비트 35-37를 NOR 게이트(82)로 입력시킴으로써 디코드되며, 상기NOR 게이트의 출력은 만일 PUSH 서브지령이 지정된 것이면 2진수 1이 된다. 또한 B 서브 필드는 비트 39-41를 NOR 게이트(81)로 입력시킴으로써 디코드되며, 그 출력은 PUSH 서브 지령이 지정되었으면 2진수 1이 될 것이다. C서브 필드는 비트 42를 반전시킴으로써 또한 비트 43 및 44와 함께 그 출력을 NOR게이트(80)의 입력으로 사용함으로써 인버터(85)에 의해 디코드 된다. 만일 PUSH 서브지령이 특수 제어필드로 지정되었다면 NAND 게이트(83)로 가는 모든 3개의 입력은 2진수 1로 되고 그 출력의 신호 PUSHOP-가 2진수 0로 되게한다.
NAND 게이트(90)의 한 입력에서 2진수 0인 PUSH신호, PUSHOP-와, 그 게이트의 다른 입력에서 다른 입력에서 아무런 하드웨어 인터럽트도 계류중이거나 인에이블 되지 않음을 나타내는 2진수 0으로 되는 신호 LDRSAR+ 일때, NAND 게이트(90)의 출력의 신호 PUSHNT+는 데이타 레지스터(65)내에서 PUSH 마이크로 지령이 앤코드 되거나 하드웨어 인터럽트가 계류중이고 하드웨어 인터럽트들이 인에이블되기 때문에, 리턴 어드레스 스택(70) 상에서 푸쉬동작이 수행될 것이라는 것을 표시한다. 신호 PUSHNT+는 NAND 게이트(91)의 1입력이다. NAND 게이트(91)의 다른 입력은 OR 게이트(86)의 출력인 POPOP-신호를 입력으로 수신하는 인버터(89)에 의해 출력된 POPOP+신호이다.
ROS 어드레스 어드레스난의 비트 0-4는 POP 마이크로 지령을 디코드하는데 사용되는 OR 게이트(86)의 입력으로 들어간다. 만일 비트 0-4가 모드 2진수 0이면 OR 게이트(86)의 출력은 팝동작이 수행되어질 것임을 나타내는 2진수 0으로 될것이다. JUMP S 마이크로 명령의 비트 0가 2진수 1을 포함하고 있으므로, OR 게이트(86)의 출력은 인버터(88)의 출력을 2진수 0으로 만드는 2진수 1로 될것이다.
NAND 게이트(91)의 1입력에서 신호 POPOP+는 그것의 출력신호 PUSPOP-가 푸쉬 및 팝동작 모두가 동시에 요구되지 않았음을 지시하는 이진수 1로 되게한다. AND 게이트(92)의 양 입력이 2진수 1로 됨으로써 그 출력신호 PUSNOT+는 이진수 1로 될것이므로 푸쉬동작이 리턴 어드레스 스택(70)에서 처리될 것임을 나타내게 된다. OR 게이트(94)의 1입력에서 신호 PUSNOT+가 2진수 1로 됨으로써, 그 출력신호 PUSNEN+는 푸쉬동작이 리턴 어드레스 스택(70)에서 처리될것임을 나타내는 2진수 1로 될것이다.
또한, 팝동작 신호 POPOP+는 AND 게이트(93)의 1입력으로 들어간다. AND 게이트(93)의 양 입력이 2진수 0이 됨으로써, 그 출력실호 POPNOT+는 팝동작이 리턴 어드레스 스택(70)에서 수행되지 않을것을 나타내는 2진수 0이 될것이다. 클리어 동작이 수행되지 않기 때문에 인버터(89)의 출력신호 CLEARX+는 2진수 0이 될것이고, 따라서 OR 게이트(95)의 양 입력은 2진수 0이 되어 그것의 출력신호 POPNEN+가 팝 동작이 리턴 어드레스 스택(70)에서 수행되지 않을 것임을 나타내는 2진수 0이 되게한다.
신호 PUSHNEN+는 12개의 4비트 쌍방향성 시프트 레지스터 70A-70L 각각의 SO 시프트 모든 입력에 접속되어 있다. 유사하게 신호 POPNEN+는 상기 시프트 레지스터의 S1 시프트 모드입력에 접속된다. 시프트 모드 입력(S0, S1)은 상기 S0, S1 입력이 모두 2진수 0일때, 아무런 시프팅 즉, 시프트 레지스터의 병렬 로우딩이 그 시프트 레지스터의 클록(C) 입력의 클록킹 신호가 0에서 1상태로 전환될때 일어나지 않도록 2진 암호화 되어 있다. S0가 2진수 0이고 S1이 2진수 1이라할때, 좌측 시프트(팝) 동작은 시프트 레지스터가 클록될때 수행될 것이다. S0가 2진수 1이고 S1이 2진수 0일때, 우측 시프트(푸쉬) 동작은 시프트레지스터가 클록될때 수행된다. S0 및 S1 모두 2진수 1일 경우 각 시프트(레지스터 내의 모든 4비트 위치의 병렬로딩은, 클록이 2진수 0에서 2진수 1상태로 변화될때 이루어진다. 12개의 각 4비트 시프트 레지스터의 리세트 입력은 레지스터가 시스템 동작중에 리세트(클리어)되지 않으므로 2진수 1로 세트된다.
ROS 데이타 레지스터(65)내에서 현재 마이크로 명령을 실행하는 주기의 후기에 또는 다음 마이크로 명령의 어드레스 ROS 어드레스 레지스터(63)에 모드된 후에, 클록킹 신호 PSTROH+는 시프트 레지스터(70A 내지 70L)를 클록킹함으로써 이런 어드레스 히스토리 레지스터(66)를 클록(로우드)하는데도 쓰인다. 따라서, 리턴 어드레스를 리턴 어드레스 스택(70)으로, 이진수 0에서 이진수 1상태로 전환시키는 신호 PSTROB+에 의해 클록킹함으로써, ROS 어드레스 레지스터(63)에서 발견된 다음 어드레스를 사용해서 인출된 판독 전용 기억장치(24)내의 다음 로케이션의 어드레스는 다음 마이크로 명령의 실행에 있어서 초기에 현재 어드레스로서 사용하기 위해 ROS 어드레스 히스토리 레지스더(66)에 로우드될 것이다.
현재의 마이크로 명령의 실행에 있어서 초기에, 즉 ROS 어드레스 레지스터(63)에서 ROS 어드레스 히스토리 레지스터(66)로 어드레스 S를 클록하기 전에, ROS 어드레스 내역 레지스터(66)는 로케이션 S으로 점프를 지정하는 ROS 데이타 레지스터(65)내의 마이크로 명령(제4도에서는 마이크로 명령 R)의 어드레스를 포함한다. 따라서, 마이크로명령 R의 실행초기 ROS 어드레스 히스토리 레지스터(66)는 현재 어드레스 R를 포함할 것이고 또 인크리멘터(64)의 출력이 리턴 멀티플렉서(61)의 A입력에 나타나게 될 어드레스 R+1가 될 것이다. 상술한 바와 같이 JUMP S 마이크로 명령중에 선택신호 LDRSAR+는 2진수 1로 되어 리턴 멀티플렉서(61)의 A출력을 그 출력 Q로 인에이블 되게 만든다. 따라서, 신호 STKI00 내지 STKI11는 시프트 레지스터(70A 내지 70L)의 시프트 우측 직렬입력(RI)에서 나타나며, 이는 2진수 어드레스 R+1는 시프트 레지스터(70A-70L)를 우측 1자리씩 이동함으로써 리턴 어드레스 스택(70)내로 푸시될 것이다.
인터럽트를 금지하고 PUSH 마이크로 지령을 실행하는 JUMPS 마이크로 명령에 관한 제5도의 논리기능을 설명하였지만, 이제는 ROS 데이타 레지스터(65)내의 제2 및 제3마이크로 명령의 실행에 대해 논의 한다. 제5도에 도시된 제2 및 제3마이크로 명령은 모두 특수 제어난에서 푸쉬동작을 포함하지 않는다. 그러므로, PUSH 마이크로 지령을 디코드하는데 쓰이는 NAND 게이트의 출력은, 상기 두 명령 실행중에 푸쉬동작이 마이크로 명령내에서 암호화되지 않았음을 표시하도록 이진수 1로 될것이다.
제2마이크로 명령에 대해 논의하면, 비트위치 34의 하드웨어 인터럽트 금지비트는 하드웨어 인터럽트가 허용됨을 뜻하는 2진수 0이된다. 상기 2진수 0은 AND 게이트(84)의 중간 입력의 신호 RDDT 34+로서 나타나며, 그 출력신호 DISHIP+를 2진수 0으로 만들어 하드웨어 인터럽트 프리넷 엔코더(54)의 입력을 인에이블 시킨다. 만일 2진수 0상태의 하드웨어 인터럽트 신호들이 없고 또, 2진수 0상태의 하드웨어 에러신호도 없고, 클리어 상태도 존재하지 않는다면, 엔코더(54)의 모든 입력 IO-I10은 2진수 1상태로 되며 따라서 엔코더(54)의 P출력에서의 활성 출력신호 LSRLAR+는 2진수 1로 된다.
신호 LDRSAR+가 2진수 1이고, 신호 PUSHOP-가 푸쉬동작이 지정되지 않았음을 지시하는 이진수 1이면 NAND(90)의 출력신호 PUSHNT+는 2진수 0으로 될것인데 이는 PUSH 마이크로지령이 제공되지도 않고 또 하드웨어 인터럽트가 계류되지 않았기 때문에 푸쉬동작이 실행되지 않음을 나타낸다. AND 게이트(92)의 1입력이 2진수 0이면, 그 출력신호 PUSHOT+는 OR게이트(94)의 1입력에서 2진수 0으로 될것이다. OR게이트(94)의 다른 입력 신호 CLEAR+는 만일 클리어 동작이 실행되지 않으면 2진수 0으로 된다. 고로 OR게이트(94)의 출력신호 PUSHNEN+는 2진수 0으로 된다.
제2마이크로명령의 ROS 어드레스 난에서 팝동작이 지정되지 않으므로 인버터(88)의 출력신호 POPOP+는 팝동작이 지정되지 않았음을 나타내는 2진수 0으로 된다. 신호 POPOP+가 AND게이트(93)의 1입력에 2진수 0으로 됨으로써, 그 출력신호 POPOP+가 2진수 0으로 되게 만든다. OR게이트(95)의 양 입력이 2진수 0으로 됨으로써, 그 출력신호 POPNEN+는 2진수 0으로 된다. 시프트 레지스터(70A-70L)의 입력에서 시프트 모드신호 S0 및 S1가 2진수 0이 됨으로, 시프트 레지스터는 시프트 되지도 않고 신호 PSTROB+에 의해 클록되어 2진수 0에서 1상태로 전이할때 병렬로 로우드되지도 않았으며 따라서 상기 마이크로명령의 실행중에 푸쉬동작이나 팝동작이 실행되지 않는다.
상기 마이크로명령의 실행기간중에, 어드레스 멀티플렉서 2(62)로 가는 A입력은 선택신호 LDRSAR+가 상기한 바와 같이 2진수 1이기 때문에 그 출력 Q로 게이트된다. 따라서, 어드레스 멀티플렉서 1(60)의 출력은 ROS어드레스 레지스터(63)내로 로우드된다. 리턴 멀티플렉서(61)의 출력이 신호 PSTROB+에 의해 이진수 0상태에서 이진수 1상태로 전환하도록 스트로브될때 현재 마이크로명령의 실행중에 후기에, 다음 어드레스를 포함한 ROS어드레스 레지스터(63)의 출력은 ROS어드레스 히스토리 레지스터(66)로 로우드되고, 그후 인크리멘터(64)에 의해 1씩 증분된다. 그후에 다음 마이크로명령이 현재 마이크로명령과 같이 실행되면, ROS 어드레스 히스토리 레지스터(66)는 현재의 어드레스를 포함하고 인크리멘트(64)에 의해 발생된 현재 어드레스 +1이 리턴 멀티플렉서(61)의 A입력에 나타난다.
제2마이크로명령의 실행중에 하드웨어 인터럽트가 비트 34에 의해 인에이블되어 2진수 0으로 되면, 하드웨어 인터럽트가 발생한다. 엔코더(54)를 출력 P의 출력활성신호 LDRSAR+는 2진수 0으로 되어 하드웨어 인터럽트 또는 에러상태 또는 클리어 상태가 이미 발생되어 어드레스 멀티플렉서 2(62)의 B입력이 그 출력 Q로 인에이블됨을 나타낸다. 어드레스 멀티플렉서 2(62)의 B입력은 엔코더(54)로부터 암호화 된 비트Q 1 내지 Q8와, 8개의 최상위 비트들의 8개의 선두 이진수 0로 구성되어서 어드레스 멀티플렉서 2(62)의 Q출력이 특정 하드웨어 인터럽트나 하드웨어 에러나 클리어 상태를 처리하도록 미리 플로그램된 하드웨어 인터럽트 서비스 루틴의 초기 로케이션에 대응하는 12비트 이진 어드레스가 된다.
어드레스 멀티플렉서 2(62)의 출력은 ROS 어드레서 레지스터(63)의 입력이 되고 레지스터(63)의 출력은 판독전용 메모리(24)의 출력으로 되어서 하드웨어 서비스 루틴의 제1웨어드가 인출되어 실행되게 한다. 또한, 하드웨어 인터럽트 서비스 루틴의 제1웨어드의 어드레스는 신호 RSTROB+가 클록(2진수 0에서 1상태로 전이)될때 ROS 데이타 레지스터(65)의 제2마이크로명령의 실행중에 ROS데이타 레지스터(63)으로부터 어드레스 히스토리 레지스터(66)내로 로우드된다. 상기 어드레스가 ROS어드레스 레지스터(63)로부터 클록되어 ROS어드레스 히스토리 레지스터(66)로 감에 따라 이와 동시에 리턴 멀티플렉서(61)의 출력은 리턴 어드레스 스택(70)으로 푸쉬된다.
리턴 멀티플렉서(61)의 출력은 어드레스 멀티플렉서 1(60)의 출력이 되어, 리턴 멀티플렉서(61)의 B입력에 나타나는 명목상의 다음 마이크로명령 어드레스가 될 것이다. 상술한 바와 같이 리턴 멀티플렉서(61)의 B입력은 엔코더(54)로부터 활성출력이 있을때마다 선택신호 LDRSAR+가 2진수 0이기 때문에 그것의 Q출력상에 나타난다. OR(94)의 신호 PUSNEN+가 2진수 1이고 OR게이트(95)의 신호 POPNEN+가 2진수 0이므로 시프트 레지스터(70A-70L)는 푸쉬동작(우측 시프트)을 행한다. 신호 PUSNEN+는 2진수 1이고 신호 POPNEN+는 2진수 0인 까닭은, 후술되는 게이트(90-95)의 입력에 신호 POPOP+가 이진수 0, 신호 LDRSAT+가 이진수 0, 신호 CLEARX가 2진수 0, 신호 PUSHOP-가 2진수 1이기 때문이다.
제5도의 ROS 데이타 레지스터(65)에 있는 제3마이크로명령의 실행동안에, ROS어드레스 난에 지정된대로 팝 동작이 실행된다. 상기 팝동작은 OR게이트(86)에 의해 해독되는데, 그 출력신호 POPOP-는 2진수 0이 되어 팝동작이 수행될 것임을 나타낸다. 2진수 0인 신호 POPOP-는 어드레스 멀티플렉서 1(60)내의 드라이버(60B)의 출력을 인에이블시켜서 어드레스 멀티플렉서 2의 A입력이 시프트 레지스터(70A-70L)의 출력 OA에 해당하는 12비트의 신호 STK000-STK011가 되게 한다. 이들 12비트 신호는 리턴 어드레스 스택(70)내의 상위 어드레스에 해당한다. 드라이버(60A)의 출력은 2진수 1인 신호 JUMP-에 위해 디스에이블 된다. 그러므로, 어드레스 멀티플렉서 1(60)의 출력은 제4도의 레지스터(71)의 내용에 해당하는 리턴 어드레스 스텍(70) 내의 상위 어드레스가 될 것이다.
팝 마이크로명령의 실해중에는 아무런 하드웨어 인터럽트도 일어나지 않는다. 어드레스 멀티플렉서 2(62)의 A입력은 Q출력으로 선택되어서 판독전용 메모리(24)로부터 인출될 다음 명령의 어드레스를 지정하는 ROS어드레스 레지스터(63)내로 로우드된다. 하드웨어 인터럽트의 발생없이 일어나는 POP명령의 경우 판독 전용 기억장치(24)로부터 판독된 다음 명령은 리턴 어드레스 스택(70)내의 상단 로케이션에 의해 어드레스 지정된 명령일 것이다. 만일 아무런 하드웨어 인터럽트가 이런 POP 마이크로명령의 실행중의 발생하지 않는다면, 엔코더(54)에 의한 출력신호 LDRSAR+가 그것의 어느 출력도 활성이 아니라는 것을 나타내는 이진수 1이 될 것이다. 푸쉬동작이 특별 제어난에 지정 되지 않았기 때문에 NAND게이트(83)로부터의 신호 PUSHOP-는 이진수 1일 것이고, 따라서 NAND게이트 출력신호 PUSHNT+는 아무런 PUSH 동작도 실행할 수 없다는 것을 표시하는 이진수 0이 될 것이다. 만일 클리어 동작이 이진수 0인 신호 CLEARX+로 지시된 바와 같이 발생하지 않는다면, OR게이트(94)의 출력 PUSNEN+은 이진수 0이 될 것이고 OR게이트(95)의 출력신호 POPNEN+는 시프트 레지스터(70A 내지 70L)에 의해 좌측이동(팝)동작이 실행될 것이라는 것을 표시하는 이진수 1이 될 것이다. 이렇게 함으로써 신호 PUSTROB+가 이진수 0상태에서 이진수 1상태로 변할때 리턴 어드레스 스택(70)이 1로케이션씩 팝될 것이다.
시프트 레지스터(70A 내지 70L)의 촤측 이동 동작이 이렇게 발생하면, 상기 12개의 4비트 시프트 레지스터들의 이동 좌측 병렬 입력(LI)의 비트들은 그 시프트 레지스터들로 로우드 된다.
제5도에서 알 수 있듯이, 시프트 레지스티(70A-70K)는 상기 입력에서 이진수 0을 포함하고, 시프트레지스터(70L)는 상기 입력에서 이진수 0을 포함하기 때문에 그 결과 제4도의 리턴 어드레스 스택(레지스터(74)내의 촤하부 로케이션이 16진수 값으로 로우드 되어 001이 사용된다. 이 001값은 만일 이런 001 16진수 값이 스택의 상단에서 팝되버렸다면 발생할 스택의 오버 팝핑의 경우를 처리하도록 마이크로 프로그램된 루틴의 판독전용 기억장치(24) 내에서 한 어드레스로 쓰인다.
16진수 001의 ROS어드레스는 후술하는 바와 같은 클리어 동작이 수행될때 리턴 어드레스 스택(70)의 레지스터(71) 내지 (74)로 동시에 로우드 되는데, 상기 클리어 동작은, 레지스터(70A 내지 70K)의 PIA, PIB, PIC, PID입력들에 이진수 0을 입력시켜서, 시프트 레지스터(70A 내지 70K)의 모든 입력들을 이진 수 0으로 그리고 레지스터(70L)의 대응 입력들에 이진수 1로 병렬 로우딩함으로써 그리고 상기 레지스터들이 이진수 0에서 이진수 1상태로 클리어 동작중에 변하도록 PSTROB+에 의해 클록된때 이진수 0들과 신호 PUSNEN+ 및 POPNEN+가 같도록 함으로써 병렬 로우딩 함으로써 수행되는 것이다. 이것이 달성되는 이유는, 신호 CLEARX+가 클리어 동작시 OR게이트(94, 95)의 출력이 이진수 1이 되게함으로써 시프트 모드 선택신호 S0와 S1을 둘다 이진수 1로 세팅하기 때문이다.
제4도를 참조로 한 상기 설명과 같이, 하드웨어 인터럽트가 제5도에 도시한 제3의 마이크로명령과 같은 팝 동작을 포함하는 마이크로명령의 실행중에 일어난다면, 하드웨어 인터럽트와 관련된 푸쉬동작은 마이크로명령의 팝동작을 취소하여 리턴 어드레스 스택은 푸쉬되지도 팝되지도 않는다. 이것이 달성되는 방법이 제5도를 참조하여 설명된다.
ROS 어드레스 난의 팝동작을 포함하는 제3마이크로명령이 2진수 0의 하드웨어 인터럽트 금지 비트를 포함하면, 하드웨어 인터럽트는 팝 마이크로명령의 실행중에 일어날 수 있다. 상술한 바와 같이 팝 마이크로 지령을 포함하는 마이크로명령의 실행중에 드라이버 60B의 출력은 인에이블되어 어드레스 멀티 플렉서1(60의 출력이 리턴 어드레스 스택(70)의 상부에 포함된 리턴 어드레스가 될 것이다. 어드레스 멀티플렉서1(60)의 출력이 어드레스 멀티플렉서 2(62)의 A입력에 제공되고 또 리턴 멀티플렉서(61)의 B입력에도 제공된다. 만일 하드웨어 인터럽트가 발생한다면, 엔코더(54)로부터의 신호 LDRSAR+가 어드레스 멀티플렉서 2(62)의 리턴 멀티플렉서(61)의 B입력을 선택하는 이진수 0가 된다. 따라서, 어드레스 멀티플렉서 2의 출력은 하드웨어 인터럽트 서비스 루틴이 위치된 엔코더(54)에 의해 결정된 백터 어드레스가 될것이다. 리턴 멀티 플렉서(61)의 출력은 리턴 어드레스 스택(70)의 상단 출력인 드라이버(60B)의 출력이 될것이다.
따라서, ROS어드레스 레지스터(63)는 최우선 순위 인터럽트와 관련된 하드웨어 인터럽트 서비스 루틴의 초기 어드레스로 로우드 되고 그 로케이션은 하드웨어 인터럽트 서비스루틴의 실행을 시작하기 위해 판독전용 기억장치(24)로부터 인출될 것이다. 신호 LDRSAR+가 2진수 0이므로 NAND게이트(90)의 출력신호 PUSHNT+는 2진수 1로 되어 푸쉬동작이 리턴 어드레스 스텍(70)에서 수행되어야 함을 나타낸다. 팝마이크로명령이 ROS어드레스 난에서 엔코드되기 때문에 OR게이트(86)의 출력신호 POPOP-는 2진수 0이 되어 인버터(88)의 출력신호 POPOP+를 2진수 1로 만들어 팝 동작이 리턴 어드레스 스택(70)에서 수행되어야 함을 나타낸다. NAND게이트(91)의 양입력이 2진수 1로 됨으로써, 그 출력신호 PUSPOP-는 2진수 0으로 되어 푸쉬 및 팝 동작 모두가 리턴 어드레스 스택(70)에서 동시에 수행될 것임을 나타낸다.
이진수 0인 신호 PUSPOP-는 AND게이트(92, 93)를 디스에이블시키고 신호 PUSNOT+와 POPNOT+를 2진수 0으로 만들어 푸쉬 또는 팝 동작이 수행되지 않을 것임을 나타낸다. 클리어 동작이 수행되지 않고 있기 때문에, 신호 CLEAEX+는 2진수 0이될 것이고, 따라서 OR게이트(94, 95)의 출력이 2진수 0이 되어 시프트 레지스터(70A-70L)에서 시프트 또는 로우드 동작이 수행되지 않음을 나타낸다. 그러므로, 마이크로명령 내의 팝 마이크로 지령은 하드웨어 인터럽트의 푸쉬동작을 취소시켜 리턴 어드레스 스택(70)의 푸쉬나 팝, 또는 병렬로우딩을 수행하지 못하게 한다.
상술한 바에 따라, NAND게이트(91)는 푸쉬와 팝동작의 동시적인 발생을 검출하여 이러한 상태가 발생하면 리턴 어드레스 스택(70)의 동시 푸싱 및 팝핑을 금지할 수 있도록 하는데 쓰이는 것을 알 수 있다. 이상태는, 팝 마이크로 지경이 마이크로명령 내에서 엔코드되고 하드웨어 인터럽트가 그 조합이 스택을 어느 방향으로도 이동하지 못하게 할 경우에 발생할 수 있다. 전술한 바에 의해, 스택이 어떻게 스택의 오버 팝핑을 검출하는데 쓰이는 루틴의 어드레스를 가지고 팝될때마다 레지스터의 바닥에 로우드되고 어떻게 그 스택이 상기 스택내의 각 레지스터가 오버팝핑 서비스 루틴의 이러한 어드레스를 포함하도록 클리어 동작중에 초기화 되는가를 알 수 있을 것이다.
본 발명의 실시예가 도시되고 기술되었지만, 본 분야에 숙달 된 사람에 의해 수많은 변형이 이루어질 수 있다. 예를 들면, 하드웨어 인터럽트들이 하드웨어 서비스 루틴중에 금지되지 않는다면, 본 발명의 스택킹기구는 하드웨어 인터럽트들을 내포하도록 사용될 수 있다. 또한, 양호한 실시예가 4비트 시프트 레지스터를 사용했으나, 만일 보다 많은 비트를 갖는 레지스터가 사용된다면, 그 스택의 푸쉬 다운 깊이는 확장된 시프트 레지스터 내에서 비트들의 수와 동일하게 되어 서브 루틴 및 인트럽트들의 보다 큰 내포 깊이를 허용할 수 있다. 또한 미국특허 제3,909,797호에 기술된 플립플롭으로 구성된 레지스터를 포함한 스택기구도 본 발명의 양호한 실시예의 시프트 레지스터 대신에 사용될 수 있는데, 이 경우 동시 푸쉬 및 팝동작을 하려는 것을 검출하는데 사용되는 본 발명의 논리부가 푸쉬 또는 팝동작 어느 것도 하지 못하도륵 사용된다는 것을 가정할 경우이다.
서브루틴에 대한 ROS어드레스난은 조건적 또는 비조건적 브랜치일 수도 있음을 이해해야 한다. 이점은 지금까지 설명한 시스템의 장점인데, 그 이유는 다음 어드레스가 판독전용 기억장치(24)로부터 마이크로명령들의 ROS어드레스 난에 의해 연속적으로 제공되기 때문이다. 그럼에도 불구하고 그것은 시퀀스 카운터가 사용되는 그러한 어드레싱 방법에도 적용할 수 있다. 두 어드레스 지정방법은 만일 브랜치가 서브루틴으로 되지 않는다면 실행될 다음 명령의 어드레스를 기억할 수 있도록 PUSH 마이크로 지령의 사용을 필요로 한다.
본 발명은 양호한 실시예를 참조하여 설명되었지만 본 발명은 여기에 제한되지 않는 것으로서, 본 발명의 기술분야에 속한 기술자들에 의해 본 발명의 기술사상과 범위를 벗어남이 없이 여러가지 변경이 가능함을 이해해야 한다.

Claims (10)

  1. 스브루틴 및 인터럽트 서비스루틴으로 그리고 서브루틴 및 인터럽트 서비스 루틴으로부터 전송하기위한 방법에 있어서, A. 서브루틴으로서의 브랜치를 식별하는 메모리(24)로부터 루틴의 제1마이크로명령을 발생시키는 단계와; B. (a) 금지 가능한 인터럽트의 발생을 금지시키는 단계와, (b) 현재 어드레스 레지스터(66) 내의 상기 제1마이크로명령의 현재 어드레스를 인크리멘터(64)에 전송하는 단계와, (c) 증분된 어드레스를 발생시키도록 상기 현재 어드레스를 증분하는 단계와, (d) 리턴 어드레스인 상기 증분된 어드레스를 푸쉬 다운 스택(70)의 제1레지스터(71)에 기억 시키는 단게와, (e) 상기 증분된 어드레스를 기억시킴과 동시에 상기 푸쉬 다운 스택에서 한 레벨 낮게 인접 레지스터(72, 73, 74)에 이전의 리턴 어드레스를 전송하는 단계와, (f) 계류된 인터럽트가 없거나 모든 계류중인 인터럽트가 금지되면, 상기 제1마이크로명령내의 다음 어드레스를 다음 어드레스 레지스터(63)로 전송하는 단계와, (g)상기 다음 어드레스 레지스터(63) 내의 상기 다음 어드레스를 상기 현재 어드레스 레지스터(64)로 전송하는 단계와, (h) 상기 다음 어드레스 레지스터(63)로부터의 상기 다음 어드레스를 사용하여 상기 메모리(24)로부터 서브루틴의 제1마이크로명령인 제2마아크로명령을 발생시키는 단계를 포함하는 서브루틴으로의 브랜치를 실행하는 단계와; C. (a) 계류중의 비-금지 인터럽트가 있으면 최우선순위 비-금지 계류 인터럽트의 벡터 인터럽트 어드레스를 발생시키는 단계와, (b) 인터럽트들이 금지되지 않으면 상기 다음 어드레스 레지스터(63)로 상기 벡터 인터럽트 어드레스를 전송하는 단계와, (c) 인터럽트가 금지되지 않으면 상기 리턴 어드레스인 현재 마이크로명령으로부터의 다음 어드레스를 상기 푸쉬 다운 스택의 상기 제1레지스터(71)로 기억시키는 단계와, (d) 상기 리턴 어드레스를 기억시키는 동시에 상기 푸쉬 다운 스택(70) 내에서 한단계 낮게 인접 레지스터(72, 73, 74)들로 이전의 리턴 어드레스를 전송하는 단계와, (e) 상기 다음어드레스 레지스터(63)내의 상기 벡터 인터럽트 어드레스를 상기 현재 어드레스 레지스터(66)로 전송하는 단계와, (f) 상기 다음 어드레스 레지스터(63)로부터의 상기 벡터 인터럽트 어드레스를 사용하여 상기 메모리(24)로부터 제1인터럽트 서비스 루틴의 제1마이크로명령인 제3마이크로명령을 발생시키는 단계를 포함하는 인터럽트 서비스 루틴으로 인터럽트를 발생시키는 단계와; D. 상기 서브루틴 또는 상기 인터럽트로부터의 리턴을 식별하는 상기메모리(24)로부터 마이크로명령을 발생시키는 단계와; E. (a) 계류중인 인터럽트가 없거나 모든 계류 인터럽트가 금지되면 상기 푸쉬 다운 스택(70)내의 상기 제1레지스터(71)로부터의 상기 리턴 어드레스를 상기 다음 어드레스 레지스터(63)로 전송하는 단계와, (b) 상기 다음 어드레스 레지스터(63)로 상기 리턴 어드레스를 전송하는 동시에 상기 푸쉬 다운 스택(70)내에서 한 레벨 높게 상기 인접레지스터(71, 72, 73)로 이전의 리턴 어드레스를 전송 하는 단계와, (c) 계류중인 비-금지 인터럽트가 있으면 상기 최우선 순위 비-금지 계류 인터럽트의 벡터 인터럽트 어드레스를 발생시키는 단계와, (d) 인터럽트들이 금지되지 않으면 상기 벡터 인터럽트 어드레스를 상기 다음 어드레스 레지스터(63)로 전송하는 단계와, (e) 계류중인 비-금지 인터럽트가 없으면 서브루틴으로 브렌치하는 마이크로명령의 연속 마이크로명령인 제4마이크로명령을 발생시키고, 상기 계류중인 비-금지 인터럽트가 있으면 상기 다음 어드레스 레지스터(63)로부터의 어드레스를 사용하여 상기 메모리로(24)부터 연속하는 인터럽트 서비스 루틴의 제1마이크로명령을 발생시키는 단계를 포함하는 상기 서브루틴 또는 인터럽트로부터 리턴을 실행하는 단계를 구비하는 것을 특징으로 하는 서부루틴 및 인터럽트 서비스루틴으로/로부터 전송방법.
  2. 다수의 서브루틴을 액세스하는 루틴을 실행하고, 다수의 인터럽트에 응답하여 다수의 인터럽트 서비스 루틴을 실행하기 위한 데이타 처리시스템(10, 20, 40)에 있어서, A. 상기 서브루틴으로의 브랜치를 지정하는 제1형태의 마이크로명령과 상기 서브루틴 또는 인터럽트 서비스 루틴으로부터의 리턴을 지정하는 제2형태의 마이크로명령으로서, 마이크로명령의 어드레스를 정의 하는 어드레스 필드와 전송 경로를 정의한 지령 필드를 각각 포함하는 마이크로명령의 시퀀스를 제공하기 위한 수단(24, 63, 65)과; B. 인터럽트 서비스 루틴의 개시 어드레스로서 사용된 상기 제공수단(24, 63, 65)으로 벡터 인터럽트 어드레스를 제공하여 비금지된 인터럽트 발생에 응답하여 상기 제공수단(24)에 의해 제공된 마이크로명령의 시퀀스를 변경하기 위한 수단(58, 59, 62)과; C. (a) 한 레지스터(71)는 최상부에 있고, 다른 한 레지스터(74)는 최하부에 있으며, 나머지 레지스터들(72, 73)은 상기 최상부(71)와 상기 최하부(74)중간에 있어서 하나의 리턴 어드레스를 유지하도록 직렬로 상호 결합된 다수의 레지스터(71-74)와, (b) 상기 최상부(71) 및 상기 나머지 레지스터(72, 73, 74)에 결합되고 상기 제공수단(24, 63, 65)에 응답하여 상기 다수의 레지스터(71, 72, 73, 74)의 상기 최하부(74)로 리턴 어드레스를 직렬로 전송하기 위한 제1수단과, (c) 상기 최하단(74) 및 상기 나머지 레지스터(71, 72, 73)에 결합되고 상기 제공수단(24, 63, 65)에 응답하여 상기 다수의 레지스터(71, 72, 73, 74)의 최상부(71)로 리턴 어드레스를 직렬로 전송하기 위한 하부수단을 포함하여, 상기 최상부 레지스터(71)에서 이전의 루틴 및 서브루틴의 리턴 어드레스를 순차적으로 기억하기 위해 상기 한 형태의 마이크로명령과 비-금지 인터럽트 발생에 대해 음답하는 기억수단(70)과; D. 상기 리턴 어드레스의 역순서로 상기 기억수단(70)의상기 최상부 레지스터(71)로부터 상기 제공수단(24, 63, 65)에 순차적으로 전송하기 위해 일련의 상기 제2형태의 마이크로명령에 응답하는 전송수단(60, 62)을 구비하는 것을 특징으로 하는 데이타 처리시스템.
  3. 제2항에 있어서, 상기 마이크로명령의 상기 지령필드에서 제1지령필드는 상기 전송수단(60, 62)으로부터 상기 리턴 어드레스를 수신하는 상기 기억수단(70)을 인에이블하기 위한 제1값을 가지며, 상기 마이크로명령의 상기 어드레스 필드에서 제1어드레스 필드는 상기 전송 수단(60, 62)에 상기 리턴 어드레스를 전송하는 상기 기억수단(70)을 인에이블 하기 위한 제1값을 갖는 것을 특징으로 하는 데이타 처리시스템.
  4. 제3항에 있어서, 상기 제공수단(24, 63, 65)의 상기 어드레스를 선정될 값으로 증분하기 위한 수단(64)을 추가로 포함하며, 상기 최상부 레지스터(71)는 제1지령 필드의 제1값에 응답하여 상기 증분수단(64)으로부터 상기 증분된 어드레스를 수신하는 것을 특징으로 하는 데이타 처리시스템.
  5. 제4항에 있어서, 비-금지 인터럽트가 상기 서브루틴 또는 인터럽트 서비스 루틴으로부터 리턴을 지정하는 상기 제2형태의 마이크로명령시에 발생하면, 상기 최상부 레지스터(71)로부터 상기 리턴 어드레스를 제공수단(24, 63, 65)으로 전송할 수 없도륵 기억수단(70)을 디스에이블시키기 위한 수단(90-95)을 아울러 포함하는 것을 특징으로 하는 데이타 처리시스템.
  6. 루틴 및 서브루틴을 순차적으로 액세스하고, 인터럽트 서비스루틴을 액세스하기 위한 데이타 처리시스템에 있어서, A. 마이크로명령들의 시퀀스를 제공하기 위한 제공 수단(24, 65)을 구비하는데, 각 마이크로명령어드레스는 상기 제공수단내의 어드레스로 어드레스 지정되고, 각 마이크로명령은 상기 제공수단의 마이크로명령의 다음 어드레스를 정의하는 어드레스 필드와 전송경로를 정의하는 지령필드를 포함하고, 상기 어드레스 필드의 제 1어드레스 필드는 상기 서브루틴으로 브랜치를 지정하는 제1값과 상기 서브루틴 또는 인터럽트 서비스 루틴으로부터 리턴을 지정하는 제2값을 가지며, 상기 지령필드의 제1지령필드는 리턴어드레스의 전송을 지정하는 제1값을 가지며, 상기 지령필드의 제2지령필드는 인터럽트들의 금지를 지정하는 제1값과 인터럽트들의 인에이블링을 지정하는 제2값을 가지며 ; B. 다음 어드레스가 될 어드레스를 상기 제공수단으로부터 수신하기 위한 수신수단(63)을 또한 구비하며 ; C. (a) 한 레지스터가 상부 레지스터이고 다른 하나가 하부레지스터이며 나머지 레지스터들은 상기 상부 및 하부 레지스터 사이의 중간 레지스터이고 각각이 하나의 리턴 어드레스를 보유하는 다수의 레지스터(71-74)들과, (b) 상기 상부 및 상기나머지 레지스터들에 결합되고 제1값을 가진 상기 제1지령필드에 응답하여 직렬로 상기 리턴 어드레스를 상기 다수의 레지스터들중 상기 하부 레지스터에 전송하는 제1수단(80-85, 90-95)과, (c) 상기 하부 및 나머지 레지스터들에 결합되고 상기 제2값을 갖는 상기 제1어드레스 필드에 응답하여 직렬로 상기 리턴어드레스를 상기 다수의 레지스터들중 상기 상부 레지스터에 전송하는 제2수단(86, 88, 90-95)과, (d) 상기 제1값을 가진 상기 제1어드레스 필드와 상기 제1값을 가진 상기 제1지령필드에 응답하여 상기 리턴어드레스를 수신하는 상기 상부 레지스터(71)를 포함하는 기억수단(70)을 또한 구비하며 ; D. 상부레지스터(71)로부터 다음 어드레스가 될 상기 리턴 어드레스를 상기 수신수단(65)에 전송하기 위해 상기 제2값을가진 상기 제1어드레스 필드에 응답하는 전송수단(60, 62)을 추가로 구비하는 것을 특징으로 하는 데이타 처리시스템.
  7. 제6항에 있어서, 기억수단(70)은 제2값을 갖는 제1어드레스 필드와 제2값을 갖는 제2지령필드와, 비-금지 인터럽트의 발생에 응답하여 상기 상부(71), 하부(74), 나머지 레지스터들(72, 73)에 내장된 리턴 어드레스를 유지하는 제1수단(86)을 아울러 포함하는 것을 특징으로 하는 데이터 처리시스템.
  8. 기억 유니트(24)의 어드레스 지정 가능한 로케이션에 기억된 마이크로명령들의 여러 시퀀스를 실행하는 마이크로 프로그램 된 제어기억부에 의해 제어되고 상기 기억 유니트의 다수의 어드레스들을 보유하기위한 푸쉬다운 스택을 구비한 데이타 처리기에서, 상기 마이크로명령의 시퀀스로부터 인터럽트 서비스루틴으로 상호 혼합된 서브 루틴 브랜칭 및 엔트리를 인에이블하기 위해 상기 데이타 처리기를 제어하기 위한 장치에 있어서, 제1마이크로명령의 어드레스를 증분하고 그 증분된 어드레스를 상기 스택의 상부로 푸싱하기 위해 실행중의 루틴 또는 서브루틴으로부터 지정된 서브루틴으로 전송을 지시하는데 1마이크로명령을 실행하면서 제어되는 수단(64)과 ; 제2마이크로명령의 실행중에 발생된 다음 어드레스를 상기 스택의 상부로 푸싱하고 자신의 제1어드레스가 상기 인터럽트의 성질에 따라 결정되는 마이크로 서비스 루틴으로 동작을 전송하기 위해 인터럽트 발생시에 상기 제2마이크로명령을 실행하면서 제어되는 수단(60, 61)과 ; 상기스택을 팝 업하여 상기 스탭의 상부로부터 수신된 어드레스를 상기 서브루틴 또는 서비스 루틴이 들어온 루틴 또는 서브루틴으로 다시 들어오기 위한 리턴 어드레스로서 사용하기 위해 각 상기 서브루틴 및 서비스루틴의 최종 마이크로명령에 의해 제어되는 수단을 구비하는 것을 특징으로 하는 데이타 처리기 제어장치.
  9. 제8항에 있어서, 서브루틴내의 상기 최종 마이크로명령의 동시 실행과, 상기 스택의 팝핑업을 금지하기 의한 인터럽트 발생에 의해 인에이블 되는 수단을 아울러 포함하는 것을 특징으로 하는 데이타 처리기 제어장치.
  10. 제8항에 있어서, 상기 장치가 특정 인터럽트들에 응답하는 것을 금지 시키기 위해 상기 제1마이크로명령에 응답하는 수단을 아울러 포함하는 것을 특징으로 하는 데이타 처리기 제어장치.
KR1019830005727A 1982-12-03 1983-12-03 서브 루틴 및 인터럽트용 프로그램 카운터 스택킹 방법 및 장치 KR900007565B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US446748 1982-12-03
US06/446,748 US4488227A (en) 1982-12-03 1982-12-03 Program counter stacking method and apparatus for nested subroutines and interrupts

Publications (2)

Publication Number Publication Date
KR840007187A KR840007187A (ko) 1984-12-05
KR900007565B1 true KR900007565B1 (ko) 1990-10-15

Family

ID=23773700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019830005727A KR900007565B1 (ko) 1982-12-03 1983-12-03 서브 루틴 및 인터럽트용 프로그램 카운터 스택킹 방법 및 장치

Country Status (11)

Country Link
US (1) US4488227A (ko)
EP (1) EP0111407B1 (ko)
JP (1) JPH0666051B2 (ko)
KR (1) KR900007565B1 (ko)
AU (1) AU573194B2 (ko)
BR (1) BR8306655A (ko)
CA (1) CA1205564A (ko)
FI (1) FI83458C (ko)
HK (1) HK64292A (ko)
SG (1) SG67692G (ko)
YU (1) YU45579B (ko)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4636944A (en) * 1984-01-17 1987-01-13 Concurrent Computer Corporation Multi-level priority micro-interrupt controller
US4792890A (en) * 1985-12-31 1988-12-20 International Business Machines Corp. Method for resolving conflicts between interrupt sources sharing the same priority level
US5161217A (en) * 1986-10-14 1992-11-03 Bull Hn Information Systems Inc. Buffered address stack register with parallel input registers and overflow protection
JPS63108457A (ja) * 1986-10-24 1988-05-13 Brother Ind Ltd デ−タ処理装置
US4800491A (en) * 1986-11-17 1989-01-24 General Electric Company Register-stack apparatus
US5179688A (en) * 1987-06-30 1993-01-12 Tandem Computers Incorporated Queue system with uninterrupted transfer of data through intermediate locations to selected queue location
US5193205A (en) * 1988-03-01 1993-03-09 Mitsubishi Denki Kabushiki Kaisha Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
US4965716A (en) * 1988-03-11 1990-10-23 International Business Machines Corporation Fast access priority queue for managing multiple messages at a communications node or managing multiple programs in a multiprogrammed data processor
US5287483A (en) * 1988-07-06 1994-02-15 Kabushiki Kaisha Toshiba Prefetched operand storing system for an information processor
US5321823A (en) * 1988-07-20 1994-06-14 Digital Equipment Corporation Digital processor with bit mask for counting registers for fast register saves
US5117498A (en) * 1988-08-19 1992-05-26 Motorola, Inc. Processer with flexible return from subroutine
US5043879A (en) * 1989-01-12 1991-08-27 International Business Machines Corporation PLA microcode controller
JPH02190937A (ja) * 1989-01-19 1990-07-26 Sanyo Electric Co Ltd マイクロコンピュータの割り込み回路
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
DE69114321T2 (de) * 1990-02-20 1996-07-18 Nec Corp Zum Durchführen der Unterbrechungsverschachtelungsfunktion geeignetes Unterbrechungssteuerungsgerät.
JPH0437927A (ja) * 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
US5175853A (en) * 1990-10-09 1992-12-29 Intel Corporation Transparent system interrupt
JP2507833B2 (ja) * 1990-12-25 1996-06-19 三菱電機株式会社 マイクロコンピュ−タ
US5455949A (en) * 1991-09-06 1995-10-03 International Business Machines Corporation Method for representing and signaling run-time program conditions
JPH0831041B2 (ja) * 1991-09-06 1996-03-27 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラム条件処理方法およびコンピュータ・システム
JP3182438B2 (ja) * 1991-10-28 2001-07-03 株式会社日立製作所 データプロセッサ
US5448707A (en) * 1991-10-29 1995-09-05 Intel Corporation Mechanism to protect data saved on a local register cache during inter-subsystem calls and returns
US5274817A (en) * 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
JP3211423B2 (ja) * 1992-10-13 2001-09-25 ソニー株式会社 分岐命令実行方法および分岐命令実行装置
US5640548A (en) * 1992-10-19 1997-06-17 Motorola, Inc. Method and apparatus for unstacking registers in a data processing system
US5450349A (en) * 1992-10-27 1995-09-12 Digital Equipment Corporation Computer system performance evaluation system and method
JPH0749790A (ja) * 1993-06-01 1995-02-21 Matsushita Electric Ind Co Ltd プロセッサにおける割り込み制御方法及び割り込み制御回路
US5396616A (en) * 1993-06-15 1995-03-07 Xerox Corporation System for emulating multi-tasking pipelines in a single tasking environment
US5701479A (en) * 1993-06-15 1997-12-23 Xerox Corporation Pipelined image processing system for a single application environment
US5995996A (en) * 1993-06-15 1999-11-30 Xerox Corporation Pipelined image processing system for a single application environment
US5553259A (en) * 1993-07-16 1996-09-03 Unisys Corporation Apparatus and method for synchronizing the simultaneous loading of cache program word addresses in dual slice registers
US5922070A (en) * 1994-01-11 1999-07-13 Texas Instruments Incorporated Pipelined data processing including program counter recycling
US5537541A (en) * 1994-08-16 1996-07-16 Digital Equipment Corporation System independent interface for performance counters
US5671422A (en) * 1994-11-14 1997-09-23 Intel Corporation Method and apparatus for switching between the modes of a processor
JP3504355B2 (ja) * 1994-12-06 2004-03-08 松下電器産業株式会社 プロセッサ
US6081880A (en) * 1995-03-09 2000-06-27 Lsi Logic Corporation Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file
US6052801A (en) * 1995-05-10 2000-04-18 Intel Corporation Method and apparatus for providing breakpoints on a selectable address range
US5966529A (en) * 1995-05-15 1999-10-12 Zsp Corporation Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution
US5659679A (en) * 1995-05-30 1997-08-19 Intel Corporation Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system
US5740413A (en) * 1995-06-19 1998-04-14 Intel Corporation Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
US5621886A (en) * 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
KR100381876B1 (ko) * 1995-07-03 2003-07-18 텍사스 인스트루먼츠 인코포레이티드 프로그램카운팅시스템및카운터의동작방법
US5732272A (en) * 1995-07-31 1998-03-24 Apple Computer, Inc. Subroutine execution time tracer
US5900025A (en) * 1995-09-12 1999-05-04 Zsp Corporation Processor having a hierarchical control register file and methods for operating the same
DE19535546B4 (de) * 1995-09-25 2004-04-08 Siemens Ag Verfahren zum Betreiben eines durch ein Realzeit-Betriebssystem gesteuerten Realzeit-Computersystems
CA2159979C (en) * 1995-10-05 1999-05-25 Arthur Lai Methology to link any pci rom based device using a single software or hardware interrupt vector in pc system at runtime
JP2850808B2 (ja) * 1995-10-31 1999-01-27 日本電気株式会社 データ処理装置およびデータ処理方法
US5606703A (en) * 1995-12-06 1997-02-25 International Business Machines Corporation Interrupt protocol system and method using priority-arranged queues of interrupt status block control data structures
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer
US6070218A (en) * 1998-01-16 2000-05-30 Lsi Logic Corporation Interrupt capture and hold mechanism
US6065088A (en) * 1998-08-31 2000-05-16 International Business Machines Corporation System and method for interrupt command queuing and ordering
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6934939B2 (en) * 2001-02-28 2005-08-23 International Business Machines Corporation Method for unwinding a program call stack
US7231511B2 (en) * 2001-12-20 2007-06-12 Intel Corporation Microinstruction pointer stack including speculative pointers for out-of-order execution
US7607133B2 (en) * 2004-02-11 2009-10-20 Arm Limited Interrupt processing control
US7206884B2 (en) * 2004-02-11 2007-04-17 Arm Limited Interrupt priority control within a nested interrupt system
GB2478733B (en) 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
DE102011005209B4 (de) 2011-03-07 2016-06-23 Infineon Technologies Ag Programmanweisungsgesteuerte Instruktionsflusskontrolle
US9116711B2 (en) 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9213828B2 (en) * 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US9202071B2 (en) 2012-02-08 2015-12-01 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
US9477834B2 (en) 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9317460B2 (en) * 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253425A5 (ko) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US3909797A (en) * 1973-12-13 1975-09-30 Honeywell Inf Systems Data processing system utilizing control store unit and push down stack for nested subroutines
JPS50128429A (ko) * 1974-03-28 1975-10-09
US4287559A (en) * 1977-02-09 1981-09-01 Texas Instruments Incorporated Electronic microprocessor system having two cycle branch logic
JPS54106142A (en) * 1978-02-08 1979-08-20 Nec Corp Data processor
JPS5552152A (en) * 1978-10-13 1980-04-16 Hitachi Ltd Control system for program address
US4340933A (en) * 1979-02-12 1982-07-20 Honeywell Information Systems Inc. Data processing system having centralized nonexistent memory address detection
JPS564943A (en) * 1979-06-26 1981-01-19 Nec Corp Noise removing unit
US4398244A (en) * 1980-05-07 1983-08-09 Fairchild Camera & Instrument Corporation Interruptible microprogram sequencing unit and microprogrammed apparatus utilizing same
US4438492A (en) * 1980-08-01 1984-03-20 Advanced Micro Devices, Inc. Interruptable microprogram controller for microcomputer systems

Also Published As

Publication number Publication date
FI83458B (fi) 1991-03-28
FI834414A0 (fi) 1983-12-02
SG67692G (en) 1992-12-04
EP0111407A2 (en) 1984-06-20
JPH0666051B2 (ja) 1994-08-24
HK64292A (en) 1992-09-04
YU45579B (sh) 1992-07-20
JPS59111542A (ja) 1984-06-27
AU573194B2 (en) 1988-06-02
FI83458C (fi) 1991-07-10
CA1205564A (en) 1986-06-03
BR8306655A (pt) 1984-07-17
YU236183A (en) 1986-10-31
EP0111407B1 (en) 1992-04-29
EP0111407A3 (en) 1984-07-18
KR840007187A (ko) 1984-12-05
FI834414A (fi) 1984-06-04
US4488227A (en) 1984-12-11
AU2160783A (en) 1984-06-07

Similar Documents

Publication Publication Date Title
KR900007565B1 (ko) 서브 루틴 및 인터럽트용 프로그램 카운터 스택킹 방법 및 장치
US4103329A (en) Data processing system with improved bit field handling
US4016545A (en) Plural memory controller apparatus
US3909797A (en) Data processing system utilizing control store unit and push down stack for nested subroutines
CA1109967A (en) Expandable microprogram memory
US4398244A (en) Interruptible microprogram sequencing unit and microprogrammed apparatus utilizing same
US4041462A (en) Data processing system featuring subroutine linkage operations using hardware controlled stacks
US4077058A (en) Method and apparatus for executing an extended decor instruction
US3988719A (en) Microprogrammed data processing systems
US4084235A (en) Emulation apparatus
US4095278A (en) Instruction altering system
US3825903A (en) Automatic switching of storage protect keys
JPS60151761A (ja) 10進演算用に連続したデ−タ装置をアクセスするためのニブルおよびワ−ド・アドレス指定可能なメモリ−
US5097407A (en) Artificial intelligence processor
US4204252A (en) Writeable control store for use in a data processing system
US3629857A (en) Computer input buffer memory including first in-first out and first in-last out modes
US4124893A (en) Microword address branching bit arrangement
JPS598846B2 (ja) マイクロプログラム可能な周辺制御装置
US6065071A (en) Method and apparatus for trapping unimplemented operations in input/output devices
KR100413651B1 (ko) 복수레지스터의데이터전송을워드길이가짧은명령으로실현하는정보처리장치및그정보처리방법
CA1099415A (en) Rom initializing apparatus
US3940744A (en) Self contained program loading apparatus
EP0010196B1 (en) Control circuit and process for digital storage devices
US4320454A (en) Apparatus and method for operand fetch control
CA1081854A (en) Control store system and method

Legal Events

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

Payment date: 19951005

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee