[go: up one dir, main page]

KR970000837B1 - 싱글칩형 캐시메모리 - Google Patents

싱글칩형 캐시메모리 Download PDF

Info

Publication number
KR970000837B1
KR970000837B1 KR1019890007950A KR890007950A KR970000837B1 KR 970000837 B1 KR970000837 B1 KR 970000837B1 KR 1019890007950 A KR1019890007950 A KR 1019890007950A KR 890007950 A KR890007950 A KR 890007950A KR 970000837 B1 KR970000837 B1 KR 970000837B1
Authority
KR
South Korea
Prior art keywords
data
memory
address
signal
bus
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
KR1019890007950A
Other languages
English (en)
Other versions
KR900000778A (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
Priority claimed from JP63143078A external-priority patent/JPH023172A/ja
Priority claimed from JP63155698A external-priority patent/JPH01320555A/ja
Priority claimed from JP63162095A external-priority patent/JP2580263B2/ja
Priority claimed from JP63204453A external-priority patent/JPH0253155A/ja
Priority claimed from JP63212626A external-priority patent/JPH0261737A/ja
Application filed by 미다 가쓰시게, 가부시끼가이샤 히다찌세이사꾸쇼, 오노 미노루, 히다찌초 엘 에스 아이엔지니어링 가부시끼가이샤 filed Critical 미다 가쓰시게
Publication of KR900000778A publication Critical patent/KR900000778A/ko
Priority to KR94011054A priority Critical patent/KR970000839B1/ko
Application granted granted Critical
Publication of KR970000837B1 publication Critical patent/KR970000837B1/ko
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

내용 없음.

Description

싱글칩형 캐시메모리
제1도는 본 발명을 캐시메모리에 적용한 경우의 1실시예를 도시한 블럭도.
제2도는 라이트스토어버퍼의 1실시예를 상세하게 도시한 도면.
제3도는 어드레스레지스터의 1실시예를 상세하게 도시한 도면.
제4도는 라이트데이타레지스터의 1실시예를 상세하게 도시한 도면.
제5도는 유효비트레지스터의 1실시예를 상세하게 도시한 도면.
제6도는 액세스비트레지스터의 1실시예를 상세하게 도시한 도면.
제7도는 어드레스레지스터의 다른 실시예를 상세하게 도시한 도면.
제8도는 라이트스토어버퍼의 어드레스비교를 실행하는 비교회로의 주요부의 구성을 도시한 블럭도.
제9도 a, b는 제어회로에 의한 라이트스토어버퍼로의 리드, 라이트의 제어순서의 1예를 도시한 흐름도.
제10도는 MPU 리드사이클시의 라이트스토어버퍼의 타이밍도.
제11도는 MPU 라이트사이클시의 스토어버퍼의 타이밍도.
제12도는 MPU 사이클과 비동기로 실행되는 라이트스토어버퍼 디스차지동작의 타이밍도.
제13도 a는 라이트데이타레지스터와 워드선의 구서예를 도시한 블럭도.
제13도 b는 라이트데이타레지스터의 데이타입력포트부의 구성예를 도시한 블럭도.
제14도는 제1도에 도시한 캐시메모리내의 디렉토리메모리와 블럭버퍼를 상세하게 도시한 캐시메모리의 블럭도.
제15도는 제14도에 도시한 블럭버퍼를 더욱 상세하게 도시한 1실시예의 블럭도.
제16도는 블럭버퍼레지스터의 1실시예를 도시한 블럭도.
제17도는 BBV 레지스터의 1실시예를 도시한 블럭도.
제18도는 블럭버퍼레지스터의 세트메모리셀의 1실시예를 도시한 블럭도.
제19도는 BBV 레지스터의 BBV 메모리어레이의 1실시예를 도시한 블럭도.
제20도는 캐시메모리와 메인메모리사이의 블럭전송의 제어순서의 1예를 도시한 흐름도.
제21도 a∼d는 캐시메모리와 메인메모리사이의 블럭전송에 있어서 어드레스와 데이타의 흐름의 순서를 도시한 설명도.
제22도는 블럭버퍼레지스터의 다른 실시예를 도시한 블럭도.
제23도는 BBV 레지스터의 다른 실시예를 도시한 블럭도.
제24도는 캐시메모리의 동기모드에서의 타이밍을 도시한 타이밍도.
제25도는 비동기모드에서의 타이밍을 도시한 타이밍도.
제26도는 캐시메모리를 사용한 마이크로프로세서 유닛시스템의 구성예를 도시한 시스템구성도.
제27도는 종래의 버퍼기억방식을 채용한 마이크로컴퓨터시스템의 구성예를 도시한 시스템구성도.
본 발명은 기억관리기술, 더 나아가서는 버퍼기억장치의 제어방식에 적용해서 특히 유효한 기술에 관한 것으로써, 예를들면 버퍼기억방식을 채용한 정보처리시스템에 있어서의 캐시메모리의 구성 및 제어에 이용해서 유효한 기술에 관한 것이다.
종래, 버퍼기억방식을 채용한 마이크로컴퓨터에 있어서, 다이나믹 RAM등으로 이루어지는 주기억장치내의 정보중 사용빈도가 높은 것을 캐시메모리내에 넣어두고, 이것을 캐시컨트롤러라 불리우는 기억관리장치로 제어해서 스루풋을 향상시키도록 하고 있는 것이 예를들면 닛케이맥그로힐사발생「닛케이일렉트로닉스」1987년 11월 16일호, pp. 170, 171에 기재되어 있다.
또, 예를들면 닛케이맥그로힐사발생「닛케이 마이크로디바이스」1987년 4월호, pp. 86∼90에 기재되어 있는 (주)니뽄덴끼제 μPD43608과 같이 캐시컨트롤러를 내장한 캐시메모리도 제공되어 있다.
제27도에 버퍼기억방식의 마이크로컴퓨터시스템의 구성예를 도시한다.
리드의 경우 캐시메모리 C-MEM'는 마이크로프로세서유닛(이하, MPU라 한다)에서 출력되는 어드레스에 의해 액세스된다. 이 어드레스에 대응한 원하는 데이타가 캐시메모리 C-MEM'내에 유지되어 있으며, 즉 캐시가 히트하면 MPU는 캐시메모리의 속도로 데이터를 액세스할 수 있으므로 시스템의 스루풋이 향상된다. 또, MPU에서 공급된 리드어드레스와 캐시메모리 C-MEM' 내부의 디렉토리메모리의 어드레스태그를 비교해서 MPU로부터의 어드레스에 대응하는 어드레스가 유지되어 있지 않으면 원하는 데이타가 메모리내에 없다고 판정하고, 캐시가 미스히트를 나타내는 신호를 출력하면 그 리드어드레스를 메인메모리 M-MEM으로 보내서 원하는 데이타를 리드하여 MPU로 인도한다. 라이트의 경우도 마찬가지로 대응하는 어드레스의 데이타가 캐시메모리 C-MEM'내에 있을때에는 캐시메모리를 액세스하지만 없을때에는 메인메모리를 액세스한다.
그런데, 마이크로컴퓨터시스템에 있어서의 메인메모리는 저렴한 다이나믹 RAM으로 구성되어 있는 것이 많다. 그 경우 메인메모리의 라이트시간은 캐시메모리의 리드시간에 비해서 상당히 길기 때문에 라이트사이클시에 MPU가 메인메모리를 직접 액세스하고 있던 것에서는 MPU의 대기시간이 길게 되어 스루풋이 저하한다.
그래서, 상술한 캐시메모리에서는 MPU에서 출력된 라이트어드레스와 라이트데이타를 유지하는 버퍼(라이트용 버퍼)를 마련하고 있다.
또, 데이타라이트시에 캐시가 히트하면 즉시 캐시메모리내의 데이타의 리라이트를 실행하므로, 이때 메인메모리내의 데이타와의 불일치가 생긴다. 그래서, 캐시메모리내의 데이타의 리라이트가 있던 경우에는 메인메모리내의 데이타도 리라이트해줄 필요가 있다. 이 경우의 메인메모리의 리라이트방식으로써 캐시메모리내의 라이트가 있던 블럭을 치환할 때 메인메모리의 갱신을 실행하는 카피백방식과 캐시메모리로의 라이트가 있으면 즉시 메인메모리로 갱신하는 라이트 스루방식이 있다. 이중 카피백방식에 있어서는 메인메모리의 갱신은 캐시메모리에서 메인메모리에 대한 데이타의 블럭전송에 의해 실행된다. 또, 캐시미스가 발생해서 메인 메모리를 액세스하는 경우에도 원하는 데이타의 번지를 포함하는 연속된 다수 바이트분의 어드레스를 차례차례 공급해서 블럭전송에 의해 메인메모리에서 캐시메모리로 데이타를 전송한다.
그러나, 본 발명자들의 검토에 의하면 종래의 캐시메모리는 다음에 제시하는 여러 문제점이 있는 것을 알수 있었다.
(1) 상기 캐시메모리에 있어서는 라이트용 버퍼가 1세트분밖에 마련되어 있지 않고, 또 라이트와 언로딩을 동시에 실행할 수 없는 싱글포트 구성이었다. 그 때문에 예를들면 1명령사이클중에 메모리로의 라이트사이클이 2회 이상 계속되는 명령을 실행할때에는 라이트용 버퍼의 어드레스 및 데이타가 언로딩될때까지 다음의 어드레스 및 데이타를 버퍼에 입력할 수 없다. 그 결과, MPU의 라이트사이클의 실행시간이 메인메모리의 사이클시간에 의해 구속받아 MPU의 대기시간이 길어져서 마이크로컴퓨터시스템의 스루풋이 저하한다는 문제점이 있었다.
(2) 상기 데이타전송의 단위는 1회에 전송할 수 있는 데이타폭(32비트 마이크로컴퓨터에서 1워드, 즉 4바이트) 만인 경우도 있고, 그것보다 크게, 예를들면 32바이트와 같은 단위(이하, 블럭전송이라 한다)로 설정되는 것도 있다. 따라서, 블럭전송인 경우는 여러번의 데이타전송에 의해 종료한다. 그런데, 종래의 캐시메모리에 있어서는 1워드분의 버퍼를 거쳐서 메인메모리와의 사이의 블러전송을 실행하고 있는 것에 불과했었다. 그 때문에 블럭전송중 데이타메모리부가 메인메모리에 의해 점유되어 MPU가 데이타메모리부내의 데이타가 필요하게 되어도 리드할 수 없고, 전송이 종료할때까지 대기하게 되어 마이크로컴퓨터시스템의 스루풋이 저하한다는 문제점이 있었다.
(3) 캐시미스가 발생해서 메인메모리로부터의 여러번의 데이타전송으로 되어 블럭전송인 경우는 최초의 데이타전송의 데이타는 그대로 MPU로도 전송되지만 나머지의 데이타는 캐시메모리내부의 데이타어레이내에 저장된다. 또, 그 여러번의 데이타전송시에 각 데이타전송시마다 캐시메모리내에서 패리티검사를 실행하여 패리티에러가 있으면 에러검출신호를 MPU로 출력하도록 하는 일이 있다.
상기 패리티검사는 블럭전송된 데이타중 어느 데이타에서 에러가 발생했는가 구별하고 있지 않았다. 그 때문에 2번째 이후의 데이타에서 패리티에러가 발생한 경우에도 캐시메모리에서 에러검출신호가 출력되고, 그때마다 MPU가 리트라이처리나 예외처리를 실행하게 되므로 마이크로컴퓨터시스템의 스루풋이 저하된다는 문제점이 있었다. 특히, 전송블럭 길이가 길어질수록 패리티에러를 포함할 확률이 높게 되므로 스루풋저하를 일으키기 쉽다는 문제점이 있었다.
(4) 상기 캐시메모리와 메인메모리사이에서의 데이타전송에서는 캐시메모리와 메인메모리의 액세스속도가 다르므로 각각 주파수가 다른 클럭에 따라 동작되는 것이 많다. 그 때문에 캐시메모리와 메인메모리사이에서 데이타의 전송을 실행할때에는 동기를 취할 필요가 있다. 그 경우의 동기화방식으로써 캐시메모리내부에 동기회로를 마련하는 방식과 외부회로에서 동기회로를 구성하는 방식이 있다. 그러나, 전자의 동기화방식에서는 캐시메모리내에 동기회로를 마련하므로 사용자측의 시스템설계가 용이하게 되지만 메인메모리측에서 캐시메모리에 대해 데이타를 준비할 수 있는 것을 나타내는 신호(이하, 데이타컴플리트신호라 한다)가 비동기로 들어오기 때문에 내부에서 그 신호를 동기화할 때 타이밍이 나쁘면 1머신사이클분만큼 캐시메모리의 액세스가 지연되어 마이크로컴퓨터시스템 전체의 속도가 저하한다는 문제점이 있다. 한편, 후자의 동기화방식에서는 동기회로를 캐시메모리내에서 제외하고 외부회로로 구성하도록 하고 있으므로, 캐시메모리의 클럭과 메인메모리측의 클럭이 외부의 동기회로에서 동기화된다. 그 때문에 메인메모리에서 캐시메모리에 공급되는 데이타컴플리트신호가 항상 최적의 타이밍에서 입력되므로 시스템의 처리속도가 향상한다. 그러나, 사용자측에서 외부의 동기회로를 설계해야 하기 때문에 사용자의 부담이 커진다는 문제점이 있다. 이와 같이 전자 및 후자에 있어서의 동기화방식에는 장단점이 있었다.
본 발명의 목적은 MPU로부터의 라이트사이클이 연속하는 경우에도 MPU에서 계속해서 여러개의 어드레스와 라이트데이타를 저장해두고 비어 있는 시간에 메인메모리를 간접적으로 액세스할 수 있게 해서 마이크로컴퓨터시스템의 스루풋을 향상시킬 수 있는 캐시메모리를 제공하는 것이다.
본 발명의 다른 목적은 어드레스태그가 저장된 디렉토리메모리부에 있어서의 캐시히트의 판정보다도 빨리 원하는 데이타를 얻을 수 있게 해서 마이크로프로세서시스템의 스루풋의 향상을 도모할 수 있는 캐시메모리를 제공하는 것이다.
본 발명의 다른 목적은 캐시메모리와 메인메모리사이의 블럭전송중에 있어서도 MPU에 의해서 데이타메모리부를 액세스할 수 있게 해서 MPU의 대기시간을 감소시켜 마이크로컴퓨터시스템의 스루풋을 향상시키는 것이다.
본 발명의 다른 목적은 MPU가 캐시메모리의 데이타메모리부에서 데이타를 리드하는 것보다도 빨리 원하는 데이타를 얻을 수 있게 해서 마이크로컴퓨터시스템의 스루풋을 향상시키는 것이다.
본 발명의 다른 목적은 패리티검사기를 내장한 캐시메모리에 있어서, 메인메모리에서 캐시메모리로 블럭을 전송하는 것에 의해 데이타를 보낼 때 최초의 데이타이외의 데이타에서 패리티에러가 발생해도 MPU에 대해서 패리티에러검출신호가 출력되지 않게 해서 마이크로컴퓨터시스템의 스루풋의 저하를 방지하는 것이다.
본 발명의 다른 목적은 사용자가 필요에 따라서 어떤 동기화방식도 선택할 수 있게 해서 캐시메모리의 융통성 및 사용상의 용이성을 향상시키는 것이다.
본 발명의 상기 및 그 밖의 목적과 새로운 특징에 대해서는 본 명세서의 기술 및 첨부도면에 의해서 명확하게 될 것이다.
본원에서 개시되는 발명중 대표적인 것의 개요를 간단히 설명하면 다음과 같다.
(1) 라이트용의 어드레스 및 데이타를 유지하는 라이트용 버퍼를 다수 세트마련함과 동시에 그 라이트용 버퍼를 듀얼포트의 레지스터로 구성하는 것이다. 또, 외부에서 공급된 어드레스와 상기 라이트용 버퍼내의 어드레스를 비교하는 어드레스비교기를 마련하고, 양자가 일치했을 때 대응하는 레지스터내의 데이타를 버스상으로 출력시키도록 한다.
(2) 캐시메모리의 내부데이타버스와 데이타메모리부사이에 1블럭분의 데이타를 1번에 저장할 수 있는 데이타버퍼(이하, 블럭버퍼라 한다)를 마련하고, 이 블럭버퍼와 데이타메모리부사이의 데이타의 전송을 캐시메모리와 메인메모리사이의 데이타의 전송보다도 큰 단위로 실행하도록 구성해두는 것이다. 또, 상기 블럭버퍼를 듀얼포트의 레지스터로 구성함과 동시에 MPU가 요구하는 데이타가 상기 블럭버퍼내에 있는지 없는지를 판정하는 판정수단을 마련하도록 하는 것이다.
(3) 캐시메모리내에 MPU에서 공급된 어드레스와 메인메모리측의 버스상으로 출력된 어드레스를 비교하는 비교기, 상기 비교기의 출력신호에 의해서 패리티에러신호의 출력을 금지하기 위한 게이트수단을 마련함과 동시에 상기 게이트수단에 의해 에러신호의 출력이 금지되어 있는 상태에서 패리티에러가 검출된 경우에 에러를 갖는 데이타의 재리드를 실행시키는 리트라이제어회로를 마련하던가 어드레스태그어레이에 데이타의 유효/무효를 나타내는 비트열을 마련해서 패리티에러를 발생시킨 데이타에 대응하는 어드레스어레이내의 유효/무효비트를 무효상태로 설정시키도록 한다.
(4) 캐시메모리내에 데이타컴플리트신호의 동기회로와 데이타컴플리트신호를 그대로 내부의 컨트롤회로에 공급할지 동기회로를 통과시키고 나서 공급할지의 전환을 실행하는 전환수단을 마련하고, 외부단자 또는 레지스터의 설정값 또는 프로그램가능한 소자등에 의해서 전환수단의 상태, 즉 동기/비동기의 동작모드를 설정할 수 있게 하는 것이다.
상기한 (1)의 수단에 의하면 듀얼포트의 라이트용 버퍼가 여러 세트 준비되어 있으므로, 라이트사이클이 연속하는 경우에 1회의 라이트사이클이 종료했으면 즉시 다음의 라이트사이클에서 그 어드레스와 데이타를 저장할 수 있음과 동시에 라이트용 버퍼로의 라이트와 라이트용 버퍼에서 내부의 데이타메모리부로의 데이타전송(이하, 이것을 언로딩이라 한다)을 비동기로 실행할 수 있으므로, 내부버스 또는 메인메모리버스의 비어 있는 시간에 차례차례로 라이트데이타를 언로딩해서 데이타메모리 또는 메인메모리에 대한 라이트를 실행할 수 있게 되어 스루풋이 향상한다. 또, 태그비교기에 의한 어드레스태그의 비교와 병행해서 상기 라이트용 버퍼에 대응해서 마련된 비교기에 의한 어드레스의 비교를 실행하여 어드레스가 일치했을때 라이트용 버퍼내의 데이타를 MPU가 리드/라이트할 수 있으므로, 라이트용 버퍼가 히트한 경우에는 히트율을 향상시킬 수 있다.
상기한 (2)의 수단에 의하면 메인메모리로 전송해야할 또는 메인메모리에서 전송되어온 데이타를 1블럭분 모아서 블럭버퍼내에 넣어두는 것에 의해 캐시메모리와 메인메모리사이의 블럭전송중에 있어서도 MPU에 의해서 데이타메모리부를 액세스할 수 있게 해서 MPU의 대기시간을 감소시키므로써, 마이크로컴퓨터시스템의 스루풋을 향상시킨다. 또, 캐시의 히트/미스히트의 판정이 나오기전에 블럭버퍼내의 데이타가 있는지 없는지 알 수 있음과 동시에 블럭버퍼가 멀티포트구성이므로 캐시메모리와 메인메모리사이의 데이타블럭 전송중에 있어서도 MPU가 블럭버퍼에서 데이타를 리드할 수 있게 되어 마이크로컴퓨터시스템의 스루풋을 향상시킨다.
상기한 (3)의 수단에 의하면 MPU가 요구하는 데이타가 블럭전송에 의해 메인메모리에서 상기 캐시메모리로 전송될때 원하는 데이타이외의 데이타가 패리티에러를 갖고 있어도 MPU에 대해서는 패리티에러검출신호를 출력하지 않고 캐시메모리측의 판단에 의해 메인메모리에 리트라이를 걸거나 또는 어드레스태그어레이를 참조했을때 에러가 있었던 데이타를 알 수 있게 해서 마이크로컴퓨터시스템의 스루풋의 저하를 방지한다.
상기한 (4)의 수단에 의하면 캐시메모리를 동기 또는 비동기중 어느 모드에서도 사용할 수 있으므로 사용자가 자기가 설계하고자 하는 마이크로컴퓨터시스템에 따라서 속도우선의 시스템 또는 외부회로가 불필요하고 설계가 용이한 마이크로컴퓨터시스템중 어느 한쪽을 선택할 수 있게 된다.
이하, 본 발명의 구성에 대해서 실시예와 함께 설명한다.
또, 실시예를 설명하기 위한 모든 도면에 있어서, 특별히 기술하지 않는한 동일한 부호가 붙여진 부분은 동일 또는 대응부분을 나타내고 있다.
제26도에는 본 발명을 적용한 싱글칩형 캐시메모리를 갖는 마이크로프로세서유닛 시스템의 1실시예의 시스템구성도가 도시되어 있다.
제26도에 도시되어 있는 마이크로프로세서유닛 시스템은 메모리어드레스버스 MAB, 메모리데이타버스 MDB 및 메모리컨트롤버스 MCB로 구성된다.
메모리버스 MBUS에 결합된 캐시컨트롤로내장의 캐시메모리 C-MEM, 메인스토리지컨트롤러 MSC, 시스템버스어댑터 SRA, 리드온리메모리 ROM 및 입/출력레지스터 I/O를 포함하고 있다. 또, 동일도면의 마이크로프로세서유닛 시스템은 MPU 어드레스버스 MIAB, MPU 데이타버스 MIDB 및 MPU 제어버스 MICB로 구성되는 MPU 버스 MIBUS를 거쳐서 캐시메모리 C-MEM에 결합된 마이크로프로세서유닛 MPU, 시스템버스어댑터 SBA에 시스템버스 SBUS를 거쳐서 결합된 화상용의 프레임버퍼 FB, 다이렉트메모리 액세스컨트롤러 DMAC 및 파일컨트롤러 FC, 그리고 메인스토리컨트롤러 MSC에 메인메모리버스 MMBUS를 거여서 결합된 메인메모리 MM으로 구성된다.
또한, 동일 도면에서는 시스템버스 SBUS 및 메인메모리버스 MMBUS는 어드레스를 전달하기 위한 어드레스버스, 데이타를 전달하기 위한 데이타버스 및 제어신호를 전달하기 위한 제어버스를 포함하고 있다. 또, 본 실시예의 MPU시스템은 특히 제한되지 않지만 1장의 프린트기판, 또는 서로 전기적으로 결합해야할 여러개의 프린트기판에 형성된다. 본 실시예에 있어서, 특히 제한되지 않지만 다이나믹형 RAM IC로 메인메모리 MM이 구성되어 있다.
리드온리메모리 ROM에는 미리 MPU에 의해 실행되어야할 프로그램 또는 MPU에 의한 데이타처리시에 필요하게 되는 데이타가 라이트되고 유지되어 있다.
메인스토리지컨트롤러 MSC는 캐시메모리 C-MEM과 메인메모리 MM사이의 데이타전송을 제어하기 위한 회로로써, 메인메모리 MM과 캐시메모리 C-MEM에 대해서 타이밍신호등을 공급한다.
다이렉트메모리액세스컨트롤러 DMAC 및 파일컨트롤러 FC는 특히 제한되지 않지만 이 마이크로프로세서유닛 시스템과 플로피디스크나 하드디스크등의 보조기억장치와의 데이타전송을 실행하기 위한 장치이다.
MPU는 예를들면 프로그램에 따른 데이타처리시에 생기는 중간결과의 데이타를 유지하기 위해, 또는 데이타처리시에 필요하게 되는 변수를 입력하기 위한 메인메모리 MM을 액세스한다. 또, 플로피디스크등의 보조기억장치에서 메인메모리 MM으로 리드된 프로그램(예를들면 오퍼레이팅시스템, 소정의 프로그램언어)을 실행하기 위해 MPU는 메인메모리 MM을 액세스한다.
다음에 상세하게 설명하지만 여기에서 MPU의 리드사이클과 라이트사이클에 대해서 간단히 설명한다.
MPU가 메인메모리 MM을 액세스해서 데이타 또는 명령을 리드할때 MPU에서 출력되는 어드레스에 대응하는 어드레스가 미리 캐시메모리 C-MEM에 유지되어 있으면 캐시메모리 C-MEM에 유지되어 있는 이 어드레스에 대응하는 데이타(또는 명령)가 캐시메모리 C-MEM에서 MPU에 공급된다. 이 경우 동작속도가 비교적 느린 메인메모리 MM에서가 아니라 캐시메모리 C-MEM에서 데이타(또는 명령)가 MPU에 공급되므로 마이크로프로세서유닛시스템의 스루풋의 향상을 도모할 수 있다. 만약, 캐시메모리 C-MEM에 MPU에서 출력된 어드레스에 대응하는 어드레스가 유지되어 있지 않으면 MPU에서 출력된 어드레스에 대응하는 메인메모리 MM내의 어드레스에서 데이타(또는 명령)가 리드되어 MPU에 공급됨과 동시에 캐시메모리 C-MEM에 공급된다.
이것에 대해서 메인메모리 MM으로의 데이타(또는 명령)가 라이트되는 경우 MPU에서 출력된 어드레스에 대해서 그 어드레스에 대응하는 어드레스가 캐시메모리 C-MEM에 유지되어 있으면 이 어드레스에 대응하는 캐시메모리 C-MEM내의 데이타가 새로운 데이타(또는 명령)에 의해 갱신됨과 동시에 카피백방식인 경우 다음에 메인메모리 MM에 유지되어 있는 데이타도 갱신된다. 이것에 대해서 MPU에서의 어드레스에 대응하는 어드레스가 캐시메모리 C-MEM에 유지되어 있지 않은 경우 새로운 데이타(또는 명령)는 캐시메모리 C-MEM을 거쳐서 이 어드레스에 대응하는 메인메모리 MM내의 어드레스로 라이트된다.
상술한 MPU, ROM, I/O, MSC, MM, SBA, DMAC, FB 및 FC의 각각에 대해서는 주지의 기술에 의해 구성할 수 있으므로, 그 상세한 설명은 생략한다.
이하, 제26도에 도시되어 있는 캐시메모리 C-MEM에 대해서 도면을 사용해서 설명한다. 특히, 제한되지 않지만 상기 캐시메모리 C-MEM은 다음에 기술하는 1개의 싱글칩형 캐시메모리로 구성된다. 그러나, 물론 여러개의 싱글칩형 캐시메모리를 사용해서 상기 캐시메모리 C-MEM을 구성해도 좋다.
제1도에는 본 발명을 캐시컨트롤러 내장의 캐시메모리에 적용한 경우의 1실시예의 개략적인 구성이 도시되어 있다.
동일 도면의 캐시메모리 C-MEM은 싱글칩으로 구성되고, 1개의 반도체기판상에 디렉토리메모리 DIM과 데이타메모리 DAM, LRU(Least Recently Used)방식의 블럭치환제어회로 LUR, 태그비교회로 TAG-CMP, 마이크로프로세서버스 인터페이스유닛 MBIU1, 메모리버스 인터페이스유닛 MBIU2, 여러개의 레지스터로 구성되는 레지스터군 RG, 어드레스카운터 ADC, 다음에 상세하게 설명하는 라이트스토어버퍼 WSB와 블럭버퍼 BB, 동기회로 SYCT, 게이트회로 G, 스위치 SW, 단일방향성 버퍼 B1∼B5, 외부단자 MIT1∼MIT3, CLKT, MT1∼MT4, SYT1, 제어회로 CONT와 이들의 회로를 결합시키는 어드레스버스 ADB0∼ADB13, 데이타버스 DB0∼DB12, 패리티데이타버스 PB0∼PB5, 제어버스 CB0∼CB7, 라이트스토어버퍼버스 WSBB, 블럭버퍼버스 BBB, 바이트코드버스 BCB,BCB' 등으로 구성되어 있다.
특히 제한되지 않지만, 본 실시예에 있어서 어드레스버스 ADB0∼ADB13은 30비트구성의 버스, 데이타버스 DB0∼DB10, DB12는 32비트구성의 버스, DB11은 32×4=128비트구성의 버스, 패리티데이타버스 PB0∼PB4는 4비트구성의 버스, PB5는 4×4=16비트구성의 버스, 제어버스 CB0은 p비트구성의 버스, CB1은 r비트구성의 버스, CB2는 u비트구성의 버스, CB3은 w비트구성의 버스, CB4는 q비트구성의 버스, CB5는 z비트구성의 버스, 바이트제어버스 BCB, BCB'는 4비트구성의 버스, 라이트스토어버퍼버스 WSBB는 n비트구성의 버스, 블럭버퍼버스 BBB는 m비트구성의 버스이고, 외부단자 MIT1∼MIT3은 각각 MPU 어드레스버스 MIAB, MPU 데이타버스 MIDB, MPU 제어버스 MICB에 각각 결합되어 있다. 또, 도면상에는 1개만 도시하고 있지만 각각 30개, 32개, p개로 구성되어 있다. 외부단자 MT1, MT2와 MT3, MT4는 각각 메모리어드레스버스 MAB, 메모리데이타버스 MDB, 메모리제어버스 MCB에 결합되어 있고, 각각 30개, 4개와 32개, q개로 구성되어 있다.
동일 도면에 도시한 부호 CLK(CLK1)는 시스템클럭, R/W는 리드 또는 라이트상태를 나타내는 신호, BS는 MPU 버스 MIBUS의 버스사이클의 개시를 나타내는 버스개시신호,
Figure kpo00001
,
Figure kpo00002
는 각각 MPU 어드레스버스, MPU 데이타버스의 버스상에 유효한 어드레스, 데이타가 존재하는 것을 나타내는 어드레스스트로브신호와 데이타스트로브신호로써, 이 신호들은 MPU에서 캐시메모리에 부여된다. 또, 시스템클럭 CLK 또는 CLK1은 후술하는 바와 같이 사용자에 의해 지정되며, 시스템클럭 CLK는 시스템전체에 공급되고, 시스템클럭 CLK1은 적어도 메인스토리지컨트롤러 MSC에는 공급되지 않고, 메인스토리지컨트롤러 MSC는 다른 클럭으로 동작하고 있다. 즉, 클럭 CLK가 캐시메모리 C-MEM에 공급되고 있을때에는 캐시메모리 C-MEM과 메인스토리지컨트롤러 MSC는 동기동작이고, 클럭 CLK1의 경우는 비동기동작이다. 또,
Figure kpo00003
는 캐시메모리내에서 에러(예를들면 패리티에러 등)가 발생한 것을 나타내는 에러신호,
Figure kpo00004
는 MPU의 리드사이클에 있어서는 MPU에서 요구된 데이타를 준비할 수 있었던 것을 나타내고, 라이트사이클에서는 데이타가 라이트의 라이트를 준비할 수 있었던 것을 나타내는 데이타컴플리트신호로써, 캐시메모리에서 MPU에 부여된다. 또, 데이타컴플리트신호
Figure kpo00005
가 출력되면 MPU는 다음의 사이클에서 버스사이클을 정지시킨다.
Figure kpo00006
는 메모리어드레스버스 MAB상에 유효한 어드레스가 있는 것을 나타내는 메모리버스어드레스 스트로브신호,
Figure kpo00007
는 메모리버스 MBU의 버스사이클의 개시를 나타내는 메모리버스개시신호,
Figure kpo00008
는 메모리데이타버스 MDB상에 유효한 데이타가 있는 것을 나타내는 메모리버스데이타 스트로브신호,
Figure kpo00009
는 메인메모리의 리드시에 메모리데이타버스 MDB상에 데이타를 입력한 것을, 또 메인메모리 MM의 라이트시에는 유효한 데이타를 메모리데이타버스 MDB상으로 출력한 것을 나타내는 메모리버스데이타 컴플리트신호로써, 이들의 신호는 메인스토리지컨트롤러 MSC에서 캐시메모리 C-MEM에 부여된다. SYNC는 동기/비동기모드 지정제어신호로써 다음에 상세하게 설명한다.
디렉토리메모리 DIM은 데이타메모리 DAM과 동일한 칼럼위치에 들어가 있는 데이타의 메인메모리 MM상의 어드레스의 상위 수십비트(본 실시예에서는 19비트)구성인 여러개의 태그어드레스와 각각의 태그어드레스에 대응한 데이XK어레이 DAM내의 데이타가 유효 또는 무효를 나타내는 유효비트 V'가 저장되어 있다.
또, 디렉토리메모리 DIM은 MPU에서 외부단자 MIT1, 어드레스버스 ADB0, 마이크로프로세서버스 인터페이스유닛 MBIU1을 거쳐서 공급되는 수십비트(본 실시예에서는 30비트)의 어드레스신호 AD중 칼럼부의 어드레스신호 CLM(본 실시예에서는 9비트)이 어드레스버스 ADB1, ADB2 및 ADB3을 거쳐서 공급된다. 디렉토리메모리 DIM은 상기 칼럼부의 어드레스신호 CLM을 디코드하는 디코더(도시하지 않음)가 마련되어 있고, 상기 디코더의 출력에 따라 선택된 태그어드레스 및 그 태그어드레스에 대응한 유효비트 V'가 출력되어 태그비교회로 TAG-CMP에 공급된다. 또, 디렉토리메모리 DIM은 제어버스 CB2에 의해 소정의 신호의 수수가 제어회로 CONT와의 사이에서 실행된다.
태그비교회로 TAG-CMP는 MPU에서 외부단자 MIT1, 어드레스버스 ADB0, 마이크로프로세서버스 인터페이스유닛 MBIU1을 거쳐서 공급되는 어드레스신호 AD중 버퍼 B5, 어드레스버스 ADB2 및 ADB3을 거쳐서 공급되는 수십비트(본 실시예에서는 19비트)구성의 태그부의 어드레스신호 TAG와 디렉토리메모리 DIM에서 출력된 19비트 구성의 태그어드레스신호의 비교를 실행하여 태그어드레스신호에 대응하는 유효비트 V'가 유효로써 비교결과가 일치(캐시히트)하면 검출출력신호 CH를 고레벨로 하고, 불일치(캐시미스)하면 검출출력신호 CH를 저레벨로 하여 제어회로 CONT와 블럭버퍼 BB에 공급한다.
데이타메모리 DAM은 듀얼포트구성으로써 수십비트(본 실시예에서는 32비트, 즉 4워드)구성의 데이타를 여러개 저장하고 있고, 또 각 데이타에 대해서 수비트(본 실시예에서는 4비트)구성의 패리티비트를 나타내는 데이타(이하, 도면에서 패리티비트를 나타내는 데이타를 패리티데이타라 한다)와 함께 저장하고 있다. 데이타메모리 DIM도 디코더(도시하지 않음)와 셀렉터(도시하지 않음)를 마련하고 있고, 어드레스신호 AD중의 칼럼어드레스신호 CLM과 하위 수비트(본 실시예에서는 2비트)의 어드레스신호가 공급되고 있다. 데이타메모리 DAM은 MPU의 리드사이클시 태그비교회로 TAG-CMP에 의해 캐시히트가 검출되면 상기 칼럼 어드레스신호 CLM에 따라서 상기 디코더에 의해 선택된 32×4비트, 즉 16워드의 데이타(이하, 블럭데이타라 한다)가 한번에 리드되고, 데이타메모리 DAM내의 도시하지 않은 셀렉터에 의해 상기 어드레스신호의 하위 2비트의 어드레스신호에 따라 선택되고 4워드 구성의 리드데이타 RD가 리드되어 데이타버스 DB7,DB1, 마이크로프로세서버스 인터페이스유닛 MBIU1, 데이타버스 DB0 및 외부단자 MIT2를 거쳐서 MPU에 공급된다. 한편, 캐시미스인 경우는 다음에 상세하게 설명하지만 MPU가 요구하고 있는 원하는 데이타를 포함하는 수십비트(본 실시예에서는 32×4비트, 즉 16워드)의 블럭데이타의 블럭전송이 메인메모리 MM과 캐시메모리 C-MEM 사이에서 실행되고, 상기 원하는 데이타가 MPU에 공급된다. 다음에 기술하는 바와 같이 라이트스토어버퍼 WSB는 4바이트의 라이트데이타와 30비트의 어드레스신호를 출력한다. 데이타메모리 DAM은 라이트스토어버퍼 WSB에서 출력된 어드레스신호의 태그부가 태그비교회로 TAG-CMP에 의해 캐시히트를 검출하면 데이타메모리 DAM은 데이타메모리 DAM내의 상기 디코더 및 셀렉터에 의해 상기 출력된 어드레스신호의 칼럼부와 상기 출력된 어드레스신호의 하위 2비트에 따른 소정의 위치에 라이트스토어버퍼 WSB에서 출력된 4워드 구성의 라이트데이타를 저장한다. 또, 이 라이트동작후에 상기 칼럼부의 어드레스신호에 따라 라이트된 라이트데이타를 포함하는 16워드의 블럭데이타와 그 블럭데이타에 대응한 패리티데이타를 블럭버퍼 BB에 데이타버스 DB11 및 패리티데이타버스 PB5를 거쳐서 공급한다. 블럭버퍼 BB는 다음에 기술하는 바와 같이 저장한 블럭데이타를 메인메모리 MM으로 블럭전송한다. 한편, 캐시미스히트를 검출하면 라이트데이타는 메인메모리 MM에 공급되어 소정의 위치에 저장된다.
레지스터군 RG는 캐시메모리 C-MEM의 각종 모드를 설정하는 레지스터나 에러발생시의 정보를 유지하는 레지스터등으로 구성되고, 다음에 기술하는 블럭버퍼 BB의 블럭길이를 설정하는 레지스터도 포함된다. 또, 다음에 기술하지만 블럭버퍼 BB의 블럭길이는 16바이트로 설정되어 있다.
본 실시예의 캐시메모리 C-MEM은 라이트스토어버퍼 WSB를 포함하고 있고, 이 라이트스토어버퍼 WSB는 캐시메모리 C-MEM의 라이트사이클시에 MPU에서 외부단자 MIT1, 어드레스버스 ADB0, 마이크로프로세서버스 인터페이스유닛 MBIU1 및 어드레스버스 ADB5를 거쳐서 공급되는 어드레스신호 AD와 MPU에서 외부단자 MIT2, 데이타버스 DB0, 마이크로프로세서버스 인터페이스유닛 MBIU1 및 데이타버스 DB1, DB2를 거쳐서 공급되는 라이트데이타 WD, MPU에서 외부단자 MIT3, 제어버스 DB0, 마이크로프로세서버스 인터페이스유닛 MBIU1 및 바이트코드버스 BCB를 거쳐서 공급되는 예를들면 4비트 구성의 바이트제어데이타 BC의 모두를 일시적으로 유지하고, 그리고 각각 어드레스버스 ADB6을 거쳐서 ADB2로, 데이타버스 DB3을 거쳐서 데이타버스 DB1로, 또는 데이타버스 DB4, 버퍼 B4를 거쳐서 데이타버스 DB5로, 바이트코드버스 BCB'를 거쳐서 제어회로 CONT로 출력한다. 또, 라이트스토어버퍼 WSB의 출력데이타에 따라 수비트(본 실시예에서는 4비트)의 패리티데이타를 형성하여 패리티데이타버스 PB0, 버퍼 B2를 거쳐서 패리티데이타버스 PB1로 출력한다. 라이트스토어버퍼 WSB와 제어회로 CONT는 라이트스토어버퍼 WSB를 제어하기 위한 신호나 라이트스토어버퍼 WSB에서 제어회로 CONT에 공급하는 신호의 수수를 라이트스토어버퍼버스 WSBB를 거쳐서 실행하고 있다. 또한, 라이트스토어버퍼 WSB에 대해서는 제2도∼제13도의 설명에서 상세하게 기술한다.
본 실시예의 캐시메모리 C-MEM에는 블럭버퍼 BB가 마련되어 있다. 블럭버퍼 BB는 MPU의 리드사이클의 30비트의 어드레스신호가 캐시미스를 일으키면 메인메모리 MM으로부터의 블럭전송에 의한 블럭데이타 및 이 블럭데이타에 대응하는 패리티데이타를 유지하고, 이 블럭데이타와 패리티데이타를 데이타메모리 DAM으로 공급한다. 라이트스토어버퍼 WSB에서 출력된 30비트의 어드레스신호가 캐시히트를 일으키면 데이타메모리 DAM에서 공급된 블럭데이타 및 대응하는 패리티데이타를 유지하고, 메인메모리 MM으로 블럭전송을 실행하여 블럭데이타를 공급한다. 본 실시예에서는 메인메모리 MM에서 블럭버퍼 BB로, 또는 블럭버퍼 BB에서 메인메모리 MM으로의 블럭전송은 데이타버스 DB10, DB9, 메모리버스인터페이스유닛 MBIU2, 데이타버스 DB8, 외부단자 MT3등을 거쳐서 여러번(본 실시예에서는 4회)의 데이타전송에 의해 실행되고, 1회의 데이타전송량은 4바이트 단위이고, 이 블럭전송에 의해 블럭데이타에 대응한 패리티데이타도 4비트씩 4회로 분할해서 패리티데이타버스 PB3, PB1, 메모리버스인터페이스유닛 MBIU2, 패리티버스 PB2, 외부단자 MT2 등을 거쳐서 블럭버퍼 BB와 메인메모리 MM사이에서 데이타전송이 실행된다. 블럭버퍼 BB와 데이타메모리 DAM의 블럭데이타의 데이타전송은 메인메모리 MM과의 데이타전송폭의 4바이트보다 크고, 본 실시예에서는 16바이트로 데이타버스 DB11을 거쳐서 데이타전송을 실행하고 있다. 또, 패리티데이타에 대해서도 메인메모리 MM과의 데이타전송폭인 4비트보다 크고, 본 실시예에서는 4×4=16비트의 전송폭으로 패리티데이타버스 PB5를 거쳐서 실행된다.
어드레스카운터 ADC는 MPU의 리드사이클인 30비트 어드레스신호 또는 라이트스토어버퍼 WSB에서 출력된 30비트 어드레스신호가 캐시미스 또는 캐시히트가 생기면 캐시미스 또는 캐시히트가 발생한 30비트의 어드레스신호를 어드레스버스 ADB3, ADB13을 거쳐서 유지하고, 제어회로로부터의 카운트업신호 ADRE에 의해 유지한 어드레스신호를 초기값으로 해서 이 어드레스신호의 하위 수비트(본 실시예에서는 2비트)를 갱신하는 것에 의해 차례로 메인메모리 MM에, 1블럭분을 나타내는 30비트 구성의 어드레스신호 ADR1을 형성하여 어드레스버스 ADB9, ADB12, ADB11, 메모리버스인터페이스유닛 MBIU2, 어드레스버스 ADB7, 외부단자 MT1을 거쳐서 메인메모리 MM에 공급한다. 또, 상기 갱신된 하위 2비트의 어드레스신호를 포함하는 수비트(본 실시예에서는 5비트) 구성의 어드레스신호 ADR2를 형성하여 어드레스버스 ADB9, ADB12, ADB10을 거쳐서 블럭버퍼 BB에 상기 갱신동작에 따라 차례로 공급된다.
또한, 상기 어드레스신호 ADR2의 5비트중 하위 2비트가 상기 갱신되는 하위 2비트이다. 어드레스카운터 ADC는 또 블럭버퍼 BB와 데이타메모리 DAM의 데이타전송시에 유지한 초기값의 어드레스신호의 칼럼부를 어드레스버스 ADB9, ADB12를 거쳐서 데이타메모리 DAM에, 수비트(본 실시예에서는 3비트)의 어드레스신호 ADR3을 블럭버퍼 BB에 공급한다. 또, 어드레스카운터 ADC는 다음에 상세하게 설명하지만 MPU의 리드사이클에서 태그비교회로 TAG-CMP가 캐시히트를 검출하면 히트한 어드레스신호의 하위 2비트를 포함하는 수비트(본 실시예에서는 5비트)의 어드레스신호 ADR4를 형성하여 어드레스버스 ADB13, ADB8을 거쳐서 블럭버퍼에 공급한다. 또한, 어드레스신호 ADR4의 하위 2비트는 상기 히트한 어드레스신호의 하위 2비트이다.
게이트회로 G는 데이타버스 DB1과 DB9의 결합을 제어하는 회로로써, 제어회로 CONT로부터의 GC에 따라서 데이타버스 DB1과 DB9를 결합상태 또는 비결합상태로 한다.
동기회로 SYCT는 상기 메인스토리지컨트롤러 MSC에서 공급되는 상기 제어신호
Figure kpo00010
를 시스템클럭 CLK1에 동기시킨다. 또, 상기 동기회로 SYCT로써는 예를들면 D형 플립플롭을 사용하고, 외부단자 MT3에 제어신호
Figure kpo00011
를 입력시켜 클럭단자 CLKT에 시스템클럭 CLK1을 인가해서 클럭 CLK1에 동기하여
Figure kpo00012
신호를 래치시키는 것에 의해 동기화시킬 수 있다. 또한,
Figure kpo00013
는 동기회로에 의해 메모리데이타 컴플리트신호
Figure kpo00014
에 따라 형성된 데이타컴플리트신호이다.
스위치 SW는
Figure kpo00015
신호를 시스템클럭 CLK1에 동기시키고 나서 캐시메모리내의 제어회로 CONT로 공급할지 동기회로 SYCT를 통과하지 않고 그대로 제어회로 CONT에 공급할지의 전환을 실행한다.
외부단자 SYT1은 상기 스위치 SW의 전환상태를 외부에서 지정할 수 있도록 하기 위한 제어핀이다.
동기/비동기모드 지정제어신호 SYNC는 모드의 지정을 실행할 수 있다. 즉, 제어신호 SYNC는 스위치 SW의 전환상태를 제어한다. 예를들면, 제어신호 SYNC를 저레벨로 고정하면 동기회로 SYCT를 사용한 동기입력모드로 되고, 고레벨로 고정하면 비동기입력모드로 되도록 구성되어 있다.
또, 동기/비동기모드를 지정하는 제어신호 SYNC는 예를들면 시스템설계에 따라 메모리스토리지컨트롤러 MSC로 형성해서 출력시키고, 캐시메모리 C-MEM의 외부단자 MT3에 입력시키도록 접속해두면 된다.
동기/비동기모드에서의 메모리버스데이타 컴플리트신호
Figure kpo00016
등의 타이밍에 대해서는 제24도, 제25도를 참조해서 다음에 상세하게 설명한다.
제어회로 CONT는 상기 제어신호 R/W,
Figure kpo00017
,
Figure kpo00018
,
Figure kpo00019
,
Figure kpo00020
,
Figure kpo00021
,
Figure kpo00022
,
Figure kpo00023
및 시스템클럭 CLK(CLK1) 등에 따라 라이트스토어버퍼 WSB, 디렉토리메모리 DIM, 데이타메모리 DAM, 블럭버퍼 BB의 데이터의 리드동작 및 라이트동작의 제어나 데이타의 전송타이밍의 제어등을 하거나 또 치환제어회로 LRU, 태그비교회로 TAG-CMP, 게이트 G, 레지스터군 RG, 어드레스카운터 ADC의 제어등을 한다. 또, 제어회로 라이트스토어버퍼 WSB와 라이트스토어버퍼버스 WSBB 및 바이트코드버스 BCB'로, 블럭버퍼 BB와 블럭버퍼버스 BBB로, 디렉토리메모리 DIM과 제어버스 CB2로, 치환제어회로 LRU와 제어버스 CB3으로 결합되어 있고, 상기 버스에 의해 소정의 신호의 수수를 실행한다. 또, 제어회로 CONT는 캐시내에 에러가 발생하면 MPU에 에러신호
Figure kpo00024
를 공급하고, 또 소정의 상태에서 데이타컴플리트신호
Figure kpo00025
를 MPU에 공급한다. 또, 제어회로 CONT는 게이트회로 G를 제어하기 위해 제어신호 GC를, 어드레스카운터 ADC를 제어하기 위해 카운트신호 ADRD를 공급하고, 그리고 바이트코드버스 BCB'를 거쳐서 라이트스토어버퍼 WSB에서 공급되는 바이트제어데이타에 따라서 그 바이트제어데이타에 대응하는 라이트데이타의 데이타메모리 DAM으로의 라이트시에 그 라이트데이타의 각 바이트에 대해서 무효로 할지 하지 않을지의 제어를 실행한다.
제2도에는 제1도에 도시한 라이트스토어버퍼 WSB의 블럭도가 도시되어 있다. 제3도에는 어드레스레지스터 ADR1내의 레지스터 REG1,0의 1실시예가, 제4도에는 라이트데이타레지스터 WDR1내의 REG3,0의 1실시예가, 제5도에는 유효비트레지스터 VBR1내의 레지스터 REG4의 1실시예가, 제6도에는 액세스비트레지스터 ABR1의 1실시예가, 제7도에는 어드레스레지스터 ADR1내의 레지스터 REG1,0의 다른 실시예가 상세하게 도시되어 있다. 제8도에는 라이트스토어버퍼 WSB내에 포함되는 비교회로 CMP1의 1실시예가 상세하게 도시되어 있다. 제9도 a, b에는 제어회로 CONT에 의한 라이트스토어버퍼 WSB 및 그 주변회로의 제어순서의 1예가 도시되어 있다.
라이트스토어버퍼 WSB는 상기한 바와 같이 캐시메모리 C-MEM으 라이트사이클시에 있어서, MPU에서 공급된 어드레스신호 AD와 라이트데이타 WD 및 바이트제어데이타 BC를 유지한다. 본 실시예에서는 상기한 바와 같이 어드레스신호 AD는 30비트 구성으로써, a0∼a29로 표시하고, 바이트코드 BC는 4비트로써 bc0∼bc3으로 표시하고, 라이트데이타 WD는 32비트 구성으로써 wd0∼wd31로 표시한다.
제2도에 있어서, 라이트스토어버퍼 WSB는 스토어레지스터 S-REG1∼S-REG4, 라이트디코더 W-DEC, 리드디코더 R-DEC, 라이트카운터 WRC, 리드카운터 REC, 비교회로 CMP1 및 패리티발생기 PG1로 구성되어 있다. 제어회로 CONT는 라이트스토어버퍼 WSB를 제어하기 위한 제어회로 CONT1을 포함하고 있다.
스토어레지스터 S-REG1∼S-REG4는 각각 대응하는 어드레스레지스터 ADR1∼ADR4, 바이트코드레지스터 BCR1∼BCR4, 라이트데이타레지스터 WDR1∼WDR4, 유효비트레지스터 VBR1∼VBR4 및 액세스비트레지스터 ABR1∼ABR4로 구성되어 있다. 여기에서, 유효비트레지스터 VBR1∼VBR4와 액세스비트레지스터 ABR1∼ABR4는 대응하는 어드레스레지스터 ADR1∼ADR3, 바이트코드레지스터 BCR1∼BCR4 및 라이트데이타레지스터 WDR1∼WDR4의 데이타가 유효한지 아닌지, 즉 라이트가 실행되었는지 아닌지를 나타내는 유효비트 V와 상기 레지스터가 액세스중인지 아닌지를 나타내는 액세스비트 A를 갖고 있다. 유효비트 V는 유효시 1을 세트, 무효시는 0으로 리세트하고, 액세스비트 A는 액세스중일 때 1을 세트, 액세스중이 아닐때에는 0으로 리세트하고 있다.
어드레스레지스터 ADR1∼ADR4, 바이트코드레지스터 BCR1∼BCR4, 라이트데이타레지스터 WDR1∼WDR4, 유효비트레지스터 VBR1∼VBR4 및 액세스비트레지스터 ABR1∼ABR4는 대응하는 리드워드선, 라이트워드선은 다르지만 그 이외는 동일한 구성이고, 대표로써 어드레스레지스터 ADR1, 바이트코드레지스터 BCR1, 라이트데이타레지스터 WDR1, 유효비트레지스터 VBR1 및 액세스비트레지스터 ABR1의 구성을 나타내고 있다.
어드레스레지스터 ADR1은 듀얼포트구성의 레지스터 REG1,0∼1,29의 30개로 구성되고, 레지스터 REG1,0∼1,29는 각각 라이트워드선 W1-W1과 리드워드선 R1-W1A에 접속되어 있다. 또, 레지스터 REG1,0∼1,29는 각각 30비트로 구성되는 어드레스버스 ADB5, ADB6의 대응하는 1개에 접속되어 있다. 이것에 의해, 병렬로 어드레스신호 a0∼a29를 입력하여 병렬로 출력한다. 각 레지스터 REG1,0∼1,29는 또 비교회로 CMP1에 접속하고 있고, 유지하고 있는 어드레스신호를 비교회로 CMP1에 공급하고 있다. 또한 AD'는 어드레스레지스터 ADR1∼ADR4에 유지되어 있는 어드레스신호를 일괄해서 나타내고 있다.
바이트코드레지스터 BCR1은 듀얼포트구성의 레지스터 REG2,0∼2,4의 5개로 구성되고, 각 레지스터 REG2,0∼2,4는 라이트워드선 W1-W1과 리드워드선 R1-W1A에 접속되어 있다. 또, 레지스터 REG2,0∼2,4는 각각 4비트 구성의 바이트코드버스 BCB, BCB'의 대응하는 1개에 접속되어 있다. 이것에 의해, 병렬로 바이트제어데이타 bc0∼bc3을 입력하여 병렬로 출력한다. 각 레지스터 REG2,0∼2,4는 또 비교회로 CMP1에 접속되어 있고, 유지하고 있는 바이트제어데이타를 비교회로 CMP1에 공급하고 있다. 또한 BC'는 바이트코드레지스터 BCR1∼BCR4에 유지되어 있는 바이트코드신호를 일괄해서 나타내고 있다.
라이트데이타레지스터 WDR1은 트리플포트구성의 레지스터 REG3,0∼3,31의 32개로 구성되고, 각 레지스터 REG3,0∼3,31은 라이트워드선 W1-W1과 리드워드선 R1-W1A, R1-W1B에 접속되어 있다. 또, 레지스터 REG3,0∼3,31은 각각 32비트 구성의 데이타버스 DB2, DB3, DB4의 대응하는 1개에 접속되어 있다. 이것에 의해, 병렬로 라이트데이타 wd0∼wd31을 입력해서 병렬로 출력한다.
유효비트레지스터 VBR1은 레지스터 REG4로 구성되고, 레지스터 REG4는 라이트워드선 W1-W1과 리드워드선 R1-W1B에 접속하고 있다. 레지스터 REG4는 또 제어회로 CONT1에 접속하고 있고, 유지하고 있는 유효비트 V를 제어회로 CONT1에 공급하고 있다. 유효비트 V는 제어회로 CONT1에서 공급되는 세트신호 SET1에 의해 유효상태 1로 세트되고, 리세트신호 RESET1에 의해 무효상태 0으로 리세트된다. 또한 V''는 유효비트레지스터 VBR1∼VBR4의 4비트의 유효비트 V를 일괄해서 나타내고 있다.
액세스비트레지스터 ABR1은 레지스터 REG5로 구성되고, 레지스터 REG5에는 리드워드선 R1-W1B에 접속되어 있다. 레지스터 REG5는 또 제어회로 CONT1에 접속되어 있고, 유지하고 있는 액세스비트 A를 제어회로 CONT1에 공급하고 있다. 액세스비트 A는 제어회로 CONT1에서 공급되는 세트신호 SET2에 의해 액세스중에 1이 세트되고, 리세트신호 RESET2에 의해 0으로 리세트된다. 또한 A'는 액세스비트레지스터 ABR1∼ABR4의 4비트의 액세스비트 A를 일괄해서 나타내고 있다.
라이트디코더 W-DEC는 예를들면 여러개의 논리게이트로 구성되고, 비교회로 CMP1에서 공급되는 히트신호 H1∼H4, 또는 라이트카운터 WRC의 출력신호 WCOS1∼WCOS4를 디코드해서 라이트워드선 W1-W1∼W1-W4중 1개를 선택하고, 선택된 라이트워드선을 고레벨로 한다. 또, 라이트디코더 W-DEC는 제어회로 CONT1에서 공급되는 라이트스토어버퍼 WSB의 라이트기동신호 W-DECS에 의해 동작가능상태로 된다.
라이트카운터 WRC는 제어회로 CONT1에서 공급되는 카운트신호 CW에 의해 카운트업하고, 카운트업마다 라이트워드선 W1-W1∼W1-W4중 1개를 소정의 순번에 따라 선택하기 위한 신호 WCOS1∼WCOS4를 형성한다.
리드디코더 R-DEC는 리드디코더 R-DEC1과 R-DEC2로 구성되고, 리드디코더 R-DEC1은 리드카운터 REC의 출력신호 RCOS1∼RCOS4를 디코드해서 리드워드선 R1-W1A∼R1-W4A중 1개를 선택하고, 선택된 리드워드선을 고레벨로 한다. 리드디코더 R-DEC2는 비교회로 CMP1에서 공급되는 히트신호 H1∼H4를 디코드해서 리드워드선 R1-W1B∼R1-W4B중 1개를 선택해서 선택한 리드워드선을 고레벨로 한다. 또, 리드디코더 R-DEC는 제어회로 CONT1에서 공급되는 라이트스토어버퍼 WSB의 리드기동신호 R-DECS에 의해 동작가능상태로 된다.
리드카운터 REC는 제어회로 CONT1에서 공급되는 카운트신호 CR에 의해 카운트업하고, 카운트업마다 리드워드선 R1-W1A∼R1-W4A를 소정의 순번에 따라 선택하기 위한 신호 RCOS1∼RCOS4를 형성한다.
패리티발생기 PG1은 데이터버스 DB4로 출력된 라이트데이타에 따라 4비트의 패리티데이타, 즉 패리티비트를 형성하여 패리티데이타버스 PB0으로 출력한다.
비교회로 CMP1에는 어드레스레지스터 ADR1∼ADR4에서는 유지되어 있는 어드레스신호 AD'가, 바이트코드레지스터 BCR1∼BCR4에서는 유지되어 있는 바이트제어데이타 BC'가, 어드레스버스 ADB5를 거쳐서 MPU로부터의 어드레스신호 AD가, 바이트코드버스 BC를 거쳐서 바이트제어데이타 BC가 각각 공급되어 있다. 이 비교회로 CMP1은 라이트스토어버퍼 WSB내의 스토어레지스터 S-REG1∼S-REG4에 저장되어 있는 데이타중 어드레스신호AD' 및 바이트제어데이타 BC'와 MPU에서 공급된 어드레스신호 AD 및 바이트제어데이타 BC를 비교하는 회로이다. 또, 비교회로 CMP1은 비교의 결과 히트하면 히트신호 H1∼H4중 소정의 신호를 고레벨로 하고, 라이트스토어버퍼 히트신호
Figure kpo00026
를 저레벨로 해서 히트신호 H1∼H4를 라이트디코더 W-DEC와 리드디코더 R-DEC에, 라이트스토어버퍼 히트신호
Figure kpo00027
를 제어회로 CONT1에 공급한다. 이들의 히트신호 H1∼H4는 상기한 바와 같이 일치한 스토어레지스터를 선택하기 위한 신호로써 사용된다.
제어회로 CONT내에 마련되는 제어회로 CONT1은 라이트스토어버퍼 WSB를 제어하기 위한 회로이다. 제어회로 CONT1은 MPU로부터의 제어신호로써 외부단자 MIT3, 마이크로프로세서버스 인터페이스유닛 MBIU1 및 제어버스 CB1을 거쳐서 리드라이트신호 R/W, 버스개시신호
Figure kpo00028
, 어드레스스트로브신호
Figure kpo00029
, 데이터스트로브신호
Figure kpo00030
등이 공급되어 있고, 또 비교회로 CMP1에서 라이트스토어버퍼 히트신호
Figure kpo00031
가 유효비트레지스터 VBR1∼VBR4에서는 유효비트 V'가, 어드레스액세스레지스터 ABR1∼ARB4에서는 액세스비트 A'가 공급되어 있다. 제어회로 CONT1은 상기 각종의 신호나 캐시메모리 C-MEM의 동작상태에 따라서 상기 각 스토어레지스터 S-REG1∼S-REG4내의 유효비트 V나 액세스비트 A를 세트 또는 리세트하기 위한 신호 SET1, SET2, RESET1 및 RESET2를 공급하거나 유효비트 V 및 액세스비트 A의 상태에 따라서 상기 라이트 및 리드카운터 WRC, REC를 제어하기 위한 카운트신호 CR, CW를 형성하거나 그리고 라이트 및 리드디코더 W-DEC, R-DEC를 제어하기 위한 신호 W-DECS, R-DECS를 공급한다. 또한 제어회로 CONT1은 유효비트 V, 또는 액세스비트 A를 세트할때에는 세트신호 SET1 또는 SET2를 고레벨로 하고, 통상시에는 저레벨로 하고 있다. 또, 마찬가지로 리세트신호 RESET1, RESET2도 리세트할때에는 고레벨로 하고, 통상시에는 저레벨로 하고 있다.
제3도에 있어서, 레지스터 REG1,0은 인버터 IV2 및 클럭인버터 IV5로 이루어지는 플립플롭 FF1, 이 플립플롭 FF1의 입력제어용의 클럭드 인버터 IV1, 출력제어용의 클럭드 인버터 IV3 및 인버터 IV6, IV4로 구성되는 듀얼포트의 레지스터이다. 라이트워드선 W1-W1에서 선택되는 즉 고레벨로 되면 클럭드 인버터 IV1이 동작상태로 되고, 클럭드 인버터 IV5가 비동작상태로 되는 것에 의해 어드레스 ADB5에서 공급되는 어드레스신호 a0이 클럭드 인버터 IV1에 의해 반전되어 인버터 IV2의 입력포트에 공급된다.
그리고, 어드레스 신호 a0의 반전신호가 인버터 IV2의 입력포트에 공급되었을때 라이트워드선 W1-W1이 비선택상태로 되고, 클럭드 인버터 IV1이 비동작상태, 클럭드 인버터 IV5가 동작상태로 되어 어드레스신호 a0은 상기 플립플롭 FF1에 유지된다.
리드워드선 R1-W1A가 선택되는, 즉 고레벨로 되면 클럭드 인버터 IV3가 동작상태로 되어 인버터 IV3, IV4를 거쳐서 어드레스 버스 ADB6에 유지된 어드레스신호가 리드된다. 또한, 비교회로 CMP1에는 유지되어 있는 어드레스신호가 항상 공급되어 있다.
제3도에서는 레지스터 REG1.0에 대해서 설명했지만, 레지스터 RE1, 1∼REG1, 29에 대해서도 같은 구성이고, 또 레지스터 REG2, 0∼REB2, 4에 대해서도 대응하는 버스, 즉 어드레스버스 ADB5, ADB6을 바이트코드버스 BCB와 BCB'로 바꾸면 같은 구성이다.
제4도에 있어서, 레지스터 REG3, 0은 클럭드 인버터 IV9와 인버터 IV8로 구성되는 플립플롭 FF2, 클럭드 인버터 IV7, IV10, IV12 및 인버터 IV11, IV13, IV14로 구성된다.
레지스터 REG3.0은 기본구성이 제3도에 도시한 레지스터 REG1.0과 동일하고, 인버터 IV1, IV2, IV3, IV4, IV5 및 IV6이 인버터 IV7, IV8, IV12, IV11, IV9 및 IV14에 대응한다. 따라서, 라이트워드선 W1-W1이 선택되는 것에 의해 데이타버스 DB2를 거쳐서 라이트데이타 wd0이 입력되고, 리드워드선 R1-W1A가 선택되는 것에 의해 입력된 라이트데이타가 데이타버스 DB4에 리드된다. 레지스터 REG3, 0은 또 리드워드선 R1-W1B가 선택되어 고레벨로 되면 클럭드 인버터 IV10이 동작상태로 되고, 인버터 IV10, IV13을 거쳐서 데이타버스 DB3으로 플립플롭 FF2에 유지되어 있는 라이트데이타가 리드된다.
따라서, 레지스터 REG3, 0은 라이트포트 IV7과 2개의 리드포트 IV10, IV12를 갖는 트리플포트의 레지스터를 구성하고 있다.
제4도에서는 레지스터 REG3, 0에 대해서 설명했지만 레지스터 REG1, 1∼REG1, 29에 대해서도 같은 구성이다.
또, 레지스터 REG1, 0∼REG1, 29, REG2, 0∼REG2, 4 및 REG3, 0∼REG3, 2를 제7도에 도시한 구성으로 해도 좋다. 즉, 제7도에 있어서, 각 레지스터는 P채널 MOSFETQ1과 N채널 MOSFETQ2로 구성되는 인버터와 P채널 MOSFETQ3과 N채널 MOSFETQ4로 구성되는 인버터로 이루어지는 플립플롭 및 트랜스퍼용의 N채널 MOSFETQ5, Q6(레지스터 REG3, 0∼REG3, 31의 경우는 트랜스퍼용으로써 MOSFETQ7도 사용한다)으로 구성되고, 이것에 의해 듀얼(트리플)포트의 레지스터를 구성한다. 그리고, 이 레지스터는 트랜스퍼 MOSFETQ5를 거쳐서 어드레스버스 ADB5, 바이트코드버스 BCB 또는 데이타버스 DB2를, 트랜스퍼MOSFETQ6을 거쳐서 어드레스버스 ADB6, 바이트코드버스 BCB' 또는 데이타버스 DB4를, 트랜스퍼MOSFETQ7를 거쳐서 데이타버스 DB3을 접속하고, 또한 라이트측 트랜스퍼 MOSFETQ5와 리드측 트랜스퍼 MOSFETQ6, Q7을 라이트워드선과 W1-W1, 리드워드선 R-W1A, R-W1B에 의해 선택적으로 ON시킬수 있게 되어 있다.
제2도∼제4도 및 제7도에 있어서, 어드레스레지스터 ADR1∼ADR4, 바이트코드레지스터 BCR1∼BCR4 및 라이트데이타레지스터 WDR1∼WDR4에 포함되는 레지스터를 제2도(어드레스레지스터 및 바이트코드레지스터), 제3도(라이트데이타레지스터) 및 제4도(어드레스레지스터, 바이트코드레지스터 및 라이트데이타레지스터)에 도시한 바와 같은 구성으로 하는 것에 의해 각 레지스터의 리드와 라이트를 비동기로 실행할 수 있다.
제5도에 있어서, 레지스터 REG4는 NAND게이트 NAND3 및 NAND4로 구성되는 리세트, 세트형의 플립플롭 R-SFF1과 플립플롭 R-SFF1의 세트 및 리세트신호 set1, reset1을 공급하는 NAND게이트 NAND1과 NAND2 및 인버터 IV14'로 구성된다. 플립플롭 R-SFF1은 세트신호 set1이 저레벨로 세트되는, 즉 유효비트 V를 1로 세트한다. 또, 플립플롭 R-SFF1은 리세트신호 reset1이 저레벨로 리세트되는, 즉 유효비트 V를 0으로 리세트한다. 레지스터 REG4는 유효비트 V가 1 또는 0인 것을 나타내는 신호로써, 제어회로 CONT1에 플립플롭 R-SFF1의 출력신호를 인버터 IV14'를 거쳐서 공급하고 있고, 유효비트 V가 1(R-SFF1이 세트상태)에서 고레벨의 출력신호를, 유효비트 V가 0(R-SFF1이 리세트상태)에서 저레벨의 출력신호를 공급하고 있다. NAND게이트 NAND1은 라이트워드선 W1-W1이 선택상태, 즉 고레벨에서 제어회로 CONT1로 부터의 세트신호 SET1이 고레벨일때 저레벨의 세트신호 set1은 플립플롭 R-SFF1에 공급한다. 세트신호 SET1은 유효비트레지스터 VBR1∼VBR4에 공통으로 공급되고 있다. 그러므로, NAND 게이트 NAND 1에 의해 라이트워드선 W1-W1의 레벨과 세트신호 SET1의 논리를 취하고 있으므로 유효데이타가 저장하고 있는 스토어레지스터의 유효비트 V에 1세트된다. NAND 게이트 NAND2는 리드워드선 R1-W1A가 선택상태, 즉, 고레벨에서 리세트신호 RESET1이 고레벨일때 저레벨의 리세트신호 reset1을 플립플롭 R-SFF1에 공급한다. 리세트신호 RESET1은 유효 비트레지스터 VBR1∼VBR4에 공통으로 공급되고 잇다. 그러므로, NAND 게이트 NAND2에 의해 리드워드선 R1-W1A의 레벨과 리세트신호 RESET1의 논리를 취하고 있으므로 소정의 유효비트 V를 0으로 리세트한다.
제6도에 있어서, 레지스터 REG5는 NAND게이트 NAND5, NAND6으로 구성되는 세트, 리세트형의 플립플롭 R-SFF2와 플립플롭 R-SFF2의 세트 및 리세트신호 set2, reset2을 공급하는 NAND게이트 NAND7, NAND8 및 인버터 IV15로 구성된다. 플립플롭 R-SFF2는 세트신호 set2가 저레벨에서 세트하는, 즉 액세스비트 A에 1을 세트한다. 또, 플립플롭 R-SFF2는 리세트신호 reset2가 저레벨에서 리세트하는 즉 액세스비트 A를 0으로 리세트한다. 레지스터 REG5는 액세스비트 A가 1 또는 0인 것을 나타내는 신호로써 제어회로 CONT1에 플립플롭 R-SFF2의 출력신호를 인버터 IV15를 거쳐서 공급하고 있고, 액세스비트 A가 1(R-SFF2가 세트상태)에서 고레벨의 출력신호를, 액세스비트 A가 0(R-SFF2가 리세트상태)에서 저레벨의 출력신호를 공급한다. NAND게이트 NAND7은 리드워드선 R1-W1A가 선택상태, 즉 고레벨에서 제어회로 CONT1로 부터의 세트신호 SET2가 고레벨일때 세트신호 set2를 플립플롭 R-SFF2에 공급한다. NAND 게이트 NAND8은 리드워드선 R1-W1A가 선택상태, 즉 고레벨에서 제어회로 CONT2로 부터의 리세트신호 RESET2가 고레벨일때 리세트신호 reset2를 플립플롭 R-SFF2에 공급한다. 세트신호 SET2 및 리세트신호 RESET2는 액세스비트레지스터 ABR1∼ABR4에 공통으로 공급되고 있다. 그러므로, NAND 게이트 NAND7 NAND 게이트 NAND8에 의해 리드워드선 R1-W1A, R1-W1B의 레벨과 세트신호 SET2, 리세트신호 RESET2의 레벨의 논리를 취하고 있으므로 액세스중의 스토어레지스터의 액세스비트 A에 1이 세트된다.
제8도에 있어서, 비교회로 CMP1은 각 어드레스레지스터 ADR1∼ADR4 및 각 바이트코드레지스터 BCR1∼BCR4에 대응한 4개의 비교회로 CMP2∼CMP5와 그들의 출력의 논리합을 취하는 NOR 게이트 NORG1로 구성되어 있고, 어드레스레지스터 ADR1∼ADR4와 바이트코드레지스터 BCR1∼BCR4에 저장되어 있는 어드레스신호 및 바이트제어데이타와 MPU로 부터의 어드레스신호 AD' 및 바이트제어데이타 BC'를 동시에 비교하고, 어느 것과 일치하면 히트신호 H1∼H4를 출력한다. 이들 히트신호 H1∼H4는 상술한 바와 같이 라이트 및 리드디코더 W-DEC, R-DEC에 공급되어 일치한 레지스터를 선택시키는 신호를 형성한다.
또, NOR 게이트 NOR1의 출력신호는 라이트스토어버퍼 히트신호
Figure kpo00032
로써 제어회로 CONT1에 공급된다.
다음에 라이트스토어버퍼 WSB의 동작을 제9도 a, b에 따라 설명한다.
제9도 a에 있어서, 제어회로 CONT1은 MPU로 부터의 버스기동 신호
Figure kpo00033
에 의해 버스사이클의 개시를 알면 MPU 버스인터페이스측의 처리로써 먼저 MPU로 부터의 어드레스신호와 바이트제어데이타를 사용해서 라이트스토어버퍼 WSB의 검색을 비교회로 CMP1을 사용해서 개시한다(스텝 11). 이때, 태그비교기 TAG-CMP에 의한 어드레스태그의 비교도 동시에 개시되고 있다. 또, 이것과 병행해서 메모리버스 인터페이스측의 처리로써 시스템클럭 CLK(CLK1)이 상승할때마다 라이트스토어버퍼 WSB의 출력의 기동을 감시하고, 스토어레지스터 S-REG1∼S-REG4의 유효비트 V와 액세스비트 A의 상태를 보고 라이트스토어버퍼 WSB내의 데이타의 언로딩플로의 기동을 건다. 즉, 라이트스토어버퍼 WSB에 있어서의 라이트와 리드가 비동기로 처리된다. 다음에 MPU측의 리드/라이트동작(MPU 인터페이스측 처리)과 언로딩동작(메모리버스 인터페이스측 처리)로 분리해서 설명한다.
제9도 a에 있어서, MPU 버스인터페이스측 처리에서는 MPU로 부터의 어드레스에 의한 스토어버퍼의 검색후 MPU로 부터의 리드/라이트신호 R/W를 보고 MPU의 리드사이클인지 라이트사이클인지를 판정하고(스텝 12), 리드사이클이면 스텝 13에서 라이트스토어버퍼가 히트했는지 아닌지, 즉 어드레스신호 및 바이트제어데이타가 일치한 레지스터인지 아닌지를 비교회로 CMP1로 부터의 라이트스토어 버퍼히트신호
Figure kpo00034
에 의해 판정한다. 이 스텝13에서 라이트스토어버퍼 WSB가 히트하면 리드동기신호 R-DRECS를 리드디코더 R-DEC에 각각 공급한다. 이것에 의해 리드디코더 R-DEC2는 히트신호 H1∼H4에 따라서 리드워드선 R1-W1B∼R-W4B중 1개를 선택한다. 그리고, 선택된 리드워드선에 결합된 라이트데이타레지스터에서는 데이터가 데이타버스 DB3을 거쳐서 DB1로 리드된다(스텝14). 여기에서 도시하지 않은 제어신호에 의해 태그비교기 TAG-CMP에 의한 비교를 정지시키고나서 라이트스토어 버퍼히트신호
Figure kpo00035
에 따라 데이터컴플리트신호
Figure kpo00036
를 형성하여 MPU로 반송해서 버스사이클을 종료한다. 또한, 데이타버스 DB1에 리드된 데이타는 버스사이클 종료전에 마이크로프로세서버스 인터페이스유닛 MBIU1 및 데이타버스 DB0 및 외부단자 MIT2를 거쳐서 MPU에 공급된다. 그러나, 스텝13에서 라이트스토어버퍼 WSB가 미스히트한 경우에는 디렉토리메모리 DIM측에서의 어드레스태그의 판정을 대기하고, 어드레스태그도 일치하지 않은 경우에는 MPU가 메인메모리 MM으로 데이타를 취해간다.
한편, 개시된 버스사이클이 MPU의 라이트사이클이었던 경우에는 스텝12에서 스텝15로 진행해서 라이트스토어버퍼가 히트했는지 아닌지를 판정한다. 히트하고 있으면 히트한 스토어레지스터가 액세스중인지를 액세스비트 A에 의해 판정하고, 액세스중이면 액세스종료까지 스토어레지스터로의 라이트동작을 대기하고(스텝18), 액세스종료후에 라이트동기신호 W-DECS를 라이트디코더 W-DEC에 공급한다. 이것에 의해 라이트디코더 W-DEC는 히트신호 H1∼H4에 따라 라이트워드선 W1-W1∼W-W4중 1개를 선택하고, 선택된 라이트워드선에 결합된 어드레스레지스터, 바이트코드레지스터 및 라이트데이타레지스터에 MPU에서 공급된 어드레스신호, 바이트제어데이타 및 라이트데이타가 각각 저장된다(스텝19). 다음에 라이트워드선이 선택되고 있는 동안에 세트신호 SET1을 유효비트레지스터 VBR1∼VBR4에 공급하고, 선택된 유효비트레지스터의 유효비트 V에 1을 세트하여 버스사이클을 종료한다(스텝20).
한편, 라이트사이클에서 라이트스토어버퍼 WSB가 히트하지 않은 경우에는 유효비트를 조사해서 비어 있는 스토어레지스터인지 아닌지를 판정하고, 비어 있는 스토어레지스터가 없으면 빈 것이 생길때까지 대기한다(스텝16). 비어 있는 스토어레지스터가 생기면 라이트동기신호 W-DECS와 카운트신호 CW를 라이트디코더 W-DEC와 라이트카운터 WRC에 공급한다. 이것에 의해 라이트카운터 WRC는 카운트업하고, 라이트디코더 W-DEC는 카운트업된 라이트카운터 WRC의 출력신호 WCOS1∼WCOS4에 따라 라이트워드선 W1-W1∼W-W4중 1개를 선택한다. 선택된 라이트워드선에 결합된 어드레스레지스터, 바이트코드레지스터 및 라이트데이타레지스터에 MPU에서 공급된 어드레스신호, 바이트제어데이타 및라이트데이타가 각각 저장된다(스텝17). 다음에 라이트워드선이 선택되 RH있는 동안에 세트신호 SET1을 유효비트레지스터 VBR1∼VBR4에 공급하고, 선택된 유효비트레지스터의 유효비트 V에 1을 세트하여 버스사이클을 종료한다(스텝20).
제9도 b에 있어서, 메모리버스인터페이스측 처리에서는 시스템클럭 CLK의 상승에 의해 라이트스토어버퍼 WSB의 디스차지가 기동되면 먼저 라이트스토어버퍼 WSB의 리드포트와 디렉토리메모리 DIM이 사용중인지 아닌지를 판정한다(스텝21). 여기에서, 디렉토리메모리 DIM이 사용중이면 라이트스토어버퍼 WSB의 언로딩기동상태인채로 대기한다. 이것은 데이타메모리 DAM 및 블럭버퍼 BB로부터의 리드데이타와 라이트스토어버퍼 WSB로 부터의 언로딩데이타가 데이타버스 DB1상에서 충돌하는 것을 방지하기 위해서이다. 사용중이 아닐때에는 스텝22로 진행하고, 여기에서 라이트스토어버퍼 WSB내의 유효비트 V를 조사해서 라이트스토어버퍼 WSB내에 유효데이타가 들어가 있는 스토어레지스터가 있는지 없는지 판정한다(스텝22). 유효데이타가 있으면 리드기동신호 R-DECS를 리드디코더 R-DEC에 공급한다. 이것에 의해, 리드디코더 R-DEC1은 리드카운터 REC의 출력신호 RCOS1∼RCOS4에 따라서 리드워드선 R1-W1A∼R1-W4A중 1개를 선택한다.
다음에 선택된 리드워드선에 결합하고 있는 액세스비트레지스터의 액세스비트 A에 1을 세트한다(스텝23). 그리고, 선택된 리드워드선에 결합하고 있는 어드레스레지스터에 유지되어 있는 어드레스신호를 어드레스버스 ADB6, ADB3을 거쳐서 디렉토리메모리 DIM 및 태그 비교회로 TAG-CMP에 공급하고, 디렉토리메모리 DIM을 검색개시한다(스텝24). 그리고, 디렉토리메모리 DIM이 히트하고 있으면 스텝25에서 스텝26으로 이행하고, 선택된 리드워드선에 결합된 라이트데이타레지스터에 저장되어 있는 라이트데이타를 데이타버스 DB4, 버퍼 B4, 데이터버스 DB7을 거쳐서 데이타메모리 DAM으로 디스차지한다(스텝26).
또, 패리티발생기 PG1에 의해 형성된 패리티데이타도 패리티데이타버스 PB0, 버퍼 B2, 패리티데이타버스 PB1 및 PB4를 거쳐서 데이터메모리 DAM으로 언로딩된다. 한편, 스텝25에서 디렉토리메모리 DIM에서의 검색결과 미스히트로 판정되면 스텝27로 진행하여 라이트스토어버퍼 WSB내의 라이트데이타를 데이타버스 DB9, 메모리버스 인터페이스유닛 MBIU2, 데이터버스 DB8, 외부단자 MT3을 거쳐서 메인메모리 MM으로 향해서 출력한다.
또, 패리티발생기 PG1에 의해 형성된 패리티데이타도 메모리버스 인터페이스유닛 MBIU2, 패리티데이타버스 PB2 및 외부단자 MT2를 거쳐서 메인메모리 MM으로 향해서 언로딩한다.
이렇게 한 후 언로딩을 실행한 스토어레지스터으 액세스비트 A와 유효 비트 V를 0으로 리세트하기 위해 리세트신호 RESET2 및 RESET1 을 공급하여 리세트하고, 리드카운터 REC에 카운트업신호 CR을 공급해서 리드카운터 REC를 갱신시켜 다음의 라이트스토어버퍼 WSB의 출력기동을 대기하게 한다(스텝28,29).
또한, 스텝22에 있어서의 판정에 의해 유효비트 V가 0일때에는 그대로 아무것도 하지 않고 스텝29로 점프하여 리드카운터 REC를 갱신해서 다음의 라이트스토어버퍼 WSB의 언로딩기동을 대기하게 된다.
제10도에는 MPU에 의한 리드사이클에서 MPU가 액세스한 어드레스와 스토어버퍼 WSB내에 저장되어 있는 어드레스를 비교해서 일치한 것이 있던 경우의 각종 신호의 타이밍이 도시되어 있다.
제10도에 있어서, MPU로 부터의 버스기동신호
Figure kpo00037
가 저레벨로 하강하여 버스가 기동한 것을 캐시메모리 C-MEM이 알면 캐시메모리 C-MEM은 리드라이트신호 R/W가 고레벨이므로 MPU의 리드사이클로 판정한다. 그후, 어드레스스트로브신호
Figure kpo00038
가 하강하는 것에 의해 MPU 버스상의 어드레스신호 AD 및 바이트제어데이타 BC를 입력한다. 입력한 어드레스신호 AD 및 바이트제어제이타 BC는 라이트스토어버퍼내에서의 비교를 실행하고, 라이트스토어버퍼 WSB는 라이트스토어 버퍼히트신호
Figure kpo00039
를 제어회로 CONT1에 공급하고, 제어회로 CONT1은 라이트스토어 버퍼히트신호
Figure kpo00040
에 따라서 데이타컴플리트신호
Figure kpo00041
를 MPU로 반송한다. 라이트스토어버퍼 WSB는 히트한 스토어레지스터의 데이타를 데이타버스 DB1로 출력한다. MPU는 t'1의 타이밍에서 데이타컴플리트신호
Figure kpo00042
가 저레벨인 것을 알고, 데이타를 입력하여 순차적으로 어드레스스트로브신호
Figure kpo00043
및 데이타스트로브신호
Figure kpo00044
를 고레벨로 한다.
제11도에는 MPU에 의한 라이트사이클에 있어서의 각종 신호의 타이밍이 도시되어 있다.
이 사이클에서는 반드시 MPU에서 공급된 어드레스, 바이트제어데이타와 라이트데이타를 라이트스토어버퍼 WSB에 저장하도록 되어 있고, 먼저 라이트스토어버퍼 WSB를 검색해서 비어 있는 레지스터가 발견된 시점에서 어드레스, 바이트제어데이타 및 라이트데이타를 저장한다.
즉, MPU로 부터의 버스기동신호
Figure kpo00045
가 저레벨로 하강한 것에 의해 버스기동을 인지한 캐시메모리는 리드라이트신호 R/W가 저레벨이므로 라이트요구라고 판정한다. 캐시메모리 C-MEM은 라이트스토어버퍼 WSB내의 스토어레지스터가 비어 있는 것을 확인하고, t'2의 타이밍에서 데이타컴플리트신호
Figure kpo00046
를 논리적 레벨로 하여 MPU에 공급하고, 라이트스토어버퍼 WSB가 t'3의 타이밍에서 각 버스상으 어드레스신호, 라이트데이타 및 바이트제어데이타를 입력한다. MPU는 t'2의 타이밍에서 데이타컴플리트신호
Figure kpo00047
가 논리레벨인 것을 판정하여 어드레스스트로브신호
Figure kpo00048
를 t'3의 타이밍에서 데이타스트로브신호를 그것보다 약간 지연시켜서 고레벨로 한다.
제12도에는 라이트스토어버퍼 WSB에서 어드레스신호와 데이타를 언로딩할때의 타이밍이 도시되어 있다. 이 사이클은 MPU의 사이클과 비동기로 실행된다. 즉, 시스템클럭 CLK(CLK1)의 상승 t''1에 동기해서 디렉토리메모리 DIM의 검색이 개시되고, 히트, 즉 CH가 고레벨로 상승하면 라이트스토어버퍼 WSB내의 데이타를 데이타버스 DB4를 거쳐서 데이타메모리 DAM, 또는 블럭버퍼 BB로 전송한다. 미스히트인 경우는 데이타버스 DB4를 거쳐서 메인메모리 MM을 향해서 라이트데이타를 전송한다.
제13도 a에 라이트데이타 레지스터와 워드선의 구성예를 나타내는 블럭도가 도시되어 있다.
제13도 b에는 라이트데이타레지스터의 데이타입력포트부의 구성예를 나타내는 블럭도가 도시되어 있다.
제13도 a에는 라이트데이타레지스터 WDR1을 대표로 해서 도시되어 있고, 다른 라이트데이타레지스터 WDR2∼WDR4에 대해서도 동일하다.
제13도 a에 있어서, 라이트데이타레지스터 WDR1은 32비트, 즉 4바이트의 라이트데이타 wd0∼wd31에 대해서 1바이트마다 라이트를 실행할지 하지 않을지를 선택할 수 있는 구성, 즉 부분적인 라이트기능으로 되어 있다. WDR10∼WDR13은 라이트데이타레지스터 WDR1의 1바이트마다의 단위레지스터이다. 즉, 워드선 W1-W1이 AND 게이트 AND1∼AND4의 한쪽의 입력단자에 결합되어 있다. 워드선 W1-W1이 선택되면 고레벨로 되고 서브워드선 SW0∼SW3의 레벨은 바이트코드버스 BCB를 거쳐서 공급된 바이트제어코드 bc0∼bc3의 각각의 레벨에 의해 제어된다.
즉, 소정의 바이트제어코드, 예를들면 bc0과 bc1이 고레벨이면 대응하는 서브워드선에 결합시키는 단위레지스터 WDR10과 WDR11에 1워드의 라이트데이타 wd0∼wd7과 wd8∼wd15가 라이트된다.
제13도 b에 있어서, 제13도 a와 마찬가지로 라이트데이타레지스터 WDR1은 부분적인 라이트기능을 갖는다.
즉, 각 단위레지스터 WDR10∼WDR13의 입력포트에 대해서 바이트제어코드 bc0∼bc3으로 제어되는 3상태게이트 G1∼G4를 마련한다. 그러므로, 워드선 W1-W1이 선택되어도 소정의 바이트코드, 예를들면 bc0, bc1이 저레벨이라면 그 바이트코드에 대응하는 게이트 G1, G2가 대응하는 단위레지스터 WDR10, WDR11 에 대해서 라이트데이타 wd0∼wd7, wd8∼wd15의 공급을 금지한다. 그러므로, 고레벨의 바이트제어코드에 대응하는 레지스터에만 라이트데이타가 라이트된다.
이상과 같이 본 실시예의 라이트스토어버퍼 WSB를 갖는 캐시메모리 C-MEM에서는 MPU에서 입력되는 어드레스와 디렉토리메모리 DIM에 저장되어 있는 태그어드레스의 비교를 실행한다. 이것과 동시에 상기 실시예에서는 라이트스토어버퍼 WSB의 스토어레지스터 S-REG1∼S-REG4내의 어드레스의 비교를 실행하고 있으므로, 이 어드레스의 비교결과가 일치(히트)하면 디렉토리메모리 DIM과의 비교결과가 불일치(미스히트)의 경우라도 메인메모리 MM을 액세스하는 일없이 최소 머신사이클에서 MPU가 데이타를 리드/라이트할 수 있다. 이것에 의해 캐시메모리 C-MEM의 히트율의 향상이 도모된다.
또, 이 실시예에서는 라이트스토어버퍼 WSB내에 4개의 멀티포트형식의 스토어레지스터 S-REG1∼S-REG4가 마련되어 있으므로 MPU에 의한 메모리의 라이트사이클이 연속한 경우에도 차례차례로 라이트어드레스와 데이타를 라이트스토어버퍼 WSB에 입력해두고, 캐시메모리 C-MEM내부의 버스 또는 메인메모리버스 M-BUS가 비어 있을때 스토어버퍼에서 어드레스와 데이타를 출력시켜서 데이타메모리 DAM, 블럭버퍼 BB 또는 메인메모리 MM으로의 라이트를 실행할 수 있다.
또한, MPU의 라이트사이클이 몇번이라도 계속해서 라이트스토어버퍼 WSB내에 비어 있는 스토어레지스터가 없어진 경우에는 제어회로 CONT1에서 마이크로프로세서버스 인터페이스유닛 MBIU1을 거쳐서 MPU에 대해 대기신호를 보내서 대기하도록 하면 된다. 단, 통상의 MPU에서는 라이트사이클이 5회이상 계속되는 경우는 거의 없으므로 대기가 걸릴 확율은 스토어레지스터가 1개인 경우에 비해 훨씬 저하된다.
제14도에는 제1도에 도시한 캐시메모리 C-MEM에 포함되는 디렉토리메모리 DIM과 블럭버퍼 BB의 내부구성의 1실시예의 블럭도가 도시되어 있다. 제15도에는 제14도에 도시한 캐시메모리 C-MEM에 포함되는 블럭버퍼 BB의 더욱 상세한 내부구성의 1실시예의 블럭도, 제16도에는 제14도에 도시한 블럭버퍼레지스터 BBR의 상세한 1실시예의 블럭도, 제17도에는 제14도에 도시한 BBV 레지스터의 상세한 1실시예의 블럭도, 제18도에는 제16도에 도시한 세트메모리셀의 1실시예의 회로도, 제19도에는 제16도에 도시한 여러개의 BBV 메모리어레이 BBV-MA의 1실시예의 회로도, 제20도에는 리드사이클시에 캐시메모리의 미스히트가 발생한 경우에 있어서의 블럭전송의 제어순서의 1예를 도시한 흐름도, 제21도 a∼d에는 데이타리드시에 캐시의 미스히트가 발생한 경우에 있어서의 어드레스와 데이타의 흐름이 제어순서에 따라 나타내는 설명도가 각각 도시되어 있다.
제14도에 있어서, 제1도에 도시한 클럭단자 CLK1, 동기회로 SYCT, 외부단자 SYT1, CLKT, 레지스터군 RG, 바이트코드버스 BCB, BCB', 라이트스토어버퍼버스 WSBB등은 생략하고 있다.
제14도에 있어서, 디렉토리메모리 DIM은 19비트구성의 태그어드레스신호를 저장하는 디렉토리메모리유닛 DMU와 저장되어 있는 여러개의 상기 태그어드레스신호의 칼럼마다 1비트씩 MPU가 리드를 요구하는 데이타가 메인메모리에서 캐시메모리, 즉 블럭버퍼 BB로 블럭전송중인지 아닌지를 나타내는 전송비트 BT를 유지하는 전송비트레지스터 BTR 및 각 칼럼마다 대응하는 데이타메모리 DAM내의 데이타가 유효인지 무효인지를 나타내는 유효비트 V'를 유지하는 유효비트레지스터 VR'로 구성어 있다.
블럭버퍼 BB는 데이타메모리 DAM 또는 메인메모리 MM으로부터의 블럭데이타와 그것에 대응하는 패리티데이타를 유지하는 블럭버퍼레지스터 BBR 및 메인메모리 MM으로부터 전송되어 오는 4바이트의 데이타마다 대응하는 데이타가 유효인지 무효인지를 나타내는 비트 BBV를 유지하는 BBV 레지스터 BBVR로 구성되어 있다.
상기 각 비트 BT 및 BBV이 상태는 각각 제어버스 CB2 및 블럭버퍼버스 BBB를 거쳐서 제어회로 CONT에 의해 감시되어 데이타의 전송제어에 반영됨과 동시에 제어회로 CONT가 데이타의 흐름에 따라 상기 비트 V'BT, BBV의 리라이트를 실행한다.
구체적으로 제어회로 CONT는 MPU의 리드사이클에서 MPU로부터 부여된 어드레스신호의 태그어드레스부의 비교결과 태그비교기 TAG-CMP가 태시히트한 경우에는 대응하는 칼럼위치의 비트 BT를 조사해서 BTR가 0이면 원하는 데이타가 데이타메모리 DAM내에 있으므로 데이타메모리 DAM 내의 4바이트 구성의 데이타를 데이타버스 DB7, DB1 등을 거쳐서 MPU에 대해서 출력하여 캐시히트신호 CH에 따라 데이타컴플리트신호
Figure kpo00049
를 제어버스 CB1,CB0 등을 거쳐서 MPU에 공급한다.
또, 태그비교회로 TAG-CMP에 의해 캐시히트가 검출되어도 전송비트 BT가 1이면 원하는 데이타는 블럭버퍼 BB내에 있으므로 블럭버퍼 BB내의 비트 BBV를 조사해서 원하는 4바이트구성의 데이타가 유효인지 아닌지를 인지하고, BBV가 1일때에는 그때 MPU에서 공급된 30비트 구성의 어드레스신호중 하위 2비트를 포함하는 어드레스카운터 ADC에 의해 형성된 5비트의 어드레스신호 ADR4에 의해 블럭버퍼레지스터 BBR에서 그 데이타를 데이타버스 DB112, DB1 등을 거쳐서 MPU에 대해 출력하고, 캐시히트신호 CH에 따라 데이타컴플리트신호 DC를 제어버스 DB1, CB0 등을 거쳐서 MPU에 공급한다. BBV가 0일때에는 메인메모리로부터의 데이타전송에 의해 BBV가 1로 될때까지 대기하여 1로된 시점에서 그 4바이트구성의 데이타를 데이타버스 DB12, DB1 등을 거쳐서 MPU로 출력해서 캐시히트신호 CH에 따라 데이타컴플리트신호
Figure kpo00050
를 제어버스 CB1, CB0 등을 거쳐서 반송하여 MPU가 그것을 입력한다. 또, 상술한 바와 같이 태그비교회로 TAG-CMP 보다 빨리 라이트스토어버퍼 WSB 내의 태그비교기 CMP1에 의해 캐시히트가 검출되고, 히트한 경우는 태그비교회로 TAG-CMP의 비교동작이 정지된다.
제어회로 CONT는 블럭전송 요인이 발생하면 먼저 디렉토리메모리 DIM내의 대응하는 비트 BT에 1을 설정하고 나서 데이타의 전송을 개시하고, 그 전송상태에 따라 블럭버퍼 BB내의 비트 BBV에 1을 설정하고, 모든 BBV 비트가 1로 된 시점에서 블럭버퍼 BB내의 데이타를 데이타메모리 DAM으로 전송한다. 그리고, 전송이 종료하면 비트 BBV 및 데이타메모리 DAM내의 대응하는 비트 BT를 0으로 리세트한다.
상술한 바와 같이, 블럭버퍼 BB는 라이트스토어버퍼 WSB에서 출력된 어드레스신호가 캐시히트 CH가 고레벨로 되면 데이타메모리 DAM에서 리라이트된 데이타를 포함하는 16바이트의 블럭데이타와 16비트의 패리티데이타의 전송이 실행된다. 또, 블럭버퍼 BB는 데이타메모리 DAM에서 공급된 블럭데이타, 패리티데이타를 각각 4바이트와 4비트씩 메인메모리 MM에 공급하는 블럭전송을 실행한다.
제15도에 있어서, 레지스터군 RG에는 블럭길이 설정레지스터 BL-REG를 포함하고 있고, 상술한 바와 같이 블럭길이는 본 실시예에서 16바이트로 설정되어 있다. 이 레지스터 BL-REG의 설정값에 따라 어드레스카운터 ADC가 갱신동작시키는 비트수를 지정하는 것에 의해 블럭전송시에 전송시키는 데이타의 수가 결정된다.
블럭버퍼 BB는 블럭버퍼레지스터 BBR 및 BBV 레지스터 BBVR 이외에 또 인버터 IV16, 트랜스퍼 MOSFETQ8, 래치회로 LC, 비교회로 CMP6, NAND 게이트 NAND9 및 패리티검사기 PC1로 구성되어 있다.
패리티검사기 PC1은 메인메모리 MM에서 블럭버퍼 BB로의 블럭전송시에 데이타전송마다 데이타버스 DB9를 거쳐서 메인메모리 MM에서 송출되는 4바이트의 데이타와 함께 메인메모리 MM에서 송출되는 4비트의 패리티데이타에 의해 메인메모리 MM에서 송출되는 4바이트의 데이타를 패리티검사하는 회로로써, 예를들면 여러개의 배타적 OR회로에 의해 구성되고, 패리티에서가 있으면 패리티에러신호 Pe를 논리고레벨로써 NAND게이트 NAND9 및 제어회로 CONT로 송출한다.
트랜스퍼 N채널형 MOSFETQ8은 태그비교회로 TAG-CMP의 출력신호 CH가 캐시미스, 즉 저레벨에서 인버터 IV16을 거쳐 그 게이트에 고레벨이 공급된다. 이것에 의해 트랜스퍼 MOSFETQ8은 소오스드레인경로를 형성하여 어드레스버스 ADB8상의 어드레스신호는 래치회로 LC에 전달한다. 또한, 도면상에는 트래스퍼 MOSFETQ8은 1개만 도시하고 있지만 트랜스퍼 MOSFETQ8은 30비트구성의 어드레스 ADB8에 대응해서 30개가 마련되어 있다.
래치회로 LC는 트랜스퍼 MOSFETQ8을 거쳐서 어드레스카운터 ADC의 초기값, 즉 MPU가 리드사이클에서 캐시미스시의 30비트의 어드레스신호를 유지하여 비교회로 CMP6에 공급한다.
비교회로 CMP6을 래치회로 LC에 유지된 어드레스신호와 어드레스카운터 ADC에 의해 차례로 형성되는 30비트의 어드레스신호를 비교하여 일치하면 일치신호 MTH를 고레벨로 한다.
NAND 게이트 NAND9는 패리티에러신호 Pe와 일치신호 MTH가 모두 고레벨일때 패리티에러신호
Figure kpo00051
을 제어회로 CONT로 출력한다.
여기에서,
Figure kpo00052
는 BBV 레지스터 BBVR의 출력신히고, SET3은 BBV 비트의 세트신호, RESET3은 BBV 비트의 리세트신호, Pe'는 블럭버퍼 BB에서 데이타버스 DB12로 데이타를 출력할때의 패리티에러를 나타내는 신호로써 에러가 있으면 Pe'는 고레벨에서 제어회로 CONT로 출력된다. 제어회로 CONT는 소정의 BBV 비트를 세트할때 세트신혼 SET3을 고레벨로 하고, 통상시에는 저레벨로 하며, BBV 비트를 리세트할때에는 리세트신호 RESET3을 고레벨로 하고, 통상시에는 저레벨로 하며, BBV 비트를 리세트할때에는 리세트신호 RESET3을 고레벨로 하고, 통상시는 저레벨로 하고 있다.
제16도에 있어서, 블럭버퍼레지스터 BBR은 듀얼포트의 스테이틱형 메모리로써, 세트메모리셀 MCS0, 0∼MCS3, 7, X디코더 X-DEC1 및 X-DEC2, Y디코더 Y-DEC1, Y-DEC2 및 Y-DEC3, 셀렉터 SEL1 및 SEL2, 출력회로 OUTC, 입/출력회로 I/OC1 및 I/OC2, 패리티검사회로 PC2, 워드선 W10∼W13 및 W20∼W23, 세트데이타선 DL10∼DL17 및 DL20∼DL27, 세트패리티데이타선 PDL10∼PDL17 및 PDL12∼PDL27, 공통세트데이타선 CDL1∼CDL3 및 공통세트패리티데이타선 CPDL1∼CPDL3으로 구성되어 있다.
세트데이타선 DL10∼DL17 및 DL20∼DL27, 공통데이타선 CDL1 및 CDL3은 각각 1쌍의 상보데이타선의 32비트로 구성된다. 세트패리티데이타선 PDL10∼PDL17 및 PDL20∼PDL27, 공통세트패리티데이타선 CPDL1 및 CPDL3은 각각 1쌍의 상보데이타선 32×4세트로 구성된다. 공통세트패리티데이타선 CPDL2는 1쌍의 상보데이타선을 4×4세트로 구성한다.
각 세트메모리셀 MCS0, 0∼MCS3, 7은 여러개(본 실시예에서는 36개)의 듀얼포트의 스테이틱메모리셀을 포함하고 있고, 1개의 세트메모리셀에서 32비트 구성의 데이타와 그 데이타에 대응하는 4비트의 패리티데이타를 유지한다. 또, 각 세트메모리셀 MCS0.0∼MCS3.7은 워드선 W10∼W13, W20∼W23 및 세트데이타선과 세트패리티데이타선 DL10∼DL17, DL20∼ DL27, PDL10∼PDL17, PDL20∼PDL27의 교차점에 매트릭스 형상으로 배치되어 있다.
본 실시예에서는 1블럭 16바이트이고, 세트메모리셀은 MCS0, 0∼MCS0, 3이 사용되고, 각 세트메모리셀의 MCS0, 0∼MCS0, 3은 32비트 구성의 데이타와 그것에 대응하는 패리티데이타를 유지한다. 물론, 레지스터 BL∼REG에 의해 블럭길이가 16바이트보다 길게, 예를들면 32바이트, 64바이트, 128바이트길이의 경우는 세트메모리셀은 각각 MCS0, 0∼MCS0, 7, MCS0, 0∼MCS1, 7, MCS0, 0∼MCS3, 7이 사용된다.
X디코더 X-DEC1은 MPU의 리드사이클에서 태그비교기 TAG-CMP가 일치(캐시히트)를 검출해서 그 요구데이타가 블럭버퍼 BB내에 있는 경우에 공급되는 5비트구성의 어드레스신호 ADR4중 상위 2비트의 어드레스신호 adr43∼adr44 또는 데이타메모리 DAM과 블럭버퍼 BB 사이의 데이타전송시에 공급되는 어드레스신호 ADR3의 상위 2비트 adr31∼adr32를 디코드해서 워드선 W10∼W13 중 1개를 선택하여 선택한 워드선을 고레벨로 한다.
또한, 본 실시예에서는 블럭길이가 16바이트로 설정되어 있으므로 상기 어드레스신호 adr31∼adr32 및 adr43∼adr44는 항상 고정적인 레벨로써, 예를들면 각 어드레스신호 모두 고레벨이고, 이것에 의해 X디코더 X-DEC1은 어드레스신호 adr31∼adr32 또는 adr43∼adr44가 공급되면 워드선 W10을 선택한다.
X디코더 X-DEC2는 MPU의 리드 또는 라이트스토어버퍼 WSB가 출력한 어드레스신호에서 태그비교회로 TAG-CMP가 캐시미스 또는 캐시히트를 검출했을때 발생하는 블럭버퍼 BB와 메인메모리 MM의 블럭전송시에 어드레스카운터 ADC에 의해 순차로 형성되는 5비트 구성의 어드레스신호 DR2의 상위 2비트의 어드레스신호 adr23∼adr24가 공급되고, 이 어드레스신호 adr23∼adr24를 디코드하여 워드선 W20∼W23 중 1개를 선택한다. 본 실시예에 있어서 상기 어드레스신호 adr23∼adr24는 어드레스신호 adr31∼adr32 또는 adr43∼adr44와 마찬가지로 고정적인 레벨, 예를들면 각각 고레벨이고, 이것에 따라 X디코더 X-DEC2는 워드선 W20을 선택한다.
Y디코더 Y-DEC1은 상기 어드레스신호 ADR3의 하위 1비트의 어드레스신호 adr 30이 공급되어 있고, 이 어드레스신호 adr 30을 디코드해서 세트데이타선 DL10∼DL13과 세트패리티데이타선 PDL10∼PDL13 및 세트데이타선 DL14∼DL17과 세트패리티데이타선 PDL13∼PDL17중 어느 하나의 4세트의 세트데이타선 및 4세트의 세트패리티데이타선을 선택하는 2비트신호를 셀렉터 SEL1에 공급한다. 어드레스신호 adr 30은 본 실시예에 있어서 블럭길이가 16 바이트이므로 고정적인 레벨이고, 예를들면 고레벨이고, Y디코더 Y-DEC1은 항상 세트데이타선 DL10∼DL13 및 세트패리티데이타선 PDL10∼PDL13을 선택하는 2비트의 선택신호를 출력한다.
Y디코더 Y-DEC2는 어드레스신호 ADR4중 하위 3비트의 어드레스신호 adr40∼adr42가 공급되고, 어드레스신호 adr40∼adr42를 디코드하여 세트데이타선 DL10∼DL17 및 세트패리티데이타선 PDL10∼PDL17에서 1세트의 세트데이타선과 그 세트데이타선에 대응한 세트패리티데이타선(예를들면 DL10의 경우는 PDL10)을 선택하기 위한 8비트의 선택신호를 셀렉터 SEL1에 공급한다. 본 실시예에서는 블럭길이가 16바이트이므로 어드레스신호 adr42가 고정적인 레벨, 예를들면 저레벨이고, 그러므로 Y디코더 Y-DEC2는 세트데이타선 DL10∼DL13 및 세트패리티데이타선 PDL10∼PDL13중에서 1세트의 세트데이타선 및 그 세트데이타선에 대응한 세트패리티데이타선을 선택하기 위한 8비트의 선택신호를 형성하여 셀렉터 SEL1에 공급한다.
Y디코더 Y-DEC3은 어드레스신호 ADR2중 하위 3비트의 어드레스신호 adr20∼adr22가 공급되고, 이 어드레스신호 adr20∼adr22를 디코드하여 세트데이타선 DL20∼DL27 및 세트패리티데이타선 PDL20∼PDL27중 1세트의 세트데이타선과 그 세트데이타선에 대응한 세트패리티데이타선(예를들면 DL20의 경우는 PDL20)을 선택하기 위한 8비트의 선택신호를 형성하여 셀렉터 SEL2에 공급한다. 본 실시예에서는 어드레스신호 adr42와 마찬가지로 adr22가 고정적인 레벨, 예를들면 저레벨이고, 그러므로 Y디코더 Y-DEC3은 세트데이타선 DL20∼DL23 및 세트패리티데이타선 PDL20∼PDL23중에서 1세트의 세트데이타선 및 그 세트데이타선에 대응하는 세트패리티데이타선을 선택하는 8비트의 선택신호를 형성한다.
셀렉터 SEL1은 Y디코더 Y-DEC2의 8비트의 선택신호에 따라 선택된 세트데이타선과 세트패리티데이타선을 각각 공통세트데이타선 CDL1 및 공통세트패리티데이타선 CPDL1에 결합시키고, 세트데이타선과 세트패리데이타선에 리드된 데이타를 공통 세트데이타선 CDL1 및 공통세트패리티데이타선 CPDL1에 공급한다.
또, 셀렉터 SEL1은 Y디코더 Y-DEC1의 2비트의 선택신호에 따라서 세트데이타선 DL10∼DL13과 세트패리티데이타선 PDL10∼PDL13 및 세트데이타선 DL14∼DL17과 PDL14∼PDL17 중 어느 하나의 4세트의 세트데이타선과 4세트의 세트패리티데이타선을 각각 공통세트데이타선 CDL2와 공통세트패리티데이타선 CPDL2에 결합시키고, 공통세트데이타선 CDL2 및 공통세트패리데이타선 CPDL2상의 데이타를 선택된 4세트의 세트데이타선 및 세트패리티데이타선에, 또는 선택된 4세트의 세트데이타선 및 세트패리티데이타선의 데이타를 공통세트데이타선 CDL2 및 공통세트패리티데이타선 CPDL2에 공급한다.
셀렉터 SEL2은 Y디코더 Y-DEC3의 8비트의 선택신호에 따라 선택된 세트데이타선 및 세트패리티데이타선을 각각 공통세트데이타선 CPDL3 및 공통세트패리티데이타선 CPDL3에 결합시키고, 선택된 세트데이타선 및 세트패리데이타선상의 데이타를 공통세트데이타선 및 공통세트패리티데이타선 CPDL3에, 또는 공통세트데이타선 및 공통세트패리티데이타선 DPDL3상의 데이타를 선택된 세트데이타선 및 세트패리티데이타선에 전달시킨다.
출력회로 OUTC는 공통세트데이타선 CDL1에 리드된 상보데이타를 4바이트구성의 데이타로 변환해서 데이타버스 DB12 및 패리티검사회로 PC2에, 또 공통세트패리티데이타선에 리드된 상보데이타를 4비트구성의 패리티데이타로 변환해서 패리티비트로써 패리티검사회로에 공급한다.
입/출력회로 I/OC1은 공통세트데이타선 CDL2에 리드된 상보데이타를 16바이트의 블럭데이타로 변환해서 데이타버스 DB11에, 공통세트패리티데이타선 CPDL2에 리드된 상보데이타를 4×4비트의 패리티데이타로 변환해서 패리티데이타버스 PB5에, 또 데이타버스 DB11상의 블럭데이타를 상보데이타로 변환해서 공통세트데이타선 CDL2에, 패리티데이타버스 CPDL2의 4×4비트의 패리티데이타를 입력하여 상보데이타로 변환해서 공통세트패리티데이타선으로 출력한다.
입/출력회로 I/OC2는 공통세트데이타선 CDL3 및 공통세트패리티데이타선 CPDL3에 리드된 상보데이타를 각각 4바이트 구성의 데이타 및 4비트의 패리티데이타로 변환하여 데이타버스 DB10 및 패리티데이타버스 PB3으로 출력하고, 또 데이타버스 DB10 및 패리티데이타버스 PB3상의 데이타 및 패리티데이타를 입력하여 상보데이타로 변환해서 공통세트데이타선 CDL3 및 공통세트패리티데이타선 CPDL3에 공급한다.
패리티검사회로 PC2는 데이타버스 DB12 상에 리드된 4바이트구성의 데이타를 4비트의 패리티데이타에 따라 패리티검사를 실행하여 패리티에러가 발생하면 패리티에러신호 Pe'를 고레벨로 해서 제어회로 CONT에 공급한다.
또한, 본 실시예에 있어서, 각 세트데이타선 및 세트패리티데이타선내의 상보데이타선을 프리차지하기 위한 프리차지회로나 상기 상보데이타선 사이에 마련되는 센스앰프 및 블럭버퍼레지스트 BBR내에 공급되는 각종 제어신호등은 생략하고 있다.
제18도에 있어서, 세트메모리셀 MC0, 0은 32비트구성의 데이타를 유지하기 위한 메모리셀 MC0∼MC31 및 이 4바이트구성의 데이타에 대응하는 패리티데이타를 유지하기 위한 메모리셀 PMC0∼PMC3으로 구성된다. 메모리셀 MC0∼MC31 및 PMC0∼PMC3은 서로 같은 구성이므로 대표로써 메모리셀 MC0의 구성만을 나타내고 있다. 세트데이타선 DL10은 32쌍의 상보데이타선 D0,
Figure kpo00053
∼D31,
Figure kpo00054
로 구성되고, 세트데이타선 DL20은 32쌍의 상보데이타선 D'0,
Figure kpo00055
∼D'31,
Figure kpo00056
로 구성되고, 세트패리티데이타선 PDL10은 4쌍의 상보패리티데이타선 PD0,
Figure kpo00057
∼PD3,
Figure kpo00058
로 구성되고, 세트패리티데이타선 PDL20은 4쌍의 패리티데이타선 PD'0,
Figure kpo00059
∼PD'3,
Figure kpo00060
로 구성된다.
메모리셀 MC0은 듀얼포트 구성으로 되고, 특히 제한되지 않지만 그 게이트와 드레인이 서로 교차 결합된 1쌍의 구동용 N 채널형 MOSFETQ13, Q14, 부하저항 R1 및 R2, 메모리셀 MC0의 한쪽의 1쌍의 입출력노드를 거쳐서 상보데이타선 D0,
Figure kpo00061
와 구동용 MOSFETQ13, Q14의 드레인사이에 그 드레인 소오소오스경로가 결합되고, 메모리셀 MC0의 한쪽의 선택노드를 거쳐서 워드선 W10에 게이트가 결합되어 있는 트랜스퍼용 N채널형 MOSFETQ9, Q11 및 메모리셀 MC0의 다른쪽의 1쌍의 입출력노드를 거쳐서 상보데이타선 D'0,
Figure kpo00062
와 구동용 MOSFETQ13, Q14의 드레인사이에 그 드레인 소오스경로가 결합되고, 메모리 MC0의 다른쪽의 선택노드를 거쳐서 워드선 W20에 게이트가 결합되어 있는 트랜스퍼용 N채널형 MOSFETQ10, Q12로 구성된다. 또한, 세트메모리셀 MCS0, 1∼MCS3, 7의 세트메모리셀은 세트메모리셀 MCS0, 0과 동일구성으로 된다. 또, 각 세트메모리 MCS0, 1∼MCS3, 7중의 각 메모리셀중 같은 열의 메모리셀의 각각의 2개의 선택노드는 서로 각각 대응하는 2개의 같은 워드선에 결합된다. 각 세트메모리셀 MCS0, 1∼MCS3, 7 중의 각 메모리셀중 같은 행의 메모리셀의 각각의 2쌍의 입출력노드는 서로 대응하는 2쌍의 데이타선에 결합된다.
제17도에 있어서, BBV 레지스터 BBVR은 X디코더 X-DEC3과 X-DEC4, BBV 메모리어레이 BBV-MA, 워드선 B1-W0∼B1-W31과 B2-W0∼B2-W31 및 NOR 게이트 NOG2로 구성된다.
BBV 메모리어레이는 워드선 B1-W0∼B1-W31 및 B2-W0∼B2-W31에 대응해서 결합한 32개의 메모리셀로 구성되어 있고, 상기 32개의 메모리셀은 공통으로 제어회로 CONT에서 세트신호 SET3 및 리세트신호 RESET3이 공급되어 있다. 또, 각 메모리셀은 각각 32비트구성의 데이타선 BBVL에 접속되어 있다.
X디코더 X-DEC3은 워드선 B1-W0∼B1-W31중 1개를 어드레스 신호 ADR4에 따라서 선택하여 선택한 워드선을 고레벨로 한다. 또, 본 실시예에서는 어드레스신호 ADR4 중 어드레스신호 adr42∼adr44가 고정적인 레벨이므로 X 디코더 X-DEC3은 워드선 B1-W0∼B1-W31중에서 1개의 워드선을 선택한다.
X디코더 X-DEC4는 워드선 B2-W0∼B2-W31중 1개를 어드레스 신호 ADR2에 따라서 선택하여 선택한 워드선을 고레벨로 한다. 또, 본 실시예에서 X디코더 X-DEC4는 어드레스신호중 어드레스신호 adr22∼adr24가 고정적인 레벨이므로 워드선 B2-W0∼B2-W31중에서 1개의 워드선을 선택한다.
NOR 게이트 NOG2는 X디코더 X-DEC 3에 의해 선택된 워드선에 결합되어 있는 메모리셀에서 데이타선 BBVL을 거쳐서 리드된 신호가 고레벨이면 그 메모리셀에 유지되어 있는 비트 BBV가 유효로 되어 저레벨의 출력신호
Figure kpo00063
를 제어회로 CONT에 공급한다.
제19도에 있어서, BBV 메모리어레이 BBV-MA는 32개의 메모리셀 BBV-MCO0∼BBV-MC31로 구성된다. 메모리셀 BBV-MCO0∼BBV-MC31은 각각 대응하는 워드선 B1-W0∼B1-W31 및 B2-W0∼B2-W31에 결합하고 있고, 또 메모리셀 BBV-MCO0∼BBV-MC31은 공통으로 제어회로 CONT에서 공급되는 세트신호 SET3 및 리세트신호 RESET3이 공급되어 있다.
메모리셀 BBV-MCO0∼BBV-MC31은 서로 같은 구성으로써, 제19도에서는 대표로서 BBV2-MC0이 상세히 도시되어 있다.
메모리셀 BBV-MC31은 인버터 IV20, 클럭드인버터 IV17, IV18 및 NOR 게이트 NOG3 및 클럭드인버터 IV19로 이루어지는 플립플롭으로 구성된다. 워드선 B2-W0이 선택되면 워드선 B2-W0은 고레벨로 되어 클럭드인버터 IV17, IV19가 동작상태로 되고, 이때 세트신호 SET3이 고레벨에서 공급된다. 리세트신호 RESET3은 리세트신호 SET3이 고레벨일때는 저레벨이고, 이것에 의해 NOR 게이트 NOG3의 한쪽의 입력에는 저레벨의 리세트신호, 다른쪽의 입력에는 인버터 IV17을 거쳐서 저레벨의 세트신호가 공급되고, NOR 게이트 NOG3의 출력신호가 고레벨로 된다.
이 타이밍에서 워드선 B2-W0이 비선택상태, 즉 저레벨로 되는 것에 의해 NOR 게이트 NOG3 및 클럭드인버터 IV19로 구성되는 플립플롭이 세트, 즉, BBV 비트에 1이 세트된다. 워드선 B1-W0이 선택되면 클럭드인버터 IV18이 동작상태로 되고, 클럭드 인버터 IV18은 상기 플립플롭이 세트상태에서 고레벨의 신호를 데이타선 BBVL을 거쳐서 NOR 게이트 NOG2로 출력한다. 상기 플립플롭을 리세트할때에는 리세트신호 RESET3을 고레벨로 하여 NOR 게이트 NOG3의 한쪽의 입력에 공급하면 NOR 게이트 NORG3의 출력신호는 저레벨로 되어 상기 플립플롭은 리세트, 즉 BBV 비트를 0으로 리세트한다.
다음에 제20도 및 제21도 a∼d에 따라 MPU의 리드요구시태그비교기 TAG-CMP가 불일치, 즉 캐시미스가 발생해서 블럭전송이 실행될때의 흐름의 1예를 설명한다.
제20도 및 제21도 a∼d에 있어서, 제어회로 CONT가 리드/라이트신호 R/W에 따라 MPU가 리드 또는 라이트요구인지를 판정한다(스텝 30). 여기에서 라이트요구라고 판정하면 제9도 a에 도시한 흐름에 의해 MPU로부터의 30비트의 어드레스신호 4바이트의 라이트데이타 및 4비트의 바이트제어데이타를 라이트스토어버퍼 WSB에 라이트한다.
한편, 리드요구라고 판정하면 스텝 31에서 라이트스토어버퍼 WSB 내의 점색이 실행되고, 라이트스토어버퍼 WSB내에 원하는 데이타가 존재하면 라이트스토어버퍼 WSB에서 제9도 a에 도시한 순서에 의해 원하는 데이타를 MPU로 송출한다.
한편, 라이트스토어버퍼 WSB내에 원하는 데이타가 존재하지 않으면 태그비교회로 TAG-CMP의 검출결과를 대기하게 된다(스텝 32). 태그비교회로 TAG-CMP가 캐시히트라고 판정하면 스텝 33으로 이행하고, 캐시미스라고 판정하면 블럭전송이 개시된다.
여기에서, MPU가 원하는 데이타를 메인메모리 MM내의 블럭 A∼D의 데이타중 C로 한다. 또한, 블럭의 데이타 A∼D는 각각 대응하는 패리티데이타 PA∼PD도 저장하고 있다(제21도 a).
어드레스카운터 ADC에 상기 캐시미스시의 30비트구성의 어드레스신호가 ADC에 초기값으로써 유지되고, 또 상기 캐시미스시의 어드레스신호가 래치회로 LC에 입력되고, 그리고 디렉토리메모리 DIM은 상기 캐시미스의 어드레스신호중 칼럼부의 어드레스신호에 따라 태그부의 어드레스신호를 저장하고, 그 칼럼부에 대응한 유효비트 V' 및 전송비트 BT에 각각 1을 세트한다. 어드레스카운터에서 이 초기값의 어드레스신호 ADR1이 메모리메모리 MM 및 비교회로 CMP6에 공급된다. 비교회로 CMP6은 상기 어드레스카운터 ADC으 초기밧의 어드레스신호 ADR1과 래치회로 LC에 유지된 어드레스신호를 비교하여 일치를 검출한다. 또한, 이 경우 래치회로 LC가 유지하고 있는 어드레스신호도 상기 어드레스카운터의 초기값이므로 출력신호 MTH는 고레벨로 된다. 메인메모리 MM은 어드레스카운터 ADC의 초기값인 어드레스신호 ADR1에 따라 데이타버스 DB9에 4바이트의 데이타 C를, 또 이 데이타에 대응한 4비트의 패리티데이타 PC를 패리티버스 PB1로 송출한다(스텝 34).
다음에 메인메모리 MM에서 송출된 데이타 C와 패리티데이타 PC는 패리티검사회로 PC1에 공급되고, 패리티검사회로 PC1은 데이타 C를 패리티데이타 PC에 따라 패리티검사를 하여 에러가 발생하면 출력신호 Pe를 고레벨로 하여 NAND 게이트 NAND9의 한쪽의 입력에 공급한다. NAND 게이트 NAND9는 비교회로 CMP6의 출력신호 MTH가 고레벨이므로 패리티에러, 즉 Pe가 고레벨이면 패리티에러신호
Figure kpo00064
를 저레벨로 하여 제어회로 CONT에 공급한다.
제어회로 CONT는 패리티에러신호
Figure kpo00065
가 저레벨이면 MPU에 에러신호
Figure kpo00066
를 공급하고, 고레벨이면 블럭전송의 동작을 다음의 스텝 36으로 이행한다(스텝 35). MPU는 에러신호
Figure kpo00067
를 받으면 패리티에러가 있었던 것을 인지하여 예외처리(예를들면 데이타 C를 재차 리드할 것을 캐시메모리 C-MEM에 지시한다)로 이행할 수 있다.
스텝 36에서 제어회로 CONT는 제어신호 GC를 게이트회로 G에 공급하고, MPU에 데이타컴플리트신호
Figure kpo00068
를 공급한다. 게이트회로 G는 제어신호 GC가 공급된 것에 의해 데이타버스 DB1과 DB9를 결합시켜 데이타 C를 MPU로 송출한다. 어드레스카운터 ADC는 상기 초기값의 어드레스신호의 하위 2비트를 포함하는 5비트의 어드레스신호 ADR2를 블럭버퍼 BB에 공급한다. 블럭버퍼 BB에서는 어드레스신호 ADR2에 따라 블럭버퍼레지스터 BBR내의 소정의 메모리세트(본 실시예에서는 MCS0, 2)가 소정의 워드선(본 실시예에서는 W20) 및 소정의 세트데이타선과 세트패리티데이타선(본 실시예에서는 DL21,PDL21)이 선택되는 것에 의해 선택되어 세트메모리 MCS0, 2내의 36내의 메모리셀에 32비트의 데이타 C와 4비트의 패리티데이타 PC가 입/출력회로 I/OC2등을 거쳐서 라이트되고, 또 블럭버퍼 BB에서는 어드레스신호 ADR2에 따라서 BBV 레지스터 BBVR내의 소정의 메모리셀(본 실시예에서는 BBV-MC2)이 소정의 워드선 B2-W2가 선택되는 것에 의해서 지시된다. 또, 이때 제어회로 CONT가 세트신호 SET3을 고레벨로 한다. 그러므로, BBV-MC2내의 플립플롭이 세트된다. 즉, BBV비트에 1이 세트된다(제21도 b).
스텝 37에서는 제어회로 CONT가 어드레스카운터 ADC에 카운트업신호 ADRE를 공급한다. 어드레스카운터 ADC는 카운트업신호 ADRE가 공급되는 것에 의해 초기값으로써 유지하고 있는 어드레스 신호의 하위 2비트가 갱신되어 메인메모리 MM 및 비교회로 CMP6에 공급한다. 비교회로 CMP6은 갱신전의 어드레스신호와 갱신후의 어드레스신호를 비교하고 있으므로 불일치를 검출하여 출력신호 MTH를 저레벨로 한다. 메인메모리 MM은 4바이트의 데이타 D 및 그것에 대응하는 패리티비트 PD를 각각 캐시메모리 C-MEM으로 송출한다.
스텝 38에서는 패리티검사회로 PC1이 패리티비트 PD에 따라서 데이타 D의 패리티검사를 실행하고 패리티에러가 발생하면 패리티에러신호 Pe를 고레벨로 하여 제어회로 CONT 및 NAND 게이트 NAND 9에 공급한다. 여기에서, 만약 패리티에러발생, 즉 패리티에러신호 Pe가 고레벨이라도 비교회로 CMP6에서는 어드레스불일치로 되어 출력신호 MTH가 저레벨로 되고 있으므로 NAND 게이트 NAND9가 폐쇄된다. 그러므로, 패리티에러신호
Figure kpo00069
는 고레벨이고, 제어회로 CONT는 에러신호
Figure kpo00070
를 MPU로 출력하지 않게 되고, MPU가 요구하지 않는 데이타의 패리티에러에 의해 MPU가 예외처리 등으로 이행하거나 하지 않는다. 또한, 제어회로 CONT는 데이타 C에 패리티에러가 발생한 경우는 이 패리티에러정보를 레지스터군내의 소정의 레지스터(도시하지 않음)에 유지한다.
스텝 39에서는 어드레스카운터 ADC가 상기 갱신된 2비트를 포함하는 5비트의 어드레스신호 ADR2를 형성하여 블럭버퍼 BB에 공급한다. 블럭버퍼 BB는 어드레스신호 ADR2에 따라 소정의 세트 메모리셀(본 실시예에서는 MCS0,3)에 데이타 D 및 그 대응하는 패리티데이타 PD를 입력한다. 또, 제어회로 CONT는 세트신호 SET3을 고레벨로 하여 블럭버퍼 BB에 공급한다. 따라서, 블럭버퍼 BB내의 상기 어드레스신호 ADR2에 따라 선택된 BBV레지스터 BBVR내의 소정의 메모리셀(본 실시예에서는 BBVMC3)의 플립플롭은 세트, 즉 BBV비트에 1이 세트된다. 스텝 40에서는 제어회로 CONT가 블럭설정길이 레지스터 BL-REG를 참조하여 블럭전송이 종료했는지 아닌지를 판정한다. 여기에서, 블럭전송이 종료하고 있지 않으면 스텝 37로 되돌아가고, 종료했으면 스텝 41로 이행한다. 본 실시예의 경우 아직 블럭버퍼 BB내에 데이타 A,B 및 대응하는 패리티데이타 PA, PB가 저장되어 있지 않으면 데이타 A,B 및 패리티데이타 PA,PB가 블럭버퍼내에 저장될때까지 상기 스텝 37∼39를 반복한다. 또한, 본실시예에서는 데이타 A와 패리티비트 PA, 데이타 B와 패리티비트 PB의 순으로 저장된다.
스텝 41에서는 일련의 블럭전송에 의해 1블럭분의 모든 데이타 A, B, C, D 및 패리티데이타 PA, PB, PC, PD가 블럭버퍼 BB내에 구비된 시점에서 16바이트으 데이타와 16비트의 패리티데이타가 동시에 데이타 메모리 DAM으로 전송된다(제21도 c). 즉, 1블럭분의 데이타가 구비되면 어드레스카운터 ADC에서 3비트의 어드레스신호 ADR3이 블럭버퍼 BB에 공급되고, 또 어드레스카운터 ADC에서 초기값의 어드레스신호인 컬럼부의 어드레스신호가 데이타메모리 DAM에 공급된다. 이것에 의해 블럭버퍼 BB에는 데이타 A∼D 및 패리티데이타 PA∼PD가 저장되어 있다. 4개의 세트메모리셀(본 실시예에서는 MCS0,0∼MCS0, 3)에서 입/출력회로 I/OC1을 거쳐서 데이타 A∼D 및 패리티비트 PA∼PD를 각각 데이타 버스 DB11 및 패리티데이타버스 PB5로 송출하고, 데이타메모리 DAM은 상기 초기값의 어드레스신호인 칼럼부의 어드레스신호에 따른 칼럼부의 메모리셀로 데이타 버스 DB11 및 패리티데이타버스 PB5로 송출된 데이타 A∼D 및 패리티비트 PA∼PD를 저장한다. 그후, 제어회로 CONT는 리세트신호 RESET3을 고레벨로 하여 블럭버퍼 BB에 공급하고, 이것에 의해 BBV 레지스터 BBVR 내의 메모리셀에 세트되어 있는 플립플롭은 일괄해서 리세트된다. 즉, 데이타 A∼D에 대응한 BBV비트가 0으로 리세트된다.
그후, 제어회로 CONT는 블럭전송개시에 세트한 전송비트 BT를 0으로 리세트하고, 또 레지스터군 GR으 상기 소정의 레지스터로의 블럭전송에 있어서 2번째 이후의 데이타에 패리티에러가 발생했는지를 확인하여 패리티에러가 발생하고 있으면 디렉토리메모리내의 블럭 전송개시시에 설정한 유효비트 V를 0으로 리세트하고, 발생하고 있지 않으면 세트상태 그대로 한다.
이 블럭전송도중에 예를 들면 이미 전송되어 있는 데이타 A를 MPU가 요구한 경우에 대해서 설명한다.
즉, 스텝 33에서 제어회로 CONT는 캐시히트한 칼럼부의 어드레스에 대응한 전송비트 BT에 1이 세트되어 있는지를 확인한다. 전송비트가 0이면 데이타 메모리 DAM에서 원하는 데이타를 리드한다. 본 실시예에서는 데이타 A를 포함하는 블럭이 블럭전송중이고, 전송 비트 BT는 1이 세트되어 있다.
스텝 42에서는 어드레스카운터 ADC는 상기 캐시히트한 어드레스신호의 하위 2비트를 포함하는 5비트의 어드레스신호 ADR4를 형성하여 블럭버퍼 BB에 공급한다. 블럭버퍼 BB는 이 어드레스신호 ADR4에 따라 BBV레지스터 BBVR4내의 소정의 메모리셀(본 실시예에서는 BBVMC0)로부터의 데이타를 리드하여 NOR 게이트 NOG2의 출력신호
Figure kpo00071
를 제어회로 CONT에 공급한다. 제어회로 CONT는 출력신호
Figure kpo00072
가 저레벨, 즉 리드된 BBV비트가 1인지 아닌지를 판정하고, 출력신호
Figure kpo00073
가 고레벨인 경우는 저레벨로 된다. 즉, BBV비트에 1이 세트될때까지 대기한다.
BBV비트가 1 또는 1로 세트되면 블럭버퍼 BB가 듀얼 포트구성이므로 상기 어드레스신호 ADR4에 따라서 블럭전송과는 관계없이(비동기) 블럭버퍼 BB에서 데이타 A가 리드되어 MPU로 송출된다(제21도 d). 원하는 데이타가 데이타메모리 DAM내에 있을때에도 블럭전송과 관계없이 리드할 수 있다. 또, 이 블럭전송중의 리드데이타 A는 출력회로 OUTC에서 송출되므로 패리티검사회로 PC2에 의해서 패리티검사된다. 여기에서 패리티에러가 발생하면 패리티검사회로 PC2는 패리티에러신호 Pe'를 고레벨하고, 제어회로 CONT는 패리티에러신호 Pe'가 공급되면 상기 블럭전송을 정지시켜 MPU에 에러신호
Figure kpo00074
를 공급한다. MPU는 에러신호
Figure kpo00075
에 의해 패리티 에러가 있던 것을 알면 예외처리, 예를 들면 데이타 A를 포함하는 블럭의 메인 메모리 MM에서 재차 리드할 것을 지지한다.
이와 같이 해서 상기 실시예에서는 블럭전송중에도 MPU가 캐시 메모리내에 있는 데이타에 대해서는 언제라도 필요할때 리드할 수 있다.
또, 상기 실시예의 캐시메모리에서는 사용자가 일부의 캐시영역에 대해서 LRU방식의 치환대상에서 제외시키는, 즉 항상 있는 데이타에 대해서는 그것을 캐시메모리상에 놓아두도록 지정할 수 있게 되어 있다. 이 경우에 카피백방식을 사용하면 그 지정된 영역에 대해서는 블럭치환이 없으므로, 주기적 또는 지정영역이 데이타로 충만되었을때에 그 내용을 메인 메모리로 보내서 데이타의 일치를 확보해줄 필요가 있다.
그 경우의 데이타블럭전송 요구는 MPU의 처리와 비동기로 발생하지만 상기 실시예의 캐시 메모리는 블럭버퍼를 갖고 있으므로 스루풋을 저하시키지 않고 캐시메모리내의 소정의 영역내의 데이타를 메인 메모리로 블럭전송할 수 있다.
또, 상기 실시예에서는 메인메모리에서 캐시메모리에 대하여 데이타의 블럭전송중인 것을 나타내는 비트 BT를 디렉토리메모리에 마련하고 있지만 캐시메모리에서 메인메모리에 대해서 데이타의 블럭전송중인 것을 나타내는 비트를 디렉토리메모리에 마련하도록 해도 좋다.
또한, 상기 실시예는 MPU에서 공급된 어드레스신호와 어드레스카운터 ADC에서 송출되는 어드레스버스상의 어드레스신호가 일치한 경우에만 NAND게이트 NAND9를 열어서 패리티에러신호
Figure kpo00076
를 제어회로 CONT에 공급하고, 제어회로 CONT가 MPU에 에러신호
Figure kpo00077
를 공급하도록 하고 있다. 이것에 의해서 MPU가 현재 요구하고 있는 데이타이외의 전송데이타의 패리티에러에 의한 시스템의 저하를 방지할 수 있다.
제22도에는 블럭버퍼 BB의 다른 실시예가 도시되어 있다.
제22도에 있어서, 제15도에 도시한 실시예와 동일부호가 붙여진 부분은 서로 대응하고 있다. 그러므로, 본 실시예에서는 제15도에 도시한 실시예와의 상이점에 대해서 주로 설명한다.
제22도에서 블록버퍼 BB는 메인메모리 MM에서 블럭버퍼 BB로의 블럭전송시에 패리티검사회로 PC1에서 출력되는 패리티에러검출신호 Pe에 따라 리트라이처리를 실행하는 리트라이제어회로 RT-CONT를 구비하고 있다.
이 리트라이제어회로 RT-CONT는 제어회로 CONT로부터 상기 블럭전송에서 최초에 전송되는 데이타 이후에 패리티에러, 즉 패리티에러신호 Pe가 고레벨로 되면 메인메모리 MM으로 재송신할 것을 요구할 지 또는 2번째로 전송되는 데이타이후에 패리티에러가 발생하면 메인 메모리 MM으로 재차 송부할 것을 요구할지를 지정하는 신호 RTCS가 공급되어 있다. 리트라이제어회로 RT-CONT는 상기 신호 RTCS에 따라 블럭전송의 최초에 전송되는 데이타 이후, 또는 2번째이후에 전송되는 데이타에 패리티에러가 발생하면 어드레스카운터 ADC의 갱신동작을 정지시키는 신호 ADRCSS를 어드레스카운터 ADC로 메인메모리 MM에 대해서 데이타의 재송신을 요구하는 신호RTRS를 출력하도록 되어 있다.
제어회로 CONT는 신호 RTCS에 의해 리트라이제어회로 RT-CONT가 최초에 전송되는 데이타이후에 패리티에러가 발생해서 재전송을 메인메모리MM으로 재전송하도록 지시되어 있으면 최초에 전송되는 데이타에서 패리티에러가 발생해서 패리티에러검출신호
Figure kpo00078
가 저레벨이라도 에러신호
Figure kpo00079
를 MPU로 송출하지 않는다.
본 실시예에서는 리트라이제어회로 RT-CONT에 의해 블럭전송시에 전송되는 최초이후, 또는 2번째 이후의 데이타에 패리티에러가 있었던 경우 캐시메모리측에서 자동적으로 리트라이처리가 실행되어 MPU의 부담이 경감된다. 그 결과 패리티에러에 의한 시스템의 스루풋의 저하가 방지되게 된다.
제23도에는 BBV레지스터 BBVR의 다른 실시예가 도시되어 있다.
먼저 본 실시예의 개요를 설명한다.
상술한 블럭전송시에 1비트씩 BBV비트를 세트하고, 블럭버퍼 BB에서 데이타메모리 DAM으로의 전송종료시에는 전송데이타폭에 따라 여러개의 BBV비트를 동시에 선택할 수 있는 디코더를 마련하여 1비트씩 세트한 BBV를 여러개의 비트를 동시에 리세트할 수 있도록 한 것이다.
BBV 레지스터 BBVR을 상기 수단에 의해 구성하면 데이타전송종료시에 디코더에서 블럭버퍼 BB내의 데이타의 유효/무효를 나타내는 여러개의 BBV비트를 동시에 선택하는 것에 의해 BBV비트의 리세트에 필요한 시간을 단축시켜서 MPU의 대기시간을 감소시키고, 그것에 의해 마이크로프로세서유닛시스템의 시스템의 스루풋을 향상시킬 수 있다.
제23도에 있어서, BBV 레지스터 BBVR은 X디코더 X-DEC3과 X-DEC4', 워드선 B1-W0∼B1-W31, 메모리셀 BBV'-MC0∼BBV'-MC31, NOR 게이트 NOG2 및 인버터 INV9로 구성된다. 메모리 셀 BBV'-MC0∼BBV'-MC31은 제19도에 도시한 메모리 셀 BBV-MC0∼BBV-MC31에 각각 대응하고 있고, 메모리셀 BBV-MC0∼BBV-MC31과 마찬가지로 BBV비트의 상태, 즉 1로 세트되어 있는지, 0으로 리세트되어 있는지를 나타내고 있다. X-DEC은 제17도에 도시한 바와 같이 5비트 구성의 어드레스신호 ADR4에 따라 워드선 B1-W0∼B1-W31중 1개를 선택하여 고레벨로 한다.
메모리셀 BBV'-MC0∼BBV'-MC31은 각각 2개의 NAND게이트 NANDG의 교차접속으로 구성되는 세트리세트형 플립플롭 FF'0∼FF'31로 구성되고, 또 각각 플립플롭 FF'0∼FF'31의 출력신호를 반전시켜서 NOR게이트 NOG2에 공급하는 클럭드인버터 IV8'로 구성되고, 선택된 워드선, 예를 들면 B1-W0이 선택되어 고레벨로 되면 인버터 IV8'가 동작상태로 되어 플립플롭 FF'20의 출력신호를 반전시킨 신호를 NOR게이트 NOG2의 입력단자에 공급한다. NOR게이트 NOG2는 이 인버터 IV8'의 출력 신호가 고레벨이면 출력신호
Figure kpo00080
를 저레벨로 하여 제어회로 CONT에 공급하고, 리드된 BBV비트가 유효인 것을 나타낸다.
X-DEC4'는 상술한 패리티검사회로 PC1에서 패리티에러신호를 제어회로 CONT에서 세트신호 SET3, 리세트신호 RESET3을, 캐시메모리 C-MEM의 도시하지 않은 외부단자에서 초기화신호를 각각 공급받는다.
X디코더 X-DEC4'는 플립플롭 FF'0∼FF'31의 세트단자측에 결합되는 NAND게이트 NAND'0∼NAND'31로 구성되는 1/32 선택디코더, 플립플롭 FF'0∼FF'31의 리세트단자측에 결합되는 NAND게이트 NAND'41∼NAND'48로 구성되는 4/32 선택 디코더, 인버터 INV1∼INV8 및 NAND게이트 NAND'51∼NAND'58로 구성된다. 이중 NAND게이트 NAND'0∼NAND'31에는 어드레스카운터 ADC에서 공급되는 어드레스신호 adr20∼adr24의 상보어드레스신호 adr'20∼
Figure kpo00081
∼adr'24,
Figure kpo00082
가 입력되고, 제어회로 CONT에서 출력되는 세트신호 SET3에 따라 패리티검사회로 PC1에서 공급되는 패리티에러신호 Pe가 에러없음을 나타내는 저레벨일때 세트신호 S'를 출력하여 대응하는 플립플롭을 세트한다. 즉, 그 플립플롭에 BBV비트 1을 세트한다. 또 4/16 선택디코더를 구성하는 NAND게이트 NAND'51∼NAND'58은 4개의 플립플롭에 대응해서 1개씩 마련되어 있고, 어드레스카운터 ADC에서 공급되는 어드레스신호 adr30∼adr32의 상보어드레스신호 adr'30,
Figure kpo00083
∼adr'32,
Figure kpo00084
가 공급되고 있고, 블럭버퍼 BB에서 데이타 메모리 DAM으로의 16바이트의 데이타와 대응하는 16비트의 패리티비트의 데이타전송 종료후에 리세트신호 RESET3에 동기해서 리세트신호 R'를 발생한다.
또, 4/16 선택디코더를 구성하는 NAND게이트 NAND'51∼NAND'58과 플립플롭 FF'0∼FF'31사이에는 전원투립시에 전체비트를 리세트하기 위해 NAND게이트 NAND'41∼NAND'48의 출력과 초기화신호 INT를 입력으로 하는 NAND게이트 NAND'51∼NAND'58과 인버터 INV1∼INV8이 접속되어 있다.
따라서, 이 실시예의 캐시메모리에서는 메인메모리 MM에서 블럭버퍼 BB에 대해 4바이트의 데이타와 대응하는 4비트의 패리티데이타가 전송되어 블럭버퍼 BB에 저장되면 BBV레지스터 BBVR의 1/16 선택디코더에 의해 소정의 메모리셀, 예를 들면 BBV'-MC0의 플립플롭 FF'20이 선택되고, 그 데이타에 패리티에러가 없었던 경우 BBV비트에 1이 세트된다. 그리고, 1블럭(본 실시예에서는 상술한 바와 같이 16바이트)분 모든 데이타와 대응하는 패리티 데이타가 블럭버퍼 BB로 전송된 후 MPU가 데이타메모리 DAM을 액세스하고 있지 않는 사이클을 이용해서 블럭버퍼 BB에서 데이타메모리DAM으로 16바이트단위로 데이타버스 DB11을 거쳐서 데이타가, 패리티데이타버스 PB5를 거쳐서 16바이트단위로 패리티데이타가 전송되고, 이때 동시에 BBV레지스터 BBVR에서는 4/16 선택디코더 NAND'0∼NAND'11중 전송된 데이타에 대응한 1개가 선택되고, 4개의 플립플롭이 동시에 리세트되어 그 4개의 플립플롭의 BBV비트가 0으로 리세트된다. 따라서, BBV비트를 1비트씩 세트할때 마찬가지로 리세트할 필요가 없어 그만큼 MPU의 대기시간이 단축된다.
제24도에는 동기모드의 타이밍도가, 제25도에는 비동기모드의 타이밍도가 도시되어 있다.
제1도 및 제24도에 있어서, 본 실시예에서는 사용자가 캐시메모리 C-MEM과 메인스토리지컨트롤러 MSC 및 메인메모리 MM을 동일클럭으로 동작(동기 모드)시키도록 시스템을 구성한 경우에는 메인스토리지컨트롤러 MSC에서 저레벨의 SYNC신호를 캐시메모리 C-MEM에 부여하도록 한다. 그러면, 메인스토리지컨트롤러 MSC에서 입력된
Figure kpo00085
신호는 동기회로 SYCT를 통하지 않고 제어회로 CONT에 공급된다. 그리고, 이 모드에서는 메인스토리지컨트롤러 MSC에서 부여되는 신호
Figure kpo00086
가 공통의 시스템클럭 CLK에 대해서 항상 일정한 세트업시간 Ts를 갖게 해서 변화시킬 수 있다. 그 때문에 캐시메모리 C-MEM은 제24도에 도시한 바와 같이 시스템 클럭 CLK의 상승타이밍 t1에서
Figure kpo00087
신호를 입력하여 t3의 타이밍에서 다음의 처리로 이행할 수 있어 시스템의 처리속도가 빨라진다.
다음에 비동기모드를 제25도에 따라 설명한다. 제25도에 있어서, 사용자가 캐시메모리 C-MEM, 메인스토리지컨트롤러 MSC 및 메인메모리 MM을 각각의 클럭으로 동작시키는(비동기모드)시스템을 구성한 경우에는 메인스토로지컨트롤러 MSC에서 고레벨의 SYNC신호를 캐시메모리 C-MEM에 부여하도록 한다. 그러면
Figure kpo00088
신호는 스위치 SW를 통해서 동기회로 SYCT에 입력되고, 여기에서 캐시 메모리측의 클럭 CLK1에 동기화된 신호
Figure kpo00089
으로 되어 내부의 제어회로 CONT에 공급된다. 이 경우 제25도에 도시한 바와 같이 클럭 CLK1의 상승 t1근방에서 변화하는
Figure kpo00090
신호가 들어오면 이것을 입력할 수 없고, 클럭 CLK1의 다음의 상승 t2에서
Figure kpo00091
신호가 입력되어 내부신호
Figure kpo00092
가 형성된다. 그 때문에 캐시 메모리 C-MEM이 다음의 동작을 할 수 있는 것은 t4의 타이밍으로 되어 동기모드에 비해 1머신사이클이 지연된다. 단, 사용자에 있어서는 외부에 동기회로를 마련해서
Figure kpo00093
신호를 동기화하고 나서 입력해줄 필요가 없으므로 시스템설계가 용이하게 된다.
또한, 상기 실시예에서는 동기/비동기모드의 전환, 즉 스위치 SW의 전환을 칩에 마련한 외부단자 SYT1을 거쳐서 공급되는 SYNC신호에 의해 실행하도록 하고 있지만 외부단자 SYT1 대신에 레지스터 또는 플래그를 마련하고, 시스템상승에 따라 프로그램에 의해서 그 레지스터 또는 플래그를 시스템에 따른 값으로 설정하는 것에 의해 동기/비동기 모드의 설정을 실행하도록 해도 된다. 또는 퓨즈와 같은 프로그램 소자를 갖는 상태설정수단을 마련하여 그 퓨즈에 큰 전류를 흐르게 해서 녹여서 절단하거나 레이저를 조사해서 절단하는 것에 의해 전환수단(스위치 SW)의 상태를 설정해서 모드의 지정을 실행할 수 있게 구성할 수도 있다. 상기 레이저에 의한 퓨즈의 절단으로 프로그램하는 방식은 메이커에서만 프로그램이 가능하지만 전류에 의한 절단방식은 퓨즈의 양끝에 마련한 패드를 외부의 핀에 접속시키는 것에 의해 사용자가 프로그램하도록 할 수 있다.
이상 설명한 바와 같이 상기 여러 실시예는 다음에 기재하는 여러가지의 효과가 있다.
(1) 라이트용 어드레스 및 데이타를 유지하는 레지스터를 여러개 마련함과 동시에 그 레지스터를 듀얼 또는 트리플로프 레지스터로 구성하도록 했으므로 라이트사이클이 연속하는 경우에도 라이트어드레스와 데이타를 연속해서 입력해둘 수 있음과 동시에 상기 4개의 레지스터로 이루어지는 라이트스토어버퍼로의 라이트와 언로딩을 비동기로 실행할 수 있으므로, 버스가 비어 있는 시간에 차례차례 라이트데이타를 언로딩해서 데이타메모리 또는 메인메모리에 대한 라이트를 실행할 수 있게 되므로 마이크로프로세서유닛시스템의 스루풋이 향상된다는 효과가 있다.
(2) 외부에서 공급된 어드레스와 상기 라이트스토어버퍼내의 어드레스를 비교하는 어드레스비교기를 마련하여 양자가 일치했을때 대응하는 레지스터내의 데이타를 버스상으로 출력시키도록 했으므로, 태그비교기에 의한 어드레스태그의 비교와 병행해서 라이트스토어퍼로써의 스토어버퍼에 대응해서 마련된 비교기에 의한 어드레스의 비교를 실행하고, 일치했을때 라이트스토어버퍼내의 데이타를 MPU에 부여할 수 있으므로 마이크로프로세서유닛시스템의 스루풋의 향상이 도모된다는 효과가 있다.
(3) 캐시메모리의 내부데이타버스와 데이타메모리부사이에 1블럭분의 데이타를 한번에 저장할 수 있는 블럭버퍼를 마련하고, 이 블럭버퍼와 데이타메모리부사이의 데이타의 전송을 캐시메모리와 메인메모리사이의 데이타전송보다도 큰 단위로 실행할 수 있도록 구성하게 했으므로 메인메모리로 전송해야할, 또는 메인메모리에서 전송된 데이타를 1블럭분 모아서 블럭버퍼내에 입력해두는 것에 의해 캐시메모리와 메인메모리사이의 블럭전송중에도 MPU가 데이타메모리부를 액세스할 수 있게 되고, 이것에 의해 MPU의 대기시간이 감소되어 마이크로프로세서 유닛시스템의 스루풋이 향상된다는 효과가 있다.
(4) 상기 블럭버퍼를 듀얼포트의 레지스터로 구성함과 동시에 MPU가 요구하는 데이타가 이 블럭버퍼내에 있는지 없는지를 판정하는 판정수단을 마련하도록 했으므로 캐시의 히트/미스히트의 판정이 나오기전에 블럭버퍼내에 데이타가 있는지 없는지를 알 수 있음과 동시에 캐시메모리가 듀얼포트이므로 캐시메모리를 메인메모리사이의 데이타블럭전송중에도 MPU가 블럭버퍼에서 데이타를 리드할 수 있고, 이것에 의해서 MPU가 캐시메모리의 데이타어레이부에서 데이타를 리드하는 것보다 빨리 원하는 데이타를 얻을 수 있게 되어 마이크로프로세서유닛시스템의 스루풋이 향상된다는 효과가 있다.
(5) 본 실시예의 캐시메모리는 MPU에서 공급된 어드레스와 메인메모리측의 버스상으로 출력된 어드레스를 비교하는 비교기와 이 비교기의 출력신호에 의해 패리티에러신호의 출력을 금지하기 위한 게이트수단을 마련하고, 디렉토리메모리에 데이타의 유효/무효를 나타내는 비트열을 마련해서 패리티에러를 발생한 데이타에 대응하는 어드레스어레이내의 유효/무효비트를 무효상태로 설정시키도록 했으므로 MPU가 요구하는 데이타가 블럭전송에 의해 메인메모리에서 상기 캐시메모리로 전송될때 원하는 데이타이외의 데이타가 패리티에러를 갖고 있어도 MPU에 대해서는 패리티에러검출신호가 출력되지 않게 되어 마이크로프로세서유닛시스템의 스루풋의 저하를 방지할 수 있다는 효과가 있다.
(6) 본 실시예의 캐시메모리는 MPU에서 공급된 어드레스와 메인메모리측의 버스상으로 출력된 어드레스를 비교하는 비교기와 이 비교기의 출력신호에 의해 패리티에러신호의 출력을 금지하기 위한 게이트수단을 마련함과 동시에 이 게이트수단에 의해 에러신호의 출력이 금지되어 있는 상태에서 패리티에러가 검출된 경우에 에러를 갖는 데이타를 재차 리드시키는 리트라이제어회로를 마련했으므로 MPU가 요구하는 데이타가 블럭전송에 의해 메인메모리에서 상기 캐시메모리로 전송될때 원하는 데이타이외의 데이타가 패리티에러를 갖고 있어도 캐시메모리측의 판단으로 메인메모리에 리트라이가 걸려서 MPU에 대해서는 패리티에러검출신호가 출력되지 않게 되고, 이것에 의해 마이크로프로세서유닛시스템의 스루풋의 저하를 방지할 수 있다는 효과가 있다.
(7) 본 실시예의 캐시메모리는 상기 블럭버퍼내의 각 데이타에 대응되어 데이타의 유효/무효를 나타내는 비트군을 마련하여 블럭전송시에는 1비트씩 플래그비트를 선택하고, 블럭버퍼에서 데이타메모리로의 전송종료시에는 전송데이타폭에 따라 여러개의 비트를 동시에 선택할 수 있는 디코더를 마련하여 1비트씩 세트한 플래그를 다수 비트동시에 리세트할 수 있도록, 또는 일괄해서 리세트할 수 있도록 했으므로 블럭버퍼내의 데이타의 유효/무효를 나타내는 비트의 리세트에 필요한 시간을 단축시켜서 MPU의 대기시간을 감소시키고, 이것에 의해 마이크로프로세서유닛시스템의 스루풋을 향상시킬 수 있다는 효과가 있다.
(8) 본 실시예의 캐시메모리는 캐시메모리내에 데이타컴플리트신호의 동기회로와 데이타컴플리트신호를 그대로 내부의 제어부(제어회로)에 공급할 것인지 동기회로를 통과시키고나서 공급할것인지를 전환하는 전환수단을 마련하고, 외부단자 또는 레지스터의 설정값이 아니면 프로그램용 소자등에 의해서 전환수단의 상태, 즉 동기/비동기의 동작모드를 지정할 수 있도록 구성했으므로 사용자가 자기가 설계하고자 하는 시스템에 따라 속도 우선의 시스템 또는 외부회로가 필요없는 설계가 용이한 시스템중 어느 하나를 선택할 수 있게 되어 캐시메모리의 융통성 및 사용의 용이성이 향상된다는 효과가 있다.
이상 본 발명자들에 의해서 이루어진 발명을 상기 실시예에 따라 구체적으로 설명했지만 본 발명은 상기 실시예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러가지로 변경가능한 것은 물론이다.
예를 들면 제9도 a에 있어서 인터페이측의 처리중(스텝 11∼20)에 있어서 상기 A비트를 감시해서 MPU에 의한 리드액세스를 대기시키는 대기신호를 형성하는 등의 처리에 A비트를 사용할 수 있다. 제15도에 있어서, 블럭전송에서 2번째이후의 데이타에 패리티에러가 발생하면 본 실시예에서는 디렉토리메모리내의 유효비트 V'를 0으로 하지만 상기한 경우라도 1로 하고, 에러가 발생한 어드레스를 레지스터군내의 레지스터에 라이트하여 그 어드레스의 데이타가 MPU로 리드요구된 시점에서 재차 리드해도 된다.
제15도와 제22도에 있어서, 상기 게이트회로 G의 제어를 제어회로 CONT로부터의 제어신호 GC가 아닌 비교회로 CMP6의 일치신호 MTH에 의해 제어하고 일치했을때에는 데이타버스 DB1과 DB9를 결합시키도록 해도 된다. 제15도, 제20도∼제22도에 있어서, 블럭전송중의 데이타에 패리티에러가 있었던 경우에 대해 설명했지만 어드레스태그어레이 및 그밖의 캐시메모리내의 여러 장소에서 패리티검사를 실행하도록 한 시스템에 있어서 에러의 발생장소를 구별하는 경우에 적용할 수도 있다.
또, 상기 실시예에서는 캐시메모리 자신이 블럭전송제어기능을 갖는 것에 대해서 설명했지만 캐시메모리 외부의 블럭전송제어장치(DMA 컨트롤러)에 의해 블럭전송이 실행되는 경우에도 적용할 수 있다. 또한, 본 실시예의 캐시메모리에 데이타메모리에 리드/라이트되는 데이타를 블럭단위로 유지하는 버퍼 등 여러가지의 기능회로를 부가하도록 해도 좋다.
이상의 설명에서는 주로 본 발명자들에 의해 이루어진 발명을 그 배경으로 된 이용분야인 캐시메모리에 적용한 것에 대해서 설명했지만 본 발명은 그것에 한정되지 않고, 통신용 버퍼메모리나 화상용 필드메모리 및 그 밖의 버퍼기억장치 등 일반적으로 이용할 수가 있다.

Claims (7)

  1. 마이크로프로세서 유닛 및 메모리유닛에 결합되는 캐시메모리로써, 상기 마이크로프로세서유닛에서 연속적으로 공급된 여러개의 어드레스데이타에 따라서 상기 메모리유닛에서 리드된 여러개의 데이타를 연속적으로 저장하기 위한 블럭버퍼, 상기 블럭버퍼 및 상기 마이크로프로세서유닛중 적어도 한쪽에서 전송된 데이타를 저장하기 위한 데이타메모리, 상기 데이타메모리내에 저장된 데이타의 위치를 나타내는 어드레스태그데이타를 저장하기 위한 디렉토리메모리, 상기 여러개의 데이타중의 소정의 데이타를 상기 마이크로프로세서유닛 및 상기 메모리유닛 중 한쪽으로 전송하기 위한 데이타전송버스 및 상기 블럭버퍼로부터의 상기 여러개의 데이타를 상기 데이타메모리로 전송하기 위한 블럭데이타전송버스를 포함하며, 상기 블럭데이타전송 버스에 의해서 상기 블럭버퍼에서 상기 데이타메모리로 한번에 전송되어야 할 데이타의 비트수는 상기 데이타전송버스를 거쳐서 전송되는 데이타의 비트수보다도 2배 이상 큰 캐시메모리.
  2. 제1항에 있어서, 또, 상기 마이크로프로세서유닛에서 공급된 어드레스데이타와 상기 디렉토리메모리에서 리드된 어드레스태그데이타를 비교하기 위한 태그비교기를 포함하는 캐시메모리.
  3. 제2항에 있어서, 상기 메모리유닛에서 상기 블럭버퍼로 전송된 여러개의 데이타의 각각은 패리티검사데이타를 갖는 캐시메모리.
  4. 제3항에 있어서, 상기 블럭버퍼는 여러개의 멀티포트레지스터를 포함하는 캐시메모리.
  5. 제4항에 있어서, 디렉토리메모리는 전송비트를 저장하고, 전송비트의 각각은 상기 메모리유닛 및 상기 블럭버퍼사이에서 데이타전송동작이 실행되어야할지 되지 않아야 할지를 나타내는 캐시메모리.
  6. 제5항에 있어서, 상기 태그비교기가 상기 마이크로프로세서유닛으로부터의 어드레스데이타 및 상기 디렉토리메모리로부터의 어드레스태그데이타의 일치를 검출하며, 또한 상기 전송비트가 상기 메모리유닛 및 상기 블럭버퍼사이에서 데이타전송동작이 실행되고 있지 않을 때 상기 데이타 메모리에서 상기 마이크로프로세서유닛으로 상기 디렉토리메모리내의 어드레스태그데이타에 대응하는 데이타를 전송하는 캐시메모리.
  7. 제6항에 있어서, 상기 캐시메모리는 1개의 반도체칩상에 형성되는 캐시메모리.
KR1019890007950A 1988-06-10 1989-06-09 싱글칩형 캐시메모리 Expired - Lifetime KR970000837B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR94011054A KR970000839B1 (en) 1988-06-10 1994-05-20 Memory system

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
JP63143078A JPH023172A (ja) 1988-06-10 1988-06-10 半導体記憶装置
JP63-143078 1988-06-10
JP63155698A JPH01320555A (ja) 1988-06-22 1988-06-22 バッファ記憶装置
JP63-155698 1988-06-22
JP63162095A JP2580263B2 (ja) 1988-06-28 1988-06-28 バッファ記憶装置
JP63-162095 1988-06-28
JP63-204453 1988-08-16
JP63204453A JPH0253155A (ja) 1988-08-16 1988-08-16 半導体記憶装置
JP63212626A JPH0261737A (ja) 1988-08-29 1988-08-29 記憶装置
JP63-212626 1988-08-29

Publications (2)

Publication Number Publication Date
KR900000778A KR900000778A (ko) 1990-01-31
KR970000837B1 true KR970000837B1 (ko) 1997-01-20

Family

ID=27527664

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019890007950A Expired - Lifetime KR970000837B1 (ko) 1988-06-10 1989-06-09 싱글칩형 캐시메모리

Country Status (1)

Country Link
KR (1) KR970000837B1 (ko)

Also Published As

Publication number Publication date
KR900000778A (ko) 1990-01-31

Similar Documents

Publication Publication Date Title
US5758056A (en) Memory system having defective address identification and replacement
US7302545B2 (en) Method and system for fast data access using a memory array
US4764861A (en) Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US5454093A (en) Buffer bypass for quick data access
US5954435A (en) Memory apparatus and data processor using the same
KR100341948B1 (ko) 제어된버스트메모리액세스기능을갖는데이타처리기및그방법
US5201041A (en) Cache bypass apparatus
US5809280A (en) Adaptive ahead FIFO with LRU replacement
US8117395B1 (en) Multi-stage pipeline for cache access
JPH10133947A (ja) 統合されたプロセッサ・メモリ装置
US5535350A (en) Cache memory unit including a replacement address register and address update circuitry for reduced cache overhead
JPH06243039A (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
KR20050085150A (ko) 사이클당 복수의 액세스를 지원하는 캐시 메모리를 구비한마이크로프로세서
JPH10177519A (ja) 統合されたプロセッサ・メモリ装置
US5014240A (en) Semiconductor memory device
US5450565A (en) Circuit and method for selecting a set in a set associative cache
US6754135B2 (en) Reduced latency wide-I/O burst architecture
US4768197A (en) Cache error code update
US5854943A (en) Speed efficient cache output selector circuitry based on tag compare and data organization
KR100377708B1 (ko) 저소비 전력화가 가능한 파이프라인 방식의 반도체 기억장치
US5165028A (en) Cache memory having pseudo virtual addressing
EP0375864A2 (en) Cache bypass
KR970000837B1 (ko) 싱글칩형 캐시메모리
KR100517765B1 (ko) 캐시 메모리 및 그 제어 방법
EP0613087B1 (en) Apparatus and method for achieving high-speed data read access to memory

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 19890609

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19940520

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 19890609

Comment text: Patent Application

G160 Decision to publish patent application
PG1605 Publication of application before grant of patent

Comment text: Decision on Publication of Application

Patent event code: PG16051S01I

Patent event date: 19961227

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 19970329

NORF Unpaid initial registration fee
PC1904 Unpaid initial registration fee