KR0133236B1 - 공유메모리 시스템 및 조정시스템과 조정방법 - Google Patents

공유메모리 시스템 및 조정시스템과 조정방법

Info

Publication number
KR0133236B1
KR0133236B1 KR1019940024855A KR19940024855A KR0133236B1 KR 0133236 B1 KR0133236 B1 KR 0133236B1 KR 1019940024855 A KR1019940024855 A KR 1019940024855A KR 19940024855 A KR19940024855 A KR 19940024855A KR 0133236 B1 KR0133236 B1 KR 0133236B1
Authority
KR
South Korea
Prior art keywords
access
processor
signal
processors
cpua
Prior art date
Application number
KR1019940024855A
Other languages
English (en)
Other versions
KR950012175A (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 KR950012175A publication Critical patent/KR950012175A/ko
Application granted granted Critical
Publication of KR0133236B1 publication Critical patent/KR0133236B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

처리가 복수의 CPU(CPUA 및 CPUB)에 걸쳐 분배되고, CPU간의 데이터를 전달하기 위해 공유 메모리(28)를 이용하는 것이 바람직한 경우, CPUA 액세스 타이밍 클럭을 지시하는 클럭(CKG)을 발생한다. 공유 메모리(28)로의 액세스 권을 지시하는 게이트 신호(G)는 클럭(CKG)에 동기하여 발생된다. CPU 중 하나가 공유 메모리(28)에 액세스를 요구할 경우, 해당하는 칩 선택 신호를 L레벨로 한다. 액세스 권은 항상 CPUA에 대한 것이고, CPUB로부터의 액세스 요구에 응답하여 COPUB로 스위칭 된다. 하나의 액세스가 종료한후, CPUB는를 H레벨로 만든다. 이때, CPUB가 액세스를 요구하는 경우, 액세스 권은 CPUB로 스위칭된다. CPUB가 액세스를 요구하지 않는 경우, 액세스 권은 CPUA에 유지된다. CPUA 및 CPUB는 대기 신호

Description

공유메모리 시스템 및 조정시스템과 조정방법
제 1 도는 본 발명에 따른 일실시예에서 버스 선택기의 내부를 상세히 도시한 블럭도.
제 2 도는 제 1 도의 실시예에서 버스 조정자(bus arbiter)의 내부를 상세히 도시한 블럭도.
제 3 도는 CPUA 액세스 타이밍 클럭(CKG)을 도시한 도면.
제 4 도는 버스 액세스 권(access right) 스위칭 타이밍을 도시한 타이밍도.
제 5 도는 CPUA 대기 신호의 내용을 도시하는 타이밍도.
제 6 도는 CPUB 대기 신호의 내용을 도시하는 타이밍도.
제 7 도는 메인(main) CPU가 복수의 기능 모듈(function module)을 제어하는 시스템의 블럭도.
제 8 도는 각 기능 모듈에서 처리하는 분배의 개념을 도시하는 블럭도.
제 9 도는 공유 메모리(shared memory)로 이중 포트(dual-port)RAM을 이용한 기능 모듈의 블럭도.
제 10 도는 동유 메모리로 의사(pseudo) 이중 포트 RAM을 이용한 기능 모듈의 블럭도.
제 11 도는 종래 기술에 따른 의사 이중 포트 RAM의 블럭도.
제 12 도는 제 11 도의 의사 이중 포트 RAM에서 버스 조정자의 블럭도.
*도면의 주요부분에 대한 부호의 설명*
28:범용 SRAM38,40:데이터 버스
40,44:양방향 버스 버퍼48,50:어드레스 버스
66:버스 선택기68:버스 조정자
70:멀티플렉서
[발명의 배경]
a) 분야
본 발명은, 복수의 프로세서, 예컨데, CPU에 의해서 공유된 메모리 시스템에 관한 것으로서, 특히 액세스 권(access right)의 스위칭 제어에 관한 것이다.
b) 종래 기술의 설명
제 7 도는 메인(main) CPU(10)가 메인 시스템 버스(main systerm bus)(14)를 통해 복수의 기능 모듈(12)에 접속하는 시스템을 도시한다. 각 기능 모듈(12)은 메인 시스템 버스(14)를 통해 메인 CPU(10)로부터의 정보를 처리하거나, 메인 시스템 버스(14)를 통해 메인 CPU(10)에 정보를 제공하는 기능을 한다. 예를들어, 기능 모듈(12)중 하나가 통신 모듈이라고 가정한다. 송신시, 상기 기능 모듈(12)은 메인 시스템 버스(14)를 통해 메인 CPU(10)로부터 제공된 데이터를 처리하는데, 이 처리된 데이터는 외부 기기로 송신된다.수신시, 상기 기능 모듈(12)은 외부 기기로부터 제공된 데이터를 처리하는데, 이 처리된 데이터는 메인 시스템 버스(14)를 통하여 메인 CPU(10)에 전달된다.
상기 기능 모듈(12)에서 처리 속도를 빠르게 하기 위해서, 분산 처리(distributed processing) 등의 기법을 이용한다. 제 8 도에 도시된 바와 같이, 상기 기능 모듈(12)의 다양한 기능은, 단일 CPU에 의해 생성되기보다는 복수의 CPU에 분산되어 있다. 이 도시된 예에서, 한개의 기능 모듈(12)로 실행하는 처리중, 기능 모듈(12)과 메인 CPU(10) 사이의 메인 시스템 버스(14)를 통한 데이터 송신/수신은 시스템 버스 인터페이스 CPU(16)에 의해 발생된다. 이 통신 및 다른 기능 처리는 기능 처리 CPU(18)에 의해 발생된다. 필요할 경우, 데이터는 시스템 버스 인터페이스 CPU(16)와 기능 처리 CPU(18)간에 전달된다. 따라서, CPU 1개당 처리 부담이 경감되어 고속 처리가 가능하게 된다.
양호한 분산 처리를 실현하기 위해서, CPU(16과 18)간의 데이터 전달 속도를 향상시킬 필요성이 있다. 상기 CPU는 일반적으로 비동기적으로 작동하기 때문에, 상기 CPU간의 고속 데이터 전달은 매우 어렵다. 기능 모듈(12)의 고속동작은 유지될 수 없다. 이러한 문제점을 해결하기 위해서, 분산 처리에 관한 복수의 CPU에 의해 공유 메모리(shared memory)를 제공한다.
제 9 도 및 제10도는 상기 공유 메모리의 일반적인 형태를 도시한다.
우선, 제 9도에 대해서 언급하면, 공유 메모리는 이중 포트(dual-port)RAM(20)이다. 이 이중 포트램(20)은 포트(1 및 2)를 가지고 있고, 포트 1 및 포트 2를 거쳐 CPUA 및 CPUB에 각각 액세스한다. 이 CPUA 및 CPUB는 제 8 도의 시스템 버스 인터페이스 CPU(16) 및 기능 처리 CPU(18)에 해당한다. 제10도에서, 도면 부호(22 및 24)는 CPUA 및 CPUB용 시스템 버스를 각각 표시한다.
이러한 구성의 공유 메모리를 이용할 경우, CPU간의 고속 데이터 전달은, 간단하게, 즉, CPUA 또는 CPUB의 판독/기록만을 실행하는 것에 의해 실현될 수 있다. 그러나, 이중 포트 램은 일반적으로 비싸며 용량도 적다. 상기 공유 메모리가 제 7도에 도시된 것과 같은 시스템의 각 기능 모듈에 의해 이용될 경우, 시스템 비용의 증가 및 다른 여러가지 문제점이 발생된다.
제10도에 도시된 공유 메모리는, 임의의 이중 포트 램을 이용하지 않은, CPU간의 데이터 전송을 실행할 수 있는 의사 이중 포트(preudo dual-port)RAM(26) 형태의 다른 공유 메모리이다. 이 의사 이중 포트 RAM(26)은 범용(general-purpose) SRAM(정적 RAM)(18)에 액세스할 경우, 버스 조정자/선택기(30)는, 액세스 요구(access request)를 조정하거나, 접속될 버스를 선택한다. 상기 범용 SRAM(28)은 저렴하고 용량이 크기 때문에, 이 공유 메모리는 비용의 절감같은 다양한 장점들을 제공할 수 있다. 또한, 버스 조정자/선택기(30)는 반 주문식(semi-custom) LSI 등을 이용하여 집적될 수 있기 때문에, 전체 시스템의 크기를 줄일 수 있다.
의사 이중 포트 RAM(26)의 예는 일본 특허 공개 헤이 4-195202호에 기술되어 있다. 상기 의사 이중 포트 RAM은, 프로그래머블 제어기와 주변기기 간의 데이터 전달을 실행하기 위해 단일 포트 RAM을 이용한다. 이 때, 상태 레지스터 제어장치에 의해 버스가 선택된다. 공유 메모리인, 단일 포트 RAM으로의 액세스 권은, 하나의 CPU(프로그래머블 제어기 및 그것의 주변장치)로부터의 일련의 액세스를 실행한 후에 다른 CPU로 전달된다. 이는, 공유 메모리로 저렴한 단일 포트 RAM을 이용하기 때문에 고속 및 저렴한 데이터 전달을 실현시킨다.
이 의사 이중 포트 RAM(26)은 제11도에 도시된 것과 같은 구성에 의해 실현된다. 이러한 구성에 있어서, 버스 조정자/선택기(30)는 버스 조정자(32), 데이터 버스 선택기(34) 및 어드레스 버스 선택기(36)를 포함한다.
이 버스 조정자(32)는 버스 접속 제어를 실행하여 CPUA 및 CPUB를 선택적으로 범용 SRAM(28)에 접속시킨다. 따라서, 다양한 제어 신호가 CPUA 및 CPUB와 버스 조정자(32) 사이에 전달된다. 이 버스 조정자(32)는, CPUA 또는 CPUB로부터의 액세스 요구 및 또한 범용 SRAM(28)에 접속될 CPU중 하나를 선택하기 위한 액세스의 종료(termination)에 응답한다. 선택 결과에 따라, 버스 조정자(32)는, 게이트 제어 신호와 액세스 권 명령 신호를 각각 데이터 버스 선택기(34)와 어드레스 버스 선택기(36)에 제공한다.
데이터 버스 선택기(34)는, CPUA의 데이터 버스(38)에 접속된 양방향 버스 버퍼(40)와, CPUB의 데이터 버스(42)에 접속된 또다른 양방향 버스 버퍼(44)와, 양방향 버스 버퍼(40, 44)를 범용 SRAM(28)에 접속하는 데이터 버스(46)를 포함한다.
이 양방향 버스 버퍼(40 및 44)는 버스 조정자(32)로부터 제공된 게이트 제어 신호에 응답하여, 양 방향 버스 버퍼의 한쪽 방향이 개방되면, 다른 방향이 폐쇄되도록 개폐를 제어한다. 따라서, 게이트 제어 신호를 이용하여 데이터 버스(46)에 접속된 데이터 버스(38 또는 44)를 선택한다.
상기 어드레스 버스 선택기(36)는, CPUA 또는 CPUB의 어드레스 버스(48 및 50)를 범용 SRAM(28)의 어드레스 버스(52)에 선택적으로 접속시킨다. 상기 선택 및 접속은 액세스 권 명령 신호에 응답하여 수행된다. 비록, CPUA 및 CPUB로부터의 판독/기록 신호 라인을 능동적으로 선택하고, 어드레스 버스를 갖는 SRAM(28)에 접속시키지만, 이에 대한 기재는 본원을 간소화하기 위하여 생략한다. 제12도는 버스 조정자(32)의 구성을 도시한다. 여기에 도시된 버스 조정자(32)는 2개의 D 플립플롭(DFF)(54, 56), RS 플립플롭(RSFF)(58) 및 3개의 AND 게이트(60, 62, 64)로 구성되어 있다.
상기 CPUA 및 CPUB는 범용 SRAM(28)에 액세스를 요구할 경우, 액세스 요구 신호를 발생한다. CPUA로부터의 액세스 요구 신호(이하 CPUA 액세스 요구 신호라 함)는 클럭으로 DFF(54)에 입력된다. CPUB로부터의 액세스 요구 신호(이하 액세스 요구 신호라 함)는 클럭으로 DFF(56)에 입력된다. DFF(54)의 D 입력은 DFF(56)의 QN출력이고, DFF(56)의 D 입력은 DFF(54)의 QN 출력이다. DFF(54)의 QN 출력은 AND 게이트(62)를 통하여 저활성 리셋 신호(active low reset signal)로 DFF(56)에 입력된다. 따라서, DFF(56)는 DFF(54)의 QN 출력이 L(저)레벨이 될 경우에 리셋된다. 그 결과, DFF(54 및 56)의 Q 출력에서 얻어진 신호는 각각, CPUA 및 CPUB 액세스 인에이블 신호로 이용된다.
CPUA 및 CPUB는, 액세스시 순차적으로 CPU 액세스 인에이블 신호들을 참조(refer to)한다. 그 중 CPUA 액세스 인에이블 신호는, CPUA가 범용 SRAM(28)에 액세스하지 않음을 나타낸다. 따라서 H(고)레벨인 CPUA 액세스 인에이블 신호는, CPUA가 범용 SRAM(28)에 액세스함을 의미하고, 이와 반대로, L레빌인 CPUA 액세스 인에이블 신호는, CPUA가 범용 SRAM(28)에 액세스하지 않음을 의미한다. 이러한 논리는 CPUB 액세스 인에이블 신호에도 마찬가지로 적용된다.
범용 SRAM(28)으로의 액세스시, 버스 선택 신호는, 게이트 제어 신호 또는 액세스 권 명령 신호로, 데이터 및 어드레스 버스 선택기(34, 36)에 제공된다. 이 버스 선택 신호는 RSFF(58)의 Q 출력이다. RSFF(58)는 DFF(56)의 QN 출력에 의해 설정(set)되고, AND 게이트(64)를 통하여 제공된 DFF(54)의 QN 출력에 의하여 리셋된다. 버스 선택 신호가 L레벨인 경우, 데이터 및 어드레스 버스 선택기(34, 36)는 CPUA가 범용 SRAM(28)에 액세스가 가능하도록 동작한다. 이와 반대로, 버스 선택 신호가 H레벨인 경우, 이 선택기(34, 36)는 CPUB가 범용 SRAM(28)에 액세스가 가능하도록 작용한다.
범용 SRAM(28)으로의 액세를 종료함으로써, CPUA 및 CPUB는 액세스 종료 신호를 발생한다. CPUA로부터의 액세스 종료 신호(이하 CPUA 액세스 종료 신호라 함)는 AND 게이트(60)를 통하여 저활성 리셋 신호로 DFF(54)에 입력된다. 반대로, CPUB로부터의 액세스 종료 신호(이하 CPUB 액세스 종료 신호라 함)는 AND 게이트(62)를 거쳐 저활성 리셋 신호로써 DFF(56)에 입력된다. AND 게이트(60 및 62)도 또한, 시스템 리셋 신호를 수신한다. 이 시스템 리셋 신호가 L레벨인 경우, DFF(54 및 56)는 리셋된다.
제11도 및 제 12도의 구성 동작을 각각 다른 경우에 대해서 설명한다.
CPUA가 액세스를 요구하는 경우
이 경우, 우선 CPUA는 CPUB 액세스 인에이블 신호를 참조한다. CPUB 액세스 인에이블 신호가 H레벨인 경우, CPUB가 범용 SRAM(28)에 액세스중이라고 판단한다. 이 CPUA는 CPUB의 액세스가 종료할 때까지(다른 아무런 처리도 실행하지 않고)대기한다. 상기 액세스의 종료시, 상기 CPUB는, CPUB 액세스 인에이블 신호를 리셋, 즉, L레벨로 하고, CPUB 액세스 종료 신호를 버스 조정자(32)에 제공한다.
CPUB 액세스 인에이블 신호가 L레벨이면, CPUB가 범용 SRAM(28)에 액세스하지 않는다고 판단한다. 이때, 상기 CPUA는 CPUA 액세스 요구 신호를 버스조정자(32)에 발생한다. 이 버스 조정자(32)는 이 CPUA 액세스 요구 신호에 응답하여, CPUA 액세스 인에이블 신호가 H레벨이 되도록 하고, L레벨인 버스 선택 신호를 출력한다. 버스 선택 신호가 L레벨이 되면, 데이터 및 버스 선택기(34, 36)는 데이터 및 어드레스 버스(38, 48)를 범용 SRAM(28)에 접속시킨다. 따라서, 이 CPUA는 범용 SRAM(28)에 액세스할 수 있다. CPUA는 CPUA 액세스 인에이블 액세스 신호가 H레벨이 된 것을 확인한 후, 범용 SRAM(28)에 액세스(판독/기록)된다. CPUA에 의해 일련의 액세스 동작을 실행한 후, 버스 조정자(32)로의 액세스 종료를 나타내는 CPUA 액세스 종료 신호를 출력한다. 따라서, 이 CPUA 액세스 인에이블 신호는 리셋된다.
CPUB가 액세스를 요구하는 경우
이 경우는 CPUA가 CPUB로 바뀐 것을 제외하고는 상기 경우와 동일하다. 자세히 보면, 우선, CPUB는 CPUA 액세스 인에이블 신호를 참조한다. CPUA 액세스 인에이블 신호가 H레벨인 경우, CPUB 신호는 CPUA의 액세스가 종료할 때까지 대기한다. CPUA로부터의 액세스 종료시, CPUB는 CPUA 액세스 인에이블 신호를 차례로 리셋하는 버스 조정자(32)에 CPUA 액세스 종료 신호를 제공한다.
CPUA 액세스 인에이블 신호가 L레벨인 경우, CPUB는 버스 조정자(32)에 CPUB 액세스 요구 신호를 발생한다. 버스 조정자(32)는 CPUB 액세스 요구 신호에 응답하여, 버스 섹션 및 CPUB 액세스 인에이블 신호는 H레벨이 된다. 버스 섹션 신호가 H레벨이 되면, 데이터 및 버스 선택기(33, 36)는 데이터 및 어드레스 버스(42, 50)를 범용 범용 SRAM(28)에 접속시킨다. 따라서, 이 CPUB는, CPUB 액세스 인에이블 신호가 H레벨이 되는 것을 확인한 후, 범용 SRAM(28)에 액세스한다. CPUB 의해 일련의 액세스 동작을 수행한 후, CPUB 액세스 종료 신호를 버스 조정자(32)에 출력한다. 따라서 CPUB 액세스 인에이블 신호는 리셋된다.
CPUA 및 CPUB가 모두 액세스를 요구하는 경우
CPUA와 CPUB의 액세스 요구간에 미세한 시간 차이라도 있다면, 버스 조정자/선택기(30)는 CPUA 또는 CPUB 중에서 액세스를 최초로 요구한 어느 한쪽에 액세스 권을 준다. 즉, CPU는 범용 SRAM(28)에 액세스할 것이다.
그러나, CPUA 및 CPUB 모두가 정확히 동시에 액세스한다면, 버스 조정자/선택기(30)는 액세스 권을 CPUA 또는 CPUB 중 하나에 부여한다. 제12도의 회로에서, DFF(56)가 DFF(56) QN 출력에 의해 리셋되어 L레벨로 되기 때문에, 액세스 권을 CPUA에 부여한다.
상기 기술된 경우중 어느 한 경우에서, 제 2 의 CPU가 범용 SRAM(28)에 액세스중이 아니라는 것을 확인한 후에 액세스를 요구하더라도, 반드시 제 1 의 CPU에 액세스 권을 부여하지는 않는다. 예컨데, CPU가 범용 SRAM(28)에 액세스할 경우, CPUA는 CPUB가 범용 SRAM(28)에 액세스 중이 아님을 CPUB 액세스 인에이블 신호로부터 확인한 후에 CPUB 액세스 요구 신호를 발생한다. 그러나, CPUB가 CPUA보다 조금 빨리 액세스 요구 신호를 발생하는 경우, 버스는 CPUB로 스위칭될 것이다. 반대로, CPUB가 범용 SRAM(28)에 액세스하는 경우, CPUB는, CPUA가 범용 SRAM(28)에 액세스중이 아님을 CPUA 액세스 인에이블 신호로부터 확인한 후에 CPUA 액세스 요구 신호를 발생한다. 그러나, CPUA가 CPUB보다 조금 빨리 액세스 요구 신호를 발생하는 경우, 버스는 CPUA로 스위칭될 것이다. 기술된 바와 같이, 각 CPU는 자신의 액세스 인에이블 신호의 값을 참조한 후에 액세스한다.
상기 방법과 같이, 종래 기술에서는, 버스 조정자(32)가 각각의 CPU로부터의 액세스 요구에 대응하여 액세스 권을 조정하여 데이터 전달을 실행한다.
종래 기술중 의사 이중 포트 RAM을 이용하는 CPU간의 데이터 전달에 있어서, CPU중 하나가 공유 메모리(범용 SRAM)에 액세스할 경우, 다른 CPU의 액세스 종료를 기다려야 하기 때문에, 다음과 같은 문제점이 있다.
첫째, CPU중 하나가 공유 메모리에 액세스할 경우, 다른 CPU가 액세스를 종료할 것인지와, 다른 CPU가 액세스를 요구할 것인지 여부를 판단해야 하기 때문에 소프트웨어적인 절차를 필요로 한다. 상기 절차를 행하는 소프트웨어 개발은 시간을 필요로 하고, 또한 공유 메모리로의 액세스 등을 위한 소프트웨어를 실행하기 위해서도 시간이 필요하다. 다시 말해, 소프트웨어를 개발하기 위한 단계가 필요하게 되고, 시스템의 확장 및 데이터 전달과 효율의 향상을 방해한다.
둘째, 다른 CPU가 공유 메모리에 액세스중일 때, 하나의 CPU가 공유 메모리에 액세스하는 경우, 상기 하나의 CPU는 다른 CPU가 상기 공유 메모리로의 액세스가 종료할 때까지 공유 메모리에 액세스할 수 없다. 하나의 CPU가 적은 데이터 전달을 실행할 때조차, 다른 CPU가 액세스를 종료한 후 상기 하나의 CPU에 액세스권이 부여될 때까지 대기해야만 한다. 이것은 하나의 CPU 상의 부하(load)가 다른 CPU에 영향을 끼치는 것을 의미한다. 그 결과, 다수의 CPU간에 걸친 처리의 분배효과가 감소될 것이다. 또한, 다른 CPU로의 액세스가 종료하였는지 여부를 모니터하여야만 한다. 이것은 불필요한 시간을 필요로 하고, 데이터 처리 속도를 떨어뜨린다.
세째, 하나의 CPU가, 외부 메모리 또는 I/O로부터 공유 메모리로, 또는 공유메모리로부터의 다른 메모리 또는 I/O로 데이터를 전달할 때, 동일한 메모리를 공유하는 다른 CPU는 대기 시간이 현저하게 증가한다. 예컨데, 상기 데이터를 외부 메모리 또는 I/O로부터 공유 메모리로 전달할 때, 다른 메모리 또는 I/O로부터 데이터를 판독하는 동작 및 판독한 데이터를 공유 메모리에 기록하는 동작을 되풀이할 것이다. 데이터 전달/처리 시간의 ½ 이상은 공유 메모리와 직접 관련없는 동작(다른 메모리로부터 데이터를 판독하는 동작 등)에 의해 소비될 것이다. 이러한 문제점은 DMA(direct memory access : 직접 메모리 액세스)모드 같은 고속 모드에서 발생된다.
네째, 특히 일본 특허 공개 헤이 4-195202호에 기술된 바와 같은 구성에 있어서, 특정 CPU는, 공유 메모리의 하나의 메모리의 액세스가 종료하는 경우, 액세스권이 다른 CPU 되기 때문에, 공유 메모리를 연속적으로 액세스할 수 없다.
요 약
본 발명은, 소프트웨어를 이용하지 않는 종래의 메모리 액세스 방법과 동일한 공유 메모리에 액세스할 수 있도록 하고, 전송 시간의 감출과 효율 개선을 실행할 수 있으며, 공유 메모리에 액세스하기 위해 소프트웨어를 개발할 필요가 없도록 하는 것을 그 목적으로 한다. 본 발명의 다른 목적은, 소량의 데이터가 공유 메모리에 기록되거나 공유 메모리로부터 판독될 때 하나의 CPU로부터 나머지 CPU로 액세스 권이 전송될 필요가 없도록 하여, 하나의 CPU상의 부하가 나머지 CPU에 거의 영향을 미치지 않고, 데이터 처리 속도의 저하 뿐만 아니라 불필요한 시간의 증가를 방지하도록 하는 것이다. 본 발명의 또다른 목적은, 나머지 CPU가 나머지 메모리 또는 I/O에 액세스중일 때, 데이터가 공유 메모리와 다른 메모리 또는 I/O 간에 전달될 경우, 하나의 CPU가 공유 메모리에 액세스할 수 있기 위해서 여하의 대기 시간도 필요치 않도록 하는 것이다.
본 발명의 제 1 의 특징에 의하면, 공유 메모리 장치는, a) 프로세서 자체가 액세스 권을 갖는 프로세서에 의해 액세스 가능한 공유 메모리 및 b) 복수의 프로세서로부터의 액세스 요구를 조정하여, 액세스 요구를 발생하는 상기 프로세서중 하나에 액세스 권을 부여하는 조정 수단(arbitrating means)을 포함하며, 여기서 상기 조정 수단은, b1) 공유 메모리 회로의 하나의 액세스가 종료할 때마다 상기 프로세서의 액세스 권을 포기하도록 하는 수단과, b2) 상기 액세스 권을 포기하는 시점에서 다를 프로세서가 액세스 요구를 유지하는 경우 복수의 프로세서중 다른 프로세서에 액세스 권을; 부여하는 수단과. b3) 제 2 프로세서가 액세스 요구를 발생하지 않고, 그 액세스 권을 갖는 제 1 프로세서가 상기 액세스 권을 포기하는 시점에서 액세스 요구를 발생하는 경우, 제 1 프로세서에서 액세스 권을 유지시키는 유지 수단을 포함한다.
본 발명의 제 2 의 특징에 의하면, 본 발명은, 액세스 요구를 갖는 복수의 프로세서중 하나에 액세스권을 부여하는, 복수의 프로세서로부터의 공유 메모리 액세스 요구를 조정하는 조정 장치를 제공하고, 여기서, 상기 조정 장치는, a) 상기 공유 메모리로 하나의 액세스가 종료할 때마다 상기 프로세서의 액세스 권을 포기하도록 하는 수단과, b) 액세스 권을 포기하는 시점에서 액세스 요구를 발생할 경우, 복수의 프로세서중 다른 하나에 액세스 권을 부여제공하는 수단과, c) 상기 복수의 프로세서중 어느것도 액세스 요구를 발생하지 않고, 액세스권을 갖는 제1프로세서가 액세스 권이 포기되는 시점에서 액세스 요구를 발생하는 경우, 제 1 프로세서의 액세스 권을 유지시키는 수단을 포함한다.
본 발명의 제 3 특징에 의하면, 본 발명은 액세스 권을 그 액세스 요구를 발생하는 하나의 프로세서에 부여하는 복수의 프로세서로부터의 공유 메모리 액세스 요구를 조정하는 조정하는 방법을 제공하는 것으로서, 상기 방법은, a) 공유 메모리로의 하나의 액세스가 종료할 때마다, 상기 프로세서의 액세스 권을 포기하는 단계와, b) 액세스 권이 포기되는 시점에서 액세스 요구를 발생하는 경우, 제 2 의 프로세서인 복수의 프로세서중 다른 하나에 액세스 권을 부여하는 단계와, c) 상기 복수의 프로세서중 어느것도 액세스 요구를 발생하지 않고, 액세스권을 갖는 제1프로세서가 그 액세스 권을 포기한 시점에서 액세스 요구를 발생하는 경우, 제1프로세서에 액세스 권을 포기한 시점에서 액세스 요구를 발생하는 경우, 제1프로세서에서 액세스 권을 유지시키는 단계를 포함한다.
본 발명에 따르면, 프로세서는 액세스 권을 획득한 후 하나의 액세스가 종료할 때 그 액세스 권을 포기한다. 만약, 다른 프로세서가 그 시점에서 그의 액세스 요구를 발생할 경우, 액세스 권은 상기 다른 프로세서에 전달된다. 그렇지 않다면, 그 액세스 권은 결과적으로 제1프로세서가 유지한다.
복수의 프로세서가 액세스 요구에 대하여 서로 경쟁하는 경우, 액세스 권은 하나의 액세스가 종료할 때마다 하나의 프로세서로부터 다른 프로세서로 전달될 것이다. 그 결과, 모든 프로세서는 일련의 액세스가 프로세서에 의해 종료할 따까지 기다릴 필요가 없다. 또한, 특정 프로세서는, 임의의 다른 프로세서가 액세스 요구를 발생하지 않는 한, 공유 메모리에 연속적으로 액세스할 수 있다. 이것은 프로세서상의 부하가 다른 프로세서의 처리에 거의 영향을 미치지 않도록 하고, 따라서 불필요한 시간 확장 및 처리 속도의 증대에 관한 문제점을 제거한다. 또한, 상기 언급된 조정 논리는, 소프트웨어 방식보다는 오히려 하드웨어 방식으로 수행될 수 있다. 따라서, 소프트웨어 처리 및 소프트웨어 개발에 따른 문제점이 발생하지 않는다.
일반적으로 각 프로세서는 프로세서와 공유 메모리간의 데이터를 전달하는 데이터 버스 및 공유 메로리상에서 액세스되는 어드레스를 지정하는 어드레스 버스를 구비한다. 또한, 상기 공유 메모리는, 공유 메모리와 액세스 권을 획득하는 프로세서 사이의 데이터 전달하는 데이터 버스 및 액세스 권을 획득한 프로세서에 의해 어드레스를 지정하는 어드레스 버스를 구비한다. 액세스 권이 프로세서에 부여될 경우, 공유 메모리의 데이터 버스는, 그 메모리 장치로부터, 그 프로세서의 데이터 버스에 선택적으로 접속되고, 어드레스 버스는 동일한 프로세서의 어드레스 버스에 선택적으로 접속된다. 이러한 구성에 있어서, 공유 메모리의 메모리 장치는 범용 SRAM으로서 실행될 수 있고, 양방향 버스 버퍼는 데이터 버스 선택/접속 수단으로서 작용할 수 있고, 멀티플렉서는 어드레스 버스/선택 접속 수단으로서 작용할 수 있다.
상기 데이터 버스 선택/접속 수단이 양방향 버스 버퍼의 형태인 경우, 상기 양방향 버스 버퍼는 프로세서의 갯수에 대응하여 제공된다. 양방향 버스 버퍼를 개폐하기 위해 각 프로세서에 제공된 게이트 신호는, 액세스 권을 획득한 프로세서를 지정하는 조정 수단으로부터 출력된 게이트 신호 및 각 프로세서로부터 출력된 칩선택 신호에 의해 형성된다. 각각의 양방향 버스 버퍼에 데이터 전달의 방향을 지시하는, 즉, 공유 메모리의 액세스 방향을 지시하는 신호는, 대응 프로세서로부터 출력된 판독/기록 신호에 의해 형성된다.
게이트 신호의 형성 상, 액세스 타이밍 클럭은, 프로세서의 임의의 하나에서의 작동 타이밍에 기초하여 형성된다. 상기 게이트 신호는, 상기 액세스 타이밍 클럭에 동기하여 형성된다. 또한, 상기 조정 수단도 액세스 타이밍 클럭에 동기하고, 대응 프로세서에 액세스 권을 부여하는지 여부를 지시하는 대기 신호를 형성한다. 그 결과로 형성된 대기 신호는 각각 대응 프로세서에 제공된다.
양호한 실시예에 대한 상세한 설명
본 발명은 제 1 내지 제 6 도에 도시된 실시예를 참고로 설명되며, 제 7 내지 제 12도에서 동일한 부분을 참조 번호를 붙여 표시하고, 또다시 설명하지 않는다.
제 1 도 및 제 2 도는, 본 발명의 일 실시예에 따른 시스템 구성을 도시한다. 이 시스템은 버스 선택기(66)(제 1 도) 및 버스 조정자(68)(제 2 도)를 구비한다. 이 도면에서, 처리의 분배에 관한 CPUA 및 CPUB는 간략히 하기 위하여 생략된다. 제 1 도에 도시된 버스 선택기(66)의 구조는 간략히 도시 하였지만, 실제로는, CPUA 및 CPUB의 작동에 대응하여 버스 스위칭 타이밍을 설정해야 한다. 이것은 당업자라면 본 특허 출원의 상세한 설명과 도면으로부터 알 수 있음이 명백하다 할 것이다.
a) 버스 선택기(66)
제 1 도에 도시된 버스 선택기(66)는, 이하에 설명될 액세스 권 제어 장치로 부터의 게이트 신호(G)와, CPUA로부터의 CPUA 기록 신호, CPUA 판독 신호및 CPUA 칩 선택 신호와, CPUB로부터의 CPUB 기록 신호뷰, CPUB 판독 신호및 CPUB 칩 선택 신호를 수신한다. 상기 버스 선택기(66)는 CPUA 및 CPUB의 어드레스 버스(48 및 50)를 어드레스 버스(52)에 선택적으로 접속시키기 위한 수단으로써 멀티플렉서(70)를 구비한다. 또한 상기 버스 선택기(66)는 OR 게이트(72 내지 80)를 구비한다.
상기 게이트 신호(G)는 CPUA 게이트 신호로서 OR 게이트(72)를 통해 양방향 버스 버퍼(40)에 제공되고, 또한 이 게이트 신호(G)는 CPUB 게이트 신호로서 인버터(82) 및 OR 게이트(74)를 통해 양방향 버스 버퍼(44)에 제공된다.
각 CPU의 어드레스 디코더 등에 의해 형성된 CPUA 게이트 신호또는 CPUB 게이트 신호가 L레벨인 경우, 양방향 버스 버퍼(40 및 44)는 각 데이터 버스(38 및 42)를 데이터 버스(46)에 접속시킨다. OR 게이트(72 및 74)의 다른 입력이 되는 CPUA 및 CPUB 칩선택 신호가 모두 L레벨인 경우, 양방향 버스 버퍼(40 및 44)의 하나는 개방되고, 다른 것은 폐쇄된다. CPUA 칩 선택 신호가 H레벨인 경우, 양방향 버스 버퍼(40)는 CPUA 게이트 신호에 관계없이 폐쇄된다. CPUB 칩 선택 신호가 H레벨인 경우, 양방향 버스 버퍼(44)는 CPUB 게이트 신호에 무관하게 폐쇄된다.
게이트 신호(G)도 역시 멀피플렉서(70)에 제공된다. 게이트 신호(G)가 L레벨인 경우, 멀티플렉서(70)는 어드레스 버스(48), CPUA 기록 신호 라인(84) 및 CPUA 판독 신호 라인(86)을 어드레스 버스(52), 기록 신호 라인(88) 및 판독 신호 라인(90)에 각각 접속시킨다. 이 CPUA 기록 및 판독 신호 라인(84, 86)은 OR 게이트(76 또는 78)의 출력이다. 상기 OR 게이트(76)은 CPUA로부터의 CPUA 기록 신호및 CPUA 칩 선택 신호를 수신하고, OR 게이트(78)은 CPUA 판독 신호및 CPUA 칩 선택 신호를 수신한다. 따라서, CPUA 칩 선택 신호가 L레벨인 경우, CPUA 기록 신호또는 CPUA 판독 신호는 기록 또는 판독 신호로서 범용 SRAM(28)에 제공된다. 상기 CPUA 칩 선택 신호가 H레벨이면, 범용 SRAM(28)에 제공된 기록 및 판독 신호는 H레벨이 된다.
반대로, 게이트 신호(G)가 H레벨이면, 멀티플렉서(70)는 어드레스 버스(50), CPUB 기록 신호 라인(92) 및 CPUB 판독 신호 라인(94)을 어드레스 버스(52), 기록 신로 라인(88) 및 판독 신호 라인(90)에 각각 접속시킨다. 상기 CPUB 기록 신호라인(92)은, CPUB 기록 신호및 CPUB 칩 선택 신호를 수신하는 OR 게이트(80)의 출력이다. 상기 CPUB 칩 선택 신호가 L레벨인 경우, CPUB 기록 또는 판독신호는 기록 또는 판독 신호로서 범용 SRAM(28)에 제공된다. 상기 CPUB 칩 선택 신호가 H레벨인 경우, 범용 SRAM(28)에 제공된 기록 신호는 H레벨이 된다.
상기 CPUA 및 CPUB 칩 선택 신호가 L레벨이고 게이트 신호(G)가 L레벨인 경우, CPUA의 데이터 및 어드레스 버스(38, 48)는 데이터 및 어드레스(46, 52)를 통해 범용 SRAM(28)에 접속되고, 범용 SRAM(28)에 CPUA 기록 및 판독 신호의 제공이 가능하다. 이와 반대로, 게이트 신호(G)가 H레벨이면, CPUB의 데이터 및 어드레스 버스(42, 50)는 데이터 및 어드레스 버스(46, 52)를 통해 범용 SRAM(28)에 접속되고, 범용 SRAM(28)에 CPUB 기록 및 판독 신호를 제공할 수 있다. 다시 말해, CPUA는 게이트 신호(G)가 L레벨인 경우 액세스 권을 획득하는 반면, CPUB는 게이트 신호(G)가 H레벨인 경우 액세스 권을 획득한다. 상기 CPUA 또는 CPUB 판독신호는 데이터 전달 방향(판독 또는 기록)을 지시하는 방향 지시 신호(DIR)로서 대응하는 양방향 버스 버퍼(40, 44)에 제공된다.
상기 CPUA 또는 CPUB 칩 선택 신호중 하나가 H레벨인 경우, 그 대응하는 양방향 버스 버퍼(40 또는 44)는 폐쇄되고, 범용 SRAM(28)에 제공된 기록 및 판독 신호는 H레벨이 된다. 이 경우, H레벨인 칩 선택 신호를 갖는 CPU(CPUA 또는 CPUB)는 게이트 신호(G)에 상관없이 범용SRAM(28)에 액세스 할 수 없다.
b) 버스 조정자(68)
제 2 도에 도시된 버스 조정자(68)는 CPUA 액세스 타이밍 클럭 발생 장치(96), WAITA 발생 장치(98), WAITB 발생 장치(100) 및 액세스 권 제어 장치(102)를 구비한다. 상기 버스 조정자(68)는 기본 클럭(basic clock)(CLK) 및 CPUA 칩 선택 신호를 수신하고, 또한 기본 클럭(CKB) 및 CPUB로부터의 CPUB 칩 선택 신호를 수신한다. 또한 버스 조정자(68)는 대기 신호를 각각 CPUA 및 CPUB에 제공하고, 게이트 신호(G)를 버스 선택기(66)에 제공한다.
b1) CPUA 액세스 타이밍 클럭 발생 장치(96)
상기 CPUA 액세스 타이밍 클럭 발생 장치(96)는 2개의 DFF(104, 106) 및 JKFF(108)을 포함하는 분배기이다. 상기 CPUA의 기본 클럭(CKA)은 DFF(104)의 CK 입력 및 JKFF(108)의 CKN 입력에 입력된다. DFF(104)의 QN 출력은 DFF(104)의 D 입력 및 DFF(102)의 CK 입력에 입력되고, DFF(104)의 Q 출력은 JKFF(108)의 K 입력에 입력되고, DFF(106)의, QN 출력은 DFF(106)의 D 입력에 입력되고, DFF(106) Q 출력은 JFKK(108)의 J 출력에 입력된다. 따라서 제 3 도에 도시된 바와 같이, JKFF(108)의 QN 출력은, 기본 클럭(CKA)을 4등분함으로써 얻어지는 3/4의 듀티율(duty ratio)을 갖는 신호(CKG)를 출력한다. 이 신호(CKG)는 CPU 액세스 타이밍 클럭으로서 언급될 것이다.
상기 CPUA 액세스 타이밍 클럭(CKG)은 CPUA의 기본 클럭(CKA)에 동기되고, 액세스 권 제어 장치(102)에 제공된다. 다음에 기술될 것과 같이, 이 액세스권 제어 장치(102)는 CPUA 액세스 타이밍 클럭(CKG)에 동기된 게이트 신호(G)를 발생한다. 이 게이트 신호(G)는, 버스 선택기(66) 및 WAITA 및 WAITB 발생 장치(98, 100)에 제공된다. 그러므로, 버스 조정자(68)의 작동은 기본 클럭(CKA)에 동기된다.
상기 CPUA의 메모리 액세스 작동(범용 SRAM(28), CPUA 시스템 메모리 및 기타 메모리에 액세스 하는 것을 포함)은 기본 클럭(CKA)에 동기하기 때문에, 버스 조정자(68)의 작동은 CPUA의 메모리 액세스 작동에 동기할 것이다. 특히, 상기 CPUA는, CPUA 액세스 타이밍 클럭(CKG)의 하강으로부터 상승까지(하나의 클럭(CKG))의 시간 주기내에 다양한 액세를 실행한다. 상기 메모리 액세스는 적어도 CPUA 액세스 타이밍 클럭(CKG)의 다음 상승전에 종료한다.
b2) 액세스 권 제어 장치(102)
액세스 권 제어 장치(102)는 DFF(110), 인버터(112), NAND 게이트(114) 및 NOR 게이트(116, 118)로 구성되는데, 상기 DFF(110)의 CKN 입력은 CPUA 액세스 타이밍 클럭(CKG)을 수신한다. 제4도에 도시된 바와 같이, DFF(110)의 Q 출력, 즉 게이트 신호는 CPUA 액세스 타이밍 클럭(CKG)에 동기된 신호의 형태이다. 결과적으로, 범용 SRAM(28)으로의 액세스 권은 CPUA 액세스 타이밍 클럭(CKG)의 상승 타이밍에 따라 스위칭된다.
CPUB 칩 선택 신호가 H레벨인 경우, NOR 게이트(118)의 출력은, CPUA 칩 선택 신호의 값에 상관없이 L레벨이 된다. 따라서, 게이트 신호(G)는 CPUA 액세스 타이밍 클럭(CKG)의 하강 타이밍에서 L레벨이 된다. 이때, CPUA는 본원에 기술된 방법으로 액세스 권을 획득한다. 반대로 CPUB 칩 선택 신호가 L레벨인 경우, DFF(110)의 D 입력은, 게이트 신호가 그 때까지 L레벨이라도 H레벨이 된다. 설명된 바와 같이, CPUB는 액세스 권을 획득한다. 상기 실시예에 있어서, CPUB 칩 선택 신호는 CPUA 액세스 타이밍 클럭(CKG)의 하강 타이밍에서 액세스 권을 스위칭한다. CPUA 및 CPUB 칩 선택 신호가 모두 L레벨인 경우, 액세스 권은 기본 CPU인 CPUA에 부여될 것이다.
b3) WAITA 발생 장치(98)
이 WAITA 발생 장치(98)는 2개의 DFF(120, 122) NOR 게이트(124), OR 게이트(126) 및 인버터(128)로 구성된다. 이 DFF(120 및 122)는 서로 직렬로 접속되고, 그 CK 입력은 CPUA의 기본 클럭(CKA) 을 수신한다. DFF(122) Q 출력과 CPUA칩 선택 신호와의 OR 작동의 결과인 CPUA 대기 신호는 기본 클럭(CKA)의 상승 타이밍에서 상승한다.
CPUA 칩 선택 신호가 L레벨인 시간 주기내에서, DFF(122)의 Q 출력은 CPUA 대기 신호이다. 게이트 신호(G)가 이 시간에서 H레벨인 경우, NOR 게이트(124)의 출력은 L레벨이 된다. 제 4 도 및 제 5도에 도시된 바와 같이, CPUA는 신호를 대기한다. 다시 말해, CPUA는 CPUA 대기 신호가 L레벨이 되는 것을 감지함으로써, 범용 SRAM(28)에 액세스를 대기하는 CPUB가 액세스 권을 획득함을 알 수 있다. 이것은 CPUA의 메모리 액세스 작동이 CPUA 대기 신호를 통해 CPUB의 메모리 액세스 작동과 동기되는 것을 의미한다.
CPUA 칩 선택 신호및 게이트 신호(G)가 L레벨이고, CPUA 액세스 타이밍 클럭(CKG)이 H레벨로 스위칭될 때, 기본 클럭(CKA)은 NOR 게이트(124)의 출력이 된다. 기본 클럭(CKA)이 DFF(120 및 122)의 CK 입력에 제공되기 때문에, CPUA 대기 신호는 CPUA 액세스 타이밍 클럭(CKG)이 상승한 후 기본클럭(CKA)의 첫번째 상승 타이밍에서 상승한다. 상기 기본 클럭(CKA)은 2등분되어 CPUA 대기 신호를 제공한다. 제 4 도 및 제 5도에 도시된 바와 같이, CPUA 대기 신호는 CPUA 액세스 타이밍 클럭(CKG)이 하강한 후 기본 클럭(CKG)의 두번째 하강시 H레벨이 된다. CPUA에 액세스 권을 부여한 경우, CPUA는 CPUA 액세스 타이밍 클럭(CKG)에는 동기하여 상승한 CPUA 대기 신호를 감지하여 그 자체에 대한 대기 명령의 해제를 알 수 있다. 상기 CPUA는, 대기 명령의 해제에 응답하여 메모리 액세스를 실행하고, CPUA 액세스 타이밍 클럭(CKG)이 하강한 후 기본 클럭(CKA)의 세번째 하강시 메모리에 액세스를 종료한다.
CPUA 칩 선택 신호가 OR 게이트(126)에 입력되기 때문에, CPUA 대기 신호는 CPUA 칩 선택 신호가 H레벨로 유지되는 시간 주기동안 H레벨이다. 상기 CPUA는 그 자신에 대한 대기 명령의 해제를 알기 위해 H레벨이 되는 CPUA 대기 신호를 감지할 수 있다. 따라서, 상기 CPUA는 동시에 상기 메모리를 액세스할 수 있다.
b4) WAITB 발생 장치(100)
WAITB 발생 장치(100)는, DFF(130), NAND 게이트(132, 134) 및 인버터(136)를 포함한다. 상기 DFF(130)의 CK 입력이 CPUB의 기본 클럭(CKB)을 수신하기 때문에, DFF(130)의 Q 출력 및 NAND(134)의 출력인 CPUB 대기 신호는, 제 4 도 및 제 6 도에 도시된 바와 같이 CPUB의 메모리 액세스 작동에 동기한다. CPUB 칩 선택 신호가 H레벨인 경우, 인버터(136)의 출력은 L레벨이되고, CPUB 대기 신호는 H레벨이 된다.
상기 CPUB 칩 선택 신호가 L레벨인 경우, DFF(130)의 Q 출력은 CPUB 대기 신호가 된다. CPUB 칩 선택 신호가 L레벨인 경우, NOR 게이트(118)의 출력은 H레벨이 되고, 게이트 신호(G)의 값은 CPUB 액세스 타이밍 클럭(CKG)의 상승 타이밍에서 H레벨이 된다. 따라서, CPUB 대기 신호는 기본 클럭(CKB)의 다음 상승시 L레벨이 된다.
그러므로, 제 6 도에 도시된 바와 같이, 게이트 신호(G)가 L 레벨일 때(CPUA가 액세스 권을 가짐) CPUB가 칩 선택 신호를 H레벨에서 L레벨로 변경하는 경우, CPUB 대기 신호는 L레벨이 된다. 따라서, CPUB는 대기 상태로 된다. 그 후, 게이트 신호(G)는 CPUA 액세스 타이밍 클럭(CKG)의 하강에 동기하여 상승한다. CPUB 대기 신호는, 기본 클럭(CKB)의 상승후 기본 클럭(CKB)의 첫번째 상승시 H레벨이 된다. 다시 말해, CPUB의 대기 상태는, 범용 SRAM(28)으로의 액세스 권이 CPUA에서 CPUB로 스위칭된 후 기본 클럭(CKB)의 첫번째 상승시 종료한다. 그후, CPUB는 범용 SRAM(28)으로의 액세스를 실행한다.
c) 전체 동작
상기 시스템의 전체 동작을 서로 다른 몇가지 경우에 관련하여 설명한다.
c1) CPUA 또는 CPUB 어느 것도 액세스 요구를 하지 않는 경우
CPUA 및 CPUB는, 각각의 칩 선택 신호를, 이들이 범용 SRAM(28)에 액세스를 요구할 때는 L레벨로, 또한 액세스 요구를 하지 않을 때는 H레벨로 한다. CPUA 또는 CPUB 어느것도 액세스를 요구하지 않는 경우, 양 칩 선택 신호는 H레벨이다. 양 칩 선택 신호가 H레벨일 때, 양 대기 신호가 H레벨임은 앞에서 설명한 바로부터 알 수 있다. 반면, 칩 선택 신호가 H레벨이므로, CPUA 액세스 타이밍 클럭(CKG)의 하강 시, 게이트 신호(G)는 L레벨이 된다. 따라서, CPUA는 액세스권을 획득한다. CPUA 또는 CPUB 어느 것도 액세스를 요구하지 않는 경우, 범용 SRAM(28)으로의 액세스 권은 상기 방법으로 항상 CPUA에 할당한다.
c2) CPUB가 범용 SRAM(28)을 액세스하지 않을 때 CPUA가 액세스를 요구하는 경우
이 경우, 게이트 신호(G)는 CPUB 칩 선택 신호가 H레벨이기 때문에 L레벨이다. 그러므로 액세스 권은 CPUA에 부여될 것이다.
c3) CPUA가 범용 SRAM(28)에 액세스하지 않을 때 CPUB가 액세스를 요구하는 경우
이 경우, 액세스 권은 CPUA에 부여되는데, 그 이유는 CPUB가 액세스를 요구하기 전의 게이트 신호(G)가 L레벨이기 때문이다. CPUB가 범용 SRAM(28)에 액세스를 요구하기 위해 칩 선택 신호를 L레벨로 하는 경우, 제 6 도에 도시된 바와 같이, CPUB 대기 신호는 L레벨이 되어 CPUB는 대기 상태로 된다. 그 후, CPUA 액세스 타이밍 클럭(CKG)은 하강하는 반면, 게이트 신호(G)는 상승한다. 다시 말해, 액세스 권은 CPUB로 스위칭된다. 따라서, CPUB 대기 신호는, 게이트 신호(G)가 상승한 후 기본 클럭(CKG)의 첫번째 상승시 H레벨이 된다. 이에 응답하여, CPUB는 범용 SRAM(28)에 액세스한다. 액세스가 종료하면, CPUB는 칩 선택 신호를 H레벨로 복귀시킨다. CPUA 액세스 타이밍 클럭(CKG)의 다음 상승시, 게이트 신호(G)는 상기 상승에 동기하여 액세스 권을 CPUA로 복귀시킨다.
c4) CPUB가 범용 WRAM(28)에 액세스할 때 CPUA가 액세스를 요구하는 경우
CPUB가 범용 SRAM(28)에 액세스할 때, 게이트 신호(G)는 H레벨이고, CPUB는 액세스 권을 획득한다. 범용 SRAM(28)에 액세스를 요구하기 위해, CPUA가 칩 선택 신호를 L레벨로 하는 경우, 대기 신호는 제 6 도에 도시된 바와 같이 L레벨이 된다. CPUB는 이러한 변화에 응답하여 대기 상태로 된다. CPUA는, CPUA 액세스 타이밍 클럭(CKG)에 동기하여 메모리 액세스 동작을 실행하고, 클럭(CKG)의 다음 상승시 액세스를 완성한다. 범용 SRAM(28)에의 액세스가 종료하면, CPUA는 칩 선택 신호가 H레벨이 되게 한다. 제 4 도에 도시된 바와 같이, 게이트 신호(G)는 CPUA 액세스 타이밍 클럭(CKG)의 다음 상승에서 H레벨이 된다. 따라서, 액세스 권은 CPUB로 스위칭된다. 이러한 스위칭에 응답하여, CPUB는 범용 SRAM(28)으로의 액세스를 실행한다. 이 액세스가 종료한 후, CPUA는 칩 선택 신호가 H레벨이 되게 한다. 그 후, 게이트 신호(G)는 CPUA 액세스 타이밍 클럭(CKG)의 하강 타이밍에서 L레벨이 된다. 따라서, 액세스 권은 CPUA에 부여될 것이다.
c5) CPUA 및 CPUB가 동일한 시간에 액세스를 요구하는 경우
CPUA 및 CPUB가 칩 선택 신호를 동시에 L레벨로 하는 경우, 게이트 신호(G)는 먼저 CPUA 액세스 타이밍 클럭(CKG)의 다음 하강시 H레벨이 된다. 액세스 권은 CPUB에 부여된다. 그후, CPUB가 액세스를 종료하여 칩 선택 신호가 H레벨로 되면, 액세스 권은 CPUA 액세스 타이밍 클럭(CKG)의 다음 하강시 CPUA로 스위칭된다.
c6) CPUA 및 CPUB가 동일한 시간에 액세스를 요구하는 경우
이 경우, CPUA 및 CPUB는 범용 SRAM(28)으로의 하나의 액세스가 종료할 때마다 칩 선택 신호를 교대로 상승시킨다. 앞서 언급된 동작의 결합으로써, 액세스 권은 CPUA 와 CPUB 사이에 교대로 전달된다.
d) 실시예의 장점
상기 실시예가 대기 신호, 칩선택 신호및 CPUA 액세스 타이밍 클럭(CKG)을 이용하기 때문에, 다른 CPU가 액세스를 요구하는지 여부를 판단하는 소프트웨어는 필요없다. 따라서, 소프트웨어의 개발 단계가 필요없다. 데이터 전달에 필요한 시간 및 효율을 개선할 수 있다.
범용 SRAM(28)으로의 액세스 권이 범용 SRAM(28)으로의 한 액세스가 종료할 때마다 스위칭되기 때문에, 처리 속도를 줄이지 않고 불필요한 시간을 줄일 수 있다.
또한, 범용 SRAM(28)과 직접 관련없는 동작에 기인한 하나의 CPU에서의 대기 시간은, 다른 CPU가 다른 메모리 또는 I/O가 범용 SRAM(28) 사이에 데이터 전달을 실행할 때 제거된다.
또한, 특정 CPU(CPUA 또는 CPUB)는, 다른 CPU가 액세스를 요구하지 않는 경우 범용 SRAM(28)에 연속적으로 액세스할 수 있다. CPU중 하나의 부하는 다른 CPU상의 부하에 영향을 끼치지 않는다.
e) 보충
비록 상기 설명이 CPUA의 기본 클럭(CKA)에 동기된 CPUA 액세스 타이밍 클럭(CKG)을 이용한 액세스 권 스위칭 타이밍 형성에 대해 설명하였지만, CPUB의 기본 클럭(CKB)에 동기된 클럭 역시 마찬가지로 이용할 수 있다. 본원에 이용된 CPU의 갯수가 2개로 한정된 것은 아니다. 제2도에 도시된 CPUA 액세스 타이밍 클럭 발생 장치(96)가 CPUA의 기본 클럭(CKA)의 3개의 싸이클에서 상승하는 CPUA 액세스 타이밍 클럭(CKG)의 형성에 대해서 설명하였지만(즉, 3개의 기본 클럭(CKA)내에서 메모리 액세스를 실행하는 CPUA), 본 발명은 이러한 구성에 한정되지 않으며, 이용된 CPU의 메모리 액세스 주기에 따른 고안도 가능하다. 또한, 본 발명은 기능 모듈(12)의 CPU간에 데이터 전달뿐만 아니라, 메인 CPU(10)와 기능 모듈(12)간의 데이터 전달에도 이용할 수 있다.

Claims (7)

  1. 다수의 프로세서중 액세스 권(access right)을 갖는 소정의 프로세서에 의해 액세스 가능한 공유 메모리로서, 상기 액세스 권은 프로세서 특정 클럭 신호에 동기하여 상기 공유 메모리 액세스 할 수 있는 권리(right)이고, 상기 프로세서 특정 클럭 신호는 상기 소정의 프로세서에 의해 발생되고 다수의 프로세서중 나머지 프로세서와는 독립적인, 공유 메모리와, 다수의 프로세서중 하나에 액세스 권을 부여하는 다수의 프로세서간의 액세스를 요구를 조정하는 조정 수단을 포함하는 공유 메모리 시스템으로서, 상기 조정 수단은, 상기 프로세서 특정 클럭 신호를 수신하는 수단과, 상기 프로세서 특정 클럭 신호와 액세스 제어 신호를 발생하는 수단과, 소정의 주파수를 갖는 상기 프로세서 특정 클럭 신호의 상승 또는 하강에 응답하여 상기 다수의 프로세서중 제1프로세서의 액세스를 포기시키는 수단과, 액세스권이 포기된 시점에서 제2프로세서가 액세스 요구를 가질 때, 소정의 주파수를 갖는 상기 프로세서 특정 클럭 신호의 상기 상승 또는 하강에 응답하여 상기 다수의 프로세서중 제2프로세서에 액세스 권을 부여하는 수단과, 상기 다수의 프로세서중 어느 프로세서도 액세스를 요구하지 않고, 액세스권이 포기된 시점에서 상기 제1프로세서가 액세스를 요구할 때 상기 제1프로세서에 액세스 권을 유지시키는 수단을 포함하는 것을 특징으로 하는 공유 메모리 시스템.
  2. 제1항에 있어서, 상기 다수의 프로세서 각각은, 상기 공유 메모리로 및 상기 공유 메모리로부터의 데이터를 전달하기 위한 데이터 버스와, 상기 공유 메모리 상에 액세스될 어드레스를 특정하는 어드레스 버스를 포함하고, 상기 공유 메모리는, 소정의 프로세서로 및 소정의 프로세서로부터 데이터를 전달하기 위한 데이터 버스 및 상기 소정의 프로세서에 의해 특정된 어드레스를 수신하기 위한 어드레스 버스와, 상기 메모리의 데이터 버스를 상기 소정의 프로세서의 데이터 버스에 선택적으로 접속시키는 데이터 버스 스위칭 수단과, 상기 메모리의 어드레스를 상기 소정의 프로세서의 어드레스 버스에 선택적으로 접속시키는 어드레스 버스 스위칭 수단을 포함하는 것을 특징으로 하는 공유 메모리 시스템.
  3. 제2항에 있어서, 상기 다수의 프로세서중 각각의 프로세서는, 상기 고유 메모리로의 액세스가 판독용인지 또는 기록용인지를 나타내는 판독/기록 신호 및 상기 공유 메모리로의 액세스 요구를 나타내는 칩 선택 신호를 출력하기에 적합하고, 상기 조정 수단은, 다수의 프로세서중 하나가 소정의 프로세서임을 특정하는 게이트 신호를 출력하기에 적합한 것을 특징으로 하는 공유 메모리 시스템.
  4. 제3항에 있어서, 상기 데이터 버스 스위칭 수단은, 상기 게이트 신호 및 칩 선택 신호에 응답하여, 상기 다수의 프로세서 각각에, 다수의 프로세서중 하나가 소정의 프로세서임을 특정하는 다수의 상이한 프로세서 게이트 신호를 발생하는 수단과, 상기 판독/기록 신호에 응답하여, 액세스 방향이 판독용인지 기록용인지를 나타내는 방향 지시 신호를 발생하는 수단과, 상기 다수의 프로세서 각각에, 소정의 프로세서만이 상기 소정의 프로세서에 대응하는 상기 방향 지시 신호에 의해 지시되는 방향에 따르는 방식으로 상기 메모리에 액세스하도록 하는 다수의 양방향 버스 버퍼를 포함하는 것을 특징으로 하는 공유 메모리 시스템.
  5. 제3항에 있어서, 상기 조정 수단은, 상기 다수의 프로세서중 소정의 하나의 작동 타이밍에 기초한 액세스 타이밍 클럭을 발생하는 수단과, 상기 다수의 프로세서 각각에 제공되는 대기 신호를 발생하고, 상기 액세스 타이밍 신호에 동기하여 상기 다수의 프로세서중 하나에 대응하는 대기 신호를 공급하는 수단으로서, 상기 대기 신호 각각은 상기 다수의 프로세서중 하나의 프로세서가 액세스 권을 부여하였는가를 지지하는, 대기 신호를 발생하고 공급하는 수단과, 상기 액세스 타이밍 클럭에 동기하여 게이트 신호를 발생하는 수단을 포함하는 것을 특징으로 하는 공유 메모리 시스템.
  6. 다수의 프로세서중 소정의 프로세서에 액세스 권을 부여하는 다수의 프로세서간 공유 메모리 액세스 요구 조정용 조정 시스템으로서, 상기 액세스 권은 프로세서 특정 클럭 신호에 동기하여 액세스 공유 메모리에 대한 권리(right)이고, 상기 프로세서 특정 클럭 신호는 현재 액세스 권을 유지하는 프로세서에서 발생되고 다수의 프로세서중 다른 프로세서와는 독립적이며, 상기 조정 시스템이, 상기 프로세서 특정 클럭 신호를 수신하는 수단과, 상기 프로세서 특정 클럭 신호와 액세스 제어 신호를 발생하는 수단과, 소정의 주파수를 갖는 프로세서 특정 클럭 신호의 상승 또는 하강에 응답하여 상기 다수의 프로세서중 제1프로세서의 액세스 권을 포기하게 하는 수단과, 액세스 권을 포기하는 시점에서 제2프로세서가 액세스를 요구할 때, 소정의 주파수를 갖는 상기 프로세서 특정 클럭 신호의 상승 또는 하강에 응답하여 상기 다수의 프로세서중 제2프로세서에 액세스 권을 부여하는 수단과, 상기 다수의 프로세서중 어느 프로세서도 액세스를 요구하지 않고 액세스 권을 포기한 시점에서 상기 제1프로세서가 액세스를 요구할 때, 상기 제1프로세서에 액세스 권을 유지시키는 수단을 포함하는 것을 특징으로 하는 조정 시스템.
  7. 다수의 프로세서중 소정의 프로세서에 액세스 권을 부여하는 다수의 프로세서간 공유 메모리 액세스 요구를 조정하는 방법으로서, 상기 액세스 권은 프로세서 특정 클럭 신호에 동기하여 액세스 공유 메모리에 대한 권리(right)이고, 상기 프로세서 특정 클럭 신호는 현재 액세스 권을 유지하는 프로세서에서 발생되고 다수의 프로세서중 다른 프로세서와는 독립적이며, 상기 조정 방법이, 상기 프로세서 특정 클럭 신호를 수신하고, 상기 프로세서 특정 클럭 신호와 액세스 제어 신호를 발생하는 단계와, 소정의 주파수를 갖는 프로세서 특정 클럭 신호의 상승 또는 하강에 응답하여 상기 다수의 프로세서중 제1프로세서의 액세스 권을 포기하게 하는 단계와, 액세스 권을 포기하는 시점에서 제2프로세서가 액세스를 요구할 때, 소정의 주파수를 갖는 상기 프로세서 특정 클럭 신호의 상승 또는 하강에 응답하여 상기 다수의 프로세서중 제2프로세서에 액세스 권을 부여하는 단계와, 상기 다수의 프로세서중 어느 프로세서에도 액세스를 요구하지 않고, 액세스 권을 포기한 시점에서 상기 제1프로세서가 액세스를 요구할 때, 상기 제1프로세서에 액세스 권을 유지시키는 단계를 포함하는 것을 특징으로 하는 조정 방법.
KR1019940024855A 1993-10-01 1994-09-30 공유메모리 시스템 및 조정시스템과 조정방법 KR0133236B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP5246678A JPH07105146A (ja) 1993-10-01 1993-10-01 共有メモリ装置
JP93-246678 1993-10-01

Publications (2)

Publication Number Publication Date
KR950012175A KR950012175A (ko) 1995-05-16
KR0133236B1 true KR0133236B1 (ko) 1998-04-24

Family

ID=17151994

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940024855A KR0133236B1 (ko) 1993-10-01 1994-09-30 공유메모리 시스템 및 조정시스템과 조정방법

Country Status (5)

Country Link
US (1) US5671393A (ko)
EP (1) EP0649096A3 (ko)
JP (1) JPH07105146A (ko)
KR (1) KR0133236B1 (ko)
AU (1) AU672333B2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122699A (en) * 1996-06-03 2000-09-19 Canon Kabushiki Kaisha Data processing apparatus with bus intervention means for controlling interconnection of plural busses
US6385704B1 (en) * 1997-11-14 2002-05-07 Cirrus Logic, Inc. Accessing shared memory using token bit held by default by a single processor
US6401176B1 (en) * 1997-11-14 2002-06-04 Agere Systems Guardian Corp. Multiple agent use of a multi-ported shared memory
US6173425B1 (en) 1998-04-15 2001-01-09 Integrated Device Technology, Inc. Methods of testing integrated circuits to include data traversal path identification information and related status information in test data streams
US5999478A (en) * 1998-05-21 1999-12-07 Integrated Device Technology, Inc. Highly integrated tri-port memory buffers having fast fall-through capability and methods of operating same
US6216205B1 (en) 1998-05-21 2001-04-10 Integrated Device Technology, Inc. Methods of controlling memory buffers having tri-port cache arrays therein
US5982700A (en) * 1998-05-21 1999-11-09 Integrated Device Technology, Inc. Buffer memory arrays having nonlinear columns for providing parallel data access capability and methods of operating same
US5978307A (en) * 1998-05-21 1999-11-02 Integrated Device Technology, Inc. Integrated circuit memory devices having partitioned multi-port memory arrays therein for increasing data bandwidth and methods of operating same
BR9911820A (pt) 1998-07-03 2001-03-27 Siemens Ag Processo para o controle da distribuição de um acesso de memória
JP4081963B2 (ja) * 2000-06-30 2008-04-30 セイコーエプソン株式会社 記憶装置および記憶装置に対するアクセス方法
US6546461B1 (en) 2000-11-22 2003-04-08 Integrated Device Technology, Inc. Multi-port cache memory devices and FIFO memory devices having multi-port cache memory devices therein
GB2376390B (en) 2001-06-05 2003-08-06 3Com Corp Asic system architecture including data aggregation technique
WO2004008328A1 (en) * 2002-07-12 2004-01-22 Telefonaktiebolaget Lm Ericsson (Publ) Memory access from different clock domains
ATE459049T1 (de) * 2002-07-12 2010-03-15 Ericsson Telefon Ab L M Speicherzugriff aus verschiedenen taktbereichen
JP4633334B2 (ja) * 2003-01-27 2011-02-16 パナソニック株式会社 情報処理装置およびメモリアクセス調停方法
US7042792B2 (en) * 2004-01-14 2006-05-09 Integrated Device Technology, Inc. Multi-port memory cells for use in FIFO applications that support data transfers between cache and supplemental memory arrays
KR100609265B1 (ko) * 2004-11-10 2006-08-09 삼성전자주식회사 메모리 장치 및 메모리 장치의 듀얼 포트 동작 방법
US9262326B2 (en) * 2006-08-14 2016-02-16 Qualcomm Incorporated Method and apparatus to enable the cooperative signaling of a shared bus interrupt in a multi-rank memory subsystem
US8918594B2 (en) 2010-11-16 2014-12-23 Micron Technology, Inc. Multi-interface memory with access control
CN103810124A (zh) * 2012-11-09 2014-05-21 辉达公司 用于数据传输的系统及方法
CN107544927B (zh) * 2017-09-19 2020-06-23 中国核动力研究设计院 一种双口ram跟随访问方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5837585B2 (ja) * 1975-09-30 1983-08-17 株式会社東芝 ケイサンキソウチ
US4449183A (en) * 1979-07-09 1984-05-15 Digital Equipment Corporation Arbitration scheme for a multiported shared functional device for use in multiprocessing systems
US4374413A (en) * 1980-06-26 1983-02-15 Gte Automatic Electric Labs Inc. Arbitration controller providing for access of a common resource by a plurality of central processing units
US4374414A (en) * 1980-06-26 1983-02-15 Gte Automatic Electric Labs Inc. Arbitration controller providing for access of a common resource by a duplex plurality of central processing units
US4698753A (en) * 1982-11-09 1987-10-06 Texas Instruments Incorporated Multiprocessor interface device
US4682282A (en) * 1984-10-25 1987-07-21 Unisys Corp. Minimum latency tie-breaking arbitration logic circuitry
US4797815A (en) * 1985-11-22 1989-01-10 Paradyne Corporation Interleaved synchronous bus access protocol for a shared memory multi-processor system
US4882702A (en) * 1986-03-31 1989-11-21 Allen-Bradley Company, Inc. Programmable controller with I/O expansion module located in one of I/O module positions for communication with outside I/O modules
US4773037A (en) * 1987-02-20 1988-09-20 Gte Communication Systems Corporation Increased bandwidth for multi-processor access of a common resource
US5047921A (en) * 1989-01-31 1991-09-10 International Business Machines Corporation Asynchronous microprocessor random access memory arbitration controller
JPH04195202A (ja) * 1990-11-22 1992-07-15 Omron Corp プログラマブルコントローラシステムの共有メモリ構造

Also Published As

Publication number Publication date
EP0649096A3 (en) 1995-10-11
EP0649096A2 (en) 1995-04-19
JPH07105146A (ja) 1995-04-21
AU672333B2 (en) 1996-09-26
US5671393A (en) 1997-09-23
KR950012175A (ko) 1995-05-16
AU7414194A (en) 1995-04-13

Similar Documents

Publication Publication Date Title
KR0133236B1 (ko) 공유메모리 시스템 및 조정시스템과 조정방법
US6070205A (en) High-speed processor system having bus arbitration mechanism
US4594657A (en) Semaphore for memory shared by two asynchronous microcomputers
CN101923523B (zh) 存储器系统以及存取存储器的方法
US5416910A (en) Method and apparatus for performing bus arbitration in a data processing system
US5179705A (en) Asynchronous arbiter state machine for arbitrating between operating devices requesting access to a shared resource
US5119480A (en) Bus master interface circuit with transparent preemption of a data transfer operation
EP0451938A2 (en) Multiple cluster signal processor
EP0261497B1 (en) Semaphore circuit for shared memory cells
US5463740A (en) Data control device generating different types of bus requests and transmitting requests directly to one of a number of arbiters for obtaining access to a respective bus
US5465333A (en) Apparatus for programming the speed at which an expansion card generates ready signals to insure compatibility with the speed of an attached bus
CN116028413A (zh) 一种总线仲裁器、总线仲裁的方法、装置及介质
JP4404637B2 (ja) 局所同期回路間の情報交換
US5307466A (en) Distributed programmable priority arbitration
EP1132818A2 (en) Multiple processor interface, synchronization, and arbitration scheme using time multiplexed shared memory for real time systems
US6493805B2 (en) Method and system for synchronizing block-organized data transfer amongst a plurality of producer and consumer stations
US8799699B2 (en) Data processing system
US5627968A (en) Data transfer apparatus which allows data to be transferred between data devices without accessing a shared memory
CA1315892C (en) Arbitration system
JP3205992B2 (ja) ダイレクト・メモリ・アクセス転送制御装置
JP2000132451A (ja) メモリ制御回路
KR100249523B1 (ko) 중앙 처리 장치와 입/출력 제어기들간의 통신을 위한 조정회로
EP0334240B1 (en) Semiconductor integrated circuit device having a microprogramm
KR930000670B1 (ko) 메인 cpu와 서브 cpu의 공용램 인터페이스 회로
JPH0612313A (ja) メモリ装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee