KR101629411B1 - 레벨0 캐시 제어 장치 및 방법 - Google Patents

레벨0 캐시 제어 장치 및 방법 Download PDF

Info

Publication number
KR101629411B1
KR101629411B1 KR1020150016770A KR20150016770A KR101629411B1 KR 101629411 B1 KR101629411 B1 KR 101629411B1 KR 1020150016770 A KR1020150016770 A KR 1020150016770A KR 20150016770 A KR20150016770 A KR 20150016770A KR 101629411 B1 KR101629411 B1 KR 101629411B1
Authority
KR
South Korea
Prior art keywords
cache
level
data
address
load
Prior art date
Application number
KR1020150016770A
Other languages
English (en)
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 한국전자통신연구원
Priority to KR1020150016770A priority Critical patent/KR101629411B1/ko
Priority to US15/006,921 priority patent/US9823963B2/en
Application granted granted Critical
Publication of KR101629411B1 publication Critical patent/KR101629411B1/ko

Links

Images

Classifications

    • 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
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

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

Abstract

프로세서와 캐시 내에 소프트 에러(Soft Error)가 발생하는 상황에서도 에러없이 프로세서에 데이터를 전달할 수 있고 에러가 없는 데이터를 캐시에 저장할 수 있는 레벨0 캐시 제어 장치 및 방법을 제시한다. 제시된 장치는, 제 1 프로세서의 로드/스토어부에 연결된 레벨0 캐시 #0; 제 2 프로세서의 로드/스토어부에 연결된 레벨0 캐시 #1; 및 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 태그 메모리와 데이터 메모리 및 유효 비트 메모리를 읽고 쓰고, 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1 내의 정보를 근거로 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 라이트백과 플러시 동작을 수행하게 제어하고, 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부에게 파이프라인 스톨 및 #n 명령어를 재시작할 수 있는 명령을 주는 고장 감지 및 복구부;를 포함한다.

Description

레벨0 캐시 제어 장치 및 방법{Apparatus and method for controlling level 0 cache}
본 발명은 레벨0 캐시 제어 장치 및 방법에 관한 것으로, 보다 상세하게는 소프트 에러(Soft Error)에 의한 고장(fault)을 막기 위한 레벨0 캐시 제어 장치 및 방법에 관한 것이다.
통상적으로, 캐시는 프로세서와 메인 메모리 사이에 위치한다. 캐시는 프로세서의 빠른 처리 속도로 인해 느린 응답 속도를 갖는 메인 메모리에 비해 빠른 응답이 가능하고, 메인 메모리보다는 용량이 작은 메모리이다.
캐시는 프로세서가 필요로 하는 명령어, 데이터를 일시적으로 주소와 함께 저장을 하고 있다. 외부요인으로 인해 캐시에 오류가 발생한다면 프로세서에 잘못된 명령어를 캐시에서 읽게 되어 원하지 않는 동작을 수행하거나 캐시에서 읽은 명령어가 해석이 안 되는(즉, 존재하지 않는) 명령어가 될 수 있다. 또한, 외부요인으로 인해 캐시에 오류가 발생한다면 잘못된 데이터를 읽어 프로세서에 의해 수행되는 프로그램의 결과가 전혀 다른 결과값이 나올 수도 있다. 그래서, 외부 요인으로 인해 프로세서와 캐시에 오류가 발생하더라도 그 오류를 정정하여 외부로 고장이 발생하지 않도록 할 필요가 있다.
본 발명과 관련되는 선행기술로는, 미국 공개특허 제2014-0223102호(FLUSH CONTROL APPARATUS, FLUSH CONTROL METHOD AND CACHE MEMORY APPARATUS), 미국 공개특허 제2014-0095794호(APPARATUS AND METHOD FOR REDUCING THE FLUSHING TIME OF A CACHE), 미국 공개특허 제2012-0042126호(METHOD FOR CONCURRENT FLUSH OF L1 AND L2 CACHES)가 있다.
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, 프로세서와 캐시 내에 소프트 에러(Soft Error)가 발생하는 상황에서도 에러없이 프로세서에 데이터를 전달할 수 있고 에러가 없는 데이터를 캐시에 저장할 수 있는 레벨0 캐시 제어 장치 및 방법을 제공함에 그 목적이 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 바람직한 실시양태에 따른 레벨0 캐시 제어 장치는, 제 1 프로세서의 로드/스토어부에 연결된 레벨0 캐시 #0; 제 2 프로세서의 로드/스토어부에 연결된 레벨0 캐시 #1; 및 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 태그 메모리와 데이터 메모리 및 유효 비트 메모리를 읽고 쓰고, 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1 내의 정보를 근거로 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 라이트백과 플러시 동작을 수행하게 제어하고, 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부에게 파이프라인 스톨 및 #n 명령어를 재시작할 수 있는 명령을 주는 고장 감지 및 복구부;를 포함한다.
상기 고장 감지 및 복구부는, 새로운 주소 및 데이터가 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장될 때마다 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수를 검토하여, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수가 N 보다 같거나 많으면 상기 파이프라인 스톨 동작을 수행하게 할 수 있다.
상기 고장 감지 및 복구부는, 상기 파이프라인 스톨 동작시에는 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 더 이상 읽기/쓰기 요청이 들어오지 않게 할 수 있다.
상기 고장 감지 및 복구부는, 새로운 주소 및 데이터가 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장될 때마다 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수를 검토하여, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수가 N 보다 작으면 상기 새로운 주소 및 데이터의 저장을 계속하게 할 수 있다.
상기 고장 감지 및 복구부는, 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 데이터 메모리와 태그 메모리 및 유효 비트 메모리를 읽어 같은 위치에 있는 값이 같은지를 검토하고, 모두 같은 경우 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1에 있는 {주소, 데이터} 엔트리를 모두 레벨1 캐시 #0와 레벨1 캐시 #1에 라이트하게 할 수 있다.
상기 고장 감지 및 복구부는, 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 데이터 메모리와 태그 메모리 및 유효 비트 메모리를 읽어 같은 위치에 있는 값이 같은지를 검토하고, 하나라도 다를 경우에는 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 있는 모든 {주소, 데이터} 엔트리를 삭제하게 할 수 있다.
상기 고장 감지 및 복구부는, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 있는 모든 {주소, 데이터} 엔트리를 삭제한 이후에, 재시작 #n 명령을 상기 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부에게 줄 수 있다.
한편, 본 발명의 바람직한 실시양태에 따른 레벨0 캐시 제어 방법은, 고장 감지 및 복구부가, 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부로부터의 새로운 주소 및 데이터가 레벨0 캐시 #0 및 레벨0 캐시 #1에 저장될 때마다 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수를 검토하는 단계; 상기 고장 감지 및 복구부가, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수가 N 보다 같거나 많으면 파이프라인 스톨 동작을 수행하게 하는 단계; 상기 파이프라인 스톨 동작을 수행하게 하는 단계 이후에, 상기 고장 감지 및 복구부가, 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 데이터 메모리와 태그 메모리 및 유효 비트 메모리를 읽는 단계; 및 상기 고장 감지 및 복구부가, 상기 읽은 정보를 근거로 같은 위치에 있는 값이 모두 같은지에 따라 라이트백(writeback) 또는 플러시(flush)하게 하는 단계;를 포함한다.
상기 파이프라인 스톨 동작을 수행하게 하는 단계는, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 더 이상 읽기/쓰기 요청이 들어오지 않게 할 수 있다.
상기 라이트백 또는 플러시하게 하는 단계는, 상기 읽은 정보를 근거로 같은 위치에 있는 값이 모두 같으면 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1에 있는 {주소, 데이터} 엔트리를 모두 레벨1 캐시 #0와 레벨1 캐시 #1에 라이트할 수 있다.
상기 라이트백 또는 플러시하게 하는 단계는, 상기 읽은 정보를 근거로 같은 위치에 있는 값이 하나라도 다르면 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 있는 모든 {주소, 데이터} 엔트리를 삭제할 수 있다.
상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 있는 모든 {주소, 데이터} 엔트리를 삭제한 이후에, 재시작 #n 명령을 상기 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부에게 주는 단계;를 추가로 포함할 수 있다.
상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수를 검토한 결과, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수가 N 보다 작으면 상기 새로운 주소 및 데이터의 저장을 계속하게 하는 단계를 추가로 포함할 수 있다.
이러한 구성의 본 발명에 따르면, 고장 감지 및 복구부에서 레벨0 캐시에 저장된 데이터의 오류를 발견할 수 있으며 오류가 있는 데이터가 레벨1 캐시에 저장되는 것을 방지할 수 있다. 이를 통해 프로세서의 오동작으로 인한 잘못된 연산을 하지 않게 된다.
즉, 종래에는 프로세서의 동작에 오류가 발생하여 로드/스토어부를 통해 캐시에 저장이 되는 데이터에 오류가 있다면 종래에는 발견을 할 수 없었으나, 본 발명에 의해서는 가능하다.
도 1은 본 발명의 실시예에 따른 레벨0 캐시 제어 장치의 구성도이다.
도 2는 본 발명의 실시예에 따른 레벨0 캐시 제어 방법을 설명하는 흐름도이다.
도 3 내지 도 6은 도 2의 설명에 채용되는 도면들이다.
도 7은 본 발명의 실시예가 구현된 컴퓨터 시스템의 일예를 나타낸 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예에 따른 레벨0 캐시 제어 장치의 구성도이다.
본 발명의 실시예에 따른 레벨0 캐시 제어 장치는 프로세서와 메모리 사이에 존재하게 된다. 본 발명의 실시예에 따른 레벨0(이하, "L0"라고 함) 캐시 제어 장치는 L0 캐시 #0(20), L0 캐시 #1(30), 및 고장 감지 및 복구부(40)를 포함한다.
L0 캐시 #0(20) 및 L0 캐시 #1(30)는 유효 비트(valid bit) 메모리(20a, 22a), 태그(tag) 메모리(20b, 22b), 및 데이터(data) 메모리(20c, 22c)를 포함한다. 데이터 메모리(20c, 22c)는 프로세서의 요청에 따른 데이터를 저장하고, 태그 메모리(20b, 22b)는 해당하는 데이터 메모리(20c, 22c)에 저장된 데이터의 주소를 저장하고, 유효 비트 메모리(20a, 22a)는 명령어 또는 데이터를 저장하였음을 표시한다.
여기서, L0 캐시 #0(20)는 제 1 프로세서의 로드/스토어(Load/Store)부(10)와 레벨1(이하, "L1"이라 함) 캐시 #0 사이에 존재한다. L0 캐시 #1(22)는 제 2 프로세서의 로드/스토어(Load/Store)부(12)와 L1 캐시 #1 사이에 존재한다. L1 캐시 하위에는 레벨2(L2) 캐시 또는 SDRAM이 존재하게 된다.
두 개의 프로세서로 구성이 된 상황에서 두 프로세서에 연결된 L0 캐시 #0(20)와 L1 캐시 #1(22)은 고장 감지 및 복구부(Fault Checker & Recovery)(40)와 통신을 하여 고장이 발견된 상황에서의 제어를 받게 된다.
이를 위해, 고장 감지 및 복구부(40)는 L0 캐시 #0(20)와 L0 캐시 #1(22)의 태그 메모리(20c, 22c), 데이터 메모리(20b, 22b), 및 유효 비트 메모리(20a, 22a)를 읽고 쓸 수 있다. 그리고, 고장 감지 및 복구부(40)는 L0 캐시 #0(20)와 L0 캐시 #1(22) 내의 정보를 근거로 L0 캐시 #0(20)와 L0 캐시 #1(22)의 라이트백(WriteBack)과 플러시(Flush) 동작을 수행하도록 할 수 있다. 그리고, 고장 감지 및 복구부(40)는 로드/스토어부(10, 12)를 비롯한 모든 프로세서 내부 유니트(Unit)에 파이프라인 스톨(Pipeline Stall) 및 #n 명령어(Instruction)를 재시작할 수 있는 명령을 할 수 있다.
앞에서 제시한 라이트백(WriteBack), 플러시(Flush), 파이프라인 스톨(Pipeline Stall), #n 명령어(Instruction) 재시작 동작에 대해서 설명하겠다.
먼저, 라이트백(WriteBack)은 L0 캐시들(20, 22)에 저장된 태그 메모리(20b, 22b)와 데이터 메모리(20c, 22c)에 저장된 주소와 데이터를 모두 L1 캐시(L1 캐시 #0, L1 캐시 #1)에 저장을 하고 유효 비트 메모리(20a, 22a)의 값을 "0"으로 초기화를 한다. 이러한 동작은 L0 캐시(20, 22)에 저장된 데이터에 에러가 없을 때 수행된다.
플러시(Flush)는 지금까지 L0 캐시(20, 22)에 저장된 데이터와 주소를 L1 캐시에 저장하지 않고 삭제하게 된다.
그리고, 라이트백(WriteBack) 또는 플러시(Flush) 동작을 판단하기 전에 프로세서는 더 이상의 명령어를 수행하지 않도록 처리를 멈추는 동작을 하기 위해, 프로세서 내부 유니트의 동작 수행을 멈추는 파이프라인 스톨(Pipeline Stall)을 하게 된다.
L0 캐시(20, 22)에 저장된 첫 데이터를 생성하는 명령어 넘버(Number) #n 명령어(Instruction)부터 프로세서는 재시작을 하게 된다.
도 1에서, 미설명 부호 30은 버스로 이해하면 된다.
이하에서는 L0 캐시(20, 22)와 고장 감지 및 복구부(40)가 동작하는 방식을 설명한다. 아래의 설명은 L0 캐시(20, 22)를 일정 수행 시간 동안 채우고 이를 검사하고 L0 캐시(20, 22)에 저장된 데이터를 L1 캐시에 반영 또는 삭제 그리고, 프로세서를 파이프라인 스톨(Pipeline Stall) 또는 #n 명령어(Instruction) 재시작하는 과정을 설명한다. 또한, 이러한 과정은 계속해서 반복할 수 있다. 도 2는 본 발명의 실시예에 따른 L0 캐시 제어 방법을 설명하는 흐름도이고, 도 3 내지 도 6은 도 2의 설명에 채용되는 도면들이다.
먼저, 도 3에서처럼 로드/스토어부(10, 12)로부터 스토어(Store)/로드(Load) 동작을 수행하기 위해, L0 캐시(20, 22)에서 읽고 쓰게 된다. 이때, L0 캐시(20, 22)는 L1 캐시에 어떠한 접근도 하지 않는다(S10). 즉, 단계 S10에서는 L0 캐시(20, 22)에 {주소(address), 데이터(data)}를 엔트리(entry)로서 저장할 수 있다.
이후, 도 4에서와 같이, 고장 감지 및 복구부(40)는 새로운 주소 및 데이터가 L0 캐시(20, 22)에 저장이 될 때마다 L0 캐시(20, 22)에 저장된 엔트리(즉, {주소, 데이터})의 수를 검토하게 된다(S12).
그에 따라, L0 캐시(20, 22)에 저장된 엔트리의 수가 N 보다 작으면(S12에서 "No") 엔트리(즉, {주소, 데이터}) 저장을 계속하게 된다. 여기서, N은 기설정된 양의 정수라고 할 수 있다.
반대로, L0 캐시(20, 22)에 저장된 엔트리의 수가 N 보다 같거나 많으면(S12에서 "Yes") 고장 감지 및 복구부(40)는 도 5에서와 같이 파이프라인 스톨(Pipeline Stall) 동작을 수행한다(S14)(도 5의 ①). 즉, 고장 감지 및 복구부(40)는 로드/스토어부(10, 12)에 파이프라인 스톨(Pipeline Stall) 명령을 주게 되므로, 파이프라인 스톨(Pipeline Stall) 동작시에는 더 이상 L0 캐시(20, 22)에 읽기(Read)/쓰기(Write) 요청이 들어오지 않게 한다(도 5의 ②).
이후, 고장 감지 및 복구부(40)는 L0 캐시 #0(20)와 L0 캐시 #1(22)의 데이터 메모리(20b, 22b), 태그 메모리(20c, 22c), 및 유효 비트 메모리(20a, 22a)를 읽어 같은 위치에 있는 값이 같은지를 검토한다(S16, S18).
모두 같은 경우(S18에서 "Yes")에는 고장 감지 및 복구부(40)는 도 5에서와 같이, L0 캐시 #0(20)와 L0 캐시 #1(22)에 있는 {주소, 데이터} 엔트리를 모두 L1 캐시 #0, L1 캐시 #1에 라이트(write)한다(S20)(도 5의 ③). 그리고, L0 캐시 #0(20)와 L0 캐시 #1(22)는 도 5에서와 같이 로드/스토어부(10, 12)로부터 다시 새로운 {주소, 데이터}를 받는다(도 5의 ④). 여기서, 도 5의 ④가 진행될 때에는 도 5의 ②가 미리 해제된다.
반대로, 하나라도 다를 경우(S18에서 "No")에는 고장 감지 및 복구부(40)는 도 6에서와 같이, 플러시(Flush) L0s를 수행한다(S22)(도 6의 ①). 즉, L0 캐시 #0(20), L1 캐시 #1(22)에 있는 모든 {주소, 데이터} 엔트리를 삭제한다(S22). 그리고 나서, 고장 감지 및 복구부(40)는 재시작(Restart) #n 명령을 로드/스토어부(10, 12)에게 주게 된다(S24). 그에 따라, 로드/스토어부(10, 12)는 #n 명령어부터 명령어 수행을 재개한다(도 6의 ②).
상술한 바와 같이, L0 캐시(20, 22)와 고장 감지 및 복구부(40)는 이러한 동작을 반복을 해서 프로세서와 L0 캐시(20, 22)에서의 에러를 방지하고, 에러가 있을 경우 복구할 수 있다.
한편, 상술한 본 발명의 실시예는 컴퓨터 시스템에서 구현될 수 있다. 도 7에 도시된 바와 같이, 컴퓨터 시스템(120)은 버스(122)를 통하여 서로 통신하는 하나 이상의 프로세서(121), 메모리(123), 사용자 인터페이스 입력 장치(126), 사용자 인터페이스 출력 장치(127) 및 스토리지(128)를 포함할 수 있다. 또한, 컴퓨터 시스템(120)은 네트워크(130)에 연결되는 하나 이상의 네트워크 인터페이스(129)를 더 포함할 수 있다. 프로세서(121)는 중앙 처리 장치 또는 메모리(123) 또는 스토리지(128)에 저장된 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(123) 및 스토리지(128)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리(123)는 ROM(124)이나 RAM(125)을 포함할 수 있다.
그리고, IoT 시대를 대비하여 컴퓨터 시스템(120)을 소형의 컴퓨팅 디바이스로 구현시킨 경우, 컴퓨팅 디바이스에 이더넷(Ethernet) 케이블을 연결하면 무선 공유기처럼 동작해서 모바일 디바이스가 무선으로 게이트웨이에 붙어서 암복호화 기능을 할 수 있으므로, 이를 위해 컴퓨터 시스템(120)은 무선 통신 칩(와이파이 칩)(131)을 추가로 포함할 수 있다.
따라서, 본 발명의 실시예는 컴퓨터로 구현된 방법이나 컴퓨터에서 실행가능한 명령어들이 기록된 비일시적인 컴퓨터에서 읽을 수 있는 매체로 구현될 수 있다. 컴퓨터에서 읽을 수 있는 명령어들이 프로세서에 의해서 수행될 때, 컴퓨터에서 읽을 수 있는 명령어들은 본 발명의 적어도 한 가지 태양에 따른 방법을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 12 : 로드/스토어부 20 : 레벨0 캐시 #0
22 : 레벨0 캐시 #1 30 : 버스
40 : 고장 감지 및 복구부

Claims (13)

  1. 제 1 프로세서의 로드/스토어부에 연결된 레벨0 캐시 #0;
    제 2 프로세서의 로드/스토어부에 연결된 레벨0 캐시 #1; 및
    상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 태그 메모리와 데이터 메모리 및 유효 비트 메모리를 읽고 쓰고, 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1 내의 정보를 근거로 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 라이트백과 플러시 동작을 수행하게 제어하고, 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부에게 파이프라인 스톨 및 #n 명령어를 재시작할 수 있는 명령을 주는 고장 감지 및 복구부;를 포함하는 것을 특징으로 하는 레벨0 캐시 제어 장치.
  2. 청구항 1에 있어서,
    상기 고장 감지 및 복구부는,
    새로운 주소 및 데이터가 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장될 때마다 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수를 검토하여, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수가 N 보다 같거나 많으면 상기 파이프라인 스톨 동작을 수행하게 하는 것을 특징으로 하는 레벨0 캐시 제어 장치.
  3. 청구항 2에 있어서,
    상기 고장 감지 및 복구부는,
    상기 파이프라인 스톨 동작시에는 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 더 이상 읽기/쓰기 요청이 들어오지 않게 하는 것을 특징으로 하는 레벨0 캐시 제어 장치.
  4. 청구항 1에 있어서,
    상기 고장 감지 및 복구부는,
    새로운 주소 및 데이터가 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장될 때마다 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수를 검토하여, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수가 N 보다 작으면 상기 새로운 주소 및 데이터의 저장을 계속하게 하는 것을 특징으로 하는 레벨0 캐시 제어 장치.
  5. 청구항 1에 있어서,
    상기 고장 감지 및 복구부는,
    상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 데이터 메모리와 태그 메모리 및 유효 비트 메모리를 읽어 같은 위치에 있는 값이 같은지를 검토하고, 모두 같은 경우 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1에 있는 {주소, 데이터} 엔트리를 모두 레벨1 캐시 #0와 레벨1 캐시 #1에 라이트하게 하는 것을 특징으로 하는 레벨0 캐시 제어 장치.
  6. 청구항 1에 있어서,
    상기 고장 감지 및 복구부는,
    상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 데이터 메모리와 태그 메모리 및 유효 비트 메모리를 읽어 같은 위치에 있는 값이 같은지를 검토하고, 하나라도 다를 경우에는 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 있는 모든 {주소, 데이터} 엔트리를 삭제하게 하는 것을 특징으로 하는 레벨0 캐시 제어 장치.
  7. 청구항 6에 있어서,
    상기 고장 감지 및 복구부는,
    상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 있는 모든 {주소, 데이터} 엔트리를 삭제한 이후에, 재시작 #n 명령을 상기 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부에게 주는 것을 특징으로 하는 레벨0 캐시 제어 장치.
  8. 고장 감지 및 복구부가, 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부로부터의 새로운 주소 및 데이터가 레벨0 캐시 #0 및 레벨0 캐시 #1에 저장될 때마다 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수를 검토하는 단계;
    상기 고장 감지 및 복구부가, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수가 N 보다 같거나 많으면 파이프라인 스톨 동작을 수행하게 하는 단계;
    상기 파이프라인 스톨 동작을 수행하게 하는 단계 이후에, 상기 고장 감지 및 복구부가, 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1의 데이터 메모리와 태그 메모리 및 유효 비트 메모리를 읽는 단계; 및
    상기 고장 감지 및 복구부가, 상기 읽은 정보를 근거로 같은 위치에 있는 값이 모두 같은지에 따라 라이트백(writeback) 또는 플러시(flush)하게 하는 단계;를 포함하는 것을 특징으로 하는 레벨0 캐시 제어 방법.
  9. 청구항 8에 있어서,
    상기 파이프라인 스톨 동작을 수행하게 하는 단계는,
    상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 더 이상 읽기/쓰기 요청이 들어오지 않게 하는 것을 특징으로 하는 레벨0 캐시 제어 방법.
  10. 청구항 8에 있어서,
    상기 라이트백 또는 플러시하게 하는 단계는,
    상기 읽은 정보를 근거로 같은 위치에 있는 값이 모두 같으면 상기 레벨0 캐시 #0와 상기 레벨0 캐시 #1에 있는 {주소, 데이터} 엔트리를 모두 레벨1 캐시 #0와 레벨1 캐시 #1에 라이트하는 것을 특징으로 하는 레벨0 캐시 제어 방법.
  11. 청구항 8에 있어서,
    상기 라이트백 또는 플러시하게 하는 단계는,
    상기 읽은 정보를 근거로 같은 위치에 있는 값이 하나라도 다르면 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 있는 모든 {주소, 데이터} 엔트리를 삭제하는 것을 특징으로 하는 레벨0 캐시 제어 방법.
  12. 청구항 11에 있어서,
    상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 있는 모든 {주소, 데이터} 엔트리를 삭제한 이후에, 재시작 #n 명령을 상기 제 1 프로세서의 로드/스토어부 및 제 2 프로세서의 로드/스토어부에게 주는 단계;를 추가로 포함하는 것을 특징으로 하는 레벨0 캐시 제어 방법.
  13. 청구항 8에 있어서,
    상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수를 검토한 결과, 상기 레벨0 캐시 #0 및 상기 레벨0 캐시 #1에 저장된 {주소, 데이터} 엔트리의 수가 N 보다 작으면 상기 새로운 주소 및 데이터의 저장을 계속하게 하는 단계를 추가로 포함하는 것을 특징으로 하는 레벨0 캐시 제어 방법.
KR1020150016770A 2015-02-03 2015-02-03 레벨0 캐시 제어 장치 및 방법 KR101629411B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150016770A KR101629411B1 (ko) 2015-02-03 2015-02-03 레벨0 캐시 제어 장치 및 방법
US15/006,921 US9823963B2 (en) 2015-02-03 2016-01-26 Apparatus and method for controlling level 0 cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150016770A KR101629411B1 (ko) 2015-02-03 2015-02-03 레벨0 캐시 제어 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101629411B1 true KR101629411B1 (ko) 2016-06-10

Family

ID=56190888

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150016770A KR101629411B1 (ko) 2015-02-03 2015-02-03 레벨0 캐시 제어 장치 및 방법

Country Status (2)

Country Link
US (1) US9823963B2 (ko)
KR (1) KR101629411B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000076752A (ko) * 1999-03-01 2000-12-26 포만 제프리 엘 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법
JP2011257966A (ja) * 2010-06-09 2011-12-22 Mitsubishi Electric Corp キャッシュ装置及び情報処理装置
JP2013205856A (ja) * 2012-03-27 2013-10-07 Nec Corp キャッシュ診断装置、キャッシュ診断方法、及びプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7028218B2 (en) * 2002-12-02 2006-04-11 Emc Corporation Redundant multi-processor and logical processor configuration for a file server
US7210061B2 (en) * 2003-04-17 2007-04-24 Hewlett-Packard Development, L.P. Data redundancy for writes using remote storage system cache memory
US20070113055A1 (en) * 2005-11-15 2007-05-17 Dale Jason N Apparatus and method for improving single thread performance through speculative processing
KR101365940B1 (ko) 2009-10-27 2014-02-24 한국전자통신연구원 코어 클러스터, 및 코어 클러스터를 포함하는 에너지 스케일러블 벡터 프로세싱 장치 및 방법
US8904189B1 (en) * 2010-07-15 2014-12-02 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US8751745B2 (en) 2010-08-11 2014-06-10 Advanced Micro Devices, Inc. Method for concurrent flush of L1 and L2 caches
JP2012103826A (ja) 2010-11-09 2012-05-31 Fujitsu Ltd キャッシュメモリシステム
US9128842B2 (en) 2012-09-28 2015-09-08 Intel Corporation Apparatus and method for reducing the flushing time of a cache
JP5445701B1 (ja) 2013-02-05 2014-03-19 日本電気株式会社 フラッシュ制御装置、フラッシュ制御方法、及び、キャッシュメモリ装置
KR102027573B1 (ko) 2013-06-26 2019-11-04 한국전자통신연구원 캐시 메모리 제어 방법 및 그 장치
JP6140093B2 (ja) * 2014-03-18 2017-05-31 株式会社東芝 キャッシュメモリ、誤り訂正回路およびプロセッサシステム
US20160179284A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Alteration of input device operations based on acceleration

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000076752A (ko) * 1999-03-01 2000-12-26 포만 제프리 엘 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법
JP2011257966A (ja) * 2010-06-09 2011-12-22 Mitsubishi Electric Corp キャッシュ装置及び情報処理装置
JP2013205856A (ja) * 2012-03-27 2013-10-07 Nec Corp キャッシュ診断装置、キャッシュ診断方法、及びプログラム

Also Published As

Publication number Publication date
US20160224416A1 (en) 2016-08-04
US9823963B2 (en) 2017-11-21

Similar Documents

Publication Publication Date Title
US10789117B2 (en) Data error detection in computing systems
DE102010053281B4 (de) Verfahren und System zur Fehlerbehandlung bei einem Speichergerät
CN111752487B (zh) 一种数据恢复方法、装置及固态硬盘
US10713128B2 (en) Error recovery in volatile memory regions
US9454422B2 (en) Error feedback and logging with memory on-chip error checking and correcting (ECC)
US9037799B2 (en) Rebuild of redundant secondary storage cache
US10152280B2 (en) Storage device and control method
KR102282879B1 (ko) 고체 상태 드라이브의 전송 버퍼 사용률을 향상시키기 위해 nand 페이지 버퍼들을 사용하는 방법 및 시스템
EP3033680A1 (en) Memory migration in presence of live memory traffic
US20230251931A1 (en) System and device for data recovery for ephemeral storage
US10649829B2 (en) Tracking errors associated with memory access operations
US8181063B2 (en) Computer device, continuing operation method for computer device, and program
WO2014084836A1 (en) Fault tolerance in a multi-core circuit
US11113065B2 (en) Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers
US8667325B2 (en) Method, apparatus and system for providing memory sparing information
KR101629411B1 (ko) 레벨0 캐시 제어 장치 및 방법
CN115576734B (zh) 一种多核异构日志存储方法和系统
JP2005149503A (ja) Dmaを使用してメモリをテストするためのシステムおよび方法
US8447932B2 (en) Recover store data merging
US9946656B2 (en) Completion packet return based on eviction or flush
WO2023208228A1 (zh) 存储装置及数据处理方法
CN116737489A (zh) 用于为持久性存储器提供日志记录的方法
JPH04125753A (ja) メモリのオンライン診断方式
JPH06324941A (ja) 再開処理方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190527

Year of fee payment: 4