KR101077513B1 - 캐시 메모리 장치, 연산 처리 장치 및 그 제어 방법 - Google Patents

캐시 메모리 장치, 연산 처리 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR101077513B1
KR101077513B1 KR1020097025901A KR20097025901A KR101077513B1 KR 101077513 B1 KR101077513 B1 KR 101077513B1 KR 1020097025901 A KR1020097025901 A KR 1020097025901A KR 20097025901 A KR20097025901 A KR 20097025901A KR 101077513 B1 KR101077513 B1 KR 101077513B1
Authority
KR
South Korea
Prior art keywords
cache
data
register
replacement
address
Prior art date
Application number
KR1020097025901A
Other languages
English (en)
Other versions
KR20100006588A (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 KR20100006588A publication Critical patent/KR20100006588A/ko
Application granted granted Critical
Publication of KR101077513B1 publication Critical patent/KR101077513B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/808Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout using a flexible replacement scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

복수의 캐시 라인을 가지는 웨이를 복수 구비하는 데이터 유지부와, 데이터 유지부가 가지는 캐시 라인의 1라인분 또는 캐시 라인의 일부의 데이터를 유지하는 교체 데이터 레지스터와, 데이터 유지부에서 고장이 발생한 고장 캐시 라인 및 고장 캐시 라인 내의 고장 발생부를 지시하는 인덱스 어드레스를 유지하는 교체 어드레스 레지스터와, 고장 발생부를 포함하는 웨이의 정보를 유지하는 교체 웨이 레지스터와, 데이터 유지부에 액세스를 행할 경우에, 액세스에 사용되는 인덱스 어드레스와 교체 어드레스 레지스터가 유지하는 인덱스 어드레스를 비교하는 어드레스 매치 회로와, 데이터 유지부에 액세스를 행할 경우에, 액세스에 사용되는 웨이 정보와 교체 웨이 레지스터가 유지하는 웨이 정보를 비교하는 웨이 매치 회로를 구비하도록 캐시 메모리 장치를 구성했다.
Figure R1020097025901
캐시 라인, 웨이, 데이터 유지부, 레지스터

Description

캐시 메모리 장치, 연산 처리 장치 및 그 제어 방법{CACHE MEMORY DEVICE, ARITHMETIC PROCESSING UNIT, AND ITS CONTROL METHOD}
본 발명은, 캐시 라인에 발생한 고장을 구제(救濟)하는 캐시 라인 교체 레지스터를 구비한 캐시 메모리 장치, 연산 처리 장치 및 그 제어 방법에 관한 것이다.
종래의 캐시 메모리의 고정 고장에 대한 구제 처치로서 블록 축퇴(縮退) 및 WAY(웨이) 축퇴라는 방법이 이용되고 있었다. 블록 축퇴 및 WAY 축퇴에서는, 캐시 메모리의 WAY 단위로 캐시 메모리 고장 횟수를 관측하고, 단위시간 내에 발생하는 고장 횟수가 규정의 역치(threshold value)를 넘으면, 블록 또는 WAY의 분리를 행한다. 처음 역치를 넘었을 때에 고장나 있었던 캐시 라인과 그 WAY를 분리하는 기능을 블록 축퇴라 한다. 블록 축퇴에서는 1라인분(分)의 데이터가 분리된다. 블록 축퇴된 캐시 라인 이외의 데이터에도 고장이 발생하면 블록 축퇴 대상을 마지막에 고장이 발생한 캐시 라인과 WAY로 전환한다. 즉, 블록 축퇴에 의한 고장 구제는, 캐시 메모리 1라인분의 데이터의 보호를 목적으로 하고 있어, 복수 캐시 라인이 고장나 있을 때는, 블록 축퇴 발생 후에도 캐시 메모리의 고장 횟수가 증가하고, 이것이 규정치에 도달했을 때에 고장나 있었던 WAY를 분리한다. WAY 축퇴를 일으켰을 때, 프로세서는 동작을 계속할 수 있다고는 하나, 대폭적인 성능 저하를 일으킨다. 그래서, WAY 축퇴 전에 1캐시 라인만을 분리하는 블록 축퇴를 일으킴으로써, 성능의 저하 정도를 저감하고 있다.
그러나, 캐시 메모리의 기억 용량이 작은 경우에는, 1캐시 라인의 손실에 의한 성능 열화도 무시할 수 없게 되기 때문에, 블록 축퇴를 일으켰을 경우에도 고장 칩은 교환 대상으로 할 필요가 있다. 복수의 코어를 가진 CPU의 경우, 1비트 고정 고장에서 블록 축퇴한 코어만을 교환할 수 없기 때문에, 정상 동작하고 있는 다른 코어를 전부 포함한 칩 단위로 교환하게 된다. 최근의 CPU 개발에서는 칩에 탑재할 코어 수를 증가시키면서, 1차 캐시 메모리의 용량을 축소하는 경향이 있기 때문에, 종래의 블록 축퇴에 의한 캐시 메모리의 고장 보호 기구에서는, 고장나 있지 않은 코어를 낭비로 교환 대상으로 할 가능성이 높아지게 된다. 그 결과, 종래의 블록 축퇴에 의한 구제 처치에서는, CPU 칩 단위에서의 고장 내성이 불충분했다.
그래서, 1비트 고정 고장이 일어났을 때에, 고장 라인의 캐시 데이터를 등록하기 위한 캐시 라인 교체 레지스터를 설치함으로써 1비트 고정 고장 라인의 데이터를 교체하여, 캐시 라인을 손실하지 않고, 1비트 고정 고장을 구제하는 방법이 고안되었다(특허문헌 1).
캐시 라인 교체 레지스터의 실장 시에, 종래 채용되어 온 방식에서는, 교체 대상 어드레스의 비교에 물리 어드레스를 사용하고, 이것이 일치했을 때에 캐시 라인 교체 레지스터의 데이터를 판독하고 있었다. 물리 어드레스는 비트 수가 많기 때문에 어드레스 처리에 시간이 걸린다. 또한, 비교 대상이 되는 물리 어드레스를 얻기 위해서는, TLB(Translation Look-aside Buffer)나 캐시 태그를 참조할 필요가 있다. 그 때문에, 캐시 메모리의 판독에서는 캐시 라인 교체 레지스터를 사용할 수 있었지만, 캐시 메모리의 기입에서는, TLB, 캐시 태그의 참조 비교와 기입의 플로우(flow)가 통상의 캐시 제어 플로우로부터 크게 벗어나게 되기 때문에, 캐시 라인 교체 레지스터의 사용을 포기하고 있었다. 즉, 캐시 교체 레지스터가 스토어(store) 대상이 될 때마다, 캐시 라인 교체 레지스터를 무효화하고 주기억 참조부터 다시하는 등, 스토어 동작 시에 성능 저하가 발생하고 있었다.
또한, 종래의 캐시 라인 교체 레지스터는, 캐시 라인 1라인분의 모든 비트를 교체할 수 있게 구성되어 있었다. 그러나, 실제로는 1캐시 라인 중에, 복수 개소에서 1비트 에러가 생길 확률은 낮아, 회로 자원의 사용 효율이 그다지 좋지 않았다.
그래서, 본 발명에서는, 종래의 캐시 라인 교체 레지스터의 문제를 해결하는 새로운 구성의 캐시 라인 교체 레지스터를 제안한다.
그래서 우선, 이하에, 본 발명의 캐시 라인 교체 레지스터가 탑재되어 있지 않은, 종래의 캐시의 구성에 관하여 설명한다. 본 발명의 구성은, 캐시 라인 교체 레지스터가 탑재되어 있지 않은, 종래의 캐시의 동작을 부분적으로 바꾸는 기능을 추가함으로써 실현되기 때문에, 종래의 캐시의 구성에 대해 명확히 해두기 위해서이다.
도 1에, 종래의 CPU의 구성을 나타낸다.
도 1에 나타낸, CPU(101)는 4개의 코어(CORE-0(102-0), CORE-1(102-1), CORE-2(102-2), CORE-3(102-3))를 구비한다(이하, CORE를 102라 함).
각 코어(CORE(102))는, IU(Instruction Unit : 명령 처리 장치)(104-0, 104-1, 104-2, 104-3 : 이하, IU를 104라 함)와, EU(Execution Unit : 연산 장치)(105-0, 105-1, 105-2, 105-3 : 이하, EU를 105라 함)와, SU(Storage Unit : 스토리지 제어 장치)(103-0, 103-1, 103-2, 103-3 : 이하, SU를 103이라 함)를 구비한다.
또한, SU(103)는, 명령 캐시인 IF-LBS(Instruction Fetch Local Buffer Storage)(106-0, 106-1, 106-2, 106-3 : 이하, IF-LBS를 106이라 함)와, 오퍼랜드 캐시인 OP-LBS(Operand Local Buffer Storage)(107-0, 107-1, 107-2, 107-3 : 이하, OP-LBS를 107이라 함)를 각각 구비한다.
또한, CPU(101)에는, 2차 캐시인 SX(Second Cache)(108)를 구비하여, 각각의 코어(CORE(102))와의 데이터의 교환을 행하고, 또한 SX(108)는 SYSTEM BUS(109)를 통해 주기억인 MEMORY(110)와 데이터의 교환을 행한다.
이어서, 도 2에, CPU(101)에 탑재되어 있는 1차 캐시인 IF-LBS(106)와, OP-LBS(107)의 구성을 나타낸다.
캐시는, WAY0(201)과 WAY1(202)의 두 개의 WAY로 이루어진다. 어드레스 신호가 각각의 WAY에 주어지면, 각각의 어드레스의 데이터를 판독하고, 데이터 신호선에 출력한다. 데이터선(205)에는 WAY0의 캐시 RAM 출력 데이터가, 데이터선(206)에는 WAY1의 캐시 RAM 출력 데이터가 출력된다. 또한, WAY 선택회로(203)에 WAY 정보가 주어지면, 데이터선(205)과 데이터선(206) 중 어느 하나를 선택하고, IU(104)(또는 EU(105))에 데이터를 출력한다(207).
또한, 본 발명은, 명령 캐시(IF-LBS(106)), 오퍼랜드 캐시(OP-LBS(107))를 구성하는 1차 캐시를 대상으로 하는 것이다.
상술한 바와 같은 구성에서, 캐시의 동작에 대해서 흐름도를 이용하여 이하에 상세하게 설명한다.
우선, 도 3에 캐시의 판독 동작의 플로우를 나타낸다.
캐시 메모리의 판독에서는, 캐시 데이터부와 캐시 태그부 및 TLB부에 액세스한다.
캐시 데이터부에는 가상 어드레스로부터 비트 14~5를 취출(取出)해서 송출하고(S301), 참조한 다음 사이클에 RAM 내부에서 데이터의 취출을 행하고(S302), 그 다음 사이클에 모든 캐시 RAM으로부터 총 64바이트의 데이터가 취출된다(S303). 취출된 데이터는 32바이트의 2WAY분의 데이터로 구성된다.
캐시 태그부에는 가상 어드레스로부터 비트 14~6을 취출하여 송출하고(S304), 참조한 다음 사이클에 RAM 내부에서 태그 어드레스의 취출을 행하고(S305), 그 다음 사이클에 2WAY분의 물리 어드레스가 취출된다(S306).
TLB부에는 가상 어드레스로부터 비트 63~13을 취출하여 송출하는 동시에, 캐시 메모리의 참조를 행하는 액세스 공간을 나타내는 정보로서 액세스 공간 번호 내지 액세스 공간의 콘텍스트(context) ID, 세그먼트 테이블(segment table) 기점(起点) 등 액세스 공간을 나타내는 정보를 송출하고(S307), 참조한 다음 사이클에 TLB에 등록되어 있는 가상 어드레스와 액세스 공간을 나타내는 정보를 비교하여 일치한 등록 정보에 대응한 물리 어드레스의 취출을 행하고(S308), 그 다음 사이클에 1개의 물리 어드레스가 판독되고, 가상 어드레스로부터 물리 어드레스로의 변환을 완료한다(S309).
S310에서, 태그부로부터 판독된 2WAY분의 물리 어드레스와 TLB부로부터 판독된 물리 어드레스를 비교하여, 이것이 일치하고 있으면 캐시 메모리에 페치(fetch) 대상 데이터가 존재한다고 판단하고, 일치한 캐시 WAY의 데이터를 사용한다. S311에서, 캐시 태그에서 일치한 WAY를 나타내는 정보를 캐시 데이터부에 송출하고, S312에서, 캐시 데이터부로부터 판독된 2WAY의 데이터 중 한쪽을 선택하고, 캐시 메모리의 판독을 완료한다.
이후, 명령 캐시(IF-LBS(106))에서는, 판독된 32바이트의 데이터가 그대로 명령 처리 장치에 보내지고, 명령 처리 장치측에서는 4바이트 길이의 명령 8개분의 명령으로서 수신한다. 오퍼랜드 캐시(OP-LBS(107))에서는, 판독된 데이터는, 판독 대상의 데이터 폭 1바이트, 2바이트, 4바이트, 8바이트에 따라 판독 데이터의 얼라인먼트를 행함과 동시에, 필요에 따라 사인 확장(sign extension)을 행하여 1바이트, 2바이트, 4바이트의 데이터의 정부(正負)의 부호 부분을 확장한 데이터 형식으로 변환하고, 얼라인먼트와 사인 확장까지 완료한 데이터를 연산기에 대해 송출한다. 연산기측에서는 수신한 데이터를 수신 대상이 되는 레지스터에 기입하는 동시에, 수신한 데이터를 사용해서 연산을 개시한다.
캐시 메모리의 판독 제어에서, 액세스 개시 2사이클 후에 캐시 데이터, 캐시 태그, TLB가 판독된 시점에서, 각각에 구비된 고장 검출 회로에 의해, 고장의 유무를 확인한다. 고장이 없으면, 그대로 도 3에 나타낸 처리 순서에 따라 처리가 완료한다. 고장이 검출되었을 경우, 그것이 TLB의 고장이었을 경우에는, TLB를 모두 소거하고 TLB의 등록 처리부터 다시하지만, 그 세부에 대해서는 여기에서는 설명을 생략한다. 고장이 캐시 데이터 또는 캐시 태그에 있었을 경우의 종래의 처리 방식에 대해서는, 특허문헌 2에 개시되어 있다. 이 종래의 처리 방식에 대해서, 이하에 설명한다.
도 4, 도 5에, 고장이 캐시 데이터 또는 캐시 태그에 있었을 경우의 처리 동작의 플로우를 나타낸다. 도 4는, 오퍼랜드 캐시(OP-LBS(107))에서의 데이터 또는 태그에 고장이 있었을 경우의 고장 처리를 나타내고 있고, 도 5는, 명령 캐시(IF-LBS(106))에서의 데이터 또는 태그에 고장이 있었을 경우의 고장 처리를 나타내고 있다.
우선, 도 4에서, 캐시 데이터 또는 캐시 태그에 고장이 검출되면, SU(103) 내의 오퍼랜드 캐시(OP-LBS(107))는, 데이터 처리를 일시 중단하고, 캐시 제어부의 ERROR-STATE 플래그를 온(ON)으로 한다(S401). 에러된 캐시 라인 어드레스와 캐시 WAY를 ERAR(Error Address Register)에 등록한다(S402). ERAR에는 2종류가 있고, 오퍼랜드 캐시용의 OP-ERAR과 명령 캐시용의 IF-ERAR이 있다. 모두 캐시 라인 어드레스 비트 14~5와 WAY 정보를 유지한다. ERROR-STATE 동안은, 후속의 처리를 전부 중단하는 동시에, 그때까지 실행중이었던 처리, 예를 들면 주기억 또는 다른 캐시 메모리에 캐시 라인을 가져오는 것을 요구하는 처리가 해당하지만, 이 경우 캐시 라인이 와서 캐시 메모리에의 등록이 완료하는 것을 기다린다.
이후, 하위 계층의 캐시(SX(108))에 대하여, 고장 구제 처리를 실시해 주는 것을 요구하는 동시에, 오퍼랜드 캐시(OP-LBS(107))에 고장이 발생했음을 통지하 고, OP-ERAR의 정보로부터 고장난 캐시 메모리의 캐시 라인 어드레스와 캐시 WAY를 통지한다(S403).
고장 구제 처리 요구를 받은 하위 계층의 캐시에는, 통지원(通智元) 캐시 태그의 카피(copy)를 구비하고 있어, 고장 구제 처리를 위해 이를 참조한다(S404). 캐시 태그의 카피에는, 그 캐시 라인이 유효인지 무효인지를 나타내는 Valid 비트와 그 캐시 라인에 대응하는 물리 어드레스가 정보로서 저장되어 있다. 고장 처리가 요구된 캐시 라인이 유효인지의 여부를 판단하고(S405), 고장 처리가 요구된 캐시 라인이 무효인 상태였을 경우에는(No), 통지된 캐시 라인에 대해 고장을 원인으로 한 무효화를 지시하는 동시에, 그것이 오퍼랜드 캐시인지 명령 캐시인지 어느 쪽의 캐시 메모리에 대한 처리인지를 명시하고, 고장 캐시 라인 및 고장 WAY 정보를 그대로 고장 통지원에 반신한다(S406). 고장원의 캐시에서는 고장을 원인으로 한 무효화의 지시를 수신하면, 오퍼랜드 캐시 라인의 무효화 통지를 받은 캐시 라인과 캐시 WAY에 대하여, 오퍼랜드 캐시 태그의 유효 비트를 무효한 상태로 재기입하는 처리 플로우를 오퍼랜드 캐시 파이프라인에서 실행한다(S407). 재기입 처리를 행하는 오퍼랜드 캐시 파이프라인의 B 사이클(Buffer Read Cycle)이라는 플로우에서, ERROR-STATE 플래그를 오프(OFF)로 세트함으로써, 에러 처리를 완료하는 동시에 후속 명령의 실행을 재개하고, 동시에, 캐시 태그의 무효화가 완료했음을 하위 계층의 캐시에 통지하는 동시에, 무효화한 캐시 라인과 캐시 WAY를 통지한다(S408). 이 통지를 받아서, 하위 계층의 캐시에서는 캐시 태그 카피의 해당 라인은 무효한 상태로 재기입된다(S409).
캐시 태그 카피를 검색한 결과, 고장 처리 대상 캐시 라인이 유효한 상태이면(S405에서 Yes인 경우), 고장원 캐시에 대하여, 고장을 원인으로 한 캐시 라인의 토출(吐出)을 지시하는 동시에, 그것이 오퍼랜드 캐시에 대한 처리인 것을 명시하고, 고장 캐시 라인 및 고장 WAY 정보를 그대로 고장 통지원에 반신한다(S410). 고장원의 캐시에서는, 고장을 원인으로 한 캐시 라인 토출의 지시를 수신하면, 오퍼랜드 캐시 라인의 무효화 통지를 받은 캐시 라인과 캐시 WAY에 대하여, 오퍼랜드 캐시 태그를 참조하면서 오퍼랜드 캐시 데이터의 판독을 행하는 처리 플로우, 및 오퍼랜드 캐시 태그의 유효 비트를 무효한 상태로 재기입하면서 오퍼랜드 캐시 데이터의 판독을 행하는 처리 플로우를 실행한다(S411). 캐시 태그를 재기입하는 처리를 행하는 오퍼랜드 파이프라인의 B 사이클이라는 플로우에서 ERROR-STATE 플래그를 오프로 세트함으로써, 에러 처리를 완료하는 동시에 후속 명령의 실행을 재개하고, 동시에 캐시 태그를 무효화한 것을 하위 계층의 캐시에 통지하는 동시에, 무효화한 캐시 라인과 캐시 WAY를 통지한다(S414). 오퍼랜드 캐시(OP-LBS(107))에 대해서는, 이때 데이터 전송을 따르는 경우가 있다. 오퍼랜드 캐시 태그의 판독은 2회 실시하고 있고, 1회의 판독에서 32바이트 판독하기 때문에 상기 플로우에서 캐시 메모리 1라인분에 상당하는 64바이트의 캐시 데이터가 판독되고, MOB(Move-out Buffer)라 하는 하위 계층으로부터 지시된 요구를 처리할 때, 데이터 전송을 따른 처리의 경우에 사용되는 데이터 버퍼에 저장된다. 캐시 태그의 참조는, 판독 참조와 기입 참조가 행해진다. S412, S413에서, 판독 참조에서 캐시 태그를 검색했을 때, 캐시 라인이 변경형(變更型)인지 그 이외인지를 확인한다. 변경형이면 캐시 라인을 하위 계층에 전송하고(S415, S416), 무효형 또는 공유형이면 캐시 라인을 하위 계층에 전송하지 않는다(S408, S409). 캐시 라인을 전송하지 않을 때의 처리 순서(S408, S409)는, 명령 캐시측의 고장 구제 처리와 동일한 처리를 행하고, 캐시 라인의 무효화를 완료한다. 캐시 라인을 전송할 때(S415, S416)는, 캐시의 고장 처리가 데이터 전송을 따라 완료하는 것을 통지하는 동시에, 처리 대상으로 된 캐시 라인과 캐시 WAY를 통지한다(S415). 이 통지를 받아서, 하위 계층의 캐시에서는 캐시 태그 카피의 해당 라인을 무효한 상태로 재기입하는 동시에, 수취한 캐시 데이터를 자신의 캐시 계층의 캐시 메모리의 데이터부에 기입한다(S416).
또한, 도 5는 명령 캐시(IF-LBS(106))에서의 데이터 또는 태그에 고장이 있었을 경우의 고장 처리를 나타내고 있지만, 도 5에서, IF-LBS(106)의 캐시 데이터 또는 캐시 태그에 고장이 검출되면 S501~S503의 처리를 행한다. 이들 처리는 도 4의 처리 S401~S403와 동일하다. 그 후, 캐시 태그 카피의 참조 결과에 관계없이, 통지된 캐시 라인에 대해 고장을 원인으로 한 무효화를 지시하는 동시에, 그것이 명령 캐시 메모리에 대한 처리인 것을 명시하고, 고장 캐시 라인 및 고장 WAY 정보를 그대로 고장 통지원에 반신한다(S504). 고장원의 캐시에서는 고장을 원인으로 한 무효화의 지시를 수신하면, 명령 캐시 라인의 무효화 통지를 받은 캐시 라인과 캐시 WAY에 대하여, 명령 캐시 태그의 유효 비트를 무효한 상태로 재기입하는 처리 플로우를 명령 캐시 파이프라인에서 실행한다(S505). 재기입 처리를 행하는 명령 캐시 파이프라인의 B 사이클이라 하는 플로우에서 ERROR-STATE 플래그를 오프로 세트함으로써, 에러 처리를 완료하는 동시에 후속 명령의 실행을 재개한다. 동시에, 캐시 태그의 무효화가 완료한 것을 하위 계층의 캐시에 통지하는 동시에, 무효화한 캐시 라인과 캐시 WAY를 통지한다(S506). 이 통지를 받아서, 하위 계층의 캐시에서는 캐시 태그 카피의 해당 라인은 무효한 상태로 재기입된다(S507).
또한, 도 6은, 종래의 캐시에서의 스토어 동작의 플로우를 나타낸 도면이다.
스토어 명령에 대한 캐시 메모리에의 기입에서는, 캐시 태그부와 TLB부에 1회의 참조를 행하고, 캐시 데이터부에 대해서는 2회의 참조를 행하고, 오퍼랜드 캐시 파이프라인으로서는 2회의 처리 플로우가 실행된다.
스토어 명령의 1회째의 처리 플로우에서는, 캐시 데이터부와 캐시 태그부 및 TLB부에 액세스한다. 캐시 데이터부에는 가상 어드레스로부터 비트 14~5를 취출해서 송출하고, 참조한 다음 사이클에 RAM 내부에서 데이터의 취출을 행하고, 그 다음 사이클에 모든 캐시 RAM으로부터 모두 64바이트의 데이터가 취출된다. 취출된 데이터는 32바이트의 2WAY분의 데이터로 구성된다. 캐시 태그부에는 가상 어드레스로부터 비트 14~6을 취출해서 송출하고, 참조한 다음 사이클에 RAM 내부에서 태그 어드레스의 취출을 행하고, 그 다음 사이클에 2WAY분의 물리 어드레스가 취출된다. TLB부에는 가상 어드레스로부터 비트 63~13을 취출해서 송출하는 동시에, 캐시 메모리의 참조를 행하는 액세스 공간을 나타내는 정보로서 액세스 공간 번호 내지 액세스 공간의 콘텍스트 ID, 세그먼트 테이블 기점 등 액세스 공간을 나타내는 정보를 송출하고, 참조한다.(S601)
참조한 다음 사이클에 TLB에 등록되어 있는 가상 어드레스와 액세스 공간을 나타내는 정보를 비교하여 일치한 등록 정보에 대응한 물리 어드레스의 취출을 행 하고, 그 다음 사이클에 1개의 물리 어드레스가 판독되고, 가상 어드레스로부터 물리 어드레스로의 변환을 완료한다. 태그부에서 판독된 2WAY분의 물리 어드레스와 TLB부로부터 판독된 물리 어드레스를 비교하고, 이것이 일치하고 있으면 캐시 메모리에 스토어 대상의 데이터가 존재한다고 판단한다.(S602)
또한, 캐시 태그로부터 변경형 비트가 판독되고, 이것이 변경형인 것을 나타내고 있으면, 캐시 메모리가 공유되고 있지 않고, 스토어를 실행할 수 있다고 판단한다. 또한, 일치한 캐시 정보는, 후의 캐시 메모리에의 기입에서 사용하기 위해 스토어 명령 처리부에 기록한다. 그와 함께, 캐시 태그에서 일치한 WAY를 나타내는 정보를 캐시 데이터부에 보내고, 캐시 데이터부로부터 판독된 2WAY의 데이터 중 한쪽을 선택한다. 선택된 데이터는, 캐시 메모리에 대해 스토어를 실행할 때, ECC(Error Correction Code) 정보를 갱신 후의 데이터에 대응한 ECC에 재기입하기 위해서, 8바이트 데이터 경계 내에서의 스토어 대상 외의 데이터 유지부 또는 부분 ECC 유지부에 저장된다.(S603) 또한, 스토어 대상 외의 ECC의 처리에 대해서는, 특허문헌 3 및 특허문헌 4에 그 세부가 기술되어 있다.
그리고, S603의 처리 후, 캐시측에서의 처리 플로우와는 독립하여, 스토어 명령이 스토어 대상으로 하는 스토어 데이터를 연산기로부터 오퍼랜드 캐시가 수신하고, 이를 스토어 데이터 레지스터에 저장한다(S604).
그리고, 캐시측의 처리 플로우를 완료하는 동시에, 스토어 데이터의 캐시로의 전송이 완료해 있으면, 명령 처리 장치는, 스토어 명령을 실행할 수 있는지의 여부를 판단한다(S605, S606). 즉, 스토어 명령에 선행하는 명령에서 명령 처리 열의 분기가 발생하지 않고, 트랩 처리 등 다른 처리로 이행할 필요가 없게 된 것인지의 여부를 확인한다. 이것은, 명령 처리 장치에서의 커밋 스택 엔트리(commit·stack·entry)에서, 스토어 명령에 선행하는 명령의 처리가 전부 완료해 있는 것을 확인함으로써 실행된다. 그러면, 명령 처리 장치는, 실행 가능해진 스토어 명령에 대하여, 커밋 신호를 온으로 해서, 스토어를 실행할 것을 지시한다(S607).
캐시측에서는, 커밋 신호를 수신한 스토어 명령의 데이터를 캐시 메모리에 기입하기 위해서, 스토어 처리의 2회째의 플로우를 실행한다(S608). 스토어 명령의 2회째의 플로우에서는, 캐시 데이터부에만 액세스한다. 우선, P 사이클(Priority 사이클 : 각 리퀘스트(request)를 결정된 우선 순위에 따라 처리하는 리퀘스트를 결정함)에서 캐시 데이터부에는 가상 어드레스로부터 비트 14~5를 취출해서 송출하는 동시에 스토어 대상 WAY와 스토어 대상 바이트 위치를 통지한다(S609). 이 정보에 의해 캐시 데이터부에서는, 스토어 대상으로 되는 캐시 RAM과 그 RAM 상의 스토어 대상 바이트 위치를 확인하고, 대상 RAM의 대상 바이트 위치에 대해 WE(Write Enable) 신호를 온으로 한다. 그것과 평행하게, 스토어 데이터 레지스터에 저장된 스토어 데이터를 취출하고, 캐시 데이터부에 송출한다(S610).
그 다음 T 사이클(TLB/TAG 사이클 : TAG/LBS/TLB를 액세스하는 사이클)에 스토어 대상 캐시 RAM의 스토어 대상 바이트 위치에 스토어 데이터가 저장된다(S611).
그리고, T 사이클의 3사이클 후의 R 사이클(Result 사이클 : 파이프라인 처 리를 완료하는 사이클)에서 스토어 데이터와 스토어 대상외 데이터 정보로부터 ECC가 생성되고, ECC-ARRAY-RAM에 스토어 후의 데이터에 대응한 ECC 정보를 기입함으로써, 스토어 명령의 처리를 완료한다(S612).
이상과 같이 , 스토어 명령에 대한 캐시에의 기입 동작에 대하여 설명했지만, 스토어 처리에 따른 1회째의 처리 플로우에서, 고장이 검출된 경우에는, 도 3에 나타낸 캐시의 판독 동작에서 고장이 검출되었을 경우와 동일한 처리를 실행해서 고장을 해소한다.
이어서, 도 7을 참조하여, 종래의 캐시에서의 고장을 포함하는 캐시 라인을 무효화한 후의, 고장 캐시 라인을 사용한 명령의 처리를 재개하는 동작에 대하여 설명한다.
고장 캐시 라인의 무효화가 완료하고, 명령의 실행이 재개되면, 재개된 명령이 사용하는 캐시 라인이 무효화되어 있기 때문에, 캐시 미스(cache miss)로부터 명령 처리가 재개되게 된다(S701). 재개된 명령은 캐시 태그를 검색한 결과 캐시 미스를 검출하고(S702), 하위 계층의 캐시에 캐시 미스한 캐시 라인을 자기 캐시에 받아들이기 위한 무브인(move-in) 요구를 송출하는 동시에, 무브인 요구 중의 물리 어드레스 및 무브인(MI : Move-In)한 캐시 라인을 등록하는 캐시 메모리 상의 캐시 라인 어드레스와 캐시 WAY 정보를 MIB(Move In Buffer)에 유지한다(S703). 무브인 대상이 되는 캐시 WAY는, 무효한 WAY가 없으면 LRU(Least Recently Used)를 따르고, 무효한 WAY가 있으면 그것이 선택된다. 에러 처리 후의 명령 실행 재개 시는, 캐시 라인이 무효화되어 있기 때문에, 무효한 캐시 WAY가 선택된다. 이때, 앞선 에러 처리에서 무효화한 WAY가 선택된다.
무브인 요구를 수신한 하위 계층의 캐시에서는, 그 캐시 계층의 캐시 태그를 검색한다(S704). 캐시 히트(hit)하면, 그 캐시 계층의 캐시 데이터부로부터 취출한 캐시 데이터를 요구원 캐시에 전송한다(S705). 그것과 평행하게, 요구원의 캐시 태그 카피를 무브인 요구 어드레스에 재기입하는 동시에, 요구원의 캐시에 대하여 리플레이스(replace) 블록에 대한 지시를 송출한다(S706). 에러 처리 후의 명령 재개의 경우에는, 리플레이스 블록, 즉 무브인 요구 대상의 캐시 라인에 무브인 요구 전에 등록되어 있었던 캐시 WAY는 무효화되어 있으므로, 리플레이스 처리가 불필요한 것을 요구원의 캐시에 대하여 지시한다.
무브인 요구원의 캐시에서는, 캐시 라인을 수신하면, 수신한 캐시 라인을 사용해서 재개한 동작을 계속하는 동시에, 수신한 캐시 라인을 캐시 메모리에 기입한다. 1회의 기입에서 32바이트 기입되기 때문에, 64바이트의 1캐시 라인의 등록 처리에는 2회의 처리 플로우를 실행한다.
우선, 1회째의 처리 플로우에서, MIB에 저장되어 있었던 캐시 라인과 캐시 WAY 정보, 및 수신된 캐시 라인의 32바이트를 캐시 데이터부에 보내고, 캐시 데이터부의 RAM에 기입한다(S707). 이어서 2회째의 플로우에서 남은 32바이트를 캐시 데이터부의 RAM에 기입함과 동시에, MIB에 유지하고 있었던 물리 어드레스를 캐시 태그부에 기입함(S708)과 동시에 캐시 태그의 Valid 비트를 온으로 한다(S709). 캐시 미스를 일으켜서 무브인을 요구한 명령 이외의 명령은, 캐시 메모리에의 등록까지는 MIB로부터 데이터를 취출하고, 등록 후는 캐시 태그부, 캐시 데이터부에 액 세스하고, 캐시 메모리의 내용을 취출한다. 이때 다시 고장이 검출되면, 고장 처리의 일련의 처리 플로우를 다시 실행하고, 고장을 해소한다.
고장 해소 처리 플로우를 규정 횟수 반복해도 고장이 해소되지 않으면, 고장 캐시 라인을 블록 딜리트(block delete)라는 수단에 의해 분리하다. 블록 딜리트 처리에 대해서는, 특허문헌 5에 세부가 기술되어 있다. 그러나, 블록 딜리트 처리가 실행되면, 캐시 라인을 1라인 분리하게 되는 것에 의한 성능 저하를 피할 수 없다. 그래서, 캐시 라인을 상실하지 않고 캐시 메모리의 1비트 고정 고장을 구제하는 방법이 요구되고 있었다.
이상과 같이 , 도 1 ~ 도 7을 참조하여, 캐시 라인 교체 레지스터가 탑재되어 있지 않은 종래의 캐시에 대하여 설명했다.
상술한 것을 정리하면, 종래의 캐시 라인 교체 레지스터의 실장 방식에서는, 교체 대상 어드레스의 비교에 물리 어드레스를 사용하고, 이것이 일치했을 때에 교체 레지스터의 데이터를 판독하고 있었지만, 물리 어드레스는 비교 대상 비트 수가 많기 때문에 어드레스 처리에 시간이 걸린다는 문제가 있었다. 또한, 비교 대상이 되는 물리 어드레스를 얻기 위해서는, TLB나 캐시 태그를 참조할 필요가 있기 때문에, 캐시의 판독에 있어서는 캐시 라인 교체 레지스터를 사용할 수 있었지만, 캐시의 기입에 있어서는, TLB, 캐시 태그의 참조 비교와 기입의 플로우가 통상의 캐시 제어 플로우로부터 크게 벗어나게 되기 때문에, 캐시 라인 교체 레지스터의 사용을 포기하지 않을 수 없고, 캐시 라인 교체 레지스터가 스토어 대상으로 될 때마다, 캐시 라인 교체 레지스터를 무효화해서 주기억 참조부터 다시하는 등, 스토어 동작 시에 성능 저하가 발생했다.
또한 종래는, 교체 레지스터를 1라인분, 모든 비트 교체할 수 있게 레지스터를 구성하고 있었다. 실제로는, 1캐시 라인 중 복수 개소에서 1비트 에러가 생길 확률은 낮고, 보다 적은 레지스터 수로 교체 레지스터의 기능을 실현하고, 회로 자원을 절약하는 것이 요청되고 있었다.
그래서, 종래의 캐시에 새로운 캐시 라인 교체 레지스터를 탑재하여, 문제를 해결한다.
특허문헌 1 : 일본국 특허 공개 쇼와52-15236호 공보
특허문헌 2 : 일본국 특허 제3483296호 공보
특허문헌 3 : 일본국 특허 출원 제2006-999902호
특허문헌 4 : 일본국 특허 출원 제2006-353505호
특허문헌 5 : 일본국 특허 출원 제2006-999821호
본 발명은, 종래의 캐시 교체 레지스터의 문제를 해결하는 것에 있다. 상세하게는, 캐시 라인에 고장 등이 발생하여 교체를 행할 경우의 처리 시간을 개선하는 것, 및 캐시 라인 교체 레지스터가 스토어 대상이 될 때마다, 캐시 라인 교체 레지스터를 무효화해서 주기억 참조부터 다시하는 등, 스토어 동작 시에 성능 저하가 발생하고 있던 것을 해결하는 것, 및 종래의 캐시 라인 교체 레지스터와 같이 1라인분, 모든 비트 교체할 수 있게 레지스터를 구성하는 것이 아니고, 보다 적은 레지스터 수로 구성하여, 필요로 하는 회로 자원을 절약하는 것을 목적으로 한다.
상술한 과제를 해결하기 위해서, 본 발명에서는, 캐시 메모리 장치를, 복수의 캐시 라인을 가지는 웨이(way)를 복수 구비하고, 상기 캐시 라인에 데이터를 유지하는 데이터 유지부와, 상기 데이터 유지부가 가지는 캐시 라인의 1라인분 또는 상기 캐시 라인의 일부의 데이터를 유지하는 교체 데이터 레지스터와, 캐시 액세스에 사용되고, 상기 데이터 유지부에서 고장이 발생한 고장 캐시 라인 및 상기 고장 캐시 라인 내의 고장 발생부를 지시하는 인덱스 어드레스를 유지하는 교체 어드레스 레지스터와, 상기 데이터 유지부의 고장 비트를 포함하는 상기 데이터 유지부에서의 웨이의 정보를 유지하는 교체 웨이 레지스터와, 상기 데이터 유지부에 액세스를 행할 경우에, 액세스에 사용되는 인덱스 어드레스와 상기 교체 어드레스 레지스터가 유지하는 상기 인덱스 어드레스를 비교하는 어드레스 매치 회로와, 상기 데이터 유지부에 액세스를 행할 경우에, 액세스에 사용되는 웨이 정보와 상기 교체 웨이 레지스터가 유지하는 웨이 정보를 비교하는 웨이 매치 회로를 구비하도록 구성했다.
본 발명에 의하면, 교체 대상 어드레스의 비교에, 캐시 메모리 상의 고장 캐시 라인 및 상기 캐시 라인 내의 고장 비트를 포함하는 데이터 블록을 지시하는 인덱스 어드레스를 사용하기 때문에, 물리 어드레스를 사용했을 경우보다 비교 대상의 비트 폭이 작아지기 때문에, 어드레스 비교에 소모하는 시간을 단축하는 것이 가능한 동시에, TLB 및 캐시 태그의 참조 결과가 판명되기 전에 교체 어드레스의 비교를 완료하는 것이 가능해진다. 또한, 인덱스 어드레스의 사용에 의해, 교체 데이터를 유지하는 교체 데이터 레지스터는, 고장이 발생한 고장 캐시 라인의 1라인분의 길이보다 짧은 데이터를 유지할 수 있으면 된다. 이렇게, 교체 데이터 레지스터는 데이터 블록의 길이분만의 데이터를 유지하면 되기 때문에, 캐시 라인 교체 레지스터에 사용되는 회로 사이즈를 억제하는 것이 가능해지고, 회로 실장 면적의 삭감과 전력 소비량 저감의 효과를 기대할 수 있다.
또한, 종래의 캐시 제어 플로우에서는 TLB 및 캐시 태그의 참조와 데이터의 기입이 동시에 실시되고 있었지만, 본 발명의 캐시 라인 교체 레지스터에 의하면, 스토어 명령의 처리 플로우가 종래의 캐시 제어 플로우와 동일한 채로, 캐시 라인 교체 레지스터의 내용을 스토어 데이터에 대응하여, 항상 최신의 상태로 갱신하는 것이 가능해지고, 스토어 명령에서도 교체 레지스터를 사용할 수 있기 때문에, 스토어 대상이 교체 레지스터에 있었을 경우에 발생한 성능 저하를 회피하는 것이 가능해진다.
도 1은 종래의 CPU의 전체 구성을 나타낸 도면.
도 2는 종래의 캐시의 구성을 나타낸 도면.
도 3은 종래의 캐시의 판독 동작을 설명하는 흐름도.
도 4는 종래의 OP-LBS에 고장이 있었을 경우의 고장 처리를 설명하는 흐름도.
도 5는 종래의 IF-LBS에 고장이 있었을 경우의 고장 처리를 설명하는 흐름도.
도 6은 종래의 캐시의 스토어 동작을 설명하는 흐름도.
도 7은 종래의 캐시에서, 캐시 라인을 무효화한 후, 고장 캐시 라인을 사용한 명령의 처리를 재개하는 동작을 설명하는 흐름도.
도 8은 본 실시형태의 CPU의 전체 구성을 나타낸 도면.
도 9는 본 실시형태의 캐시의 구성을 나타낸 도면.
도 10은 본 실시형태의 교체 어드레스 레지스터의 구성에 대하여 설명하는 도면.
도 11은 본 실시형태에서의 캐시의 판독 동작을 설명하는 흐름도.
도 12는 본 실시형태에서의 OP-LBS에 고장이 있었을 경우의 고장 처리를 설명하는 흐름도.
도 13은 본 실시형태에서의 IF-LBS에 고장이 있었을 경우의 고장 처리를 설명하는 흐름도.
도 14는 본 실시형태에서의 캐시에서, 캐시 라인을 무효화한 후, 고장 캐시 라인을 사용한 명령의 처리를 재개하는 동작을 설명하는 흐름도.
도 15는 본 실시형태에서의 스토어 동작을 설명하는 흐름도.
도 16은 본 실시형태에서 교체 어드레스 레지스터의 비트 수를 1비트 늘렸을 경우의 설명을 하는 도면.
도 17은 본 실시형태에서의 교체 어드레스 레지스터와 교체 데이터 레지스터의 물량 관계를 나타낸 도면.
도 18은 본 실시형태에서의 교체 어드레스 레지스터 갱신 모드가 온인 경우의 처리에 대하여 설명하는 도면.
도 19는 본 실시형태에서의 교체 어드레스 레지스터 갱신 모드가 오프인 경우의 처리에 대하여 설명하는 도면.
이하, 도면을 참조하여, 캐시 라인 교체 레지스터의 실시형태의 일례에 대하여 설명한다.
본 실시형태인, CPU의 전체 구성을 도 8에 나타낸다.
도 8의 CPU(1)의 구성은, 도 1에 나타낸 CPU(101)의 구성과 거의 동일하다. CORE(2)는 도 1의 CORE(102)에 대응하고, SU(3)는 도 1의 SU(103)에 대응하고, IU(4)는 도 1의 IU(104)에 대응하고, EU(5)는 도 1의 EU(105)에 대응하고, IF-LBS(6)는 도 1의 IF-LBS(106)에 대응하고, OP-LBS(7)는 도 1의 OP-LBS(107)에 대응하고, SX(10)는 도 1의 SX(108)에 대응하고, SYSTEM BUS(11), Memory(12)는 각각 도 1의 SYSTEM BUS(109), Memory(110)에 대응한다.
본 실시형태에서는, 새롭게 IF-CLAR(Cache Line Alternation Register : 캐시 라인 교체 레지스터)(8), OP-CLAR(9)이 추가된다.
도 9에, 본 실시형태의 캐시 라인 교체 레지스터 CLAR의 구성을 나타내고, 도 2와 비교하면 본 실시형태에서 추가된 부분이 명확하다.
캐시 RAM(21, 22)에서의, 캐시 라인은 64바이트 단위로 관리되고, 캐시 RAM은 64킬로바이트의 용량을 2WAY로 구성하고 있다. 1WAY당의 캐시 라인수는 512라인으로 되고, 캐시 라인에의 액세스 어드레스는 9비트로 구성된다. 캐시 데이터 RAM에는 판독 데이터 폭 8바이트로 라인수 1024의 RAM 8개를 채용하고 있다.
본 실시형태의 캐시 라인 교체 레지스터는, 3종류의 레지스터와 2종류의 매치 회로로 구성된다. 제 1 레지스터는, 1비트 고정 고장 캐시 라인과 그 에러 비트 개소가 캐시 메모리 상의 어디에 있는지를 지시하는 인덱스 어드레스를 등록하고, 유지하는 교체 어드레스 레지스터(26)(CLAAR : Cache Line Alternation Address Register)이다. 제 2 레지스터는, 1비트 고정 고장 캐시 라인의 WAY 정보를 등록하고, 유지하는 교체 WAY 레지스터(27)이다. 제 3 레지스터는, RAM 고정 고장 캐시 라인의 반(半) 라인분의 데이터를 등록하고, 유지하는 교체 데이터 레지스터(25)(CLADR : Cache Line Alternation Data Register)이다. 또한, 제 1 매치 회로는, 인덱스 어드레스를 비교하는 어드레스 매치 회로(28)이다. 제 2 매치 회로는, WAY를 비교하는 WAY 매치 회로(29)이다.
데이터 신호선(30)에는 WAY0(21)의 출력 데이터가 출력되고, 데이터 신호선(31)에는 WAY1(22)의 출력 데이터가 출력되고, 신호선(32)에는, 어드레스 매치 회로(28)에서 비교된 결과인 CLAAR-MCH 신호가 출력되고, 신호선(33)에는, WAY 매치 회로(29)에서 비교된 결과인 WAY-MCH 신호가 출력되고, 데이터선(34)에는, 교체 데이터 레지스터(25)의 출력 데이터가 출력되고, 신호선(35)에는, WAY0CLAAR-MCH 신호가 출력되고, 신호선(36)에는 WAY1CLAAR-MCH 신호가 출력된다. 37은, WAY0측의 캐시 RAM(21)과 교체 데이터 레지스터(25)의 선택회로이고, 38은 WAY1측의 캐시 RAM(22)과 교체 데이터 레지스터(25)의 선택회로이다. 데이터선(39)에는, 명령 처리 장치 또는 연산 장치에 보내는 데이터가 출력된다.
도 10에 교체 어드레스 레지스터(26)에 대한 설명을 나타낸다. 본 실시형태 에서는, 고장이 발생한 에러 비트 개소가 캐시 메모리 상의 어디에 있는지를 지시하기 위해 캐시 메모리를 블록0 및 블록1로 이루어지는 두 개의 블록으로 분할하고 있다. 즉, 인덱스 어드레스는, 캐시 라인 어드레스(액세스 어드레스)용의 9비트와, 고장 블록을 나타내기 위한 1비트를 합친, 합계 10비트로 이루어진다. 그 때문에, 교체 어드레스 레지스터(26)는 고장이 발생한 캐시 라인을 나타내는 액세스 어드레스를 위한 9비트(가상 어드레스로부터 비트 14~6을 취출한 것)와, 어느 쪽의 블록에 고장이 발생한 것인지를 나타내는 1비트(가상 어드레스로부터 비트 5를 취출한 것)를 유지한다. 그리고, 교체 데이터 레지스터(25)는, 각 블록의 사이즈인 32바이트의 데이터를 유지할 수 있으면 된다.
도 9, 도 10에 나타낸 구성의 캐시의 동작에 대하여, 흐름도를 이용하여 이하에 상세하게 설명한다.
우선, 도 11에 본 실시형태에서의 캐시의 판독 동작을 설명하는 흐름도를 나타낸다. 캐시의 판독에서는, 종래대로 캐시 데이터부 및 캐시 태그부 및 TLB부를 참조함과 동시에, 교체 어드레스 레지스터에 대하여 액세스한다. 도 11에서의 S1101 ~ S1112의 처리는, 종래의 캐시 판독 동작을 나타낸 도 3의 S301 ~ S312와 동일한 처리를 행하는 것이다.
이 실시형태에서는, S1120 ~ S1125에 나타낸 처리가 캐시 라인 교체 레지스터에서 행해진다.
우선, 캐시 데이터부를 참조하는 사이클에 교체 어드레스 레지스터(26)에 저장되어 있는 인덱스 어드레스와 캐시 데이터부의 참조에 사용한 캐시의 인덱스 어 드레스 및 캐시 WAY를 교체 어드레스 레지스터(26)가 유지하는 내용과 교체 WAY 레지스터(27)가 유지하는 내용과 각각 비교한다(S1120). 그리고, CLAAR-WAY 신호와 CLADR 데이터를 취출한다(S1121). 비교 결과를 나타내는 CLAAR-MCH 신호와, 교체 WAY 레지스터(27)에 저장된 교체 대상 WAY를 나타내는 CLAAR-WAY 신호, 및 교체 데이터 레지스터(25)의 내용을 모든 캐시 데이터 RAM에 송출한다(S1122). 그 다음 사이클 S1123에서, CLAAR-MCH 신호 및 WAY-MCH 신호가 온이면, 모든 캐시 RAM으로부터 판독된 64바이트의 데이터에 대하여, CLAAR-WAY 신호가 나타내는 WAY의 32바이트 데이터를 교체 데이터 레지스터(25)의 내용과 바꿔서 캐시 판독 데이터로 한다(S1124). S1123에서, CLAAR-MCH 신호가 오프이면, 모든 캐시 RAM으로부터 판독된 64바이트 데이터에는 조작을 실시하지 않고(S1125), 캐시 메모리로부터 판독된 데이터를 그대로 사용한다.
이 후는, 종래의 캐시 장치와 동일한 동작을 행하고, 즉 태그 매치 결과로부터 캐시 WAY의 데이터 중 한쪽을 선택하고, 캐시 메모리의 판독을 완료한다. 이렇게 캐시 라인 교체 레지스터의 기능은, 고장이 발생하지 않을 때에도 유효해지도록 기능시키고 있다.
이어서, 도 12, 도 13에 본 실시형태에서의 OP-LBS 및 IF-LBS에 고장이 있었을 경우의 고장 처리를 설명하는 흐름도를 각각 나타낸다. 고장이 있었을 경우의 고장 처리에서도, 종래의 처리와 동일한 처리를 행하지만, 도 12에서는, S1217, S1218, S1219, S1220의 처리가 추가되고, 도 13에서는 S1308, S1309의 처리가 추가되고, 그 이외의 처리는 동일하다. 도 12의 S1201 ~ S1216까지의 처리는 도 4의 S401 ~ S416까지의 처리에 대응하고, 도 13의 S1301 ~ S1307까지의 처리는 도 5의 S501 ~ S507까지의 처리에 대응한다.
이제, 캐시 데이터의 RAM에 고장이 검출되었을 때, 즉 CLAAR-MCH 신호가 온이 되지 않고 캐시 데이터부의 고장이 검출되었을 때는, 캐시 데이터 RAM으로부터 판독된 데이터에 고장이 검출된 것을 나타낸다. 이때, 종래의 고장 처리 플로우에서의 고장 캐시 라인을 무효화하기 위해서, 캐시 태그의 유효 비트를 무효한 상태로 재기입하는 파이프라인 처리의 R 사이클의 2사이클 후의 타이밍에서, 무효화 대상 캐시 인덱스와 캐시 WAY를 교체 어드레스 레지스터(26)와 교체 WAY 레지스터(27)에 기입한다(S1218, S1220, S1309).
이상의 동작에 의해, 고장 캐시 라인과 그 WAY가 캐시 라인 교체 레지스터에 등록되기 때문에, 고장난 캐시 라인을 참조했을 때는, 캐시 라인 교체 데이터 레지스터의 내용이 참조되게 되고, 고장난 캐시 RAM의 내용은 사용되지 않게 되기 때문에, 캐시 RAM의 고장을 은폐하고, 고장으로부터의 회복을 도모하는 것이 가능하다.
또한, S1217, S1219, S1308의 모드에 대한 설명은 후술하는 것으로 한다.
이어서, 도 14에, 캐시 라인을 무효화한 후, 고장 캐시 라인을 사용한 명령의 처리를 재개하는 동작을 나타낸다. 캐시 라인의 무효화 후의 고장 캐시 라인을 재개하는 동작에 대해서도, 종래의 처리와 동일한 처리를 행한다. 즉, 도 14의 S1401 ~ S1409의 처리는 도 7의 S701 ~ S709에 대응한다. 그리고, 도 14의 S1410 ~ S1419에 나타내는 캐시 라인 교체 레지스터에서 행해지는 처리가 추가되게 된다.
고장 캐시 라인의 무효화를 완료하고 고장 캐시 인덱스를 교체 어드레스 레지스터(26)에 등록한 후, 명령의 실행이 재개되면 재개된 명령이 사용하는 캐시 라인은 교체 어드레스 레지스터(26)에 등록되어 있다. 이 캐시 라인은, 여전히 캐시 미스를 일으킨 상태이기 때문에, 종래대로 캐시 라인의 무브인(move-in)이 요구된다. 그 후, 캐시 라인이 도달하면, 캐시 인덱스와 캐시 WAY를 캐시 데이터부에 지시하면서, 무브인한 캐시 라인을 캐시 데이터부에 송출하고, 캐시 라인의 등록을 지시한다.
캐시 데이터부에서는, 캐시 라인의 등록 지시를 수신한 다음 사이클에, 수신한 캐시 인덱스와 캐시 WAY에 대응하는 캐시 데이터 RAM에 무브인 데이터를 기입하는 동시에, 기입 대상의 캐시 인덱스와 캐시 WAY를 교체 어드레스 레지스터(26)가 유지하는 내용과 교체 WAY 레지스터(27)가 유지하는 내용과 각각 비교한다(S1410, S1411). S1412에서, 캐시 인덱스 어드레스와 캐시 WAY의 양쪽이 일치하고 있으면 무브인 데이터를 교체 데이터 레지스터(25)에도 기입한다(S1413). S1412에서 일치하지 않을 경우에는, 아무것도 기입하지 않는다(S1414). 이렇게 함으로써, 캐시에 기입된 데이터가 고장나 있어도, 그 데이터는 교체 데이터 레지스터(25)에 준비해 두는 것이 가능해진다. 그 때문에, 고장 캐시 라인을 판독하는 등의 참조가 있을 경우에, 캐시 라인 교체 레지스터에 저장된 데이터를 참조하기 때문에, 동일 데이터가 고장나 있지 않은 상태의 데이터를 취출하는 것이 가능해진다.
또한, S1415 ~ S1419의 처리는 S1410 ~ S1414의 처리와 동일하다.
이어서, 본 실시형태에서의 스토어 명령에 대한 캐시에의 기입에 대해서 도 15를 참조해서 설명한다. 스토어 명령에 대한 캐시에의 기입 처리에서도 종래대로 캐시 태그부와 TLB부에 1회의 참조를 행하고, 캐시 데이터부에 대해서는 2회의 참조를 행한다. 또한, 도 15의 S1501 ~ S1512의 처리는, 도 6에 나타낸 종래의 스토어 명령에 대한 캐시에의 기입 처리의 S601 ~ S612와 동일한 처리를 행한다.
도 15에서, 우선 스토어 명령의 1회째의 처리 플로우에서는, 교체 어드레스 레지스터(26)와 교체 데이터 레지스터(25)에 의해 캐시 데이터의 고장이 구제된다(S1501 ~ S1507).
스토어 명령의 2회째의 처리 플로우에서는, P 사이클에서 캐시 인덱스 어드레스와 스토어 대상 WAY 및 스토어 대상 바이트 위치를 캐시 데이터부에 지시하면서(S1509), 스토어 대상 RAM의 스토어 대상 바이트 위치에 대하여 WE(Write Enable) 신호를 온으로 한다(S1513). 그것과 평행하게, 스토어 데이터 레지스터에 저장된 스토어 데이터를 취출하고, 캐시 데이터부에 송출한다(S1510). 그 다음 사이클의 T 사이클에서, 스토어 대상 캐시 RAM의 스토어 대상 바이트 위치에 스토어 데이터를 저장하는 동시에, 인덱스 어드레스와 스토어 대상 WAY를 교체 어드레스 레지스터(26)와 교체 WAY 레지스터(27)의 내용과 비교한다(S1514). S1515에서 비교한 결과, 교체 어드레스 레지스터(26) 및 교체 WAY 레지스터(27)의 내용과 일치했을 경우, 스토어 대상 바이트 위치를 나타내는 정보에 의거하여, 교체 데이터 레지스터(25)의 스토어 대상 위치에 스토어 데이터를 기입한다(S1516). S1515에서 비교한 결과가 일치하지 않으면, 교체 데이터 레지스터(25)에는 아무것도 기입하지 않고(S1517), 처리를 종료한다. 그 후의 R 사이클에서 ECC 처리를 종래대로 실행 한다(S1518). 이렇게 함으로써, 스토어 명령의 실행에서도, 교체 데이터 레지스터(25)의 내용을 캐시의 최신의 상태로 갱신하는 것이 가능해지기 때문에, 후속의 명령이 캐시 라인 교체 레지스터의 교체 대상으로 되는 캐시 라인을 참조했을 때에도, 최신의 상태의 캐시 데이터에 대응한 데이터를 캐시 라인 교체 데이터 레지스터로부터 취출하는 것이 가능해지기 때문에, 캐시의 고장으로부터는 개방되게 된다.
그 때문에, 로드 명령뿐만아니라 스토어 명령에서도 캐시 라인 교체 레지스터를 사용할 수 있기 때문에, 스토어 대상이 캐시 라인 교체 레지스터에 있었을 경우에 발생한 성능 저하를 회피하는 것이 가능해진다.
이상과 같이 본 실시형태에 대하여 설명했지만, 상술한 설명에서는 교체 어드레스 레지스터(26)가 유지하는 비트 수를 도 10에 나타낸 바와 같이 구성했다.
즉, 인덱스 어드레스를 유지하는 교체 어드레스 레지스터(26)를, 고장 캐시 라인의 액세스 어드레스를 나타내는 9비트와, 고장 블록을 나타내는 1비트의 합계 10비트로 이루어지도록 구성했다.
여기에서, 인덱스 어드레스를 1비트 늘리고, 캐시의 고장 블록을 나타내기 위해 사용한다. 이에 따라, 캐시를 분할하는 블록 수를 2배로 늘릴 수 있고, 또한 캐시 데이터의 리플레이스를 행하는 데이터 사이즈가 2분의 1이 되기 때문에, 교체 데이터 레지스터(25)의 사이즈도 2분의 1로 하는 것이 가능하다.
동일하게 하여, 인덱스 어드레스를 1비트씩 늘려 가면, 교체 데이터 레지스터(25)의 사이즈를 반감시켜 가는 것이 가능하다. 이것을 도 16에 도시했다.
우선 도 16의 (a)에서는, 교체 어드레스 레지스터(26)가 유지하는 비트 수를 11비트로 한 것을 나타내고 있다. 고장 캐시 라인의 라인 어드레스인 액세스 어드레스를 나타내기 위해 9비트, 고장 블록을 나타내기 위해 2비트의 합계 11비트를 유지한다. 이에 따라, 캐시 블록 수는 4블록으로 되고, 캐시 데이터의 리플레이스를 행하는 데이터 사이즈가 도 10에서 나타낸 32바이트의 반분인 16바이트로 된다.
동일하게, 도 16의 (b)에서는, 교체 어드레스 레지스터(26)가 유지하는 비트 수를 12비트, 즉 액세스 어드레스를 나타내기 위해 9비트, 고장 블록을 나타내기 위해 3비트의 합계 12비트로 한 것을 나타내고 있다. 이에 따라, 캐시 블록 수는 8블록으로 되고, 캐시 데이터의 리플레이스를 행하는 데이터 사이즈를 도 16의 (a)의 반분인 8바이트로 할 수 있다.
도 16의 (c)에 대해서도 동일하게 교체 어드레스 레지스터(26)가 유지하는 비트 수를 1비트 늘리면, 캐시 데이터의 리플레이스를 행하는 데이터 사이즈를 도 16의 (b)에 나타낸 것으로부터 반감하는 것이 가능하다.
도 17에는, 이것을 정리하여, 교체 어드레스 레지스터(26)의 비트 수와 교체 데이터 레지스터의 물량 관계를 나타냈다. 교체 어드레스 레지스터(26)의 비트 수가 1비트 증가하면 교체 데이터의 사이즈가 반감하고 있는 것을 알 수 있다.
또한, 본 실시형태에서, 교체 어드레스 레지스터(26)의 갱신은, 캐시 라인이 무효화될 때에 행할 수 있다. 그래서 캐시 리플레이스(교체) 발생 시의 교체 어드레스 레지스터(26) 갱신을 행하는 모드를 설치한다. 이 모드가 온일 때는, 교체 대상 블록을 무효화하는 리플레이스 처리의 2회째의 플로우에서 교체 대상의 캐시 인덱스로 교체 어드레스 레지스터(26)를 갱신한다. 이렇게 함으로써, 통상 동작 중에도 교체 어드레스 레지스터(26)가 빈번하게 갱신하는 것이 가능해진다. 교체 어드레스 레지스터(26)의 갱신은 고정 고장 발생 시만 하는 방식과 비교해서 교체 어드레스 레지스터(26)의 갱신 빈도 및 갱신 타이밍의 발생 패턴이 증가하기 때문에, 교체 어드레스 레지스터(26) 제어에 관한 설계 미스의 검출을 쉽게 하는 것이 가능해진다. 또한, 상술한 도 12의 S1217, S1219, 도 13의 S1308에서는, 교체 어드레스 레지스터(26) 갱신 모드인지의 여부가 판단되고 있다.
또한, 캐시 데이터부는, CPU칩의 출하 시에 모든 캐시 메모리 셀의 시험을 행할 필요가 있다. 캐시 메모리 셀의 시험을 행할 때에 교체 어드레스 레지스터(26)의 갱신을 리플레이스로도 행함으로써, 교체 어드레스 레지스터 기능에 의해 보호된 채, 시험에 의한 고장 체크로부터 누락되는 캐시 메모리 셀이 발생하는 것을 회피하는 것도 가능해진다.
예를 들면, 시험의 개시 상태에서, 교체 어드레스 레지스터(26)가 어드레스 「0WAY0」이 되어 있으면, 어드레스0, WAY0은 캐시 라인 교체 레지스터에 의해 고장이 일어나지 않는 한 교체 대상으로 되게 된다. 따라서, 어드레스0, 블록0, WAY0의 캐시 RAM의 데이터는 캐시 라인 교체 레지스터의 내용으로 치환되어 판독되게 된다(도 18의 교체 어드레스 레지스터 갱신 모드가 오프인 경우를 참조). 여기에서, 교체 어드레스 레지스터 갱신 모드를 온으로 하면, 리플레이스(교체)가 행해질 때마다, 교체 대상의 캐시 인덱스 및 캐시 WAY에서 교체 어드레스 레지스터(26)가 갱신되므로 어드레스0, WAY0의 캐시 라인이 고장 체크로부터 누락되는 것을 회 피할 수 있다(도 19의 교체 어드레스 레지스터 갱신 모드가 온인 경우를 참조).
이상과 같이, 본 실시형태에 대해서 상세하게 설명을 했지만, 본 발명은 상술한 실시형태에 한정되는 것이 아니라, 상술한 각 구성과 동등한 기능을 실현하는 것이면 어느 것이어도 되는 것은 당연하다.
본 발명에 의하면, 교체 대상 어드레스의 비교에, 캐시 메모리 상의 고장 캐시 라인 및 상기 캐시 라인 내의 고장 비트를 포함하는 데이터 블록을 지시하는 인덱스 어드레스를 사용하기 때문에, 물리 어드레스를 사용했을 경우보다 비교 대상의 비트 폭이 작아지기 때문에, 어드레스 비교에 소모되는 시간을 단축하는 것이 가능함과 동시에, TLB 및 캐시 태그의 참조 결과가 판명되기 전에 교체 어드레스의 비교를 완료하는 것이 가능해진다. 또한, 인덱스 어드레스의 사용에 의해, 교체 데이터를 유지하는 교체 데이터 레지스터는, 고장이 발생한 고장 캐시 라인의 1라인분의 길이보다 짧은 데이터를 유지할 수 있으면 된다. 이렇게, 교체 데이터 레지스터는 데이터 블록의 길이분만의 데이터를 유지하면 되기 때문에, 캐시 라인 교체 레지스터에 사용되는 회로 사이즈를 억제하는 것이 가능해지고, 회로 실장 면적의 삭감과 전력 소비량 저감의 효과를 기대할 수 있다.
또한, 종래의 캐시 제어 플로우에서는 TLB 및 캐시 태그의 참조와 데이터의 기입이 동시에 실시되고 있었지만, 본 발명의 캐시 라인 교체 레지스터에 의하면, 스토어 명령의 처리 플로우가 종래의 캐시 제어 플로우와 동일한 채로, 캐시 라인 교체 레지스터의 내용을 스토어 데이터에 대응하여, 항상 최신의 상태로 갱신하는 것이 가능해지고, 스토어 명령에서도 교체 레지스터를 사용할 수 있기 때문에, 스 토어 대상이 교체 레지스터에 있었을 경우에 발생한 성능 저하를 회피하는 것이 가능해진다.

Claims (20)

  1. 복수의 캐시 라인을 가지는 웨이(way)를 복수 구비하고, 상기 캐시 라인에 데이터를 유지하는 데이터 유지부와,
    상기 데이터 유지부가 가지는 캐시 라인의 1라인분 또는 상기 캐시 라인의 일부의 데이터를 유지하는 교체 데이터 레지스터와,
    캐시 액세스에 사용되고, 상기 데이터 유지부에서 고장이 발생한 고장 캐시 라인 및 상기 고장 캐시 라인 내의 고장 발생부를 지시하는 인덱스 어드레스를 유지하는 교체 어드레스 레지스터와,
    상기 데이터 유지부의 고장 비트를 포함하는 상기 데이터 유지부에서의 웨이의 정보를 유지하는 교체 웨이 레지스터와,
    상기 데이터 유지부에 액세스를 행할 경우에, 액세스에 사용되는 인덱스 어드레스와 상기 교체 어드레스 레지스터가 유지하는 상기 인덱스 어드레스를 비교하는 어드레스 매치 회로와,
    상기 데이터 유지부에 액세스를 행할 경우에, 액세스에 사용되는 웨이 정보와 상기 교체 웨이 레지스터가 유지하는 웨이 정보를 비교하는 웨이 매치 회로를 구비하는 것을 특징으로 하는 캐시 메모리 장치.
  2. 제 1 항에 있어서,
    상기 데이터 유지부로의 판독 참조 액세스 시, 상기 어드레스 매치 회로에 의한 비교 결과가 일치했을 경우에, 상기 교체 웨이 레지스터가 유지하는 웨이 정보에 대응하는 웨이로부터 판독된 데이터를 상기 교체 데이터 레지스터의 내용으로 바꿔서 상기 데이터 유지부로부터의 판독 데이터로 하는 것을 특징으로 하는 캐시 메모리 장치.
  3. 제 1 항에 있어서,
    상기 데이터 유지부로의 기입 참조 액세스 시, 상기 어드레스 매치 회로 및 상기 웨이 매치 회로에 의한 비교 결과가 양쪽 모두 일치했을 경우에, 상기 데이터 유지부의 기입 대상 웨이에 데이터를 기입하는 동시에, 상기 교체 데이터 레지스터에 데이터를 기입하고, 상기 교체 데이터 레지스터의 내용을 데이터 유지부의 최신의 상태에 맞추는 것을 특징으로 하는 캐시 메모리 장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 데이터 유지부 상에 고장 비트가 검출되었을 경우에, 상기 고장 비트를 포함하는 캐시 라인에 유지하고 있었던 데이터를 하위 계층의 캐시 메모리 또는 주기억부에 대해 상기 고장 캐시 라인의 유효 여부 및 상기 고장 캐시 라인이 변경형인지 여부에 따라 재기입을 행하는 동시에, 상기 캐시 라인을 무효화하고, 무효화가 완료했을 때에 무효화 대상으로 된 캐시 라인의 어드레스를 상기 교체 어드레스 레지스터에 유지하고, 무효화 대상으로 된 캐시 웨이를 상기 교체 웨이 레지스터에 유지하는 것을 특징으로 하는 캐시 메모리 장치.
  5. 제 1 항에 있어서,
    캐시 메모리 장치의 동작 모드가, 캐시 리플레이스(replace) 발생 시에 상기 교체 어드레스 레지스터의 갱신을 행하는 캐시 리플레이스 모드인 경우에, 캐시 리플레이스 대상의 캐시 인덱스 어드레스 및 캐시 웨이로 상기 교체 어드레스 레지스터와 상기 교체 웨이 레지스터를 갱신하는 것을 특징으로 하는 캐시 메모리 장치.
  6. 제 5 항에 있어서,
    상기 데이터 유지부에 고장 비트가 발생했을 때가 아니라, 통상 동작 중에, 상기 동작 모드를 상기 캐시 리플레이스 모드로 전환하고, 상기 교체 어드레스 레지스터의 동작 체크 및 캐시 메모리 비트의 체크를 행하는 것을 특징으로 하는 캐시 메모리 장치.
  7. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 인덱스 어드레스에서의, 상기 캐시 라인 내의 고장 비트를 포함하는 데이터 블록을 나타내는 비트 수가 1비트 늘어날 때마다, 상기 교체 데이터 레지스터의 사이즈를 반감(半減) 가능한 것을 특징으로 하는 캐시 메모리 장치.
  8. 캐시 메모리 장치와 상기 캐시 메모리 장치에 유지된 데이터에 대해 연산을 행하는 연산 처리부를 구비한 연산 처리 장치로서,
    복수의 캐시 라인을 가지는 웨이를 복수 구비하고, 상기 캐시 라인에 데이터 를 유지하는 데이터 유지부와,
    상기 데이터 유지부가 가지는 캐시 라인의 1라인분 또는 상기 캐시 라인의 일부의 데이터를 유지하는 교체 데이터 레지스터와,
    캐시 액세스에 사용되고, 상기 데이터 유지부에서 고장이 발생한 고장 캐시 라인 및 상기 고장 캐시 라인 내의 고장 발생부를 지시하는 인덱스 어드레스를 유지하는 교체 어드레스 레지스터와,
    상기 데이터 유지부의 고장 비트를 포함하는 상기 데이터 유지부에서의 웨이의 정보를 유지하는 교체 웨이 레지스터와,
    상기 데이터 유지부에 액세스를 행할 경우에, 액세스에 사용되는 인덱스 어드레스와 상기 교체 어드레스 레지스터가 유지하는 상기 인덱스 어드레스를 비교하는 어드레스 매치 회로와,
    상기 데이터 유지부에 액세스를 행할 경우에, 액세스에 사용되는 웨이 정보와 상기 교체 웨이 레지스터가 유지하는 웨이 정보를 비교하는 웨이 매치 회로를 구비하는 것을 특징으로 하는 연산 처리 장치.
  9. 복수의 캐시 라인을 가지는 웨이를 복수 구비하는 데이터 유지부와, 어드레스의 비교를 행하는 어드레스 매치 회로와, 상기 웨이의 비교를 행하는 웨이 매치 회로와, 캐시 라인의 교체를 제어하는 제 1 내지 제 3 레지스터를 구비한 캐시 메모리의 제어 방법으로서,
    상기 데이터 유지부의 상기 캐시 라인에 데이터를 유지하는 스텝과,
    상기 제 1 레지스터에, 상기 데이터 유지부가 가지는 캐시 라인의 1라인분 또는 상기 캐시 라인의 일부의 데이터를 유지하는 스텝과,
    상기 제 2 레지스터에, 캐시 액세스에 사용되고, 상기 데이터 유지부에서 고장이 발생한 고장 캐시 라인 및 상기 고장 캐시 라인 내의 고장 발생부를 지시하는 인덱스 어드레스를 유지하는 스텝과,
    상기 제 3 레지스터에, 상기 데이터 유지부의 고장 비트를 포함하는 상기 데이터 유지부에서의 웨이의 정보를 유지하는 스텝과,
    상기 데이터 유지부에 액세스를 행할 경우에, 상기 어드레스 매치 회로에 의해, 액세스에 사용되는 인덱스 어드레스와 상기 제 2 레지스터가 유지하는 상기 인덱스 어드레스를 비교하는 스텝과,
    상기 데이터 유지부에 액세스를 행할 경우에, 상기 웨이 매치 회로에 의해, 액세스에 사용되는 웨이 정보와 상기 제 3 레지스터가 유지하는 정보를 비교하는 스텝을 구비하는 것을 특징으로 하는 제어 방법.
  10. 제 9 항에 있어서,
    상기 데이터 유지부 상에 고장 비트가 검출되었을 경우에, 상기 고장 비트를 포함하는 캐시 라인에 유지하고 있었던 데이터를 하위 계층의 캐시 메모리 또는 주기억부에 대해 상기 고장 캐시 라인의 유효 여부 및 상기 고장 캐시 라인이 변경형인지 여부에 따라 재기입을 행하는 동시에, 상기 캐시 라인을 무효화하고, 무효화가 완료했을 때에 무효화 대상으로 된 캐시 라인의 어드레스를 상기 제 2 어드레스에 유지하고, 무효화 대상으로 된 캐시 웨이를 상기 제 3 레지스터에 유지하는 스텝을 구비하는 것을 특징으로 하는 제어 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020097025901A 2007-06-20 2007-06-20 캐시 메모리 장치, 연산 처리 장치 및 그 제어 방법 KR101077513B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/000663 WO2008155805A1 (ja) 2007-06-20 2007-06-20 キャッシュメモリ装置、演算処理装置及びその制御方法

Publications (2)

Publication Number Publication Date
KR20100006588A KR20100006588A (ko) 2010-01-19
KR101077513B1 true KR101077513B1 (ko) 2011-10-28

Family

ID=40155970

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097025901A KR101077513B1 (ko) 2007-06-20 2007-06-20 캐시 메모리 장치, 연산 처리 장치 및 그 제어 방법

Country Status (6)

Country Link
US (1) US8700947B2 (ko)
EP (1) EP2159705B1 (ko)
JP (1) JP4595029B2 (ko)
KR (1) KR101077513B1 (ko)
CN (1) CN101689141B (ko)
WO (1) WO2008155805A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011065503A (ja) * 2009-09-18 2011-03-31 Renesas Electronics Corp キャッシュメモリシステム及びキャッシュメモリのway予測の制御方法
JP5650441B2 (ja) * 2010-06-07 2015-01-07 キヤノン株式会社 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
JP5621918B2 (ja) * 2011-04-07 2014-11-12 富士通株式会社 情報処理装置、並列計算機システムおよび演算処理装置の制御方法
JP2013061887A (ja) * 2011-09-14 2013-04-04 Fujitsu Ltd 故障位置判定回路、記憶装置、および情報処理装置
US8839025B2 (en) 2011-09-30 2014-09-16 Oracle International Corporation Systems and methods for retiring and unretiring cache lines
JP5565425B2 (ja) * 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法
US9075727B2 (en) * 2012-06-14 2015-07-07 International Business Machines Corporation Reducing penalties for cache accessing operations
US9135126B2 (en) * 2013-02-07 2015-09-15 International Business Machines Corporation Multi-core re-initialization failure control system
US9043668B2 (en) 2013-02-08 2015-05-26 Seagate Technology Llc Using ECC data for write deduplication processing
US9262263B2 (en) * 2013-11-25 2016-02-16 Qualcomm Incorporated Bit recovery system
JP2016081169A (ja) * 2014-10-14 2016-05-16 富士通株式会社 情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法
US9703661B2 (en) 2015-02-05 2017-07-11 International Business Machines Corporation Eliminate corrupted portions of cache during runtime
US10185619B2 (en) * 2016-03-31 2019-01-22 Intel Corporation Handling of error prone cache line slots of memory side cache of multi-level system memory
JP6770230B2 (ja) * 2016-09-30 2020-10-14 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US10437729B2 (en) 2017-04-19 2019-10-08 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache
JP6947974B2 (ja) 2017-09-13 2021-10-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP7139719B2 (ja) * 2018-06-26 2022-09-21 富士通株式会社 情報処理装置、演算処理装置及び情報処理装置の制御方法
KR20200081045A (ko) * 2018-12-27 2020-07-07 삼성전자주식회사 3차원 적층 메모리 장치 및 그 동작 방법
US11042483B2 (en) 2019-04-26 2021-06-22 International Business Machines Corporation Efficient eviction of whole set associated cache or selected range of addresses
CN112289353B (zh) * 2019-07-25 2024-03-12 上海磁宇信息科技有限公司 一种优化的具有ecc功能的mram系统及其操作方法
US11966328B2 (en) * 2020-12-18 2024-04-23 Advanced Micro Devices, Inc. Near-memory determination of registers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001147859A (ja) 1999-09-08 2001-05-29 Fujitsu Ltd キャッシュメモリ装置およびキャッシュメモリ制御プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2006343851A (ja) 2005-06-07 2006-12-21 Toshiba Corp キャッシュメモリおよびマイクロプロセッサ

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5215236A (en) 1975-07-25 1977-02-04 Nec Corp Error block unit
JPS60123949A (ja) * 1983-12-09 1985-07-02 Hitachi Ltd 記憶装置制御方式
JPH01292454A (ja) * 1988-05-19 1989-11-24 Mitsubishi Electric Corp キャッシュ制御方式
JPH0719228B2 (ja) * 1988-09-30 1995-03-06 株式会社日立製作所 バッファメモリ装置
JPH04239936A (ja) * 1991-01-24 1992-08-27 Nec Corp キャッシュ制御装置
JP2997370B2 (ja) * 1992-10-14 2000-01-11 三菱電機株式会社 キャッシュメモリ
EP0721621B1 (en) * 1993-09-30 2002-01-30 Apple Computer, Inc. System for decentralized backing store control of virtual memory in a computer
JP3483296B2 (ja) 1994-04-28 2004-01-06 富士通株式会社 情報処理装置
US6006311A (en) * 1997-04-14 1999-12-21 Internatinal Business Machines Corporation Dynamic updating of repair mask used for cache defect avoidance
US6223248B1 (en) * 1997-04-29 2001-04-24 Texas Instruments Incorporated Circuits systems and methods for re-mapping memory row redundancy during two cycle cache access
US6029237A (en) * 1997-10-08 2000-02-22 Dell Usa, L.P. Method for simulating the presence of a diskette drive in a NetPC computer that contains only a hard disk drive
JPH11282764A (ja) * 1998-03-30 1999-10-15 Oki Electric Ind Co Ltd メモリエラー箇所切り離し回路
US6289438B1 (en) 1998-07-29 2001-09-11 Kabushiki Kaisha Toshiba Microprocessor cache redundancy scheme using store buffer
US6708294B1 (en) 1999-09-08 2004-03-16 Fujitsu Limited Cache memory apparatus and computer readable recording medium on which a program for controlling a cache memory is recorded
US6339813B1 (en) * 2000-01-07 2002-01-15 International Business Machines Corporation Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory
US6904552B2 (en) * 2001-03-15 2005-06-07 Micron Technolgy, Inc. Circuit and method for test and repair
US6918071B2 (en) * 2001-04-20 2005-07-12 Sun Microsystems, Inc. Yield improvement through probe-based cache size reduction
JP2003203010A (ja) * 2002-01-07 2003-07-18 Nec Computertechno Ltd L2キャッシュメモリ
US20030191885A1 (en) 2002-04-09 2003-10-09 Chandra Thimmanagari On-chip cache redundancy technique
US6922798B2 (en) * 2002-07-31 2005-07-26 Intel Corporation Apparatus and methods for providing enhanced redundancy for an on-die cache
US7240277B2 (en) * 2003-09-26 2007-07-03 Texas Instruments Incorporated Memory error detection reporting
JP4239936B2 (ja) 2004-09-16 2009-03-18 富士電機リテイルシステムズ株式会社 硬貨処理装置および金銭処理装置
JP4186223B2 (ja) 2004-09-28 2008-11-26 三菱マテリアル株式会社 光記録媒体用反射膜および半透明反射膜並びにこれら反射膜を形成するためのAg合金スパッタリングターゲット
JP2006099902A (ja) 2004-09-30 2006-04-13 Konica Minolta Opto Inc 光記録/再生用光学装置
US20060080572A1 (en) 2004-09-30 2006-04-13 Fong John Y Set associative repair cache systems and methods
JP4791525B2 (ja) 2006-02-14 2011-10-12 富士通株式会社 読み出し処理装置および読み出し方法
EP1990727A4 (en) 2006-02-27 2009-08-05 Fujitsu Ltd CACHE CONTROL DEVICE AND CACHE CONTROL PROGRAM
JP5010271B2 (ja) 2006-12-27 2012-08-29 富士通株式会社 エラー訂正コード生成方法、およびメモリ制御装置
JP5215236B2 (ja) 2009-05-21 2013-06-19 株式会社デンソー 車線境界線種別推定装置及び車線境界線種別推定方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001147859A (ja) 1999-09-08 2001-05-29 Fujitsu Ltd キャッシュメモリ装置およびキャッシュメモリ制御プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2006343851A (ja) 2005-06-07 2006-12-21 Toshiba Corp キャッシュメモリおよびマイクロプロセッサ

Also Published As

Publication number Publication date
CN101689141B (zh) 2012-10-17
WO2008155805A1 (ja) 2008-12-24
JP4595029B2 (ja) 2010-12-08
US20100088550A1 (en) 2010-04-08
EP2159705B1 (en) 2016-03-02
US8700947B2 (en) 2014-04-15
KR20100006588A (ko) 2010-01-19
JPWO2008155805A1 (ja) 2010-08-26
EP2159705A1 (en) 2010-03-03
EP2159705A4 (en) 2012-07-25
CN101689141A (zh) 2010-03-31

Similar Documents

Publication Publication Date Title
KR101077513B1 (ko) 캐시 메모리 장치, 연산 처리 장치 및 그 제어 방법
US6470437B1 (en) Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design
EP1986101B1 (en) Coherency maintaining device and coherency maintaining method
US6098150A (en) Method and apparatus for fetching information from a cache memory
US5201041A (en) Cache bypass apparatus
US7900020B2 (en) Correction of incorrect cache accesses
US20070028051A1 (en) Time and power reduction in cache accesses
US20060236074A1 (en) Indicating storage locations within caches
US20140095784A1 (en) Techniques for Utilizing Transaction Lookaside Buffer Entry Numbers to Improve Processor Performance
US9720847B2 (en) Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
US5802567A (en) Mechanism for managing offset and aliasing conditions within a content-addressable memory-based cache memory
KR19990006485A (ko) 캐쉬 어드레스 발생 방법
US6810473B2 (en) Replacement algorithm for a replicated fully associative translation look-aside buffer
US6282635B1 (en) Method and apparatus for controlling an instruction pipeline in a data processing system
EP2866148B1 (en) Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
KR100320977B1 (ko) 짝수/홀수 캐시 디렉토리 어드레싱 방법 및 장치
US6574698B1 (en) Method and system for accessing a cache memory within a data processing system
EP0375864A2 (en) Cache bypass
EP0173909A2 (en) Look-aside buffer least recently used marker controller
JPS623357A (ja) Tlb制御方法
US6134699A (en) Method and apparatus for detecting virtual address parity error for a translation lookaside buffer
US9053030B2 (en) Cache memory and control method thereof with cache hit rate
JPH0471049A (ja) キャッシュメモリ制御回路
EP0407053A2 (en) Small, fast, look-aside data cache memory
JPH04175945A (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
FPAY Annual fee payment

Payment date: 20141007

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee