KR900005453B1 - 공유자원의 로크아웃 동작방법 및 장치 - Google Patents

공유자원의 로크아웃 동작방법 및 장치 Download PDF

Info

Publication number
KR900005453B1
KR900005453B1 KR1019840003780A KR840003780A KR900005453B1 KR 900005453 B1 KR900005453 B1 KR 900005453B1 KR 1019840003780 A KR1019840003780 A KR 1019840003780A KR 840003780 A KR840003780 A KR 840003780A KR 900005453 B1 KR900005453 B1 KR 900005453B1
Authority
KR
South Korea
Prior art keywords
signal
lock
memory
bus
devices
Prior art date
Application number
KR1019840003780A
Other languages
English (en)
Other versions
KR850001571A (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 KR850001571A publication Critical patent/KR850001571A/ko
Application granted granted Critical
Publication of KR900005453B1 publication Critical patent/KR900005453B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)
  • Small-Scale Networks (AREA)
  • Hardware Redundancy (AREA)
  • Lock And Its Accessories (AREA)
  • Arc Welding Control (AREA)
  • Numerical Control (AREA)

Abstract

내용 없음.

Description

공유자원의 로크아웃 동작방법 및 장치
제1도는 본 발명의 로크논리를 내장한 데이터 처리 시스템의 블록도.
제2도 내지 제6도는 제1도의 데이터 처리 시스템의 공통버스를 거쳐 전달된 각종 정보의 포멧(양식)을 예시한 도면.
제7도는 제1도의 데이터 처리 시스템의 버스 동작에 대한 타이밍도.
제8도는 본 발명의 로크논리에 대한 논리도.
제9도는 제8도의 로크논리의 동작례에 대한 타이밍도.
제10도는 제8도의 로크논리를 사용하여 로크 메모리 동작을 수행할때 제1도의 데이터 처리 시스템의 CPU에 의해 수행된 마이크로 동작에 대한 블록도.
* 도면의 주요부분에 대한 부호의 설명
101 : 메모리 모듈 1 102 : 메모리모듈 2
103 : 제1I/O제어기 104 : 제2 I/O제어기
105, 106 : I/O장치 107 : 공통버스
108 : CPU논리 109 : 메모리 제어기
110 : 로크논리 111 : 우선순위 결정논리
112 : 리프레시 논리 801 : CPU 에 의해 로크된 플립플롭
802 : 동기 플립플롭 803 : 메모리 비지 플립플롭
820 : 버스에 의해 로크된 플립플롭
본 발명은 일반적으로 데이터 처리 시스템에 관한 것으로, 특히 공유자원(리소오스 : resource)의 복수의 유우저(사용자 : user) 또는 한 유유저로 하여금 공유자원인 로크(lock : 차단)되는 기간 동안 공유자원의 독점사용을 가능케하는 로크동작에 관한 것이다.
공유자원에 결합된 복수의 장치를 갖는 시스템에는, 어떤 형태의 동작을 위해 유우저장치 중 하나가 공유자원을 독점 점검하도록 하는 순위 시스템(orderly system)이 마련되어야 한다. 독점(배타성)을 요하는 연산을 수행하는 장치들 중 하나에 의한 이러한 독점사용 기간 동안, 다른 장치도 역시 공유자원의 독점사용을 요하는동작을 행하길 원한다. 이러한 문제는 상기 장치들이 예컨대 하나 이사의 데이터 처리기, 하나이상의 메모리 장치, 그리고 자기테이프 기억장치, 디스크 기억장치 및 카아드 판독장치와 같은 각종 주변 장치들을 포함한 경우에 더욱 복잡하게 된다.
이러한 시스템을 상호 접속하기 위한 종래의 기술로는 여러가지 방법 및 장치가 알려져 있다. 이러한 종래의 시스템의 범위는 공동데이터 버스 경로를 갖는 것으로부터 여러장치들 사이에 특별 경로를 갖는 것에 이르고 있다. 이러한 시스템은 또한 버스형태와 조합하여 동기 혹은 비동기 연산을 수행하는 능력을 갖고 있다. 이러한 시스템 중 어떤 것은 상기 장치들이 접속되거나 동작되는 방식에 관계없이 예를들어 데이터 전달이 데이터 처리기 이외의 다른 장치 사이에서 있을지라도 버스상에서의 데이터 전달을 제어하는데 데이터 처리기를 필요로 한다.
이러한 구성방식은 "공유자원의 로크연산을 제공하는 데이터 처리 시스템"이란 명칭의 미합중국 특허 제 4,000,485호에 도시되어 있다. 이 특허 명세서에는 장치제어기 및 중앙처리장치로/로부터의 모든 전달이 행하여지는 공통버스에 접속되는 주 메모리가 바로 공유자원인 데이터 처리 시스템이 기재되어 있다. 이 시스템에서, 만일 중앙처리장치가 주 메모리 장소의 내용에 대한 판독-수정-기록 동작을 행하길 원한다면, 데이터 처리시스템은 우선 메모리 장소를 읽어낸 다음 그것을 다시 써넣는데 필요한 다수의 공통버스 사이클 동안 최초의 로크연산이 완성될때까지 다른 로크 연산을 행할 수 있는 중앙처리시스템 또는 장치제어기 없이도 개입 중단되지 않고 수행될 수 있도록 우선 읽혀지거나 갱신될 장소를 포함한 주 메모리를 로크한다. 이 시스템에는, 공통버스가 비동기 버스(공통버스를 거쳐 전달을 행하길 원하는 어떠한 장치도 버스가 이미 비사용상태인 경우에 어느때든지 버스의 사용을 비동기적으로 요구할 수 있다)이다 하더라도, 공유자원과 관련된 로크 메카니즘이 제1요구 프로그램에 의해 공유자원이 로크되고 있으며 제2의 로크요구가 공유자원에 대한 로크 연산을 행하길 원하는 제2요구 프로그램으로부터 비동기적으로 행하여지는 경우를 취급할 수 있는 능력이 있을 필요가 없게끔 우선순위결정 프로그램(resolver)이 마련되어 있다.
이중 포오트 메모리의 개방에 따라, 다수의 유우저가 공유자원에 대한 로크연산을 행하도록 동시 요구하는 것이 가능해졌다. 예를 들어, 한 포오트가 장치제어기를 주 메모리에 접속하는 공통버스에 접속되고 다른 포오트가 중앙처리장치에 접속된다면, 중앙처리기가 로크연산을 행하길 원하는 것과 동일한 시간에 주 메모리에 대한 로크 연산을 행하는 것을 장치제어기가 시도할 수 있게 된다. 그러므로, 필요한 것은 공유자원을 로크(lock)하거나 언로크(unlock)하는 다수의 요구 프로그램으로부터의 경합하는 비동기 요구가 취급될 수 있도록 하는 공유자원에 대한 로크 메카니즘이다.
따라서, 본 발명의 목적은 공유자원을 로크하는 다수의 비동기 요구가 해결될 수 있도록 하는 공유자원에 대한 개선된 로크 메카니즘을 제공하는 것이다.
본 발명의 또 다른 목적은 저렴한 공유자원에 대한 로크 메카니즘을 제공하는 것이다.
본 발명은 첨부된 특허청구의 범위에 특별히 규정되어 있으며, 본 발명의 상기 목적 및 장점과 그 밖의 목적 및 장점은 첨부도면을 참조로한 다음 설명으로부터 명백히 이해할 수 있을 것이다.
본 발명의 상기 목적 및 그 밖의 목적은 복수의 장치들 중 두 장치사이의 정보전달을 위해 공통버스에 의해 결합된 복수의 장치를 구비한 데이터처리 시스템내에 로크논리를 제공함으로써 달성된다. 상기 복수의 장치는 최소한 제 1 및 제 2 장치를 구비하는데, 제1장치는 최소한 제2장치 및 제3장치에 의해 공유될 수 있는 자원(리소오스)이며, 여기서 제2장치 및 제3장치는 서로에 대해 비동기적으로 동작하고 제1장치의 비개입중단(uninterrupted) 사용에 대한 요구를 행할 수 있다. 제1장치에는 제2장치 또는 복수의 장치 중 어떤 다른 장치로부터의 로크 신호를 기억하기 위해 제1기억수단이 갖추어져 있으며, 상기 로크신호는 로크신호를 내보내는 제2 또는 다른 장치가 제1장치에 대한 비개입중단 호출을 원한다는 것을 지시한다.
제1장치에는 제3장치가 제1장치에 대한 비개입호출에 비개입호출을 원한다는 지시내용을 기억하기 위한 제2기억수단이 갖추어져 있다. 또한 제2장치가 로크신호를 내보내는 시간에 제2기억수단의 지시내용을 기억하는 제3수단도 마련되어 있다. 아울러 제1장치에는 제1기억수단과 제3기억수단의 지시내용에 대한 책임을 맡은 논리회로가 마련되어, 제2장치가 공유장치에 대한 비개입중단 호출을 요구할 때 제1기억수단과 제3기억수단이 모두 공유자원에 대한 비개입중단 호출이 요구되었음을 지시하지 않는다면, 제2장치에 정(正)인지신호를 발생한다. 이 논리회로는 또한 제2장치가 로크신호를 내보낼때 제1기억수단 또는 제3기억수단이 공유자원에 대한 비개입중단 호출이 요구되었음을 지사한다면 제2장치에 부(負)응답을 발생한다. 또한 정인지신호가 공통버스상의 복수의 장치 중 어떤 것에 발생될 때마다 제1기억수단에 로크신호의 상태를 기억하는 논리회로가 마련된다. 아울러 제1장치에는 정인지신호가 공통버스상의 복수의 장치 중 어떤 것에 의해 출력된 언로크(unlock)신호에 응답하여 제1장치에 의해 발생된다면 제1기억수단이 리세트되게끔 언로크신호에 응답하는 논리회로가 마련되어 있다. 그리고 제1기억수단이 복수의 장치들 중 한 장치가 공유자원에 대한 비개입중단 호출을 원한다는 것을 지시하면 제3장치가 제1장치에 대한 호출을 행하는 것을 금지하는 논리회로도 마련되어 있다. 그밖에 일단 제2장치가 공유자원에 대한 비개입중단 호출을 요하는 동작을 완성하기만 하면 제2기억수단을 리세트시키는 수단이 갖추어져 있다.
본 발명의 방법이 수행되는 방식과 본 발명의 장치가 구성되는 방식 및 그것의 동작모드는 몇개의 도면에서 동일참조 번호가 동일요소를 나타내고 있는 첨부도면을 참조로 한 다음 설명을 통해 잘 이해할 수 있을것이다.
[로크 논리를 내장한 데이터 처리시스템]
제1도는 CPU/메모리 보오드(100), 메모리 모듈 1(101) 및 메모리모듈 2(102)와, I/O장치(105)에 접속된 제1I/O제어기(103)와, I/O장치(106)에 접속된 제2 I/O제어기(104) 및 공통버스(107)를 구비하고 있는 적합한 실시에의 데이터 처리 시스템을 도시한 것이다. 제1도에는, 여러 소자들을 연결하고 있는 가는 선은 제어라인이고 두꺼운 선은 데이터/어드레스 라인이다. CPU메모리 보오드(100)은 공통버스(107)에 접속한 단일 인쇄회로 기판이다. CPU/메모리 보오드(100)는 CPU논리(108)와 메모리 제어기 논리(109)의 양 논리를 내장하고 있다. CPU메모리 보오드(100)내에는 아무런 주 메모리가 내장되어 있지 않다. 데이터 및 소프트웨어 명령을 보관하기 위한 주 메모리는 메모리 모듈1(101) 및 메모리모듈 2(102)과 같은 하나 이상의 메모리 모듈을 CPU/메모리 보오드(100)에 접속함으로써 이루어진다. 메모리 모듈 1 및 메모리 모듈 2에 포함된 주 메모리를 호출하는 모든 요구는 CPU 또는 I/O제어기로부터 메모리 제어기 논리(109)를 통해서 이루어진다. 메모리 제어기 논리(109)는 이중 포오트로 되어 있다. 한 포오트는 메모리 요구 및 데이터 전달이 공통버스(107)를 거쳐 제1 I/O제어기(103) 또는 제2 I/O제어기 (104)에 의해 행하여질 수 있도록 공통버스에 접속한다. 데이터 또는 소프트웨어 명령을 위한 CPU논리(108)로부터의 메모리 요구는 정상적으로 공통버스(107)를 거치지 않고 메모리 제어기 논리(109)의 제2포오트를 거쳐 CPU논리(108) 간에서 직접 행하여진다.
적합한 실시예에 있어서, 각 메모리 모듈(101) 및 (102)은 예컨대 256K(1K=1024)워어드의 주 메모리를 포함할 수 있다. 이 적합한 실시예에서, 각 메모리 워어드는 두개의 8비트 바이트로서 어드레스 지정될 수 있는 16비트의 데이터를 포함한다. 그리고 상기 메모리는 메모리의 각 장소가 실제로 22비트의 정보를 포함하는 MOS반도체 칩으로 구성된다. 비트들 중 16비트는 워어드의 16비트 데이터로서 사용되고 6비트는 에러검출 및 정정(EDAC : error detection and correction)을 위해 사용된다. 각 메모리 모듈을 각각 64비트로된 88개의 메모리 칩을 내장하고 있는 별도의 인쇄회로이다. 메모리 제어기 논리(109)는 로크논리(110), 우선순위결정 논리(111) 및 리프레쉬(refresh)논리(112)로 구성된다. 그 밖에, 메모리 제어기 논리(109)는 제1도에는 도시되어 있지 않는 타이밍, 에러검출 및 정정논리 및 칩 어드레싱 논리를 내장하고 있다.
로크논리(110)는 주 메모리가 언로크될때까지 I/O제어기 또는 CPU에 의해 수행중인 또 다른 로크 동작에 대하여 CPU또는 I/O제어기의 명령을 받아 주 메모리에 로크하기 위해 마련된 것이며, 우선순위결정논리(111)는 주 메모리에 대한 경합하는 호출요구를 해결하기 위해 마련된 것이다. 우선순위 CPU(108)로부터 또는 공통버스(107)를 거쳐 제1 및 제2 I/O제어기(103) (104)로부터 또는 리프레시 논리(112)로 부터 발생한 주 메모리 호출요구 사이에서 해결되어야 한다.
우선순위결정 논리(111)는 주 메모리가 유효하게 될때마다 가능한 세개의 호출요구 소스를 검사하여 먼저 주 메모리를 리프레시 논리(112)로부터의 요구로 배정할 리솔루선 사이클이 발생하게끔 설계되어 있다. 만일 리프레시 요구가 존재하지 않으면, 주 메모리를 I/O제어기로부터 발생된 공통버스(107)로부터의 요구로 배정할 것이다. 만일 티프레시 요구나 버스요구가 모두 존재하지 않으면, 요구가 행하여 지고 있는 경우 주 메모리를 CPU(108)에 배정할 것이다. 우선순위결정 논리(111)의 동작은 "최저 우선 레벨이 최단 논리 경로를 갖는 우선순위결정"이란 명칭의 미합중국 특허출원 제449,703호에 상세히 기재되어 있는데, 그것은 본 명세서에 참조로서 결합된다. 리프레시 논리(112)는 메모리 모듈 1(101) 및 메모리 모듈2(102)의 비소멸성 메모리 칩에 기억된 데이터의 리프레시 동작을 주기적으로 수행하기 위해 마련된 것이다.
[버스 요구 및 응답사이클]
적합한 실시에의 시스템에서 공통버스(107)는 시스템내의 두 장치들 간에 통신경로를 제공한다. 공통버스(107)는 동일 시스템에서 효율적으로 동작하도록 버스에 접속된 다양한 속도의 장치들을 인에이블시키는 설계면에서 비동기적이다. 본 발명의 버스설계는 메모리 전달, 인터럽트, 데이터 상태 및 명령전달을 포함하는 통신을 가능케 한다. 이러한 시스템의 버스 및 인터페이스 논리에 대한 보다 상세한 설명은 1976년 11월 23일자로 허여된 미합중국 특허 제3,993,981호와 1980년 11월 25일자로 허여된 미합중국 특허 제4,326,203호를 참조하기 바란다.
공통버스(107)는 어떤 두 장치로 하여금 공통공유 신호경로를 거쳐 주어진 시간에 서로 통신할 수 있게 한다. 통신하길 원하는 어떤 장치는 버스사이클을 요구한다. 그 버스사이클이 승인되면, 그 장치는 마스터(master)가 되고 시스템내의 어떤 다른 장치가 슬레이브(slave)로서 지정될 것이다. 버스 인터체인지(interchange : 교차로)의 몇몇 형태는 하나의 응답사이클(예컨대 단일 페치 메모리 리이드)를 필요로 한다. 응답사이클이 필요한 경우에는, 요구장치가 마스터로서의 역할을 하여 응답이 필요하다는 것을 지시하고 그 자체를 슬레이브로 식별한다. 필요한 정보가 유효하게 될 때(슬레이브 응답시간에 따라), 슬레이브가 마스터의 역할을 하여 요구하는 장치로의 전달을 개시한다. 이것은 이 경우에 두 개의 버스사이클을 택한 단일 페치(요구사이클과 응답사이클)사이의 버스에 대한 개입(intervening)시간이 이 두 개의 버스사이클을 택한 단일 페치(요구사이클과 응답사이클)사이의 버스에 대한 개입(intervening)시간이 이 두 개의 장치를 포함하고 있지 않은 다른 시스템 교통을 위해 사용될 수 있다.
[버스 신호들]
마스터는 버스상의 어떤 다른 장치를 슬레이브로서 지정할 수 있다. 메모리 참조 신호(BSMREF-)라 불리는 수반 제어리이드(lead)의 상태에 따른 두가지 번역 중 어느 하나를 가질 수 있는 24어드레스 리이드가 있을수 있다. 메모리 참조 신호가 2진수 0이면, 제2도의 포맷(format)이 24번째 리이드가 최하위 비트인 어드레스 리이드에 적용된다. 본 명세서에서 사용된 바와 같이, 2진수 0과 1은 각각 전기신호의 저상태 및 고상태를 일컫는 것으로 쓰인다. 만일 메모리 참조 신호가 2진수 1이라면, 제3도에 도시한 24비트의 포맷이 적용된다. 필연적으로, 메모리가 어드레스 지정 중일때에는, 버스가 메모리에 직접 어드레스 지정된 2에서 24번째까지의 바이트를 인에이블 시킨다. 장착들이 제어정보 데이터 또는 인터럽트를 통과시키고 있는 경우에는, 채널번호에 의해 서로 어드레스 지정한다. 채널번호는 2에서 10번째까지의 채널이 버스에 의해 어드레스 지정될 수 있게 한다. 이 채널번호와 함께, 이 전달이 의미하는 2에서 6번째까지의 가능한 기능 중 어떤 것을 규정하는 6비트의 기능 코드가 통과된다.
마스터가슬에이브로부터의 응답사이클을 필요로 하는 경우에, 마스터는 이것을 BSWRIT-라고 명명된 제어리이드의 상 상태(리이드 명령)에 의해 슬레이브에 지시한다(그것의 다른 상태는 응답 즉 라이트 명령을 필요로 하지 않는다). 이 경우에, 마스터는 채널번호에 의해서 슬레이브에 대한 독자적인 식별을 한다. 버스 어드레스 리이드에 대항해 있는 데이터 리이드는 응답이 슬레이브로부터 필요하게 될 때 마스터의 식별을 지시하도록 제4도의 포맷에 따라 코드화된다. 그 응답사이클은 비 메모리 참조 전달에 의해 요구장치로 향하게 된다. 두 번째 반부의 버스싸이클(BSSHBC-)로 표시된 제어리이드는 이것이 대기 사이클(다른 장치로부터의 불필요한 전달과 비교하여)이라고 지정하도록 인에이블된다. 마스터가 슬레이로부터 이중 페치를 요하는 경우에, 마스터는 BSDBPL-이라 명명된 제어리이드의 한 상태에 의해 이것을 슬레이브에 지시한다(그것이 다른 상태는 이중 페치를 필요로하지 않는 단일 페치이다). 슬레이브가 마스터의 요구에 응답할때에는, 이 동일 제어리이드의 한 상태(BSDBPL-)가 요구 장치에 이 응답사이클이 두 개의 응답사이클 중 첫 번째 응답사이클이라는 것을 지시하는데 사용된다(그것의 다른 상태는 이 응답사이클이 이중 페치 동작의 마지막 응답사이클을 지시한다).
분포된 타이-브레이킹(tie-breaking)회로망은 버스사이클을 승인하여 버스 사용에 대한 동시요구를 해결하는 기능을 제공한다. 대부분 우선순위는 버스상의 물리적 위치를 기초로하여 승인되며 최고 우선순위는 버스상의 제1장치에 주어진다. 타이-브레이킹 기능을 행하는 논리는 버스에 접속된 모든 장치들 사이에 분포되고 미합중국 특허 제4,030,075호에 충분히 기재되어 있으며 또 그것의 개량에 대해서는 미합중국 특허 제4,096,569호에 기재되어 있는데, 이 양특허는 본 명세서에서 참고로 하고 있다. 통상의 시스템에 있어서는 메모리가 최고 우선순위로 승인되고 중앙처리기는 최저 우선순위로서 승인되며 다른 장치는 그것으로 수행요구에 따라서 순위가 주어진다. 제1도에 예시된 적합한 실시예의 시스템에서는 CPU논리와 메모리 제어기가 모두 공토버스의 최고 우선순위 끝에 위치하는 하나의 인쇄회로 기판상에 있으며 우선논리는 본 명세서에서 참고로 하는 명칭이 "최저 우선순위의 장치가 최고 우선순위 위치에 있도록 하기 위한 분포된 우선순위 회로망 논리"인 미합중국 특허출원 제453,406호에 기재된 것처럼 CPU로 하여금 최저 우선순위로 할당될 수 있게끔 개선되었다.
제1도를 참조하면, 본 발명의 전형적인 시스템은 CPU와 결합된 다선로 공통버서(107), 메모리 및 한 개 이상의 I/O장치 및 제어기를 구비하며, 이러한 메모리 제어기(109)는 최고 우선순위를, CPU논리(108)는 최저 우선순위를, 그리고 제1 및 제2 I/O제어기(103) 및 (104)는 중간 우선순위를 갖는다. 또한 이러한 장치들의 각각의 것은 자신의 채널번호 또는 메모리 어드레스를 인식하기 위한 어드레스 논리를 갖추고 있다. 통상의 기본적인 장치 제어기에 대한 어드레스 논리는 미합중국 특허 제4,030,075호에 기재된다.
채널번호는 메모리 어드레스에 의해 식별되는 메모리형태 처리소자를 제외하고서 특정 시스템의 모든 종단점에 대하여 존재할 것이다. 하나의 채널번호가 이러한 각 장치에 대하여 할당된다. 반 이중방식(half-duplex)의 장치뿐만아니라 전 이중방식(full-duplex)의 장치도 두 개의 채널번호를 이용한다. 출력만이 또는 입력만이 있는 장치는 단지 하나의 채널번호만을 사용한다. 채널변화는 쉽게 변화될 수 있으며 따라서 하나 이상의 16진 회전스위치(섬휠 스위치 : thumbwheel switch)가 그 장치의 어드레스를 표시하거나 세트시키도록 버스와 결합된 이러한 각각의 장치에 이용될 수도 있다. 따라서, 시스템이 구성될 때, 채널번호는 그 특정시스템에 적절한 것처럼 버스에 접속된 특정 장치에 대하여 지정될 것이다. 다중 입/출력 포오트를 갖는 장치들은 일반적으로 한 블록의 연속채널 번호를 필요로 할 것이다. 예를 들어, 4포오트 장치는 회전 스위치를 사용하여 상위 7비트의 채널번호를 지정하고, 포오트 번호를 정하고 출력 포오트와 입력 포오트를 구분하기 위하여 채널번호의 하위 3비트를 사용한다. 슬레이브 장치의 채널번호는 제3도에 도시한 바와 같은 모든 비 메모리 전달용 어드레스 버스상에 나타난다. 각각의 장치는 그 번호를 자체의 내부 기억된 번호(회전스위치에 의해 기억된 번호)와 비교한다. 비교를 행한 장치는 정의에 의해 슬레이브가 되고 그 사이클에 응답하여야 한다. 일반적으로, 단일 시스템의 두 점들은 동일 채널번호로서 할당되지 않을 것이다. 제3도에 도시한 바와 같이, 특정 버스 또는 I/O기능은 비 메모리 전달용 버스 어드레스 리이드의 비트 18내지 23에 의해서 지시된 것으로 수행될 수 있다. 기능코드는 출력 또는 입력 동작을 지정한다. 모든 기수 기능 코드는 출력 전달(라이트)을 지정하고 모든 우수 기능코드는 입력 전달요구(리이드)를 지정한다. 예를 들어, 00(베에스 16)의 기능코드는 단일 페치 메모리 리이드를 지시하는데 사용되고 20(베이스 16)의 기능코드는 이중 페치 리이드 동작을 지시하는데 사용된다. 중앙처리기는 입/출력 명령에 대한 6비트 기능코드란의 최하위 비트 23을 검사하여 그 방향을 지시하는데에 버스리이드를 사용한다.
출력 및 입력 기능에는 여러 가지가 있다. 그 중 한 출력 기능은 데이터량, 예컨대 16비트가 버스로부터 채널 로오드되게 하는 명령이다. 개개의 데이터 비트의 의미는 특정소자이지만, 데이타량은 특정 소자의 기능에 따라서 기억, 송출, 전송되어질 데이터를 의미하도록 택하여진다. 다른 출력기능은 예컨대 24비트량이 채널 어드레스 레지스터(도면에 도시되지 않음)에 로오드되게 하는 명령이다, 그 어드레스는 메모리 바이트 어드레스로서 채널이 데이터의 입력 또는 출력을 시작할 메모리의 시작위치로 일컬어진다. 여러 가지 다른 출력 기능에는 특정 전달을 위해 채널에 지정된 메모리 버퍼의 크기를 정하는 출력범위 명령, 개개의 비트에 의해 특정 응답을 발생케하는 출력제어 명령, 인쇄 명령과 같은 출력과업(task)기능, 단말 속도와 같은 기능 및 카아드 리이드 모드를 지시하는 명령인 출력구성 그리고 제5도에 도시한 포맷에 따라 예켠대 16비트 워어드를 채널에 로오드하는 명령인 출력 인터럽트 제어가 있다. 그 처음 10비트(비트 0에서 9)는 중앙처리기 채널번호를 나타내고 비트 10내지 15는 인터럽트 레벨을 나타낸다. 인터럽트시, 중앙처리기 채널번호는 어드레스 버스상으로 들어가게 되는 반면 인터럽트 레벨은 데이터 버스상으로 돌아가게 된다. 그리고 입력 기능은 입력 데이터가 장치로부터 버스를 거쳐 중앙처리기에 전달되는 경우를 제외하고서는 출력 기능에 유사한 기능을 포함하고 있다.
전술한 바와 같이, 유일한 장치 식별 번호가 버스에 접속된 각각의 모든 다른 장치에 할당된다. 이 번호는 입력장치 식별로 명명된 입력 기능 명령에 응답하여 버스상에 나타난다. 이 번호는 제6도에 도시한 포맷에 따라 데이터 버스상에 배치된다. 편의상 그 번호는 장치를 식별하는 13비트(비트 0 내지 12)와 요구될바의 장치의 어떤 기능(비트 13내지 15)을 식별하는 3비트로 분리된다.
[버스 타이밍]
제7도는 버스 타이밍도로서 차후에 보다 상세히 설명될 것이다. 그러나, 일반적으로 그 타이밍은 다음과 같다. 그 타이밍은 마스터 장치로부터 버스에 접속된 슬레이브 장치로의 모든 전달에 적용된다. 전달이 행하여질 수 있는 속도는 시스템의 구성에 좌우된다. 즉, 버스에 접속된 장치가 많아지고 또 전파지연에 의하여 버스가 더 길어질수록, 버스상에 통신하는 것이 더욱 오래 걸리게 된다. 한편 버스상의 장치들이 량이 적을수록 응답시간이 감소된다. 따라서, 버스 타이밍은 성질상 비동기적이다. 버스 사이클을 원하는 마스터는 버스요구를 한다. 그 신호 BSREQT- 는 버스상의 모든 장치에 대해 공통이고 2진 0인 경우에 최소한 한 개의 장치가 버스 사이클을 요구하고 있음을 지시한다. 버스 사이클 승인될 때, 신호 BSDCNN- 는 타이브레이킹 기능이 완료되고 또 이제 하나의 특정 마스터가 버스를 제어한다는 것을 지시하는 2진 0이 된다. 신호 BSDCNN- 이 2진 0이 되는 시간에, 마스터는 전달될 정보를 버스에 인가한다. 버스상의 각 장치는 신호 BSDCNN- 으로부터 내부 스트로우브(strobe) (BSDCND- )를 발생한다. 이 스트로우부(BSDCND-)는 BSDCNN- 신호의 2진 상태의 수신으로부터 예컨대 약 60나노초 동안 지연된다. 슬레이브에서 지연이 완료될 때, 버스전파 시간 변동이 알려지게 될 것이며 각 슬레이브 장치가 자신의 어드레스(메모리 어드레스 또는 채널번호)를 식별할수 있게 될 것이다. 어드레스 지정된 슬레이브는 이들 응답 중 하나, 즉 수락(ACK), 비수락(NAK) , 또는 대기(WAIT) 신호 다시 말하면 BSACKR- NSNAKR- 또는 BSWAIT- 신호를 발생할 수 있다. 이 응답은 버스상에 송출되어 슬레이브가 요구된 작용을 인식한 마스터에 신호로서 사용된다. 이어서 제어라인은 제7도에 도시한 순서로서 2진 1상태로 복귀한다. 따라서 버스 핸드쉐이크(hand-shake)는 완전히 비동기적이고 각각의 천이는 선행천이가 수신되었을 경우에만 발생할 것이다.
그러므로 개개의 장치들은 그들의 내부 기능에 따른 스트로우브와 ACK등이 천이 사이에서 다른 시간길이를 취할 것이다. 버스 종료 기능은 버스상의 아무런 장치도 요구에 응답하지 않은 경우에 발생할 수도 있는 행업(hang-up : 방해)를 방지하기 위하여 존재한다.
버스를 거쳐 전달되는 정보는 예컨대 50신호 또는 비트를 포함할 수 있는데, 그것은 다음과 같이 24어드레스 비트. 16데이타 비트, 5제어 비트 및 5통합 비트로 분류될 수 있다. 이러한 여러 신호들은 차후에 설명될 것이다.
[버스우선순위]
공통버스 요구타이-브레이킹 기능은 서비스를 위해 다른 장치들로부터의 동시 요구를 해결하여 위치적 우선 방식을 기초로 하여 버스 사이클을 승인하는 기능이다. 이전에 지적한 바와 같이, 메모리와 중앙처리기가 모두 공통버스(107)한 단부에 위치한다 할지라도 메모리는 최고 우선순위를 가지며 중앙처리기는 최저 우선순위를 갖는다. 다른 장치들은 버스를 따라 위치를 차지하며 버스의 메모리 단부 근처로 접근함에 따라 증가되는 우선 순위를 갖는다. 우선 논리는 타이브레이킹 기능을 행하기 위하여 버스에 직접 접속되는 장치들 중 하나에 각각 포함되어 있다. 각각의 이러한 장치의 우선순위 회로망은 허가(grant)플립플롭을 구비한다. 어떤 시점에서는, 특정한 한개의 허가 플립플롭만이 세트되며 그 장치가 정의에 의해 특정 버스사이클 동안 마스터이다. 어떤 장치는 어떤 시간에 버스 사이클을 필요로 하고 그것의 유우저 플립플롭을 세트시킨다고 결정한다. 그러므로 어떤 시간에 많은 유우저 플립플롭이 세트되어 각기 미래의 버스 사이클을 나타낸다.
아울러, 버스상의 각 장치는 버스 플립플롭을 내장하고 있다. 모든 장치들이 함께 고려될때, 요구 플립플롭은 요구 레지스터로서 간주될 수 있다. 많은 요구가 진행중이라 하더라도 하나의 허가 플립플롭만을 세트시키도록 기능하는 타이브레이킹 회로망을 공급하는 것은 이 레지스터의 출력이다. 보다 구체적으로 말하자면, 진행주의 유우저가 없는 경우에는 아무런 유우저 플립플롭도 세트되지 않는다. 세트시킬 처음의 유우저 플립플롭은 그것의 요구 플립플롭이 세트되게 한다. 이것은 차례대로 차후에 설명될 바와같은 단기간의 지연후에 다른 장치들의 그것의 요구 플립플롭을 세트시키는 것을 금지할 것이다. 따라서, 모든 유우저 플립플롭의 스냅-쇼트(snap-shot)가 주어진 기간(지연기간)동안 택하여 지는 일이 발생한다. 그 결과 다수의 요구 플립플롭이 그것의 도달에 따라 요구 플립플롭이 이 지연기간동안 세트될수 있게 된다. 요구플립플롭이 안정하게 될 수 있게 하기 위하여, 각각의 장치는 그러한 안정화가 일어난 것을 보증하기 위하여 이러한 지연을 포함한다. 특정허가 플립플롭은 그것과 관련된 장치가 그것의 요구 플립플롭을 세트시키고 지연시간이 경과하여, 더 높은 우선순위의 장치가 버스 사이클을 원하지 않는다면 세트된다. 다음에 스트로우브 신호가 또 다른 지연기간후에 발생되고 마지막으로 마스터가 ACK, NAK 또는 WAIT신호를 슬레이브장치로부터 수신할 때 허가 플립플롭이 클리어(리세트)된다.
이전에 지적한 바와 같이, 세가지 가능한 슬레이브 응답, 즉 ACK, WAIT 또는 NAK신호가 있으며, 아울러 아무런 응답이 없는 제4의 상태가 된다. 버스상의 장치가 그것에 어드레스 지정된 바의 전달을 인식하지 않는 경우에는, 무응답이 일어나게 될 것이다. 그 다음 종료기능이 일어나고 NAK 신호가 발생되어 버스가 클리어 될 것이다. 만일 슬레이브가 마스터로부터 버스 전달을 허락할 수 있고 또한 그렇게 하길 원한다면 ACK 신호가 발생될 것이다.
그리고 만일 슬레이브가 일시적으로 사용중이어서 이 시간에 전달을 허락할 수 없다면 슬레이브에 의해 WAIT신호가 발생된다. WAIT신호의 수신시에 , 마스터는 그것에 승인된 다음 버스 사이클에서 그 사이클을 다시 시행하고 성공할때까지 그것을 계속할 것이다. 솔레이브로부터 WAIT응답을 발생하는 몇가지 조건은 중앙처리기가 마스터일때, 제어기가 메모리로부터 응답을 기다리고 있는 경우 또는 제어기가 이전의 입/출력 명령을 아직 처리하지 않은 경우이거나, 혹은 본 발명의 경우에 제어기가 마스터이고 메모리를 로크하는 것을 시도하며 또 메모리가 다른 제어기 또는 중앙처리기에 의해 로크된 경우이다. 슬레이브에 의해 발생된 NAK신호는 이 시간에 전달을 허락할 수 없음을 의미한다. NAK신호의 수신시에, 마스터 장치는 즉시 다시 시행하는 것이 아니라 마스터의 종류에 따라 특정작용을 취할 것이다.
일반적으로 전술한 바와같이, 헨드쉐이킹 기능을 행하는 기본 타이밍 신호가 버스상에 나타난다. 전술한 바의 이들 5가지 신호들은 2진 0일때 버스상의 하나 이상의 장치들의 버스 사이클을 요구하였음을 지시하는 버스 요구신호(BSREQT-)와, 2진 0일때 특정 마스터가 버스 전달을 행하는 중이고 몇개의 특정 슬레이브에 의한 사용을 위해 버스상에 정보를 배치하였음을 지시하는 데이타 사이클 현재(now) 신호(BSDCNN)와, 슬레이브에 의해 마스터에 발생되는 신호로서 이 신호를 2진 0로 만듬으로써 슬레이브가 이 전달을 허락하고 있음을 지시하는 ACK신호(BSACKR-)와, 슬레이브에 의해 마스터에 발생되는 신호로서 2진 0일때 슬레이브가 이러한 전달을 거절하고 있음을 지시하는 NAK신호(BSNAKR-)와, 슬레이브에 의해 마스터에 발생되는 신호로서 2진 0일때 슬레이브가 전달에 대한 결정을 미루고 있음을 지시하는 WAIT신호(BSWAIT)이다.
그밖에 전술한 바와 같이, 각 버스사이클의 정보내용으로서 전달되는 50가지 정보신호가 있을수도 있다. 이 신호들은 제7도의 스트로우브 신호 BSDCND-의 상승구간에서 슬레이브에 의한 사용에 유효하다. 다음 설명은 모두 예를 든것으로, 비트의 수가 다른 기능을 위해 변동될 수 있음을 이해하여야 한다. 따라서 16리이드 또는 비트가 데이타를 위해 제공될 수도 있다. 그리고 24리이드가 메모리를 위해 제공된다. 또 1비트는 2진 0일때 어드레스 리이드가 메모리 어드레스를 포함하고 있음을 지시하는 메모리 참조번호(BSMREF-)를 위해 제공된다. 메모리 참조번호가 2진 0일때, 그것은 어드레스 리이드가 제3도에 나타낸바와 같은 채널 번호와 기능 코드를 포함한다. 또한, 2진 0일때 현재의 전달이 전형적으로 한 워어드가 두바이트를 포함하는 한 워어드 전달이 아니라 한 바이트 전달임을 지시하는 바이트신호(BYBYTE-)가 제공된다. 그리고 2진 1일때 슬레이브가 마스터에 정보를 공급할 것을 요구하고 있음을 지시하는 라이트 신호(BSWRIT-)가 있다. 별도의 버스전달로 이 정보가 제공될 것이다. 아울러 이 정보가 이전에 요구된 정보임을 슬레이브에 지시하도록 마스터에 의해 사용되는 제2반부의 버스사이클(BSSHBC)이 제공된다. 이 시간으로부터 버스상에 있는 한쌍의 장치는 제2사이클이 발생할때까지 신호(BSWRIT-)에 의해 지시된 리이드 동작을 시작하여 메모리로부터 얽혀진 데이타의 전달(BSSHBC-에 의해 지지됨)을 완성하며, 이때 양 장치는 버스상의 모든 다른 장치에 대해 사용중이 될 것이다.
[버스 로크 메모리 동작]
각종 에러 및 패리티 신호 이외에도, 버스상의 50가지 정보신호중에는 로크신호가 포함되어 있다. 로크신호(BSLOCK-)는 로크동작을 일으키는데 사용된다. 메모리 로크동작은 다주 사이클 버스전달이며 이에 따라 장치는 아래에서 설명될 바와 같이 버스상의 어떤 다른 장치없이도 메모리의 한 워어드 또는 다중 워어드 영역을 읽어내거나 써넣을 수 있으며 CPU는 그 동작의 다른 로크 동작과 함께 시작할 수 있다. 이것은 시스템내의 비동기식 처리장치들 간에 통신하도록 메모리 영역들을 플래그로서 사용하는 것을 용이하게 한다.
로크동작의 효과는 어떤 종류의 동작들을 위해 사용중(busy)조건을 메모리 사이클의 지속기간 밖으로 확장시키는 것이다. 최종 사이클이 완료되기 전에 로크 신호의 개시를 시도하는 버스상의 다른 장치들은 NAK응답을 수신할 것이다. 그러나, 메모리는 여전히 다른(로크되지 않은)메모리 요구에 응답할 것이다.
로크 동작의 예는 리이드-수정-라이트 사이클이며, 그것의 세가지 버스 사이클은 다음과 같다. 제1버스사이클동안(제9도의 시간 A내지 F), 어드레스 버스는 메모리 어드레스를 포함하고, 데이타 버스는 원 발생기의 채널번호를 포함하고, 신호 BSWRIT-는 응답이 필요함을 지시하는 2진 0이고, 신호 BSLOCK- 이것이 로크동작임을 지시하는 2진 0이고, 또한 BSMREF- 신호는 2진 1이다. 리이드-수정-라이트 동작의 제2버스 사이클동안(제9도의 시간 G내지 K)에는, 어드레스 버스는 원발생기의 채널번호를 포함하고, 데이타 버스는 메모리 데이타를 포함하며, BSSHBC- 신호는 리이드 응답을 표시하는 2진 0이고 BSMREF- 신호는 2진 0이다. 제3버스 사이클 동안에는 (제9도의 시간 L내지 P), 어드레스 번스는 메모리 어드레스를 포함하고, 데이타 버스는 메모리 데이타를 포함하고, BSLOCK- 신호는 리이드-수정-라이트 동작의 완성을 지시하는 2진 0이고 BSMREF- 신호는 2진 0이고 BSSHBC신호는 2진 0이다.
아울러, BSWRIT- 신호는 2진 1이다. 상기 설명은 일반용어이고 개개의 신호는 제9도에 도시한 바와 같이 버스 사이클의 일부에 대한 기재된 상태에만 있을수 있음을 유의하길 바란다. 모든 다른 동작에서 처럼, 리이드-수정-라이트 동작의 세가지 버스사이클 사이에 있는 버스상의 개입시간이 시간이 전달에 관계하지 않는 다른 장치에의해 사용될 수 있다. 아울러 CPU가 메모리 로크 동작을 시도하지 않는 한 메모리를 호출할 수 있다.
다른 제어신호 이외에도, 버스상에는 정상적으로 2진1이고 마스터 클리어 동작이 시스템의 승압순서 동안과 같이 수행될때에는 2진 0이 되는 버스 클리어 신호(BSMCLR-)신호가 제공될 수도 있다.
[버스 우선네트(net)타이밍]
이하 제7도의 타이밍도를 메모리의 어드레스는 논리 회로 및 중앙처리장치에 관하여서 더욱 상세히 설명하기로 한다.
매 버스 사이클에서 제7도의 타이밍도를 참조하면, 세가지 식별가능부분, 구체적으로 말하자면 최고 우선순위 요구 장치가 버스를 차지하는 기간(7-A 내지 7-C)과, 마스터 장치가 슬레이브 장치를 호출하는 기간(7-C 내지 7-E)과 슬레이브가 응답하는 기간(7-E 내지 7-G)이 있다. 버스가 휴지상태일때 버스 요구신호(BSREQT-)는 2진 1이다.
버스 요구 신호의 시간 7-A에서의 부진행 구간은 우선순위 네트 사이클을 시작한다. 설정한 우선순위네트(시간 7-B에서)와 선택될 버스의 마스터 유우저를 위해 시스템내에 허용된 비동기 지연이 있다. 버스상의 다음 신호는 BSDCNN- 또는 데이타 사이클 현재신호이다. 시간 7-C에서 BSDCNN- 신호의 2진 0으로의 천이는 버스의 사용이 마스터 장치에 승인되었다는 것을 의미한다. 그후 버스 동작의 제2단계는 마스터가 선택되었고 이제 공통버스(107)의 데이타, 어드레스 및 제어리이드 상의 정보를 마스터가 이렇게 지정한 슬레이브 장치로 자유롭게 전달하는 것을 의미한다.
슬레이브 장치는 스트로우브 신호 BSDCND-의 부진행구간에서 시작하는 버스동작의 제3단계의 개시를 준비한다. 그 스트로우브 신호는 버스 우선순위 결정논리에서 제8도의 지연라인(824)에 의해 BSDCNN- 신호의 부진행 구간으로부터 예컨대 60나노초만큼 지연된다. 시간 7-D에서 BSDCND- 신호의 부진행 구간의 발생시에, 슬레이브장치는 이제 이것이 그것의 어드레스인지 그리고 그것이 발생할 어떤 응답에 대한 의사 결정 처리기를 개시하도록 호출되고 있는지 알아보도록 시험할 수 있다.
통상적으로 이것은 인지신호(BSACKR-)가 슬레이브 장치에 의해 발생되게 하거나, 통상적이 아닌경우에는 BSNAKR- 또는 BSWAIT- 신호 혹은 전혀 무응답(슬에이브의 비존재 경우)이 여기에서 기술한 바와 같이 발생될 수 있다. 마스터장치에 의해 수신되는 시간 7-E에서 인지 신호의 부진행 구간은 마스터의 BSDCNN- 신호가 시간 7-E에서 2진 1로 되게 한다. 스트로우브 신호는 시간 7-F로부터 제48도의 지연 라인(824)에 의해 제공된 지연 인 시간 7-G에서 2진 1상태로 복귀한다. 따라서, 버스동작의 제3단계에서, 버스상의 데이타 및 어드레스는 슬레이브 장치에 의해 기억되고 버스 사이클이 턴오프되기 시작할 것이다. 사이클의 종료시 즉 BSDCNN- 이 2진도 될때 다른 우선 순위 네트 결정을 네트 결정을 동적으로 인에이블한다.
이 시간에 버스 요구 신호가 발생되며 만일 수신되지 않으면 이것을 버스가 휴지상태로 돌아갈 것이며 이에 따라 BSREQT 신호가 2진 1상태로 될것이라는 것을 의미한다. 만일 버스 요구 신호가 그때에 존재하지 않으면 즉 도시한 것처럼 2진 0라면, 그것은 비동기 우선순위 네트 선택과정을 시작할 것이며 그 다음에 BSDCNN- 신호의 다른 부진행 구간이 7-I 및 7-J에서 점선으로 도시한 바와 같이 인에이블될 것이다. 이 우선순위 네트결정은 시간 7-H에서 인지신호의 정진행구간을 기다리거나 이 구간에 의해 트리거될 필요가 없지만, 사실상 그후 장치가 버스 사이클을 원한다면 버스를 휴지상태로 천이한 바로 다음의 시간 7-F에서 트리거 된다는 점을 유의하여야 한다. 우선순위 네트결정이 BSDCNN- 신호의 정진행구간에 의해 시간 7-F에서 트리거될 수 있을지라도, BSDCNN- 신호의 제2부진행구간이 허가 플립플롭의 세팅에 응답하여 7-H에서 인지신호의 정진행구간을 기다려야 한다. 시간 7-I에서 BSDCNN- 신호의 부진행 구간은 우선순위 네트 결정이 시간 7-H에서 트리거되고 결정시간 7-J에서 일어나는 경우를 예시하고 있다. 시간 7-J에서 BSDCNN- 신호의 부진행 구간은 인지 신호가 우선순위 네트의 결정천에 클리어되는 경우를 예시하고 있다. 시간 7-L에서 BSDCNN- 신호의 부진행구간은 시간 7-F에서 버스 요구가 없으며, 우선순위 네트결정이 시간 7-K에서 나중의 버스 요구 신호 BSREQT- 에 의해 트리거되는 경우를 예시하고 있다. 이 과정은 비동기식으로 반복된다.
[리이드 메모리 동작]
메모리 리이드 동작이 이하 예를 들어 설명될 것이다.
예로서, I/O제어기는 메모리의 리이드 요구를 하고 그 요구 및 응답과 관련된 두 개의 버스 사이클이 검사될 것이다. 제1버스 사이클 동안, I/O 제어기는 마스터이고 메모리는 슬레이브이다. 이 제1사이클 동안, I/O제어기는 그것의 우선순위 회로망 논리와 메모리 제어기 응답을 사용하여 버스에 대해 명령을 내린다. 제2버스 사이클 동안에는, 메모리 제어기가 마스터이고 중앙처리기가 슬레이브되고 그 마스터와 I/O 제어기가 슬레이브되며, 메모리는 그것의 우선순의 회로망 논리를 사용하여 버스에 대해 명령을 내리고 I/O제어기는 버스 인터페이스 논리를 사용하여 응답한다. 메모리 제어가 비지(사용중)신호는 메모리 제어기에 접속된 메모리 모듈 중 하나가 사실상 사용중이라는 것을 지시하기 위해 제공된다. 만일 메모리 모듈이 사용중이면, 메모리 요구를 행하면 마스터(요구)장치에 응답하여 WAIT신호가 발생될 것이다. 메모리가 사용중이 아닐 경우에는 인지(ACK)신호가 발생될 것이다.
신호는 메모리가 아직도 사용중이기 때문에 매우 단기간의 지연이 있을 것이라는 것을 의미한다는 사실도 역시 유의하여야 한다.
[로크 메모리 동작]
ACK, NAK 또는 WAIT 신호중 어느것이 발생될 것인지 지시해주는 다른 조건은 전술한 바와 같이 다중 사이클 버스 전달을 포함하는 로크 신호로서, 이에 의해 한 장치가 동작을 시작할 수 있는 어떤 다른 로크장치 없이도 특정 메모리 영역을 호출할 수 있게 된다. 이 로크 동작의 효과는 메모리 제어기의 비지조건을 어떤 종류의 동작을 위해 단일 사이클의 완성너머로 확장시키는 것이다. 그 시퀀스의 최종 사이클이 완료되기 전에 로크 동작의 개시를 시도하는 공통버스(107)상의 장치들은 NAK신호를 수신할 것이다. 그러나 메모리는 아직도 곧 설명할 바와 같이 메모리 요구에 응답할 것이다. 이 버스 사이클간의 개입시간이 전달에 관계되지 않는 다른 장치에 의해 사용될 수 있음에 유의하길 바란다. 로크 동작은 일차적으로 두 개 이상의 장치들이 예컨대 메모리와 같은 동일 자원을 공유하길 원하는 곳에 사용된다. 임의의 수의 버스 사이클 및 메모리 사이클을 포함할 수 있는 로크 동작은 공유된 자원을 제어한 특정 장치에 의해 언로크 된다.
공유자원이 로크될 동안, 공유자원의 호출을 원하는 다른 장치들은 버스상의 이러한 다른 장치가 로크 제어신호를 내거나, 혹은 CPU가 로크동작을 시도하는 경우에 로크아웃(lock out)될 것이다. 만일 로크 동작이 시도되지 않으면, CPU나 다른 제어장치가 예컨대 긴급한 요구나 절차를 처리하는 것과 같이 공유자원에 대한 호출을 달성하는 것이 가능하다. 로크 신호를 내는 어떤 장치가 공유자원의 호출을 달성하기 전에, 공유자원은 그것이 로크동작에 관련되는지의 여부를 알아보도록 시험된 다음, 만일 그 자원이 로크동작에 관련되지 않으면 자원이 로크동작을 시도하는 장치에 의해 호출될 수 있다.
따라서, 자원을 공유하기 위한 로크동작은 적절한 제어신호, 즉 로크제어신호를 송출하는 그 장치들간에서 효과적인 것으로서, 예컨대 정보의 테이블이 기억될 수 있는 메모리의 부분을 공유하는데 사용될 수 있음을 알 수 있다. 아울러, 만일 장치들중 하나가 공유자원의 정보를 변경시키길 원한다면, 다른 장치가 로크아웃되므로, 당지 부분적으로 변경된 정보에 대한 호출을 달성하지 못하지만, 오히려 이러한 모든 변경이 이루어진 후에만 호출이 허용된다. 이런 경우에는 리이드-수정-라이트 동작이 관련될 수도 있다.
알 수 있는 바와 같이 공통버스(107)를 거쳐 수행된 로크동작을 위한 BSSHBC- 신호는 전술한 것과 약간 다른 방식으로 사용된다. 버스로크 동작동안, BSSHBC- 신호는 테스트에 의해 공유자원의 호출을 행함과 동시에 로크동작을 완성할 때 공유자원을 언로크 하도록 자원의 공유를 시도하는 장치에 의해 내보내진다.
[로크논리]
메모리제어기(109)의 로크분리(110)이 I/O 제어기 또는 CPU를 위해서 분할할 수 없는 메모리 동작을 행하는데 활용되는 방법은 이하에서 제8도의 논리 블록도 및 제9도의 타이밍도를 참조하여 설명될 것이다. 메모리 제어기(109)가 I/O 제어기로부터 공통버스(107)를 거쳐 혹은 CPU 논리(108)로부터 메모리 호출을 행한다는 점에서 이중 포오트로 되어 있기 때문에, 로크논리(110)는 I/O 제어기나 CPU논리에 의해 비동기적으로 발생될 수 있는 로크 요구의 동기화를 위해 마련되어야 한다. 이러한 비동기식 로크 및 언로크 동작의 동기화는 아래에 기술할 바와 같이 발생한다.
제8도는 메모리 제어기 논리(109)의 로크 논리(110)의 논리블록도이다. 제8도에서, 로크논리(110)는 CPU에 의해 로크된 플립플롭(801), 버스에 의해 로크된 플립플롭(820), 동기화 플립플롭(802) 및 다른 플립플롭, 인버터, AND, NAND, NOR 게이트로 구성된다. 플립플롭(801) 및 (802)은 텍사스주 달라스시에 소재한 텍사스 인스트루먼트사에 의해 제조된 S74S112형의 프리세트 및 클리어를 갖춘 부 구간 트리거형 J-K 플립플롭이며, 본 명세서에서 참조로 하는 "설계 기술자를 위한 TTL 데이타 책자" 1976년 발행 제2판에 기재되어 있다. 동기화 플립플롭(802)은 캘리포니아주 마운틴 비유에 소재한 훼어차일드 카메라 인스트루먼트사에 의해 제조된 74F74형의 프리세트 및 클리어를 갖춘 정구가 트리거형 D형 플립플롭이며 본 명세서에서 참조로 하는 1980년 판의 "신속한 훼어차일드 개량 쇼트키 TTL"이란 책자에 기재되어 있다.
처음에 메모리 로크 동작이 시작되기 전에, CPU에 의해 로크된 플립플롭(801), 버스에 의해 로크된 플립플롭(820) 및 동기화 플립플롭(820)는 Q출력에서의 출력신호가 2진 0이고
Figure kpo00001
출력에서의 출력신호가 2진 1이 되게끔 리세트상태에 있다. 따라서 플립플롭(801)이 Q출력에서의 신호 CPLKME+와 플립플롭(820)의 Q출력에서의 신호 LOCKDD+는 2진 0이고, 플립플롭(820)의
Figure kpo00002
출력에서의 신호 LOCKDD-와 플립플롭(802)의 Q출력에서의 신호 LOCKED-는 2진 1이다. 플립플롭(801),(820) 및 (802)은 처음에 버스 마스터 클리어 신호 BSMCLR-에 의해 리세트 상태로 세트되는데, 이 신호는 각각의 상기 플립플롭의 리세트(R)입력에 대한 입력으로서 공통버스(107)에 접속된 장치의 논리가 초기 상태로 클리어되게끔 시스템이 초기화되는 짧은 기간동안 2진 1로 천이된다.
[로크 메모리 예]
이하 제8도의 로크논리(110)를 I/O 제어기가 메모리 모듈중 하나에 있는 영역상에서 로크 동작을 행하길 원하는 경우를 예시한 제9도의 타이밍도를 참조하여 상세히 설명하기로 한다. 이 제9도에 예시된 예에서는, I/O 제어기가 메모리 로크 동작을 개시한 후, CPU가 그것이 메모리 상에서 로크 동작을 행하길 원함과 동시에 로크동작을 개시하는 것을 결정한다. 제9도에는 I/O 제어기 로크동작이 CPU 로크동작의 발생이 허용되기 전에 .완료됨을 보여준다. CPU 로크동작동안 I/O 제어기는다른 메모리 로크동작의 개시를 시도한다. 제9도는 I/O 메모리 동작이 시간 A에서 시작되고 시간 0에서 완료되며, 그 동안에 메모리 리이드가 시간 A로부터 시간 J까지에서 수행되고, 그 데이타가 시간 J로부터 시간 L까지에서 I/O 제어기에 의해 수정되고 이 수정된 데이타는 시간 L 내지 0에서 메모리에 써넣어짐을 보여준다. I/O 제어기를위한 버스 메모리 로크동작 다음에 CPU는 시간 AA에서 시작한 그것의 메모리 로크동작을 완성하고, 그 동안에 CPU는 시간 C 내지 X에서 메모리가 로크되게 하며, 그것은 시간 BB 내지 CC에서 메모리 리이드를 행하는 CPU와, 시간 CC 내지 DD에서 데이타를 수정하는 시간 DD 내지 EE에서 수정된 데이타를 메모리에 써넣는 CPU에서 구성된다. CPU가 NAK 응답 메모리로크 동작을 행하게 되는 동안 시간 R 내지 U에서 메모리 로크 동작을 시도하는 I/O 제어기는 결과적으로 NAK 응답을 하게 된다.
제9도에서, 시간 A에서 제1 I/O 제어기(103)와 같은 제1도의 I/O 제어기는 메모리 영역의 리이드-수정-라이트 동작을 행하길 원한다는 것을 결정하였다. 이것은 메모리 로크동작이 수행되는 것을 필요로하며 시간 A에서 I/O 제어기는 버스 요구 신호 BSREQT-가 2진 0에서 2진 1의 상태로 천이되게 함으로써 공통버스(107)의 사용을 요구한다. 버스 요구신호 BSREQT가 2진 0상태로 천이할 때, 그것은 버스 우선순위 결정 사이클을 시작하고 이어서 공통버스(107)에 부착된 각 장치의 우선 순위 논리는 모든 가능한 요구 장치중 어느 것이 최고 우선순위를 갖는지 결정하도록 처리하며, 만일 I/O 제어기가 최고 우선 순위라면, 버스가 마스터 장치로서 승인되고 I/O 제어기의 우선순위 논리가 버스상의 데이타 사이클 현재 신호 BSDCNN-로 하여금 시간에서 2진 1상태에서 2진 0상태로 천이되게 할 것이다. 이와 동일한 시간에, 마스터장치로서의 I/O 제어기 논리(103)는 읽혀질 영역의 어드레스를 버스 어드레스 라인상의 두고 또한 버스 로크 신호 BSLOCK를 2진 0상태로 세트시켜 제2반부의 버스 사이클 즉 신호 BSHHBC-를 2진 0상태로 머무르게 함으로써 메모리를 로크 동작이 수행되어질 슬레이브 장치로서 신호한다. 따라서 제9도의 시간 B에서 BSSHHBC-는 제8도의 AND게이트 818의 한 입력에서 2진 0이고 신호 BSLOCK+는 그것의 출력신호 LOCKER+이 버스에 의해 로크된 플립플롭(820)의 J 입력에서 2진 1이 되게 하는 AND 게이트(818)의 다른 입력에서 2진 1임을 알 수 있다. 신호 BSLOCK+는 공통버스(107)로부터 입력신호 BSLOCK-를 반전하는 인버터(821)에 의해 출력된다. 제9도의 시간 B에서 2진 1이 되는 버스 로크신호 BSLOCK+도 역시 AND 게이트(819)의 한 입력이다. AND 게이트(819)의 다른 입력은 인버터(822)의 반전된 출력이 제2반부의 버스 사이클, 신호 BSSHBC+이고, 그것의 입력은 공통버스(107)로부터의 신호 BSSHBC-이다. 시간 B에서, 신호 BSSHBC+는 2진 0상태에 머무르므로 신호 UNLOCK+가 버스에 의해 로크된 플립플롭(820)의 K 입력에서 2진 0가 되게하는 AND 게이트(819)의 출력을 디스에이블 시킨다. 시간 B에서, 버스상의 데이타 사이클 현재 신호 BSDCNN-는 2진 1상태에서 2진 1상태로 변화하고 인버터(823)의 출력신호 BSDCNN+가 동기화 플립플롭(802)의 클럭(C) 입력에서 2진 0상태에서 2진 1상태로 변화하게 함으로써 그것이 데이타(D) 입력에서 신호 CPLKME+를 클록(동기)시킨다. 신호 CPLKME+가 시간 B에서 2진 0이기 때문에, 동기화 플립플롭(820)이
Figure kpo00003
출력, 즉 신호 LOCKED-가 2진 1로 머무르게 하여 부분적으로 NAND 게이트(804)가 계속 인에이블 되게 하는 리세트 상태를 유지한다.
따라서, 나중에 더욱 명백해지겠지만 I/O 제어기가 메모리 로크 동작을 시도하고 있을 때, I/O 메모리 로크 동작의 시작시에 제9도의 시간 B 및 S에서 행하여지는 바와 같이 신호 BSLOCK-를 2진 0상태로 세트시켜 신호 BSSHBC-를 2진 1상태로 유지시키는 I/O 제어기에 응답하여 AND 게이트(818)의 출력, 즉 신호 LOCKER+는 2진 101이고 게이트(819)의 출력, 즉 신호 UNLOCK+는 2진 0이 된다. 제9도의 시간 M에서 행하여지는 것처럼 신호 BSLOCK-를 2진 0상태로 세트시키고 제2반부의 사이클 신호 BSSHBC-를 2진 1으로 세트시키는 I/O 제어기에 의하여 행하여지는 메모리 언로크 동작을 I/O 제어기가 시도하고 있을 때 AND 게이트(818)의 출력은 2진 0이고 AND 게이트(819)의 출력은 2진 1이다. 따라서 제9도의 시간 B에서, 로크 및 언로크신호는 각각 버스에 의해 로크된 플립플롭(820)의 J 및 K 입력에서 설정된다. 이러한 입력들을 플립플롭(820)의 J 및 K 입력에서 설정하는 것은 나중에 시간에서 발생하는 2진 0 상태로 천이하는 신호 MEACKR-를 클럭시킴으로써 플립플롭(820)이 클록될 때까지 아무런 영향을 미치지 않는다. 시간 D까지, 버스에 의해 로크된 플립플롭(820)은
Figure kpo00004
출력신호 LOCKDD-가 NAND 게이트(804)의 다른 입력에서 2진 1상태에 머무르게끔 리세트 상태를 유지한다. NAND 게이트(804)의 양입력이 2진 0상태에 있을 경우, 그것의 출력신호 LOCKED+는 그것의 한 입력이 2진 0상태가 될 때까지 2진 0상태에 머무를 것이다.
신호 LOCKED+는 AND 게이트(805) 및 NAND 게이트(807)의 입력중 한 입력이다. AND 게이트(805) 및 NAND 게이트(807)의 다른 입력은 AND 게이트(808)의 출력인 신호 LOCKER+이다. NAND 게이트(804)의 출력신호 LOCKDE+는 메모리가 CPU 또는 버스에 의해 이미 로크되었다면 2진 1이 될 것이고 메모리가 CPU 또는 버스에 의해 로크되지 않으면 2진 0이 될 것이다.
AND 게이트(805)와 NAND 게이트(807)의 입력중 한 입력에서 2진 0인 신호 LOCKED+는 이들 게이트를 디스에이블시켜 그들의 출력, 즉 신호 MENAKR+는 2진 0로 그리고 신호 MENAKR-는 2진 1으로 되게 한다. NOR 게이트(805)(808)의 다른 입력은 신호 MESAME-, MODPAR-, PAPER8+ 및 PARERO+이다. NOR 게이트(806) 또는 NOR 게이트(808)의 출력이 2진 101이 되게 하기 위해서, 그들 5입력 각각이 2진 0이 되어야 한다. 신호 MESAME-는 읽혀지거나 쓰여질 메모리 장소의 어드레스가 메모리 제어기(109)의 어드레스 영역내에 있을 때 2진 0이다(즉, 어드레스 메모리 장소는 메모리 모듈 1(101) 또는 메모리 모듈 2(102)내에 들어가야 하고 어드레스 지정된 모듈이 물리적으로 시스템내에 존재하여야 한다). 그러므로, 시간 B에서 마스터로서 제1 I/O 제어기(103)에 의해 공통버스(107)상에 제시된 어드레스가 현재의 메모리 모듈내에 들어가면, 신호 MESAME-이 2진 0이 될 것이다. 신호 MODPAR-는 공통버스의 상위 8비트 어드레스 라인이 공통버스상의 페리티 라인과 일치하는 가의 여부를 지시하는 어드레스 모듈러(modular) 패리티 신호이며, 만일 일치한다면 2진 0가 될 것이다. 패리티 에러 신호 PARER0+ 및 PARER8+는 각각 하위 8비트 및 상위 8비트 데이타 라인에 대한 데이타 패리티 에러 표식이며, 패리티 에러가 전혀 발생치 않으면 2진 0가 될 것이다. 그러므로, I/O 제어기가 메모리 내의 장소를 어드레스 지정하고 있는 정상적인 경우에, 신호 MESAME-, MODPAR-, PARER8+, PARER0+는 2진 0이 되고 NOR 게이트(806), (808)의 출력은 각각 입력신호 MENAKR+ 및 MENAKR-에 의해서만 결정될 것이다. 이 경우에, 시간 B에서 신호 MENAKR+는 2진 0이 되어 NOR 게이트(806)의 출력 즉 신호 MECYLE+가 2진 1이 되게 하고 신호 MENAKR-는 2진 1이 되어 NOR 게이트(808)의 출력 즉 신호 MENAKR+이 2진 0이 되게 한다. D형 플립플롭(809),(810)는 2진 0을 2진 1상태로 천이시키는 그들의 클럭(C) 입력에서 스트로우브 신호 BSDCND+에 의해 클럭된다. 스트로우브 신호 BSDCND+는 메모리 제어기의 버스 우선순위 결정논리의 부분인 지연라인(824)에 의해 약 64나노초동안 신호 BSDCNN+를 지연시킴으로써 발생된다. 제7도에 도시한 신호 BSDCND-는 신호 BSDCND+를 인버터(826)에 의해 반전시킴으로써 발생된다. 플립플롭(809)의 D 입력에서 2진 1신호 MECYLE+를 클럭시키면 결과적으로 플립플롭(809)이 세트되어, 그것의 Q 출력, 즉 신호 MECYLL+가 2진 1이 되고 그것의
Figure kpo00005
출력, 즉 MECYLL-가 2진 0이 된다. 신호 BSDCND+ 2진 0에서 2진 1로 천이하는 이와 동일한 시간에, 플립플롭(810)은 클럭되어 그것의 D 입력에서의 신호 MENAKR+의 2진 0상태로 플립플롭(810)이 리세트 상태를 유지하여 그것의
Figure kpo00006
출력 즉 신호 MENAKR-이 2진 1상태에 머무르게 한다. 플립플롭(809),(810)의 클럭작용은 신호 BSDCND+가 2진 0에서 2진 1상태로 천이하는 시간 D에서 발생한다. 플립플롭(809)의 출력, 즉 신호 MECYLL+ 및 MECYLL-는 정의 인지(ACK) 또는 대기(WAIT) 응답이 마스터 장치로부터 버스를 거쳐 내려진 요구에 대해 슬레이브 장치로서의 메모리에 의해 발생될 것인지 결정하는데 사용된다. 플립플롭(810)의 출력, 즉 신호 MENAKK-는 요구하는 장치에 부(NAK)의 응답이 발생될 것인가의 여부를 결정하는데 사용된다.
시간 D에서, 플립플롭(809)이 세트된 후, 신호 MECYLL+는 2진 1이 되고 부분적으로 NAND 게이트(811)를 인에이블시킨다. 또한 시간 D에서, 신호 MECYLL-는 NOR 게이트(812)의 한 입력에서 2진 0이 될 것이므로 그것의 출력신호 MYWAIT+는 그것의 다른 입력신호 WAITER-에 의해 결정될 것이다. 신호 WAITER-는 메모리가 현재 사용중인가의 여부를 지시하는데 사용되는 메모리 비지 플립플롭에 의해 출력된다. 신호 WAITER-는 또한 NAND 게이트(811)의 다른 입력이다. 그러므로 시간 D에서 메모리 비지 플립플롭(803)이 메모리가 현재 사용중이 아님을 지시하도록 세트되지 않으면, 신호 WAITER-가
Figure kpo00007
출력에서 2진 1이 되고 부분적으로 NAND 게이트(811)를 인에이블시켜 신호 MECYLL+가 시간 D에서 2진 1이 될 때 그것의 출력, 즉 신호 MEACKR-이 2진 1이 되게 한다. 신호 MEACKR-는 인버터(814)에 의해 반전되어 신호 MYACKR+를 생성하고 이어서 인버터(815)에 의해 반전되어 제9도의 시간에서 2진 0이 되는 정의 버스 인지 신호인 신호 BSACKR-를 생성한다. 간단히 하기 위해, 제9도의 타이밍도에서 무시된 바와 같은 제8도의 소자들과 전파지연이 관련되어 있음에 유의하기 바란다. 예를 들어, 시간 D에서 신호 BSDCNN-의 2진 0로의 천이는 즉시 신호 BSACKR-를 제9도에서 2진 0로 되는 결과를 낳는 것으로 도시되어 있으며 소자(823),(809),(811),(814) 및 (815)의 전파지연을 무시하고 있다. 신호 WAITER-가 NOR 게이트(812)의 한 입력에서 2진 0인 경우에, 시간 D에서 신호 MECYLL-의 2진 0에서 2진 1로의 천이는 신호 MYWAIT+가 2진 0에 머무르고 또 인버터(816)에 의해 출력된 버스 대기 신호 BSWAIT-가 2진 1에 머무르게끔 NOR 게이트(812)의 출력에서 아무런 차이도 나타내지 않을 것이다.
따라서, 제9도의 시간 D에서 만일 I/O제어기가 메모리 로크 동작을 시도하고 메모리가 이전에 I/O 제어기 또는 CPU에 의해 로크되지 않았으며 메모리가 사용중이 아니라면, 슬레이브 장치의 로크논리(110)에 의해 정의 인지(ACK)가 발생되어 시간 D에서 공통버스(107)에서 마스터 장치로서의 I/O 제어기에 송출될 것이다. 이제 플립플롭(810)으로 돌아가서, 시간 D에서 신호 MENAKR+의 2진 0이 플립플롭(810)에 클럭될 경우, 플립플롭(810)이 리세트 상태를 유지하여, 그것의
Figure kpo00008
출력, 즉 신호 MENAKK-가 2진 1상태에 머물게 하여 인버터(813)이 출력, 즉 신호 MYNAKR+가 2진 0로 되게 하며, 이이서 인버터(810)에 의해 반전되어 2진 1상태를 유지할 버스 신호 BSNAKR-를 생성함으로써 로크 동작을 수행하고 있는 요구중인 I/O 제어기에 부의 응답(NAK)이 발생되지 않음을 지시한다. 버스에 의해 로크된 플립플롭(820)의 클럭(C) 입력에서 신호 MENAKR-의 시간 D에서 2진 1으로부터 2진 0로의 천이는 J 입력에서 신호 LOCKER+의 2진 1을 클럭시킴으로써 플립플롭(820)을 세트시켜 신호 LOCKDD+는 2진 1으로 그리고 신호 LOCKDD-는 2진 0로 되게 한다. 따라서, 버스에 의해 로크된 플립플롭(820)은 공통버스(107)에 부착된 요구중의 장치가 메모리 제어기(109)로부터 정의 인지(ACK)를 수신할 때마다 클럭된다. 시간 D에서 신호 LOCKDD-의 2진 1로부터 2진 0로의 천이는 NAND 게이트(804)의 출력이 시간 F에서 2진 1로 되게 한다.
시간 D에서, I/O 제어기로부터의 메모리 요구가 정의 인지로서 주어진 것이라고 메모리 제어기가 결정했을 때, 메모리 제어기는 메모리 어드레스에서 2중 포오트로 된 메모리의 버스 포오트에 래치(latch)함과 아울러 버스 라인의 상태에서 래치하여, 메모리 리이드 동작이 수행될 것인지 혹은 메모리 라이트 동작이 수행될 것인지 지시하고 버스에 부착된 한 장치를 위해 수행될 메모리 사이트에 대하여 우선순위 결정논리(111)의 요구를 행한다. 시간 E에서, 본 예의 경우에 제1 I/O 제어기(103)인 마스터 장치가 메모리 제어기(109)로부터 ACK를 수신한 후, I/O 제어기는 버스 로크신호 및 데이타 사이클 현재 신호 BSLOCK- 및 BSDCNN-를 제거하고 이 신호들을 2진 0상태에서 2진 1상태로 복귀시키며, 아울러 메모리 어드레스 및 리이드 또는 라이트 메모리 지시 신호를 제거한다. 그후 시간 E에서 데이타 사이클 현재 신호 BSDCNN-의 2진 0에서 2진 1로의 천이는 신호 BSREQT가 신호 E에서 2진 0에서 2진 1로 천이하게끔 I/O 제어기가 버스 요구 신호를 리세트 시키게 한다. 시간 F에서, 양 플립플롭(809) 및 (810)은 그들의 리세트(R) 입력에서 2진 0이 되는 신호 BSDCNB+에 의해 리세트된다. 신호 BSDCNB+는 신호 BSDCND+ 및 신호 BSDCNN+의 입력들을 갖는 OR 게이트(825)에 의해 출력된다. 메모리 버스 사이클의 종료시에 플립플롭(809) 및 (810)이 리세트된 결과, ACK, WAIT 또는 NAK 신호는 어느것이 작용하든간에 리세트되어 제9도의 시간 F에서 신호 BSACKR-의 경우처럼 2진 1상태로 복귀한다. 따라서, 시간 F에서, 슬레이브 장치는 다음 버스 사이클의 준비로서 버스로부터 그것의 정, 대기 또는 부 응답 신호를 제거한다.
다음 시간 G에서, 요구된 데이타가 메모리로부터 읽혀졌을 때, 메모리 제어기(109)는 버스 요구 신호 BSREQT-를 2진 1에서 2진 0상태로 천이함으로써 시간 G에서 버스의 사용에 대한 요구를 행한다. 우선 순위 결정이 이루어진후, 신호 BSDCNN-는 시간 H에서 2진 1에서 2진 0상태로 천이하고, 메모리가 버스를 얻었음을 가정하여 마스터 장치로서의 메모리가 다음에 메모리로부터 읽혀진 데이타의 워어드를 버스 데이타 라인상에 배치한다. 그것은 또한 이 시간에 제2반부 버스 사이클; 즉 신호 BSSHBC-가 2진 1에서 2진 0상태로 천이하게 함으로써 이것이 이전의 리이드 요구에 대한 응답 사이클임을 슬레이브 장치에 지시하게 된다. 슬레이브로서의 I/O 제어기가 공통버스(107)상의 그것의 제어기 어드레스를 인식할 때, 그것은 정의 인지(공정응답)를 발생함으로써 응답하고 신호 BSACKR-를 시간 I에서 2진 1에서 2진 0상태로 변화한다.
메모리에 의한 ACK의 수신에 따라 메모리 제어기의 우선순위 회로망 논리는 시간 J에서 데이타 사이클 현재 신호 BSDCNN-가 2진 0에서 2진 1상태로 천이되게 하며, 또한 그것이 시간 J에서 2진 0에서 2진 1상태로 복귀하게끔 메모리가 제2반부의 버스 사이클 신호 BSSHBC-를 제거시키게 한다. 정의 인지의 수신과 데이타 사이클 현재 신호의 2진 0에서 2진 1상태로의 천이로 말미암아 메모리 제어기로부터의 버스 요구 신호, 즉 신호 BSREQT는 시간 J에서 2진 0에서 2진 1상태로 천이된다. 시간 K에서, 그것의 우선순위 회로망 논리내의 데이타 사이클 현재 신호 BSDDNN-를 지연시킨후, 슬레이브 장치로서의 인지로써 응답한 I/O 제어기는 버스 인지 신호 BSACKR-를 시간 K에서 2진 0로부터 2진 1로 리세트 시킨다.
로크 동작에의 이 시점에서 I/O 메모리 요구는 시간 A 내지 F에서 I/O 제어기가 마스터이고 메모리가 슬레이브로서 응답하고 버스로부터 메모리 어드레스를 취하며 시간 G 내지 K에서 메모리가 마스터가 되고 슬레이브로서 I/O 제어기에 응답하고 메모리로부터 읽혀진 데이타의 워어드를 제공하는 것으로 완성되었다. 시간 F와 G 사이에서, 공통버스(107)상의 다른 장치는 버스에 대한 호출을 요구하거나 수신할 수 있으며 그 장치는 또한 로크 동작을 시도하지 않는다면 메모리 제어기에 대한 호출을 수신할 수 있다. 또한 이 시간동안, CPU는 시간 C에서 로크 동작을 요구하지 않는다면 메모리가 우선순위 결정논리(11)에 의해 결정된 바와같이 보다 높은 우선순위인 버스 요구에 응답하여 사용하고 있지 않았을 때 메모리에 대한 호출을 할 수 있다. 시간 J 내지 L에서, I/O 제어기는 메모리로부터 읽혀진 수정하는 동작을 수행한다. 시간, L에서 I/O 제어기는 수정된 데이타를 메모리를 다시 써넣기 원하고 버스 요구 라인 BSREQT-를 2진 1에서 2진 0상태로 세트시킴으로써 버스의 사용을 요구한다. I/O 제어가 마스터로서 버스를 얻은후, 그것은 데이타 사이클 현재 신호 BSDCNN-가 시간 M에서 2진 1에서 2진 0로 천이되게 하며 쓰여질 메모리 장소의 어드레스를 버스 어드레스 라인상에 그리고 그 장소에 써넣어질 메모리의 데이타를 버스 데이타 라인상에 둔다. 시간 M에서, I/O 제어기는 또한 이것의 로크 동작의 완성임을 지시하고 이를 행하기 위해 신호 BSLOCK-를 2진 1에서 2진 0상태로 천이시킴과 동시에 제2반부의 버스 사이클 라인 BSSHBC-를 2진 1에서 2진 0상태로 천이시킴으로써 메모리를 언로크하여, 이 동작이 지간에서 발생된 로크 동작에 반대되는 언로크 동작임을 지시하는데, 시간 B동안 신호 BSSHBC-는 2진 0상태를 유지한다.
이 제8도에 예시된 로크논리(110)로 돌아가서, 시간 M에 마스터 장치로서의 I/O 제어기가 신호 BSLOCK- 및 신호 BSSHBC-를 2진 0상태로 세트시킴으로써 메모리가 언로크될 거라고 지시한 메모리 라이트 버스 사이클동안, AND 게이트(818)의 출력, 즉 신호 LOCKER+는 이것의 로크 동작이 아님을 지시하는 2진 0이 될것이며, AND 게이트(189)의 출력, 즉 신호 UNLOCK+는 이것이 언로크 동작임을 지시하는 2진 0가 될 것이라는 사실을 이해하여야 할 것이다. 시간 M에서, 버스에 의해 로크된 플립플롭(820)이 세트상태를 유지하여 그것이
Figure kpo00009
출력 즉 신호 LOCKDD-이 2진 0상태에 머무르게 한다. 신호 LOCKDD-의 2진 0는 NAND 게이트(804)를 디스에이블시켜 그것의 출력 LOCKDE+가 2진 0이 되게 함으로써, 메모리가 현재 로크되어 있음을 지시한다. 신호 LOCKDE+의 2진 1은 부분적으로 AND 게이트(805)와 NAND 게이트(807)를 인에이블시킨다. 그러나, 이들 양 게이트는 신호 LOCK ER+의 2진 0에 의해 디스에이블되어서 NAND 게이트(805)의 출력, 즉 신호 MENAKR+을 2진 0로 그리고 NAND 게이트(807)의 출력, 즉 신호 MENAKR을 2진 1로 만든다. NOR 게이트(806) 및 (808)의 입력인 다른 4가지 신호들이 2진 상태여서, 버스상의 메모리 어드레스가 메모리 제어기에 의해 제어된 메모리 장소에 있으며 아무런 어드레스 패리티나 데이타 패리티 에러가 없음을 지시한다고 가정하면, 게이트(806)의 출력, 즉 신호 MECYLE+는 2진 1이 될것이며, NOR 게이트(808)의 출력, 즉 신호 MENAKR+는 그것의 입력신호 MENAKR-가 2진 1이기 때문에 2진 0이 될 것이다. 그 다음, 신호 BSDCNN+가 지연 라인(824)에 의해 지연되고 클럭신호 BSDCND+가 2진 0상태에서 플립플롭(809)(810)을 클럭시키는 2진 1상태로 천이되도록 한후, 플립플롭(809)은 세트되어 그것의 Q 출력신호 MECYLL+이 2진 1이 되게 하고 플립플롭(810)은 리세트 상태를 유지하여 그것의
Figure kpo00010
출력신호 MEANKK-가 2진 1상태에 머무르게 할 것이다.
메모리 비지 플립플롭(803)의 출력, 즉 신호 WAITER-이 2진 1이 되게끔 메모리가 이제 유효하다고 가정하면, NAND 게이트(811)는 완전히 인에이블되어 그것의 출력신호 MEACKR-가 2진 1이 되게 하며 이어서 인버터(814)(815)에 의해 반전되어 버스 인지 신호 BSACKR-이 제9도의 시간 N에서 2진 0이 되게 한다. 제9도의 시간 N에서, 버스 대기 신호 및 버스 NAK 신호 BSWAIT- 및 BSNRKR-이 시간 N에서 2진 1에서 2진 0상태로 천이할 때, 그것은 J 입력에서 2진 0가 되고 K 입력에서 2진 1이 되는 버스에 의해 로크된 플립플롭(820)을 클록시켜서, 결과적으로 플립플롭(820)을 리세트시켜 그것의 Q 출력신호 LOCKDD+가 2진 1에서 2진 0상태로 천이되게 할 것이다.
앞서서 설명한 바와 같이, 이 경우에 I/O 제어기인 슬레이브 장치에 의한 인지 신호의 수신으로 I/O 제어기가 시간 0에서 버스 로크 및 제2반부의 버스 사이클 및 공통버스로부터의 라이트 어드레스 및 데이타를 제거하게 하여, 신호 BSDCNN-, BSLOCK- 및 BSSHBC-가 2진 0에서 2진 1상태로 천이되게 할 것이다. 또한 ACK의 수신과 데이타 사이클 현재 신호의 천이로 말미암아 I/O 제어기가 시간 0에서 신호 BSREQT-가 2진 0에서 2진 1로 천이되게끔 버스 요구 라인을 복구하게 될 것이다. 메모리 제어기의 우선순위 결정논리 지연라인(824)에서 OR 게이트(824)의 출력, 즉 신호 BSDCNB+는 플립플롭(809) 및 (810)의 리세트(R) 입력에서 2진 1에서 2진 0으로 천이되므로 양 플립플롭을 리세트시켜 버스 인지 신호 BSACKR-가 시간 P에서 2진 1로 천이되게 한다.
시간 P에서 인지 신호 BSACKR-의 2진 1로의 복귀는 I/O 메모리 라이트 싸이클을 완성하고 버스에 의해 로크된 플립플롭(820)이 세트되는 시간 D에서 리이드 사이클의 시작부에서 메모리가 초기에 로크되고 버스에 의해 로크된 플립플롭(820)이 리세트되는 시간 N에서 라이트 사이클의 종료부에서 종료하는 전체 리이드-수정-라이트 사이클을 완성한다.
제8도의 로크논리(110)에 대한 상기 설명으로부터 알 수 있는 바와 같이, 로크논리 가버스의 사용을 요구하고 있는 마스터 장치에 ACK를 발생할 때마다, 버스에 의해 로크된 플립플롭(820)은 제9도의 시간 D, I 및 N에서 처럼 2진 1에서 2진 0상태로 천이하는 신호 MEACKR-에 의해 클럭된다. 시간 D에서 버스에 의해 로크된 플립플롭(820)은 세트되었고 시간 N에서 리세트되었다. 시간 I에서, 플립플롭(820)의 클럭작용은 AND 게이트(808)(819)가 로크신호 BSLOCK+의 2진 0상태에 의해 디스에이블 되었으므로 J 및 K 입력이 2진 0상태에 있었기 때문에 플립플롭의 상태에 아무런 변화도 일으키지 않는다.
플립플롭(809),(810)만이 마스터 장치가 메모리내의 장소를 어드레스 지정했을때 버스상에 ACK, WAIT 또는 NAK 신호를 발생하고 또 다른 I/O 제어기 또는 메모리 제어기(109)에 의해 제어된 메모리내에 입지않은 장소를 어드레스 지정하고 있을 때에는 발생되지 않음을 유의하여야 한다. 이는 각 버스 사이클동안 신호 BSDCND+가 플립플롭(809),(810)을 클럭할 때에도 발생한다. 그리고, 공통버스(107)상의 어드레스 라인이 메모리내의 메모리장소를 지시하지 않는다면, 양 NOR 게이트(806),(808)의 입력인 신호 MESAME-는 2진 1상태에 있게 될 것이므로 플립플롭의 데이타(D) 입력에 입력되는 양 NOR 게이트의 출력, 즉 신호들 MECYLE+ 및 MENAKR+이 2진 0상태로 되게 하여, 결과적으로 플립플롭(809),(810)이 신호 BSDCND+에 의해 클럭될 때마다 항상 리세트된다. 이러한 리세팅으로 말미암아 플립플롭들의 Q 및
Figure kpo00011
출력의 상태에는 아무런 변화도 생기지 않으며 따라서 버스 ACK, WAIT 또는 NAK 신호도 2진 0상태로 변화하지 않을 것이다.
NAND 게이트(811)에 의한 신호 MEACKR- 출력은 ACK 응답을 발생하는데 사용하는 외에도, 메모리가 공통버스(107)로부터 나온 메모리 요구에 정의 인지(ACK)를 줄때마다 그것이 우선순위 결정논리(111)를 통해서 메모리에 대한 요구를 행하게끔 우선순위 결정논리(111)에 대한 I/O 메모리 요구로서도 사용된다.
J-K 플립플롭들은 2진 1을 J 입력에 클럭시킴으로써 세트되고 2진 0을 K 입력에 클럭시킴으로써 리세트된다. 그러므로, 버스에 의해 로크된 플립플롭(820)이 클럭작용을 할 때마다, 버스상의 슬레이브 장치로서의 메모리 제어기는 써넣어지거나 읽혀질 메모리장소를 요구하는 마스터 장치에 ACK로써 응답한다.
버스에 의해 로크된 플립플롭(820)은 그것이 로크중이거나 혹은 제9도의 시간 B와 시간 M에서 발생하고 신호 BSLOCK-이 2진 1이기 때문에 제9도의 시간 H에서는 발생하지 않는 것처럼 BSLOCK-와 BSSHBC- 신호의 합성에 의해 규정된 바와 같이 언로크중인 경우에 상태를 변화시킬 뿐이다.
메모리가 CPU에 의해 언로크되는 방법을 설명하기 전에, 정상적인(즉, 로크되지 않은)메모리 리이드 또는 라이트 동작이 메모리가 로크되는 시간동안 공통버스(107)에 부착된 I/O 제어기를 위해서 일어날 수 있음을 유의하여야 한다. 즉, 메모리가 로크되는 시간동안 금지되는 것만이 CPU 또는 버스로부터 요구된 것이든간에 다른 로크된 리이드 또는 라이트 동작이다. 예를 들여, I/O 제어기가 메모리 리이드를 요구한다면, 마스터 장치가 버스로크신호 BSLOCK-가 시간 B에서 2진 0상태로 되게 하지 않으므로 플립플롭(280)의 J입력에서 신호 LOCKER+가 2진 0이 되며 또한 AND 게이트(805)의 입력에서 2진 0되어서 그것의 출력, 즉 신호 MENAKR+이 2진 0이 되게 하여, 결과적으로 NOR 게이트(806)이 출력, 즉 신호 MECYLE+가 2진 0이 되게 할거라는 점을 제외하고서는 제9도에 도시한 시간 A 내지 J에서 시작하는 시퀀스가 발생할 것이다. 신호 MECYLE+의 2진 1이 되는 신호 BSDCND+를 2진 1상태로 천이함으로써 플립플롭(809)에 클럭되었을때, NAND 게이트(811)가 신호 WATIER-가 2진 1임을 가정하여 완전히 인에이블되어, 그 결과 ACK가 슬레이브 장치로서의 메모리로부터 마스터장치로서의 I/O 제어기에 가해진다. 이러한 마스터장치의 ACK 작용으로 말미암아 버스에 의해 로크된 플립플롭(820)이 클럭되지만, 2진 0이 그것의 J 및 K양 입력에 나타나기 때문에 플립플롭(820)의 상태는 변하지 않으며, 이전의 언로크된 상태가 변화하지 않고 유지될 것이다.
[CPU 로크 메모리 동작]
CPU로 하여금 메모리 로크동작을 수행케하는 로크논리(110)의 일부에 대하여 이하 제8,9도 및 10도를 참조하여 설명하기로 한다. 로크되지 않은 동작이거나 로크된 동작이던간에 CPU가 메모리에서 읽거나 써넣길 원할때, XCPU는 공통버스(107)를 거쳐 메모리에 통신하지 않고 메모리 제어기(109)의 제2포오트를 사용한다. 그러므로, CPU는 버스 요구라인 BSREQT-의 상태를 변화시킴으로써 공통버스(107)의 사용을 요구하지 않고 또한 데이타 사이클 현재 신호 BSDCNN-나 로크신호 BSLOCK- 또는 제2반부의 버스 사이클 신호 BSSHBC-와 같은 타이밍신호나 로크신호들중 어떤것도 사용치 않는다. 아울러, CPU는 슬레이브 장치로서의 메모리가 메모리의 호출을 요구하는 마스터장치로부터 명령을 수락하였는지의 여부를 알아보도록 ACK, WAIT 또는 NAK 신호라인을 이용하지 않는다.
이 마스터-슬레이브 장치의 관계는 CPU가 자신의 포오트를 통해 메모리에 직접 통신하기 때문에 CPU와 메모리 사이에서 존재하지 않는다. CPU는 상기한 바와 같이 J-K 플립플롭인 CPU에 의해 로크된 플립플롭(801)을 세트시킴으로써 로크동작을 행하길 원할때마다 메모리를 로크한다. 적합한 실시예에 있어서, CPU는 마이크로프로그램 시스템으로서, 메모리 장소가 CPU 레지스터로 읽혀지고 한 장소가 레지스터의 내용으로부터 취출된 다음 그 레지스터 내용이 메모리에 다시 써넣어지는 것을 필요로 하는 감분 명령을 실행하는 경우처럼, 메모리 로크동작을 필요로 하는 소프트웨어 명령을 실행하고 있는 시간동안 마이크로 동작을 수행함으로써 플립플롭(801)을 세트시켜 세트(S) 플립플롭(801)에서의 신호 SETLCK-가 2진 0에서 2진 1상태로 천이되게 한다. 플립플롭(801)의 세팅은 그것의 Q출력, 즉 신호 CPLKME+가 2진 0에서 2진 1로 세트되게 한다. 이것의 예는 제9도의 시간 C에 도시되어 있는데, 그것은 시간 B에서 버스로부터 발생했던 메모리 요구에 의해 메모리가 이미 로크된 약간후에 발생하였다. 나중에 알 수 있겠지만, 공통버스(107)상의 버스 사이클에 대한 CPU 마이크로 동작의 실행이 비동기식 동작이기 때문에, 경합조건은 CPU가 메모리의 로크를 시도하고 있는 동일시간에 메모리의 로크를 시도하는 버스간에 발생할 수 있다. 메모리를 로크하는 CPU와 버스간의 가능한 경합을 설명하기 전에, CPU가 메모리를 로크하는 방법에 관해 기술하기로 한다.
상기한 바와 같이, CPU에 의해 로크된 플립플롭(801)은 CPU가 동기 플립플롭(802) 및 버스에 의해 로크된 플립플롭(820)의 경우처럼 초기화될 때 버스 마스터 클리어 신호 BSMCLR-에 의해 리세트 상태로 초기화된다. 그후, CPU에 의한 소프트웨어 명령의 실행동안, 즉 소프트 웨어 명령이 CPU가 장소를 리드하길 원하기 때문에 로크동작이 메모리상에서 수행되고 그 내용을 수정하여 그것을 인터럽트되지 않고 다시 써넣는 것을 필요로 할때, 소프트웨어 명령을 실행하는 마이크로 명령은 플립플롭(801)의 세트(S)입력에서 신호 SETLCK-를 2진 0상태로 발생함으로써 세트로크 동작을 수행한다. 이 로크 메모리마이크로 동작은 제10도에 블록(1001)로 표시되어 있다. 여기서 CPU에 의해 로크된 플립플롭(801)의 세팅은 메모리가 버스에 의해 이미 로크되었는가의 여부를 결정하도록 CPU가 버스에 의해 로크된 플립플롭(820)의 상태를 검사하지 않고 CPU에 의해 단방향성으로 일어난다. 또한 메모리를 로크한 다음 언로크하는 마이크로 명령 시퀀스가 인터럽트 가능하지 않으므로 만일 메모리가 CPU 마이크로 동작에 의해 이미 로크되었으면 그 다음에 언로크 마이크로동작이 수반되며, 따라서 CPU가 현재 메모리를 로크하는 위치에 있으면 CPU에 의해 로크된 플립플롭(820)의 상태는 리세트 상태로 되어야 하며, 메모리가 현재 로크되지 않았음을 CPU가 명백히 알고 있기 때문에, CPU는 메모리가 CPU에 의해 로크된 플립플롭(801)을 검사함으로써 CPU에 의해 이미 로크되었는가를 결정하는 것이 필요하지 않다.
동기 플립플롭(802)은 CPU 마이크로 명령에 대한 버스신호의 비동기 특성 때문에 필요한 것이다. 그러므로, CPU에 의해 로크된 플립플롭(801)의 출력, 즉, 신호 CPLKME+에서 클럭시킴으로써, 인버터에 의해 버스 신호 BSDCNN-를 반전시킴으로써 유기된 버스 데이타사이클 현재신호 BSDCNN+의 사용에 의해 플립플롭(802)의 데이타(D)입력에서, 플립플롭(802)의 Q출력은 안정화될 것이며, 이에 의해서 플립플롭(809),(810)의 데이타(D)입력에서의 신호가 2진 1상태로 천이하는 신호 BSDCND+에 의해 약 60나노초 나중에 클럭될 때 안정상태에 있게 될 것이다. 그러므로, 동기 플립플롭(802)은 2진 0상태로 되는 버스상에 데이타 사이클 현재 신호 BSDCNN-가 발생하기 전에 CPU가 메모리를 로크한다면, CPU에 의해 로크된 신호가 가시적이 되고 안정화되어서 플립플롭(809),(810)의 입력에서 MECYLE+ 및 MENAKR+ 신호의 상태에 영향을 주어 결과적으로 로크 메모리 동작을 수행하도록 버스로부터의 요구를 NAK하게 된다는 것을 보장해준다. 그러나, 만일 CPU가 버스상에 데이타 사이클 현재 신호가 발생하기 전에 CPU에 의해 로크된 플립플롭(801)을 세트시키지 않으면, 동기화 플립플롭(802)은 리세트상태를 유지하고, 플립플롭(809),(810)의 입력이 다음 버스사이클까지 영향받지 않을 것이다. 동기화 플립플롭(802)를 클럭시킨지 60초 지난 후에 플립플롭(809)(810)을 클럭시킴으로써, 플립플롭(802)의 Q출력이 20 내지 30나노초 걸리는 정상 상태에 도달하고 그 출력이 플립플롭(809),(810)을 클럭시키기에 앞서 NAND 게이트(804), AND 게이트(805), NOR 게이트(806) 또는 NAND 게이트(804), NAND 게이트(807), NOR 게이트(808)를 거쳐 전파하기에 충분한 시간을 가지고 있게 해줄만한 충분한 시간이 제공된다. CPU가 CPU에 의해 로크된 플립플롭(801)이 세트되고 그것의 출력이 버스상의 데이타 사이클 현재 신호의 발생에 의해 동기화 플립플롭(802)에 로크되었다면, 신호 LOCKER-의 2진 0상태는 NAND 게이트(804)의 출력이 2진 1이 되게 하고 동기화 플립플롭(802) 및 버스에 의해 로크된 플립플롭(820)이 리세트되는 시간까지 그 상태에 머무른다. 따라서, NAND 게이트(804)의 출력, 즉 신호 LOCKED+는 2진 1일 때 메모리가 CPU나 버스 또는 그 양자에 의해 로크되었음을 지시한다.
로크논리(110)의 리세트에 의한 LOCKDE+신호의 사용은 앞에서 기술한 버스로부터의 메모리를 로크하는 것에 대한 설명과 동일하다. CPU에 의한 메모리의 로크로 말미암아 CPU에 ACK, WAIT 또는 NAK 응답이 발생되지 않는데, 그 이유는 이 신호들이 다만 공통버스(107)를 거쳐 메모리의 사용을 요구하는 마스터장치에 응답하여 발생되기 때문이다. CPU의 메모리 사용과 관련되는 버스 사이클은 없으므로, CPU에 의한 메모리의 로크로 인하여 슬레이브로서의 메모리로부터 마스터 장치로의 응답이 발생되지 않을 것이며, 그 반면에 버스의 로크가 버스사이클의 일부로 일어나기 때문에 응답은 메모리가 버스에 의해 로크될 때 발생된다. 그러므로, CPU에 의해 로크된 플립플롭(801)의 세팅은 연속버스 메모리 사이클에 대한 준비시에 행하여지기 때문에 버스를 거쳐 메모리에 대한 로크동작의 수행을 시도하는데 있어서 마스터로 작용하는 I/O 장치는 메모리가 버스상의 I/O 장치에 의해 로크되었는지 혹은 CPU에 의해 로크되었는지의 여부를 관계없이 정확한 응답을 수신할 것이다.
앞에서 설명한 바와 같이, CPU에 의해 로크된 플립플롭(801)은 신호 SETLCK-가 2진 0이 되게 하는 마이크로 명령을 실행하는 CPU에 의해 실행된다. CPU는 메모리 장소의 리이드-수정 라이트를 요하는 로크동작을 수행하는 중일 때 이 세트된 로크 마이크로 명령을 실행한다. 리이드 또는 라이트에 대한 각 메모리 호출 동안, 그 호출이 공통버스에 접속된 I/O장치 또는 CPU를 위해서 수행되고 있던간에, 타이밍신호 MCASCP-는 열 어드레스가 주 메모리를 구성하는 반도체 칩에 나타내어질 때 2진 0으로 된다. 그러므로, 각 메모리 호출동안, CPU에 의해 로크된 플립플롭(801)은 클럭(C)입력에서 2진 0이 되는 신호 MCASCP-에 의해 클럭될 것이다. 공통 버스상의 I/O 제어기가 아니라 CPU를 위해 수행중인 메모리 라이트동안, 신호 MMWRIT+는 열 어드레스 신호 MCASCP-가 2진 0이 되는 시간에서 2진 0이 된다. 그러므로, CPU 메모리 라이트 신호 MMWRIT+를 플립플롭(801)의 K입력에 입력시킴으로써, CPU에 의해 로크된 플립플롭은 메모리 라이트가 CPU를 위해 수행될 때마다 리세트될 것이다. 따라서, CPU에 의해 로크된 플립플롭(801)은 리이드-수정-라이트 동작의 수행에 대한 대기중에 CPU 마이크로 명령의 실행에 의해 세트되고 메모리 라이트 동작이 CPU를 위해 행하여질 때마다 무조건 리세트됨을 알아야 한다. 이러한 로크논리(110)의 간단화는 CPU가 메모리를 로크하는 기간만 리이드-수정-라이트 동작을 행하는 것에 대한 준비중에 있다는 것이 명백하기 때문에 가능하며, 따라서 그것이 로크될 메모리에 대해 요구할 수 있는 리이드-수정-라이트 순서의 최종 행위이기 때문에 CPU 라이트 동작의 종료시에 CPU에 의해 로크된 플립플롭을 무조건 리세트할 수 있다.
메모리 비지 플립플롭(803)은 그것의 출력신호 WAITER-에 대하여 앞에서 기재되었다. 메모리 비지 플립플롭(803)이 세트될 때, 그것의 Q출력, 즉 신호 WAITER-는 이중 포오트 메모리의 버스 메모리 포오트가 공통버스(107)에 접속된 장치를 위해서 메모리 동작을 수행하느라고 사용불가라는 것을 지시하도록 2진 0이 될 것이다. 따라서, 메모리 비지 플립플롭(803)의 세팅은 현재의 메모리 요구가 완성될 때까지 긍정 응답될 버스로부터의 연속 메모리 요구를 방지한다. 앞의 설명으로부터 알 수 있는 바와 같이, 메모리 비지 플립플롭(803)이 세트될 때 신호 WAITER-의 2진 0가 NAND 게이트(811)를 디스에이블시켜 메모리의 호출을 요구하는 마스터 장치에 발생되는 것을 막거나 ACK하며, 그 대신에 NOR 게이트(812)가 인에이블되어 결과적으로 WAIT 신호가 메모리 호출을 위해 I/O 제어기로부터의 요구에 응답하여 메모리에 의해 발생될 것이다.
시스템이 초기화될 때, 신호 MEMRDY-는 2진 0상태로 세트되며, 이에 따라 플립플롭(803)을 세트시켜 시스템이 승압되고 메모리의 속도가 상승되고 클리어되는 시간까지 세트 상태를 유지할 것이다. 그후 신호 MEMRDY+는 2진 1로 복구하고 메모리 비지 플립플롭(803)은 만일 데이타(D)신호 MEBUSY+가 데이타 사이클 현재 신호 BSDCNN+가 클럭(C) 입력에서 2진 1이 될 때 2진 1이 된다면 버스 사이클 동안 세트될 것이다. 신호 MEBUSY+는 이중 포오트 메모리의 버스 포오트와 관련된 메모리 신호의 수집에 대한 축적으로부터 생기며 그 결과 신호 MEBUSY+는 이중 포오트 메모리가 메모리 동작에 사용되고 공통 버스(107)로부터의 메모리 요구를 자유롭게 받아들이지 않을때마다 2진 1상태에 있게 될 것이다. 메모리가 공통 버스(107)에 접속된 장치를 위해서 메모리 동작을 완성하였을 때, 신호 MEBUSY+는 2진 1상태로 복귀하고 메모리 버스 플립플롭(803)이 버스 데이타 사이클 현재 신호 BSDCNN+에 의해 클럭된 다음에는 메모리 비지 플립플롭(803)이 리세트될 것이다. 이러한 리세팅은 버스 사이클에서 충분히 일찍 행하여져서, 메모리 비지 플립플롭(803)이 I/O 제어기로부터의 메모리 요구가 발생하는 버스 사이클의 AMK 또는 WAIT 신호의 발생전에 리세트되게 할 것이다.
상기 설명은 버스가 버스에 의해 로크된 플립플롭(802)을 세트시킴으로써 어떻게 메모리를 로크할 수 있고 CPU가 CPU에 의해 로크된 플립플롭(801)을 세트시킴으로써 어떻게 메모리를 로크할 수 있는가 나타내어 주었다. 버스에 의해 로크된 플립플롭(820)이 리세트되는 방법은 메모리 라이트 동작이 CPU를 위해서 수행되었을 때마다 CPU에 의해 로크된 플립플롭(801)이 무조건 리세트되는 방법의 경우처럼 기재되었다. 또한 메모리가 CPU 또는 버스에 의해 이미 로크된 기간동안 로크동작의 수행이 시도된다면 버스로부터의 연속 로크동작이 어떻게 부의 랩(NAK)로 주어지는지에 관해서도 설명해봤다. 이와 CPU가 로크동작의 수행을 시도할 때 메모리가 버스에 의해 로크되었는지의 여부를 결정하는 방법에 관해 설명하기로 한다.
메모리가 버스로부터 내려진 메모리 요구에 응답하고 있을 때만 발생되는 ACK, WAIT 또는 NAK 신호를 CPU가 인식하지 못하기 때문에, CPU는 Q출력신호 LOCKDD+를 검사함으로써 버스에 의해 로크된 플립플롭(820)의 출력을 직접 탐색한다. 기본적으로, CPU가 행하는 일은 퍼엄웨어 마이크로 동작을 통해 CPU에 의해 로크된 플립플롭(820)을 무조건 세트시킨 다음 다른 퍼엄웨어 마이크로 동작에 의해 버스에 의해 로크된 플립플롭(820)의 상태를 탐색하고 메모리가 버스에 의해 로크되지 않을 때까지 루우프한다. 이어서 CPU는 CPU에 의해 로크된 플립플롭(801)을 리세트시킨 CPU에 의한 메모리 라이트와 함께 리이드-수정-라이트 동작을 수행한다. 이 순서는 4개의 블록으로 도시한 제10도에 예시되어 있는데, 각 블록은 CPU 퍼엄웨어의 단일 마이크로 동작에 해당한다. 1000에서 1004까지의 이 4블록은 예컨데, 워어드가 메모리로부터 읽혀지고 메모리가 1만큼 감분되고 그 감분값이 다시 메모리에 써넣어지는 감분 워어드 동작과 같은 앞서 설명한 바의 메모리 로크 동작을 수행하는 소프트웨어 명령의 일부인 마이크로 동작을 나타낸다.
블록(1001)에서, CPU 퍼엄웨어는 CPU에 의해 로크된 플립플롭(801)을 무조건 세트시킨다. 이 마이크로동작은 다음에 즉시 블록(1002)로 표시된 마이크로 동작으로 진행되거나 블록(1001)에서 블록(1002)로 표향하는 파선에 의해 나타낸 개입 마이크로 동작일 수 있다. 블록(1002)에서, 동일 마이크로 동작에 의해서 동작될 메모리 장소의 내용을 읽고 버스에 의해 로크된 플립플롭(820)의 세트 여부를 알아보기 위해 시험이 행해지는 마이크로 동작이다. 만일 신호 LOCKDD+가 2진 1이어서 버스에 의해 메모리가 로크되었음을 지시하게 되면, 그 마이크로 동작은 블록(1002)이 재실행되어 그 장소가 다시 메모리로부터 읽혀지고 버스에 의해 로크된 플립플롭(820)이 다시 시험되게끔 시작으로 다시 브랜치(branch:분기)하게 된다.
블록(1002)내의 이러한 루우프 반복(looping)은 버스에 의해 로크된 플립플롭(820)이 리세트되어 마이크로 동작(1002)이 다시 브랜치하지 않고 블록(1003)의 마이크로 동작이 수행될 시간까지 계속될 것이다. 실제로 블록(1003)은 갱신된 값이 연속적으로 메모리에 써넣어질 수 있도록 메모리로부터 읽혀졌던 새로운 워어드 값을 계산하는 몇가지 마이크로 동작이다. 여기서도, 블록(1002)와 (1003) 사이 및 블록(1003)과 (1004) 사이에 파선으로 표시한 바와 같이 개입 마이크로 동작이 있다. 블록(1004)에서, 갱신된 값을 메모리에 써넣어지고 각 메모리 라이트 동작이 CPU에 의해 로크된 플립플롭(801)을 무조건 리세트시키기 때문에, 메모리가 CPU에 의해 언로크된다. 앞서 설명한 바와 같이, CPU가 블록(1004)에서 언로크되었을 때까지 CPU가 블록(1001)에서 메모리를 로크한 시간 동안, 공통 버스(107)상의 장치에 의한 메모리 언로크의 시도로 말미암아 메모리가 마스터 장치로서 요구를 행하고 있는 I/O 장치에 대해 슬레이브 장치로서 응답할때 NAK가 로크 논리(110)에 의해 발생될 것이다.
이제 제9도로 돌아가서, CPU가 시간 AA에서 시작되어 시간 EE에서 종료되는 CPU메모리 로크 동작을 수행함을 알 수 있다. 시간 AA 내지 시간 BB에서, CPU는 시간 C에서 CPU에 의해 로크된 플립플롭(801)이 세트되게 하여 그것의 Q출력, 즉 신호 CPLKME+가 2진 1이 되게 하는 제10도의 블록(1001)의 메모리 로크 동작을 실행하고 있다. 시간 BB 내지 시간 CC에서, CPU퍼엄웨어는 루우프로 사용되는데, 그 루우프에서 CPU퍼엄웨어는 메모리가 우선 순위 결정 논리(111)에 의해 결정된 바와 같이 CPU에 유효하게 될 때마다 메모리를 읽고, 그와 동시에 버스에 의해 로크된 플립플롭(820)을 시험하여 그 블록의 최종 실행시 시간 N에서 신호 LOCKDD+가 2진 0상태로 돌아갔음을 인식할 때까지 블록(1002)를 계속 재실행한다. 시간 CC 내지 DD에서, CPU는 메모리에 써넣어질 데이타를 수정하는 블록(1003)을 포함하여 블록(1002)와 (1004) 사이의 마이크로 명령을 실행한다. 시간 DD 내지 EE동안, CPU는 블록(104)을 실행하여 그 데이타를 다시 메모리에 써넣는다. CPU에 의해 데이타를 메모리에 써넣는 결과 CPU에 의해 로크된 플립플롭(801)이 리세트되어 시간 X에서 2진 1에서 2진 0상태로 천이된다. 시간 X후, 제9도의 시간 Y의 경우처럼 버스 사용에 대한 연속 요구로 인하여 시간 Z의 경우처럼 데이타 사이클 현재 신호 BSDCNN-이 2진 1에서 2진 1상태로 천이되고 이어서 동기 플립플롭(802)이 리세트되게 하여 시간 Z의 경우처럼 NAND 게이트(804)의 출력이 2진 1로부터 2진 0상태로 천이되게 할 것이다.
또한 제9도에는 CPU만이 메모리를 로크시킨 시간 동안 로크 메모리 동작을 수행하기 위한 I/O 제어기에 의한 시도에 대해 도시하고 있다. 따라서, 시간 K에서 마스터 장치로서의 I/O 제어기는 버스에 대한 요구를 행하여 데이타 사이클 현재 신호 BSDCNN-이 2진 1에서 2진 0상태로 천이되게 하고 그 결과 I/O 제어기는 읽혀질 메모리 어드레스를 버스상에 두고 또한 그것으로 하여금 로크 동작을 원한다는 것을 지시하도록 시간 S에서 로크 신호 BSLOCK-를 2진 0상태로 세트시키게 한다. NAND 게이트(804)의 출력, 즉 신호 LOCKDE+가 2진 1상태에 있다는 사실에 의해 지시된 바와 같이, 버스가 이 시간에 CPU에 의해 로크되기 때문에, NAND 게이트(807)의 출력, 즉 신호 MENAKR-는 2진 0이 되어 NOR 게이트(808)의 출력이 2진 0이 되게 하고 그 결과 시간 T에서 플립플롭(810)이 세트되며, 이어서 버스 상에 NAK가 발생되어 신호 BSNACKR-이 시간 T에서 2진 1에서 2진 0상태로 천이되게 한다. 부의 인지가 시간 U에서 마스터 장치로서의 I/O 제어기에 의해 슬레이브 장치로서의 메모리로부터 수신될 때, I/O 제어기는 시간 U에서 신호 BSLOCK-, BSDCNN- 및 BSREOT-가 2진 0에서 2진 1상태로 천이되게끔 버스로부터 버스 로크 신호, 데이타 사이클 현재 신호 및 버스 요구 신호를 제거할 것이다. 시간 W에서, 플립플롭(810)이 그것의 리세트(R) 입력에서 2진 0상태로 천이하는 신호 BSDCNB+에 의해 리세트될 때, 플립플롭(810)은 리세트되어 신호 BSNACKR-가 2진 0에서 2진 1상태로 천이되게 할 것이다.
이 시도된 I/O 메모리 로크 동작이 이전의 I/O 메모리 로크 동작의 완성후에 지시된다 할지라도, 메모리가 버스를 위해서 로크되는 시간동안 메모리 로크 동작을 수행하기 위한 다른 I/O 제어기의 시도로 인하여 메모리로부터 NAK를 수신하는 로크 동작을 시도하는 I/O 제어기와 동일한 순서로 발생될 것이다. 이것은 CPU나 버스 또는 그 양자를 위해 메모리가 로크됨을 NAND 게이트(804)의 출력이 지시하기 때문에 그렇게 되며,그 결과 NAK가 공통 버스(107)에 접속된 장치를 위하여 로크 동작을 개시하는 어떤 연속적인 시도에 응답하여 발생하게 된다.
CPU와 버스 양자가 거의 동시에 메모리의 로크를 시도하는 경우에 생기는 가능한 경합 조건 때문에, CPU에 의해 로크된 플립플롭(801)을 세트시키는 CPU 마이크로 명령이 실행되는 때와 버스에 의해 로크되는 플립플롭(820)의 출력을 탐색하는 마이크로 명령이 실행되는 때 사이에 경과해야 하는 최소 시간에 제약이 있게 된다. 이러한 메모리의 로크를 거의 동시에 시도하는 것에 대해서는 두가지 경우를 들 수 있는데, 그 첫번째 경우는 버스가 메모리를 로크하기 조금전에 CPU가 메모리를 로크하는 경우이고 두 번째 경우는 버스가 메모리를 로크한 조금후에 CPU가 메모리를 로크하는 경우이다. 두 번째 경우는 CPU가 CPU에 의해 로크된 플립플롭(801)을 세트시킬때의 버스에 의해 로크된 플립플롭(820)의 출력을 탐색할 때 사이에 경과되어야 하는 최소 시간에 대한 제한이 부과된다.
첫 번째 경우에, 만일 버스가 버스상의 I/O 제어기가 메모리의 메모리 로크 동작 요구를 행하기 조금전에 제10도의 블록(1001)의 마이크로 명령을 실행함으로써 CPU에 의해 로크된 플립플롭(801)을 CPU가 세트시킨다면, CPU에 의해 로크된 플립플롭(801)이 데이타 사이클을 지시하는 버스로부터의 신호 BSDCNN-가 동기 플립플롭(802)을 이제 클럭시키기 전에 세트시될 것이다. 이 경우에, 메모리 로크를 시도하는 버스와 관련된 버스 사이클의 시작으로 동기 플립플롭(802)이 세트되어서, 그것의 출력 신호 LOCKDE-가 2진 0으로 될 것이다.
신호 LOCKED-가 2진 0으로 되면 NAND 게이트(804)의 출력은 2진 1이되고 그 결과 로크 요구에 응답하여 버스로부터 부의 인지(NAK)가 발생될 것이다. 로크된 플립플롭(820)은 NAK가 ACK 대신에 발생되기 때문에 클럭되지 않은 것이므로, 버스가 메모리를 로크하지 않고 메모리는 CPU가 그것의 전체 메모리 로크 동작(즉, 메모리에 대한 리이드-수정-라이트)을 완성할 때까지 CPU에 의래 로크될 수 있다. CPU가 버스로부터의 로크 요구에 약간 앞서 메모리를 로크할 경우에는, CPU에 의해 로크된 플립플롭을 세트시키는 마이크로 명령(1001)의 실행과 버스에 의해 로크된 플립플롭(820)의 상태를 탐색하는 블록(1002)과 관련된 마이크로 동작의 실행 사이의 경과 시간에 대해 아무런 제한이 없다.
두 번째 경우는 메모리의 로크를 위한 CPU와 버스간의 경합이 CPU가 CPU에 의해 로크된 플립플롭(801)을 세트시킴으로써 메모리를 로크할 때에 약간 앞서 버스가 로크 요구를 행할 때 발생한다. 이 경우는 제9도에 예시되어 있는데, I/O 제어기는 시간 A에서 메모리 로크에 대한 요구를 행하였고, 데이타 사이클 현재 신호 BSDCNN-은 제10도의 블록(1001)과 관련된 마이크로 동작이 실행되는 시간에 조금 앞서고 CPU에 의해 로크된 플립플롭(801)이 시간 C에서 세트되게끔 신호 SETLCK-를 2진 0으로 세트시켜 신호 CPLMKE+가 2진 1이 되게 하는 시간 B에서 I/O 제어기에 의해 발생된다. 이 경우에, 동기 플립플롭(802)의 데이타(D) 입력에서 유효하게 된 2진 1은 그것의
Figure kpo00012
출력 신호 LOCKED-이 2진 1을 유지하게끔 플립플롭(802)에 잘못 클럭되었다. 시간 C에서 버스에 의해 로크된 플립플롭(820)이 I/O 제어기에 발생될 ACK에 의해 아직 클럭되지 않았기 때문에, NAND 게이트(804)로 들어가는 다른 신호, 즉 신호 LOCKDD-도 역시 2진 1이 되어서 NAND 게이트(804)를 완전히 인에이블시킨다. 그러므로, 시간 C에서 메모리가 버스에 의해 로크되지 않고 또 동기 플립플롭도 세트되지 않아서, NOR 게이트(806)의 출력이 2진 1이 되어 플립플롭(809)이 세트되며, 그 결과 로크 동작의 수행을 요구하고 있는 I/O 제어기에 ACK를 발생하게 될 것이다. ACK 신호의 발생으로 버스에 의해 로크된 플립플롭(820)이 클럭되어서 세트상태로 될 것이므로 그것의 Q출력 신호 LOCKDD+는 시간 D에서 2진 1상태로 변화할 것이다.
버스가 메모리 로크에 대한 경합을 얻은 두 번째의 경우에, 만일 CPU가 CPU에 의해 로크된 플립플롭(801)을 세트시킬 때와 버스에 의해 로크된 플립플롭(820)의 출력을 탐색할 때 사이의 시간이 너무 짧으면, 버스에 의해 로크된 플립플롭(820)은 클럭 ACK 신호에 의해 아직 세트되지 않을 수도 있다. 그러므로 블록(1002)과 관련되는 버스에 의해 로크된 플립플롭(820)의 상태를 검사하는 CPU 마이크로 동작은 CPU에 의해 로크된 플립플롭(801)의 세팅후에 발생할 수 없게 되자마자 곧 버스에 의해 로크된 플립플롭(820)의 출력이 안전하게 되므로, 버스에 의해 로크된 플립플롭의 세팅은 명백히 제10도의 블록(1002)의 마이크로 동작으로 될 것이다. 적합한 실시예에 있어서, 이 최소시간은 플립플롭(809)(810)의 클럭 입력에서의 클럭신호 BSDCND+가 동기 플립플롭(802)의 클럭신호 BSDCNN+의 약 60나노초 후에 발생되기 때문에 약 60나노초이다. 그 60나노초의 시간은 NAND 게이트(811)와 관련된 전파 지연과 버스에 의해 로크된 플립플롭(820)의 정정 시간을 무시한 것이다. 그러므로, CPU 퍼엄웨어가 CPU에 의해 로크된 플립플롭(801)을 세트시킨후 60나노초 보다 빨리 버스에 의해 로크된 플립플롭(820)의 출력을 탐색하지 않는 한, 버스에 의한 메모리의 로크 작용은 CPU에 사용되지 않고, 메모리에서 로크하도록 하는 CPU와 버스간의 경합 결과가 미결정일 때 이 시간동안 CPU에 의해 아무런 작용도 되지 않을 것이다.
CPU가 제10도의 마이크로 명령을 실행하는데 약 240나노초를 요하는 적합한 실시예에 있어서, 이것은 CPU에 의해 로크된 플립플롭(801)을 세트시키는 블록(1001)의 마이크로 동작의 실행시와 버스에 의해 로크된 플립플롭(820)의 출력이 블록(1002)의 마이크로 동작에 의해 검사될 때 사이에 충분한 시간이 보장되기 때문에 아무런 문제를 일으키지 않는다. 그러나 만일 그역이 동기 플립플롭(802)의 클럭킹과 버스에 의해 로크된 플립플롭(820)의 클럭킹간의 시간보다 짧은 마이크로 동작을 취하는 경우라면, 블록(1001)과 블록(1002) 사이에서 실행된 마이크로 동작이 버스가 메모리를 로크함에 있어 CPU보다 우선일 때 세트시키고 안정화시킬 시간을 갖기 전에 블록(1002)가 플립플롭(820)의 출력을 검사하지 않도록 할 만큼 충분한 동안에는 제10도의 퍼엄웨어 동작이 여전히 사용될 수 있을 것이다. 버스가 메모리를 토로크시키는 시간동안 블록(1002)가 실행될 때마다 무조건 메모리를 읽어낸다 할지라도, 재 읽기가 발생하기 때문에 메모리 데이타가 버려져서, 메모리가 로크되었으면 메모리가 항상 다시 읽혀지기 때문에 메모리가 버스에 의해 로크되었을 때 메모리로부터 읽혀진 데이타가 CPU에 의해 나중에 사용될 경우는 결코 없음에 유의하여야 한다. 그리고 제10도의 퍼엄웨어가 한 마이크로 명령에서 메모리의 읽기와 버스의 실험을 결합한 것이라 하더라도, 버스로크 마이크로 동작이 메모리 쓰기 마이크로 동작에 선행하는 한 상기한 동작이 별도의 마이크로 명령에서 일어날 수 있다는 사실을 유의하기 바란다.
상기 설명으로부터, 제8도의 로크 논리(110)와 결합된 제10도의 퍼엄웨어 동작이 비동기적으로 동작하는 두 장치가 공유 자원에 대한 로크 및 언로크 동작을 수행할 수 있게 하는 단순한 메카니즘을 제공해 준다는 것을 알 수 있다. 적합한 실시예에 있어서, 이것은 일단 CPU가 메모리에 대한 로크 동작을 행하고, 메모리가 버스에 의해 이미 로크되었는가의 여부에 관계없이 CPU 로크 플립플롭을 무조건 세트시킬 것을 조만간 필요로 한다고 결정하였다면, CPU 퍼엄웨어에 의해 달성된다. CPU에 의한 메모리 로크 동작에 우선하는 버스 로크 동작이 버스에 의해 로크된 플립플롭을 세트시킬 기회를 가지는 것을 CPU에 보장해 줄만한 충분한 시간이 결과한 후, CPU는 리이드 명령을 보내고 동시에 버스에 의해 로크된 플립플롭을 검사한다. 만일 버스에 의해 로크된 플립플롭이 세트되지 않았으면, CPU에는 CPU가 경합을 얻었으며 로크 동작의 수행에 대한 버스에 의한 연속적인 시도가 부의 인지(NAK)로 주어지게끔 보장된다. 이어서 CPU는 버스에 의해 로크된 플립플롭을 검사할 수 있고, 만일 메모리가 버스에 의해 로크되지 않았으면 읽혀진 데이타를 사용하고 그 데이타를 수정한 다음 수정된 데이타를 다시 메모리에 써넣으며 그와 동시에 CPU에 의해 로크된 플립플롭을 리세트시킨다. 만일 CPU 퍼엄웨어가 버스가 경합을 얻어 메모리를 로크했음을 인식하면, CPU 퍼엄웨어는 버스에 의해 로크된 플립플롭이 CPU가 메모리를 읽어내고 데이타를 수정하고 그 수정된 데이타를 다시 메모리에 써넣고 CPU에 의해 로크된 플립플롭을 리세트시키는 어느 시간에서 리세트되었음을 인식하는 시간까지 루우프 실행을 계속한다.
CPU는 일단 메모리가 버스에 의해 언로크되었다면 버스로부터의 메모리 로크에 어떤 추가시도로도 메모리가 버스에 의해 로크되지 않으며 메모리의 로크를 요구하는 버스상의 장치가 부의 인지로 주어져서 그 장치가 나중에 로크 동작을 재시도하게 될 것이므로 어떠한 연속 버스 요구로도 메모리를 로크할 수 없다는 것이 보장된다. 제8도의 로크 논리(110)는 버스로부터의 메모리 로크에 대한 시도에 의해서만 메모리가 CPU 또는 버스에 의해 로크되지 않은 경우에 로크되게끔 동작한다. 메모리가 이미 로크되었으면 버스로부터의 메모리 로크에 대한 시도로 I/O 제어기에 부의 인지가 발생되며, 버스가 나중에 메모리 로크를 재시도할 것이다. 일단 버스에 의해 로크되면, 메모리는 메모리가 버스에 의해 언로크되는 어떤 시간에서 버스상의 I/O 제어기가 언로크 순서의 경로를 거쳐 메모리에 신호하는 시간까지 로크 상태를 유지할 것이다. 메모리가 CPU 또는 버스에 의해 로크되는 시간 동안, 버스상의 어떤 장치는 로크 또는 언로크 메모리 동작을 필요로 하지 않는 메모리 호출 요구를 행할 수 있는 적합한 실시예에 있어서는, 하나의 CPU만이 있으며 CPU가 CPU에 의해 로크된 플립플롭(801)을 세트시키는 때와 메모리 로크 동작 종료시에 메모리 라이트 동작이 수행되는때 사이의 순서가 CPU에 의해 로크된 플립플롭(801)을 리세트시킬 메모리 라이트를 행한 어떤 CPU 동작에 의해 개입 중단될 수 없다.
적합한 실시예에 있어서, 메모리는 단일 CPU 또는 공통 버스에 접속된 복수의 장치 중 하나에 할당될 수 있는 공유 자원이지만, 다수의 CPU 또는 다른 종류의 장치를 다룰 수 있도록 이 논리를 확장하는 것이 가능하다. 아울러, 본 발명이 메모리가 공유 자원이고 공통 버스와 CPU에 접속된 복수의 장치간에 공유되어 있는 적합한 실시예의 관점에서 설명되어 왔지만, 본 발명은 다른 유우저가 자원 호출을 허락받을 수 없는 기간 동안 소정의 동작을 위해 개개의 유우저에게 할당되어야 하는 다른 형태의 자원을 공유하는데 마찬가지로 이용될 수 있다.
본 발명은 적합한 실시예에 관하여 도시하고 설명해왔지만, 본 분야의 숙련기술자는 본 발명의 사상 및 범위로부터 벗어나지 않고 상기 및 다른 변형이 이루어질 수도 있음을 이해할 수 있을 것이다.

Claims (13)

  1. 복수의 장치를 갖는 시스템에서 사용하기 위한 것으로서, 상기 복수의 장치중의 공유 장치(101,102)가 서로에 대해 비동기적으로 동작하는 상기 복수의 장치중의 제1장치(103,104) 및 제2장치(108)에 의해 호출될 수 있는 로크 장치에 있어서, A. 상기 공유 장치에 포함되어 상기 공유 장치가 상기 복수의 장치중 다른 장치에 의해 로크되는 시간동안 상기 복수의 장치중 어떠한 장치도 상기 공유 장치에 대한 로크 동작을 수행할 수 없게끔 제1로크 신호를 전송한 상기 복수의 장치중 한 장치가 공유 장치에 대한 비개입중단 호출을 원한다는 것을 지시하는 제1로크 신호(BSLOCK)를 수신하기 위한 제1로크 요구 수신 수단(818,819)과, B. 상기 공유 장치내에 포함되고 상기 제1로크 요구 수신 수단에 결합되며, 호출 허가된 신호를 수신하였을 때 상기 제1로크 신호가 수신되었다는 제1표식을 기억하기 위한 상기 제1로크 기억수단(820)과, C. 상기 공유 장치에 포함되어 상기 공유 장치가 상기 복수의 장치중 다른 장치에 의해 로크된 시간동안 상기 복수의 장치중 어떠한 다른 장치도 상기 공유 장치에 대한 상기 로크 동작을 수행할 수 없게끔 상기 제2장치가 상기 공유 장치에 대한 비개압 중단 호출을 원한다는 제2표식을 무조건 기억하기 위한 제2로크 기억 수단(801)과, D. 상기 고유 장치에 포함되어 상기 제1로크 요구 수단 및 상기 제2로크 요구 수단에 결합되어서, 상기 제1로크 제어 신호가 상기 제1로크 요구 수신 수단에 의해 수신될때 제2표식을 기억하기 위한 동기 수단(802)과, E. 상기 공유 장치에 포함되어 상기 동기 수단 및 상기 제1로크 기억 수단에 결합되어서, 상기 제1로크 신호가 수신된 경우와 상기 제1로크 신호가 수신되었다는 것을 상기 제1로크 기억 수단이 지지하는 경우나 상기 제2로크 기억 수단이 상기 제2장치가 상기 공유 장치에 대한 비개입중단 호출을 원한다는 것을 지시함을 상기 동기 수단이 지시하는 경우에 상기 공유 장치에 대한 비개입중단 호출신호를 요구하는 상기 제1 및 제2장치에 대하여 호출 거절 신호를 발생하고, 아울러 상기 제1로크 신호가 수신되는 경우와 상기 제1로크 신호가 수신되었음을 상기 제1로크 기억수단이 지시하지 않는 경우와 상기 제2장치가 상기 공유 장치에 대한 비개입 중단 호출을 원한다는 것을 상기 제2로크 기억 수단이 지시함을 상기 동기 수단이 지시하는 경우에 상기 공유 장치에 대한 비개입 중단 호출 신호를 요구하는 상기 제1 및 제2장치에 대하여 상기 호출 허가 신호를 발생하기 위한 응답 수단(804,805,806,809,811)을 구비한 것을 특징으로 하는 장치.
  2. 제1항에 있어서, A. 상기 공유 장치에 포함되어 상기 제1로크 기어 수단 및 상기 응답 수단에 결합되어서, 상기 제1로크 신호를 전송한 상기 복수의 장치중 상기 장치가 이제 다른 장치가 상기 공유 자원에 대한 상기 로크 동작을 수행할 수 있게끔 더 이상 상기 공유 자원에 대한 비개입 중단 호출을 원하지 않음을 지시하는 제1언로크 신호(BSLOCK)를 수신하기 위한 제1언로크 수신 수단(819,822)과, B. 상기 제1로크 기억 수단에 포함되어 상기 제1로크 기억 수단 및 상기 응답 수단에 결합되어서, 상기 제1언로크 수신 수단이 상기 제1언로크 신호를 수신하였다면 상기 호출 허가 신호가 수신될 때 상기 제1로크 신호가 수신되었다는 상기 표식을 리세트시키기 위한 제1언로크 수단을 추가로 구비한 것을 특징으로 하는 로크 장치.
  3. 제1항에 있어서, 상기 제2장치 및 상기 제1로크 기억 수단에 결합되어서, 상기 제2장치가 상기 공유 장치에 대한 비개입 중단 호출을 원했음을 상기 제2로크 기억 수단에 지시했을 때와 상기 제1로크 기억 수단이 상기 제1로크 신호가 수신되었다는 표식을 세트시키도록 상기 호출 허가 신호에 응답할 수 있을 때 사이에 충분한 시간이 경과한 후까지 상기 제2장치가 공유 장치를 호출하는 것을 금지하고, 그후 상기 제1로크 기억 수단이 상기 제1로크 신호가 수신되었다는 것을 지시하지않는 경우에만 상기 공유 자원에 대한 호출을 상기 제2장치에 허가하기 위한 로우핑 수단을 추가로 구비한 것을 특징으로 하는 로크 장치.
  4. 제3항에 있어서, 상기 제2로크 기억 수단에 포함되어, 상기 제2장치가 공유 장치에 대한 비개입 중단 호출을 원한다는 표식을 리세트하기 위해 제2언로크 신호에 응답하는 제2언로크 수단을 추가로 구비한 것을 특징으로 하는 로크 장치.
  5. 제4항에 있어서, 상기 공유 장치에 포함되어 상기 제2언로크 수단에 결합되어서, 상기 공유 장치가 상기 제2장치에 상기 제2장치에 의해 수행된 상기 로크 동작들중 최종 동작인 특수한 동작을 수행할 때 상기 제2언로크 동작을 발생하기 위한 제2언로크 신호 발생 수단을 추가로 구비한 것을 특징으로 하는 로크 장치.
  6. 제1항에 있어서, 상기 응답 수단이 상기 제1로크 신호가 수신될 때 상기 공유 장치가 사용중이라면 호출 재시도 신호를 발생하기 위한 대기 수단을 추가로 구비한 것을 특징으로 하는 로크 장치.
  7. 복수의 장치들중 어떤 두 장치간에 정보를 전달하기 위해 공통 버스에 의해 결합된 복수의 장치를 구비하며, 상기 복수의 장치중 공유 가능한 장치가 상기 복수의 장치중 다른 장치에 의해 호출될 수 있고 또한 상기 공통 버스 이외의 다른 수단 즉 주장치에 의해 호출될 수 있으며, 상기 공유 장치의 호출을 위한 비동기 요구를 동시에 행하는 상기 주장치와 상기 복수의 장치중 하나를 가질 수 있는 시스템에 있어서, 상기 공유 가능한 장치가 A. 상기 공유 가능한 장치에 대한 비개입중단 호출을 원하는 상기 복수의 장치중 하나로부터 공통 버스에 의해 제1로크 신호를 수신하기 위한 제1수단과, B. 상기 제1수신용 수단에 결합되어 응답 수단에 의해 발생된 정의 인지 신호에 응답하여 상기 제1로크 신호를 수신한 상기 복수의 장치중 하나에 의해 상기 공유 가능한 장치가 호출되고 있는 중임을 지시하기 위한 제1쌍안정 수단과, C. 상기 주장치가 상기 공유 가능한 장치에 대한 비개입 중단 호출을 원한다는 것을 지시하기 위한 제2쌍안정 수단과, D. 상기 제2쌍안정 수단에 결합되어 상기 제1쌍안정 수단 및 상기 제3쌍안정 수단이 상기 제1로크 신호가 수신될 때 어떤 장치가 상기 공유 가능한 자원에 대한 비개입 중단 호출을 원한다는 것을 지시하지 않는 경우에 공통버스를 거쳐 상기 복수의 장치에 정의인지 신호를 발생하고, 또한, 상기 제1쌍안정 수단 또는 제3쌍안정 수단이 상기 복수의 장치들중 하나 또는 상기 주장치가 상기 공유 가능한 자원에 비개입 중단 호출을 원한다는 것을 지시하는 경우에 상기 복수의 장치에 상기 공통 버스를 거쳐 부의 인지 신호를 발생하기 위한 응답 수단을 구비하고 있는 로크 동작 논리를 갖추고 있는 것을 특징으로 하는 시스템.
  8. 제7항에 있어서, 상기 로크 논리가 A. 상기 제1쌍안정 수단에 결합되어 상기 복수의 장치중 하나로부터 상기 공통 버스를 통해 제1언로크 신호를 수신하기 위한 제2수단과, B. 상기 제2수신용 수단에 결합되어 상기 복수의 장치중 하나가 상기 공유 가능한 장치에 대한 비개입 중단 호출을 원한다는 것을 더 이상 지시하지 않도록 상기 제1쌍안정 수단을 리세트시키기 위한 제1리세트 수단을 추가로 구비한 것을 특징으로 하는 시스템.
  9. 제8항에 있어서, A. 상기 주장치 및 상기 제1쌍안정 수단에 결합되어, 상기 복수의 장치중 하나가 상기 주장치가 상기 공유 가능한 장치에 대한 비개입 중단 호출을 요구하기 바로전에 상기 공유 가능한 장치에 대한 비개입 중단 호출을 요구한 경우에 상기 정의인지 신호에 의해 상기 제1쌍안정 수단을 세트시킬 수 있을만한 충분한 시간이 경과한 후에야 비로소 개시하는 상기 루우핑 수단에 의해서, 상기 주장치에 의한 상기 제2쌍안정 수단의 세팅에 응답하여 상기 제1쌍안정 수단의 상기 지시를 검사하기 위한 루우핑 수단과, B. 상기 제2쌍안정 수단에 결합되어 상기 주장치가 상기 공유 가능한 장치에 대한 비개입 중단 호출을 더 이상 원하지 않는다는 것을 지기하는 제2언로크 신호에 응답하여 상기 제2쌍안정 수단을 리세트시키기 위한 제2리세트 수단을 추가로 구비한 것을 특징으로 하는 시스템.
  10. 주장치에 대하여 비동기적으로 동작하는 복수의 장치, 상기 주장치 및 공유 자원에 대한 비개입 중단 호출을 동시에 요구할 수 있는 상기 복수의 장치중 하나를 갖추고 있는 시스템내의 공유 자원에 대한 호출을 금지하기 위한 방법에 있어서. A. 상기 주장치로 하여금 그것이 상기 공유 자원에 대한 금지되지 않는 호출을 원한다는 제1표식을 무조건 세트시킬 수 있도록 하는 단계와, B. 상기 한 장치가 상기 공유 자원에 대한 비개입 중단이 가능한 호출을 원한다는 것을 지시하는 제1로크 신호를 상기한 장치로부터 수신하는 단계와, C. 상기 제1로크 신호가 수신될 때 상기 제1표식의 상태를 제2표식에 기억시킴으로써 상기 공유 자원에 대한 비개입 중단 호출을 위해 상기 제1장치의 요구 및 상기 주장치의 요구를 동기시키는 단계와, D. 상기 제2표식이 상기 주장치가 비개입 중단 호출을 원한다는 것을 지시하지 않는 경우와 제3표식이 상기 제1로크 신호가 수신되었음을 지시하지 않는 경우에 상기 제1로크 신호가 수신될 때 상기 한 장치에 정의 응답을 발생하는 단계와, E. 상기 제2표식이 상기 주장치에 상기 공유 자원의 비개입 중단 호출을 원한다는 것을 지시하는 경우나 상기 제3표식이 상기 제1로크 신호가 수신되었음을 지시하는 경우에 상기 제1로크 신호가 수신될 때 상기 한 장치에 부의 응답을 발생하는 단계와, F. 상기 정의 응답이 발생되는 경우에 상기 한 장치가 상기 공유 자원에 대한 비개입 중단 호출을 원한다는 상기 표식을 상기 제3표식에 기억하는 단계로 이루어진 것을 특징으로 하는 로크 동작 방법.
  11. 복수의 제1형 장치(103,104,108)와 제2형 장치(101,102)를 가지며 상기 제2형 장치가 상기 제1형 장치 모두에 의해 활용되도록 하고 상기 제1형 장치중 하나의 장치가 상기 제2형 장치를 활용하면서 특정 형태의 동작(로크 동작)을 수행할 경우 상기 제1형 장치중 나머지 장치가 상기 특정 형태의 동작을 수행하는 것으로부터 방지되며 상기 제1형 장치중 하나의 장치가 상기 특정 형태의 동작을 수행하는 것을 요구할 경우 이 장치가 이에 대응하는 요구 신호(BSLOCK,SETLCK)를 발생하는 데이타 처리 시스템내에서, 상기 요구 신호중 하나만에 적당히 응답하도록 상기 제2형 장치를 제어하기 위한 장치에 있어서, 상기 제1형 장치중 하나로부터의 요구 신호(BSLOCK)를 수신하고, 상기 제2형 장치가 상기 요구를 받아들일 수 있는 상태에 있다는 것을 나타내는 제1신호(MEACKR)에 의해 인에이블될 때 상기 요구가 허가되었다는 표시를 기억하기 위한 제1기억 장치(820), 상기 제1형 장치중 또 다른 하나로부터의 요구 신호(SETLCK)를 수신하고, 상기 제2형 장치의 상태에 관계없이 상기 다른 제1형 장치가 그러한 요구를 행하고 있다는 표시를 기억하기 위한 제2기억 장치(801), 상기 제2기억 장치에 의해 기억된 표시에 대응하는 신호를 수신하고, 요구 신호가 상기 제1기억 장치에 공급될 수 있는 상기 제1형 장치의 동작 사이클내의 시간(BSDCNN) 동안 인에이블될 경우 상기 제2기억 장치의 신호에 의해 나타내진 요구가 허가되었다는 표시를 기억하기 위한 제3기억 장치(801) 및, 상기 제1 및 제3기억 장치에 결합되고, (i) 요구가 허가되었다는 표시를 상기 제1기억 장치나 상기 제3기억 장치 모두 유지하지 않는다면 상기 제1신호(MEARCKR)의 발생을 가능하게 하고, (ii) 요구가 허가되었다는 표시를 상기 제1기억 장치나 제3기억 장치가 유지하면 상기 제1신호의 발생을 막기 위해 유지된 표시에 대응하는 신호(LLCKDD, LOCKED)에 응답하는 논리회로(804,805,806,809,811)를 구비하는 것을 특징으로 하는 제어 장치.
  12. 제11항에 있어서, 상기 복수의 제1형 장치가 공통 버스에 의해 상기 제2형 장치에 결합된 복수의 제어기(103,104)와 상기 제2형 장치에 따로 결합된 프로세서(108)를 구비하고 상기 제2형 장치가 메모리 장치이며 상기 각각의 제어기가 BSLOCK 요구 신호를 발생시키고 상기 프로세서가 SETLCK 요구 신호를 발생시키도록 구성한 것을 특징으로 하는 제어 장치.
  13. 제12항에 있어서, 상기 제1형 장치가 특정 형태의 동작을 완성했을 때 이 제1형 장치가 상기 제1, 제2 및 제3기억 장치중 대응하는 하나의 기억 장치를 클리어시킬 신호를 발생시키도록 구성한 것을 특징으로 하는 제어 장치.
KR1019840003780A 1983-07-01 1984-06-30 공유자원의 로크아웃 동작방법 및 장치 KR900005453B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US06/510,472 US4587609A (en) 1983-07-01 1983-07-01 Lockout operation among asynchronous accessers of a shared computer system resource
US510,472 1983-07-01
US510472 1983-07-01

Publications (2)

Publication Number Publication Date
KR850001571A KR850001571A (ko) 1985-03-30
KR900005453B1 true KR900005453B1 (ko) 1990-07-30

Family

ID=24030868

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019840003780A KR900005453B1 (ko) 1983-07-01 1984-06-30 공유자원의 로크아웃 동작방법 및 장치

Country Status (12)

Country Link
US (1) US4587609A (ko)
EP (1) EP0130593B1 (ko)
JP (1) JPS6039266A (ko)
KR (1) KR900005453B1 (ko)
AU (1) AU572161B2 (ko)
CA (1) CA1211854A (ko)
DE (1) DE3482630D1 (ko)
DK (1) DK165529C (ko)
ES (1) ES8606687A1 (ko)
FI (1) FI79621C (ko)
NO (1) NO166985C (ko)
YU (1) YU45630B (ko)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4706190A (en) * 1983-09-22 1987-11-10 Digital Equipment Corporation Retry mechanism for releasing control of a communications path in digital computer system
IT1206331B (it) * 1983-10-25 1989-04-14 Honeywell Inf Systems Architettura di sistema di elaborazione dati.
EP0239827B1 (de) * 1986-04-02 1993-05-26 Siemens Aktiengesellschaft Verfahren zum Ansteuern eines gemeinsamen Speichers eines aus einzelnen Mikroprozessorsystemen bestehenden Mehrprozessorsystems
JPH0619760B2 (ja) * 1986-04-23 1994-03-16 日本電気株式会社 情報処理装置
US5115499A (en) * 1986-05-14 1992-05-19 Sequoia Systems, Inc. Shared computer resource allocation system having apparatus for informing a requesting computer of the identity and busy/idle status of shared resources by command code
US5276807A (en) * 1987-04-13 1994-01-04 Emulex Corporation Bus interface synchronization circuitry for reducing time between successive data transmission in a system using an asynchronous handshaking
US4941083A (en) * 1987-05-01 1990-07-10 Digital Equipment Corporation Method and apparatus for initiating interlock read transactions on a multiprocessor computer system
US4949239A (en) * 1987-05-01 1990-08-14 Digital Equipment Corporation System for implementing multiple lock indicators on synchronous pended bus in multiprocessor computer system
US5341510A (en) * 1987-05-01 1994-08-23 Digital Equipment Corporation Commander node method and apparatus for assuring adequate access to system resources in a multiprocessor
US4858116A (en) * 1987-05-01 1989-08-15 Digital Equipment Corporation Method and apparatus for managing multiple lock indicators in a multiprocessor computer system
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
US4980850A (en) * 1987-05-14 1990-12-25 Digital Equipment Corporation Automatic sizing memory system with multiplexed configuration signals at memory modules
IN169634B (ko) * 1987-07-01 1991-11-23 Digital Equipment Corp
US5291581A (en) * 1987-07-01 1994-03-01 Digital Equipment Corporation Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system
US5062044A (en) * 1987-09-29 1991-10-29 Western Digital Corporation Temporary bus master for use in a digital system having asynchronously communicating sub-systems
AU604063B2 (en) * 1987-10-13 1990-12-06 Honeywell Bull Inc. Circuit for preventing lock-out of high priority requests to a system controller
US4965719A (en) * 1988-02-16 1990-10-23 International Business Machines Corporation Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US4975870A (en) * 1988-02-25 1990-12-04 Data General Corporation Apparatus for locking a portion of a computer memory
US5111423A (en) * 1988-07-21 1992-05-05 Altera Corporation Programmable interface for computer system peripheral circuit card
US5163141A (en) * 1988-08-01 1992-11-10 Stenograph Corporation RAM lock device and method for a text entry system
US5249285A (en) * 1988-08-01 1993-09-28 Stenograph Corporation RAM lock device and method for a text entry system
US6304987B1 (en) * 1995-06-07 2001-10-16 Texas Instruments Incorporated Integrated test circuit
JPH02103656A (ja) * 1988-10-12 1990-04-16 Fujitsu Ltd 主記憶参照の遂次化制御方式
US5175861A (en) * 1988-10-14 1992-12-29 Nec Corporation Lock processing system
JPH02306355A (ja) * 1988-10-25 1990-12-19 Apollo Computer Inc バスロックシステム
US5222219A (en) * 1988-10-25 1993-06-22 Hewlett-Packard Company Pipeline computer system having write order preservation
US5167022A (en) * 1988-10-25 1992-11-24 Hewlett-Packard Company Multiprocessor bus locking system with a winning processor broadcasting an ownership signal causing all processors to halt their requests
US5175829A (en) * 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
US5007054A (en) * 1988-12-28 1991-04-09 Pitney Bowes Inc. Network and protocol for real-time control of machine operations
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
US5175837A (en) * 1989-02-03 1992-12-29 Digital Equipment Corporation Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits
US5483518A (en) * 1992-06-17 1996-01-09 Texas Instruments Incorporated Addressable shadow port and protocol for serial bus networks
US5131081A (en) * 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
US5182809A (en) * 1989-05-31 1993-01-26 International Business Machines Corporation Dual bus microcomputer system with programmable control of lock function
JP3005250B2 (ja) * 1989-06-30 2000-01-31 テキサス インスツルメンツ インコーポレイテツド バスモニター集積回路
US5191652A (en) * 1989-11-10 1993-03-02 International Business Machines Corporation Method and apparatus for exploiting communications bandwidth as for providing shared memory
US5161227A (en) * 1989-11-13 1992-11-03 International Business Machines Corporation Multilevel locking system and method
US5499356A (en) * 1989-12-29 1996-03-12 Cray Research, Inc. Method and apparatus for a multiprocessor resource lockout instruction
US5276847A (en) * 1990-02-14 1994-01-04 Intel Corporation Method for locking and unlocking a computer address
US6675333B1 (en) 1990-03-30 2004-01-06 Texas Instruments Incorporated Integrated circuit with serial I/O controller
US5214778A (en) * 1990-04-06 1993-05-25 Micro Technology, Inc. Resource management in a multiple resource system
US5168564A (en) * 1990-10-05 1992-12-01 Bull Hn Information Systems Inc. Cancel mechanism for resilient resource management and control
JPH04308961A (ja) * 1991-01-18 1992-10-30 Ncr Corp 占有されたプロセスの同期ロックの状態を通知するための手段及び装置
US5598552A (en) * 1991-04-17 1997-01-28 Sierra Semiconductor Corporation Error free data transfers
US5237694A (en) * 1991-05-30 1993-08-17 Advanced Micro Devices, Inc. Processing system and method including lock buffer for controlling exclusive critical problem accesses by each processor
JP2739786B2 (ja) * 1991-07-26 1998-04-15 日本電気株式会社 マルチ・プロセッサシステム
US5491799A (en) * 1992-01-02 1996-02-13 Amdahl Corporation Communication interface for uniform communication among hardware and software units of a computer system
CA2086691C (en) * 1992-03-30 1997-04-08 David A. Elko Communicating messages between processors and a coupling facility
US5274823A (en) * 1992-03-31 1993-12-28 International Business Machines Corporation Interrupt handling serialization for process level programming
US5768548A (en) * 1992-04-15 1998-06-16 Intel Corporation Bus bridge for responding to received first write command by storing data and for responding to received second write command by transferring the stored data
US5467295A (en) * 1992-04-30 1995-11-14 Intel Corporation Bus arbitration with master unit controlling bus and locking a slave unit that can relinquish bus for other masters while maintaining lock on slave unit
US5423044A (en) * 1992-06-16 1995-06-06 International Business Machines Corporation Shared, distributed lock manager for loosely coupled processing systems
US5392433A (en) * 1992-09-25 1995-02-21 International Business Machines Corporation Method and apparatus for intraprocess locking of a shared resource in a computer system
JP2874488B2 (ja) * 1992-10-30 1999-03-24 富士通株式会社 処理装置
GB9314860D0 (en) * 1993-07-16 1993-09-01 D2B Systems Co Ltd Communication bus system with mitigation of slave station locking problem and master station for use in such communication system
US5526524A (en) * 1993-12-23 1996-06-11 International Business Machines Corporation Method and system for management of locked objects in a computer supported cooperative work environment
US5673384A (en) * 1995-10-06 1997-09-30 Hewlett-Packard Company Dual disk lock arbitration between equal sized partition of a cluster
US5969538A (en) 1996-10-31 1999-10-19 Texas Instruments Incorporated Semiconductor wafer with interconnect between dies for testing and a process of testing
IE960753A1 (en) * 1996-10-29 1998-05-06 Sportables Limited A method and apparatus for controlling access by two¹computer processors to a shared resource
US6041376A (en) * 1997-04-24 2000-03-21 Sequent Computer Systems, Inc. Distributed shared memory system having a first node that prevents other nodes from accessing requested data until a processor on the first node controls the requested data
US5987550A (en) * 1997-06-30 1999-11-16 Emc Corporation Lock mechanism for shared resources in a data processing system
US6076126A (en) * 1997-06-30 2000-06-13 Emc Corporation Software locking mechanism for locking shared resources in a data processing system
US6078981A (en) * 1997-12-29 2000-06-20 Intel Corporation Transaction stall technique to prevent livelock in multiple-processor systems
US6408413B1 (en) 1998-02-18 2002-06-18 Texas Instruments Incorporated Hierarchical access of test access ports in embedded core integrated circuits
US6405335B1 (en) 1998-02-25 2002-06-11 Texas Instruments Incorporated Position independent testing of circuits
US7013305B2 (en) 2001-10-01 2006-03-14 International Business Machines Corporation Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange
US7058862B2 (en) 2000-05-26 2006-06-06 Texas Instruments Incorporated Selecting different 1149.1 TAP domains from update-IR state
US6381663B1 (en) 1999-03-26 2002-04-30 Hewlett-Packard Company Mechanism for implementing bus locking with a mixed architecture
US6651088B1 (en) * 1999-07-20 2003-11-18 Hewlett-Packard Development Company, L.P. Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs
US6681283B1 (en) 1999-08-12 2004-01-20 Mips Technologies, Inc. Coherent data apparatus for an on-chip split transaction system bus
US6604159B1 (en) 1999-08-12 2003-08-05 Mips Technologies, Inc. Data release to reduce latency in on-chip system bus
US6493776B1 (en) 1999-08-12 2002-12-10 Mips Technologies, Inc. Scalable on-chip system bus
US6490642B1 (en) * 1999-08-12 2002-12-03 Mips Technologies, Inc. Locked read/write on separate address/data bus using write barrier
US6728915B2 (en) 2000-01-10 2004-04-27 Texas Instruments Incorporated IC with shared scan cells selectively connected in scan path
US6769080B2 (en) 2000-03-09 2004-07-27 Texas Instruments Incorporated Scan circuit low power adapter with counter
CA2418274A1 (en) 2000-09-28 2002-04-04 Scientific Learning Corporation Method and apparatus for automated training of language learning skills
US7111228B1 (en) 2002-05-07 2006-09-19 Marvell International Ltd. System and method for performing parity checks in disk storage system
US7007114B1 (en) 2003-01-31 2006-02-28 Qlogic Corporation System and method for padding data blocks and/or removing padding from data blocks in storage controllers
US7287102B1 (en) 2003-01-31 2007-10-23 Marvell International Ltd. System and method for concatenating data
US7870346B2 (en) * 2003-03-10 2011-01-11 Marvell International Ltd. Servo controller interface module for embedded disk controllers
US7099963B2 (en) * 2003-03-10 2006-08-29 Qlogic Corporation Method and system for monitoring embedded disk controller components
US7457903B2 (en) * 2003-03-10 2008-11-25 Marvell International Ltd. Interrupt controller for processing fast and regular interrupts
US7039771B1 (en) 2003-03-10 2006-05-02 Marvell International Ltd. Method and system for supporting multiple external serial port devices using a serial port controller in embedded disk controllers
US7064915B1 (en) 2003-03-10 2006-06-20 Marvell International Ltd. Method and system for collecting servo field data from programmable devices in embedded disk controllers
US7492545B1 (en) 2003-03-10 2009-02-17 Marvell International Ltd. Method and system for automatic time base adjustment for disk drive servo controllers
US7209919B2 (en) * 2003-06-11 2007-04-24 International Business Machines Corporation Library server locks DB2 resources in short time for CM implicit transaction
US7526691B1 (en) 2003-10-15 2009-04-28 Marvell International Ltd. System and method for using TAP controllers
US7139150B2 (en) * 2004-02-10 2006-11-21 Marvell International Ltd. Method and system for head position control in embedded disk drive controllers
US7120084B2 (en) 2004-06-14 2006-10-10 Marvell International Ltd. Integrated memory controller
US8166217B2 (en) * 2004-06-28 2012-04-24 Marvell International Ltd. System and method for reading and writing data using storage controllers
US9201599B2 (en) * 2004-07-19 2015-12-01 Marvell International Ltd. System and method for transmitting data in storage controllers
US8032674B2 (en) * 2004-07-19 2011-10-04 Marvell International Ltd. System and method for controlling buffer memory overflow and underflow conditions in storage controllers
US7757009B2 (en) 2004-07-19 2010-07-13 Marvell International Ltd. Storage controllers with dynamic WWN storage modules and methods for managing data and connections between a host and a storage device
US7386661B2 (en) 2004-10-13 2008-06-10 Marvell International Ltd. Power save module for storage controllers
US7240267B2 (en) * 2004-11-08 2007-07-03 Marvell International Ltd. System and method for conducting BIST operations
US7802026B2 (en) * 2004-11-15 2010-09-21 Marvell International Ltd. Method and system for processing frames in storage controllers
US7609468B2 (en) 2005-04-06 2009-10-27 Marvell International Ltd. Method and system for read gate timing control for storage controllers
WO2007091297A1 (ja) * 2006-02-06 2007-08-16 Fujitsu Limited 情報処理装置、cpu、診断プログラムおよび診断方法
US7797473B2 (en) * 2008-06-05 2010-09-14 Dell Products, Lp System for executing system management interrupts and methods thereof
US9292533B2 (en) * 2010-06-08 2016-03-22 Dell Products L.P. Systems and methods for improving storage efficiency in an information handling system
US9575813B2 (en) * 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3398405A (en) * 1965-06-07 1968-08-20 Burroughs Corp Digital computer with memory lock operation
US3641505A (en) * 1969-06-25 1972-02-08 Bell Telephone Labor Inc Multiprocessor computer adapted for partitioning into a plurality of independently operating systems
US3623011A (en) * 1969-06-25 1971-11-23 Bell Telephone Labor Inc Time-shared access to computer registers
US3631405A (en) * 1969-11-12 1971-12-28 Honeywell Inc Sharing of microprograms between processors
US3725872A (en) * 1971-03-03 1973-04-03 Burroughs Corp Data processing system having status indicating and storage means
US3820079A (en) * 1971-11-01 1974-06-25 Hewlett Packard Co Bus oriented,modular,multiprocessing computer
US3827029A (en) * 1972-09-25 1974-07-30 Westinghouse Electric Corp Memory and program protection system for a digital computer system
JPS5645951B2 (ko) * 1973-05-21 1981-10-29
US3889237A (en) * 1973-11-16 1975-06-10 Sperry Rand Corp Common storage controller for dual processor system
US4318182A (en) * 1974-04-19 1982-03-02 Honeywell Information Systems Inc. Deadlock detection and prevention mechanism for a computer system
US4000485A (en) * 1975-06-30 1976-12-28 Honeywell Information Systems, Inc. Data processing system providing locked operation of shared resources
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
JPS5443644A (en) * 1977-09-13 1979-04-06 Fujitsu Ltd Processing system for deadlock automatic release at exclusive control time
US4136386A (en) * 1977-10-06 1979-01-23 International Business Machines Corporation Backing store access coordination in a multi-processor system
JPS6016664B2 (ja) * 1977-10-28 1985-04-26 豊田工機株式会社 デ−タ転送装置
US4320455A (en) * 1978-01-09 1982-03-16 Honeywell Information Systems Inc. Queue structure for a data processing system
US4276594A (en) * 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4521848A (en) * 1978-10-31 1985-06-04 Honeywell Information Systems Inc. Intersystem fault detection and bus cycle completion logic system
US4237534A (en) * 1978-11-13 1980-12-02 Motorola, Inc. Bus arbiter
US4488217A (en) * 1979-03-12 1984-12-11 Digital Equipment Corporation Data processing system with lock-unlock instruction facility
JPS5847468Y2 (ja) * 1979-09-13 1983-10-29 横河電機株式会社 マイクロプロセツサ相互排除回路
US4319324A (en) * 1980-01-08 1982-03-09 Honeywell Information Systems Inc. Double word fetch system
US4323967A (en) * 1980-04-15 1982-04-06 Honeywell Information Systems Inc. Local bus interface for controlling information transfers between units in a central subsystem
US4415972A (en) * 1980-12-29 1983-11-15 Sperry Corporation Dual port memory interlock
US4507730A (en) * 1981-10-01 1985-03-26 Honeywell Information Systems Inc. Memory system with automatic memory configuration
US4558429A (en) * 1981-12-17 1985-12-10 Honeywell Information Systems Inc. Pause apparatus for a memory controller with interleaved queuing apparatus
US4484270A (en) * 1982-07-07 1984-11-20 Sperry Corporation Centralized hardware control of multisystem access to shared and non-shared subsystems

Also Published As

Publication number Publication date
YU114284A (en) 1987-06-30
JPS6039266A (ja) 1985-03-01
ES8606687A1 (es) 1986-04-16
AU572161B2 (en) 1988-05-05
DK165529B (da) 1992-12-07
AU2993884A (en) 1985-01-03
JPH0414370B2 (ko) 1992-03-12
FI842558A0 (fi) 1984-06-26
EP0130593A3 (en) 1986-05-21
FI842558A (fi) 1985-01-02
NO166985C (no) 1991-09-18
EP0130593A2 (en) 1985-01-09
DK165529C (da) 1993-04-19
DK323084A (da) 1985-01-02
EP0130593B1 (en) 1990-07-04
ES533831A0 (es) 1986-04-16
CA1211854A (en) 1986-09-23
NO166985B (no) 1991-06-10
KR850001571A (ko) 1985-03-30
DK323084D0 (da) 1984-06-29
NO842649L (no) 1985-01-02
DE3482630D1 (de) 1990-08-09
YU45630B (sh) 1992-07-20
FI79621C (fi) 1990-01-10
US4587609A (en) 1986-05-06
FI79621B (fi) 1989-09-29

Similar Documents

Publication Publication Date Title
KR900005453B1 (ko) 공유자원의 로크아웃 동작방법 및 장치
US4001790A (en) Modularly addressable units coupled in a data processing system over a common bus
US4030075A (en) Data processing system having distributed priority network
US4096569A (en) Data processing system having distributed priority network with logic for deactivating information transfer requests
US3997896A (en) Data processing system providing split bus cycle operation
US4000485A (en) Data processing system providing locked operation of shared resources
US4763249A (en) Bus device for use in a computer system having a synchronous bus
US3993981A (en) Apparatus for processing data transfer requests in a data processing system
US3995258A (en) Data processing system having a data integrity technique
US4050097A (en) Synchronization technique for data transfers over an asynchronous common bus network coupling data processing apparatus
US5119480A (en) Bus master interface circuit with transparent preemption of a data transfer operation
US4737932A (en) Processor
US7865646B1 (en) Sharing of functions between an embedded controller and a host processor
US4706190A (en) Retry mechanism for releasing control of a communications path in digital computer system
EP0139563B1 (en) Control mechanism for multiprocessor system
EP0186006A2 (en) Multiprocessor system
EP0492817A2 (en) Data processing system and memory controller for lock semaphore operations
US4236203A (en) System providing multiple fetch bus cycle operation
EP0399204A1 (en) Data processing system having dual arbiter for controlling access to a system bus
US5828891A (en) Multilevel interrupt device
KR900001120B1 (ko) 우선도가 낮은 유니트를 우선도가 높은 위치에 위치시키기 위한 분배된 우선도 회로망 로직을 가진 데이타 처리 시스템
JPH10143467A (ja) データ処理システムにおいてバス所有権を調停するための方法および装置
US4245299A (en) System providing adaptive response in information requesting unit
EP0139568B1 (en) Message oriented interrupt mechanism for multiprocessor systems
CA1120123A (en) Automatic data steering and data formatting mechanism

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
LAPS Lapse due to unpaid annual fee