KR101703173B1 - 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 - Google Patents

데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 Download PDF

Info

Publication number
KR101703173B1
KR101703173B1 KR1020110115052A KR20110115052A KR101703173B1 KR 101703173 B1 KR101703173 B1 KR 101703173B1 KR 1020110115052 A KR1020110115052 A KR 1020110115052A KR 20110115052 A KR20110115052 A KR 20110115052A KR 101703173 B1 KR101703173 B1 KR 101703173B1
Authority
KR
South Korea
Prior art keywords
data
cpu core
error
cache
instruction
Prior art date
Application number
KR1020110115052A
Other languages
English (en)
Other versions
KR20130049964A (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 삼성전자주식회사
Priority to KR1020110115052A priority Critical patent/KR101703173B1/ko
Priority to US13/446,345 priority patent/US8645791B2/en
Publication of KR20130049964A publication Critical patent/KR20130049964A/ko
Application granted granted Critical
Publication of KR101703173B1 publication Critical patent/KR101703173B1/ko

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/20Handling requests for interconnection or transfer for access to input/output bus
    • 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
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes

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 Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

데이터 캐시 컨트롤러의 동작 방법이 개시된다. 상기 동작 방법은 데이터 캐시로부터 출력된 제1데이터를 제1레이턴시로 CPU 코어로 전송하는 단계, 및 제2데이터를 상기 제1레이턴시보다 큰 제2레이턴시로 상기 CPU 코어로 전송하는 단계를 포함하며, 상기 제1레이턴시는 명령 캐시로부터 패치된 제1명령의 실행에 따른 상기 데이터 캐시로의 리드 요구와 상기 제1데이터의 전송 사이의 지연을 의미하고, 상기 제2레이턴시는 상기 명령 캐시로부터 패치된 제2명령의 실행에 따른 상기 데이터 캐시로의 리드 요구와 상기 제2데이터의 전송 사이의 지연을 의미한다.

Description

데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법{Data cache controller, devices having the same, and method of operating the same}
본 발명의 개념에 따른 실시 예에는 프로세서에 관한 것으로, 특히 캐시 레이턴시(cache latency)를 감소시킬 수 있는 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법에 관한 것이다.
캐시(cache)는 데이터에 대한 리드(read) 요구 또는 라이트(write) 요구에 대해 보다 빠르게 상기 데이터가 이용될 수 있도록 상기 데이터를 저장하는 구성 요소이다.
상기 캐시는 SRAM(static random access memory)와 같은 휘발성 메모리로 구현될 수 있다.
SRAM과 같은 휘발성 메모리의 불안정성 때문에, 에러 정정 코드(error correction code(ECC))는 서버와 같은 고가용성 애플리케이션(high-availability application)에 많이 사용된다.
또한, 공정 기술(process technology)이 미세화됨에 따라 상기 휘발성 메모리가 더 불안정해지고 있기 때문에, 상기 ECC는 전자 장치와 같은 대부분의 일반적인 애플리케이션에서 사용될 것으로 기대된다.
그러므로 대부분의 캐시를 제어하기 위한 캐시 컨트롤러는 ECC를 포함한다. 상기 캐시 컨트롤러는 상기 캐시로부터 데이터를 리드할 때, 상기 데이터에 에러가 있는지 없는지를 검사한다.
상기 캐시 컨트롤러가 먼저 에러를 검사하고, 처리(processing)를 위해 상기 데이터를 이용할 때, 상기 캐시에서는 지연이 발생한다. 상기 지연은 캐시 레이턴시를 증가시킨다.
상기 캐시 레이턴시는 CPU(central processing unit)와 캐시 사이에서 데이터를 라이트하거나 상기 데이터를 리드할 때의 지연을 의미한다.
본 발명이 이루고자 하는 기술적 과제는 캐시 레이턴시를 감소시킬 수 있는 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 캐시 컨트롤러의 동작 방법은 데이터 캐시로부터 출력된 제1데이터를 제1레이턴시로 CPU 코어로 전송하는 단계, 및 제2데이터를 상기 제1레이턴시보다 큰 제2레이턴시로 상기 CPU 코어로 전송하는 단계를 포함한다.
상기 제1레이턴시는 명령 캐시로부터 패치된 제1명령의 실행에 따른 상기 데이터 캐시로의 리드 요구와 상기 제1데이터의 전송 사이의 지연을 의미한다.
상기 제2레이턴시는 상기 명령 캐시로부터 패치된 제2명령의 실행에 따른 상기 데이터 캐시로의 리드 요구와 상기 제2데이터의 전송 사이의 지연을 의미한다.
상기 제1데이터는 제1데이터 채널을 통해 상기 CPU 코어로 전송되며, 상기 제2데이터는 제2데이터 채널을 통해 상기 CPU 코어로 전송된다.
상기 제2데이터는 상기 제1데이터에 대한 에러 정정 결과로서 출력된다.
상기 데이터 캐시 컨트롤러의 동작 방법은 상기 제1데이터의 에러를 검출하고 에러 신호를 상기 CPU 코어로 전송하는 단계, 상기 제1데이터에 대해 에러 정정을 수행하는 단계, 및 상기 에러 신호에 응답하여 상기 CPU 코어로부터 출력된 선택 신호에 따라 상기 제2데이터를 상기 CPU 코어로 전송하는 단계를 더 포함할 수 있다.
상기 제1데이터를 상기 CPU 코어로 로드하기 위해 사용된 로드 명령은 상기 에러 신호에 따라 상기 CPU 코어로부터 제거된다.
본 발명의 실시 예에 따른 프로세서는 CPU 코어와, 데이터 캐시로부터 출력된 데이터를 제1데이터 채널을 통해 상기 CPU 코어로 전송한 후, 상기 데이터에 대한 에러 정정을 수행하고, 상기 CPU코어(20)의 제어에 따라, 에러 정정된 데이터를 제2데이터 채널을 통하여 상기 CPU 코어로 전송하는 데이터 캐시 컨트롤러를 포함한다.
상기 CPU 코어는 상기 에러 정정된 데이터를 수신하기 전에 상기 데이터를 제거할 수 있다.
상기 CPU 코어는 상기 데이터를 상기 CPU 코어로 로드(load)하기 위해 사용된 로드 명령을 상기 에러 신호에 따라 상기 CPU 코어로부터 제거할 수 있다.
상기 CPU 코어는 상기 에러 신호에 따라, 상기 에러 정정된 데이터를 상기 CPU 코어로 로드하기 위한 로드 명령을 명령 캐시로부터 패치(fetch)할 수 있다.
상기 CPU 코어는 상기 데이터를 상기 CPU 코어로 로드하기 위해 상기 제1데이터 채널을 디폴트 채널로 설정할 수 있다.
상기 데이터 캐시 컨트롤러는 상기 제2데이터 채널을 통하여 상기 에러 정정된 데이터를 상기 CPU 코어로 전송한 후, 상기 CPU 코어의 제어에 따라 상기 제2데이터 채널을 상기 제1데이터 채널로 복구할 수 있다.
실시 예에 따라 상기 데이터 캐시 컨트롤러는 상기 CPU 코어로부터 출력된 선택 신호에 따라, 상기 제1데이터 채널과 상기 제2데이터 채널을 스위칭할 수 있는 선택기를 포함할 수 있다.
다른 실시 예에 따라 상기 데이터 캐시 컨트롤러는 상기 데이터에 포함된 에러를 검출하고 에러 신호를 상기 CPU 코어로 출력하고, 상기 데이터에 대해 에러 정정을 수행하고, 상기 에러 정정된 데이터를 출력하는 ECC(error correction code) 로직 유닛과, 상기 에러 신호에 기초하여 상기 CPU 코어로부터 출력된 선택 신호에 따라, 상기 데이터를 상기 제1데이터 채널을 통하여 상기 CPU 코어로 전송하고 상기 에러 정정된 데이터를 상기 제2데이터 채널을 통하여 상기 CPU 코어로 전송하는 선택기를 포함할 수 있다.
상기 CPU 코어는 상기 에러 신호에 대응되는 플래그를 저장하는 리오더 버퍼와, 상기 플래그에 따라 상기 선택 신호를 출력하는 컨트롤 유닛을 포함할 수 있다.
실시 예에 따라 상기 CPU 코어는 라이트 인에이블 신호를 상기 데이터 캐시 컨트롤러로 전송하는 컨트롤 로직 유닛을 더 포함할 수 있다.
또한, 상기 CPU 코어는 상기 컨트롤 로직 유닛으로부터 출력되는 데이터와, 상기 데이터 또는 상기 에러 정정된 데이터를 머지(merge)하는 데이터 머지 유닛, 및 상기 데이터 머지 유닛으로부터 출력되는 데이터를 인코딩하는 ECC 인코딩 유닛을 더 포함할 수 있다.
본 발명의 실시 예에 따른 전자 장치는 프로세서와, 상기 프로세서에 의해 처리된 데이터를 디스플레이하는 디스플레이를 포함하며, 상기 프로세서는 CPU 코어와, 로드 명령을 저장하는 명령 캐시와, 데이터를 저장하는 데이터 캐시와, 상기 명령 캐시에 의해 패치된 상기 로드 명령에 따라 상기 데이터 캐시로부터 출력된 상기 데이터를 제1데이터 채널을 통해 상기 CPU 코어로 전송한 후, 상기 데이터에 대해 에러 정정을 수행하고 상기 CPU코어의 제어에 따라, 에러 정정된 데이터를 제2데이터 채널을 통하여 상기 CPU 코어로 전송하는 데이터 캐시 컨트롤러를 포함한다.
상기 전자 장치는 PC(personal computer) 또는 휴대용 장치(portable device)로 구현될 수 있다.
본 발명의 실시 예에 따른 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법은 데이터 캐시로부터 출력된 데이터에 대한 에러 정정 동작을 수행하기 이전에 상기 데이터를 CPU 코어로 전송하고, 상기 데이터로부터 에러가 검출될 때 상기 CPU 코어의 제어에 따라 에러 정정된 데이터를 상기 CPU 코어로 전송함으로써 캐시 레이턴시를 감소시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 전자 장치의 블록도를 나타낸다.
도 2는 도 1에 도시된 프로세서의 블록도를 나타낸다.
도 3은 도 2에 도시된 데이터 캐시 컨트롤러의 블록도를 나타낸다.
도 4는 도 2에 도시된 CPU 코어의 파이프 라인(pipeline)의 일 실시 예를 나타낸다.
도 5는 로드 명령에 따라 데이터로부터 에러가 검출되지 않을 때, 도 2에 도시된 CPU 코어의 파이프 라인의 타이밍 도를 나타낸다.
도 6은 로드 명령에 따라 데이터로부터 에러가 검출될 때, 도 2에 도시된 CPU 코어의 파이프 라인의 타이밍 도를 나타낸다.
도 7은 도 2에 도시된 데이터 캐시 컨트롤러의 동작 방법의 일 실시 예를 나타내는 흐름도이다.
도 8은 CPU 코어가 데이터 캐시에 데이터를 라이트하고자 할 때, 도 2에 도시된 CPU 코어의 파이프 라인의 실시 예를 나타낸다.
도 9는 도 2에 도시된 데이터 캐시 컨트롤러의 동작 방법의 다른 실시 예를 나타내는 흐름도이다.
도 10은 본 발명의 실시 예에 따른 서버 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 전자 장치의 블록도를 나타낸다.
도 1을 참조하면, 전자 장치(100)는 PC(personal computer) 또는 휴대용 장치(portable device)로 구현될 수 있다.
상기 휴대용 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰, 태블블(tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 손으로 들고다닐 수 있는 게임 콘솔(handheld game console), 또는 e-북(e-book)과 같이 손으로 들고다닐 수 있는 장치(handheld device)로 구현될 수 있다.
전자 장치(100)는 버스를 통하여 서로 통신하는 프로세서(1), 메모리(110), 입력 장치(120), 및 디스플레이(130)를 포함한다.
프로세서(1)는 전자 장치(100)의 동작을 제어한다.
프로세서(1)는 프로그램 명령들(program instructions)을 리드하고 실행하는 유닛이다. 실시 예에 따라, 프로세서(1)는 애플리케이션 프로세서(application processor)일 수 있다.
예컨대, 프로세서(1)는 프로그램 명령들(예컨대, 입력 장치(120)를 통하여 입력된 입력 신호에 의해 생성된 프로그램 명령들)을 실행하고, 메모리(110)에 저장된 데이터를 리드(read)하고, 리드된 데이터를 디스플레이(130)를 통하여 디스플레이할 수 있다.
예컨대, 입력 장치(120)는 터치 패드(touch pad) 또는 컴퓨터 마우스 (computer mouse)와 같은 포인팅 장치(pointing device), 키패드(key pad), 또는 키보드로 구현될 수 있다.
도 2는 도 1에 도시된 프로세서의 블록도를 나타낸다.
도 1과 도 2를 참조하면, 프로세서(1)는 CPU(central processing unit; 10), L2 캐시 컨트롤러(80), L2 캐시(cache; 90), 및 메모리 인터페이스 유닛(11)을 포함한다.
실시 예에 따라, 프로세서(1)는 하나의 칩, 예컨대 SoC(system on chip)으로 구현될 수 있다.
CPU(10)는 프로그램 명령들을 리드하고 실행시킬 수 있는 프로세서(1)의 일부분일 수 있다.
프로세서(1)는 멀티 레벨 캐시들(multi level caches)을 포함할 수 있다.
예컨대, 복수의 캐시들(50과 70)이 레벨-1 캐시(level-1 cache)일 때, 캐시 (90)는 레벨-2 캐시일 수 있다. 이때, 캐시(50)는 명령 캐시일 수 있고, 캐시(70)는 데이터 캐시일 수 있다.
L2 캐시(90)는 휘발성 메모리 장치(예컨대, SRAM)로 구현될 수 있다.
CPU(10)가 데이터를 리드하고자 할 때, 먼저 CPU(10)는 상기 데이터가 데이터 캐시(70)에 저장되어 있는지를 검사한다. 왜냐하면 데이터 캐시(70)는 대기 시간이 L2 캐시(90) 또는 메모리(110)에 비해 현저히 짧기 때문이다.
CPU(10)가 데이터 캐시(70)에서 데이터를 찾지 못할 때, 예컨대, 캐시 미스일 때(cache miss), CPU(10)는 L2 캐시 컨트롤러(80)를 통하여 L2 캐시(90)를 검사한다.
CPU(10)가 데이터를 데이터 캐시(70) 또는 L2 캐시(90)에서 찾지 못할 때, CPU(10)는 메모리 인터페이스 유닛(11)을 통해 메모리(110)로부터 상기 데이터를 리드할 수 있다.
CPU(10)는 메모리 인터페이스 유닛(11)을 통하여 메모리(110)에 접근할 수 있다. 예컨대, 메모리(110)는 플래시 메모리 또는 저항성 메모리와 같은 불휘발성 메모리, 또는 DRAM(dynamic random access memory)과 같은 휘발성 메모리로 구현될 수 있다. 또한 메모리(110)는 휘발성 메모리들의 조합으로 구현될 수 있다.
L2 캐시 컨트롤러(80)는 CPU(10)의 제어에 따라 L2 캐시(90)를 제어한다.
CPU(10)는 CPU 코어(20), 복수의 캐시 컨트롤러들(40과 60), 및 복수의 L1 캐시들(50과 70)을 포함한다.
CPU 코어(20)는 프로그램 명령들을 실행할 수 있는 유닛이다. 실시 예에 따라, CPU(10)는 복수의 CPU 코어들을 포함할 수 있다.
CPU 코어(20)의 동작과 구조는 도 4를 참조하여 상세히 설명될 것이다.
명령 캐시 컨트롤러(40)는 명령 캐시(instruction cache; 50)를 제어한다.
명령 캐시(50)는 실행가능한 명령 패치의 속도를 높이기 위해(speed up executable instruction fetch) 사용된다.
데이터 캐시 컨트롤러(60)는 데이터 캐시(70)를 제어한다.
데이터 캐시(70)는 데이터 패치와 저장의 속도를 높이기 위해(speed up data fetch and store) 사용된다.
복수의 L1 캐시들(50과 70) 각각은 휘발성 메모리(예컨대, SRAM)로 구현될 수 있다.
도 3은 도 2에 도시된 데이터 캐시 컨트롤러의 블록도를 나타낸다.
도 2와 도 3을 참조하면, 데이터 캐시 컨트롤러(60)는 CPU 코어(20)와 데이터 캐시(70) 사이에서 데이터(DATA)의 전송을 제어하기 위한 제어 블록(61)과, CPU 코어 (20)와 L2 캐시 컨트롤러(80) 사이의 접속을 제어하기 위한 접속 블록(67)을 포함한다.
제어 블록(61)은 ECC(Error Correction Code) 로직 유닛(63)과 선택기(65)를 포함한다.
데이터 캐시(70)로부터 출력된 데이터(DATA)는 제1데이터 채널(DC1)을 통해 CPU 코어(20)로 전송되며, 에러 정정된 데이터(CDATA)는 제2데이터 채널(DC2)을 통해 CPU 코어(20)로 전송된다. 실시 예에 따라, 제1데이터 채널(DC1)은 디폴트 (default)로 설정될 수 있다. 여기서 데이터 채널(data channel)은 데이터(DATA 또는 CDATA)가 전송되는 경로를 의미하며, 특히 데이터 버스를 의미할 수 있다.
먼저, 데이터 캐시(70)로부터 출력된 데이터(DATA)는 제1데이터 채널(DC1)을 통해 CPU 코어(20)로 전송된다.
ECC 로직 유닛(63)은 데이터 캐시(70)로부터 출력된 데이터(DATA)에 대해 에러 검사(error check), 예컨대 ECC 검사를 수행할 수 있다.
ECC 로직 유닛(63)이 데이터 캐시(70)로부터 출력된 데이터(DATA)의 에러를 검출할 때, ECC 로직 유닛(63)은 제1레벨, 예컨대 로직 1 또는 하이 레벨을 갖는 에러 신호(ES)를 CPU 코어(20)로 전송할 수 있다.
이때, ECC 로직 유닛(63)은 데이터(DATA)의 에러를 정정하고 에러 정정된 데이터(CDATA)를 출력한다.
CPU 코어(20)는 제1레벨을 가지는 에러 신호(ES)에 응답하여 제1레벨을 갖는 선택 신호(SS)를 출력한다.
선택기(65)는 제1레벨을 갖는 선택 신호(SS)에 응답하여 에러 정정된 데이터 (CDATA)를 제2데이터 채널(DC2)을 통하여 CPU 코어(20)로 전송한다.
선택기(65)의 제1입력 포트는 데이터 캐시(70)에 접속되고, 선택기(65)의 제2입력 포트는 ECC 로직 유닛(63)에 접속되고, 선택기(65)의 출력 포트는 CPU 코어 (20)에 접속된다. 포트(port)는 단자(terminal)로 불릴 수도 있다.
선택기(65)는 멀티플렉서로 구현될 수 있다.
CPU 코어(20)로부터 출력된 선택 신호(SS)가 제2레벨, 예컨대 로직 0 또는 로우 레벨일 때, 제2레벨을 갖는 선택 신호(SS)에 따라 선택기(65)는 데이터 캐시 (70)로부터 출력된 데이터(DATA)를 제1데이터 채널(DC1)을 통해 CPU 코어(20)로 전송한다. 예컨대, CPU 코어(20)는 데이터를 처리할 때마다 선택 신호(SS)의 레벨을 제2레벨로 디폴트로 설정할 수 있다.
그 후, ECC 로직 유닛(63)이 데이터 캐시(70)로부터 출력된 데이터(DATA)의 에러를 검출할 때, ECC 로직 유닛(63)은 제1레벨을 갖는 에러 신호(ES)를 생성하고, CPU 코어(61)는 제1레벨을 갖는 선택 신호(SS)를 생성한다.
따라서 선택기(65)는 제1레벨을 갖는 선택 신호(SS)에 응답하여 제1데이터 채널(DC1)을 제2데이터 채널(DC2)로 변경한다. 즉, 선택기(65)의 제2입력 포트와 출력 포트가 접속되므로, 에러 정정된 데이터(CDATA)는 제2데이터 채널(DC2)를 통해 CPU 코어(20)로 전송될 수 있다.
데이터(DATA)로부터 에러가 검출되지 않을 때, ECC 로직 유닛(63)은 제2레벨을 갖는 에러 신호(ES)를 출력하고, CPU 코어(20)는 제2레벨을 가지는 에러 신호 (ES)에 따라 제2레벨을 갖는 선택 신호(SS)를 출력한다. 따라서 선택기(65)는 제2레벨을 갖는 선택 신호(SS)에 응답하여 제1데이터 채널(DC1)을 유지한다.
실시 예에 따라, 제2데이터 채널(DC2)을 통하여 에러 정정된 데이터(CDATA)가 완전히 CPU 코어(20)로 전송된 후, CPU 코어(20)는 제1레벨을 갖는 선택 신호 (SS)를 출력할 수 있다. 따라서, 선택기(65)에 의해, 제2데이터 채널(DC2)은 제1데이터 채널(DC1)로 복구(restore) 또는 스위치된다.
도 4는 도 2에 도시된 CPU 코어의 파이프 라인(pipeline)의 일 실시 예를 나타낸다.
도 2부터 도 4를 참조하면, CPU 코어(20)는 명령 패치 유닛(instruction fetch unit; 21), 레지스터 레네임 유닛(register rename unit; 23), 명령 이슈 큐 (instruction issue queue; 25), 레지스터 파일 유닛(register file unit; 27), 실행 유닛(excution unit; 29), 리오더 버퍼(reorder buffer(ROB); 31), 및 컴미트 컨트롤 유닛(33)을 포함한다.
명령 패치 유닛(21)은 명령 캐시 컨트롤러(40)를 통해 명령 캐시(50)로부터 프로그램 순서(program order)에 따라 명령들을 패치한다.
예컨대, 상기 명령들은 산술 명령과 로드(load) 명령을 포함한다.
예컨대, 상기 산술 명령은 r2←add(ro, r1) 또는 r4←sub(r4, r3)일 수 있다. r2←add(ro, r1)은 가산 명령이다.
즉, r2←add(r0, r1)은 레지스터(ro)의 값과 레지스터(r1)의 값을 더하고, 더한 값을 레지스터(r2)에 저장하는 것을 의미한다.
r4←sub(r4, r3)은 감산 명령이다.
즉, r4←sub(r4, r3)은 레지스터(r4)의 값에서 레지스터(r3)의 값으로 빼고, 뺀 값을 레지스터(r4)에 저장하는 것을 의미한다.
로드 명령은 r3←MEM[r2]이다.
r3←MEM[r2]는 레지스터(r2)에 의해 구체화되는 데이터 캐시(70)의 메모리 주소로부터 데이터를 리드하여 레지스터(r3)에 저장하는 것을 의미한다.
예컨대, 명령 캐시(50)의 주소 0x4, 0x8, 및 0xC에 산술 명령들과 로드 명령이 저장될 수 있다.
상기 명령들은 실행가능한 프로그램에서 발견되며, 레지스터들(r0, r1, r2, r3, 및 r4)은 아키텍쳐럴 레지스터들(architectural registers)이다.
상기 아키텍쳐럴 레지스터들은 프로그램과 관련된 컴퓨터 구조의 부분인 명령 세트 구조(instruction set architecture(ISA))에 의해 정의된다. 실시 예에 따라, 상기 아키텍쳐럴 레지스터들은 논리적 레지스터들(logical registers)로 호칭될 수 있다.
레지스터 리네임 유닛(23)은 아키텍쳐럴 레지스터들(Arch REG)과 물리적인 레지스터들(physical registers; Temp PREG 또는 Commit PREG) 각각을 매핑하는 매핑 테이블(MP)을 이용하여 아키텍쳐럴 레지스터들(Arch REG)을 물리적인 레지스터들(Temp PREG 또는 Commit PREG)로 번역(translate)한다.
예컨대, 아키텍쳐럴 레지스터들(Arch REG; r0, r1, r2, r3, 및 r4) 각각은 물리적인 레지스터들(Commit PREG; p0, p1, p2, p3, 및 p4) 각각과 매핑된다.
물리적인 레지스터들(Temp PREG; p32, p33, 및 p34)는 초기에는 사용되지 않는다.
산술 명령 r4←sub(r4, r3)이 리네임될 때, 결과값은 일시적인 리네임 레지스터(temporary rename register, 예컨대, p34)에 저장되어야 한다. 상기 일시적인 리네임 레지스터는 복수의 물리적인 레지스터들(Temp PREG, 예컨대, P32~P34)에서 선택된다.
물리적인 레지스터들(Temp PREG 또는 Commit PREG)은 CPU 코어(20)에 의해 실행된다.
레지스터 리네임 유닛(23)에 의해 리네임된 물리적인 레지스터들(p0, p1, p2, p3, p4, 및 p34)은 명령 이슈 큐(25)와 ROB(31)에 저장된다.
명령 이슈 큐(instruction issue queue; 25)는 리네임된 명령들을 포함한다.
도 4에서 가산 명령은 ID 0으로, 로드 명령은 ID 1로, 감산 명령은 ID 2로 나타낸다.
명령 이슈 큐(25)는 어느 명령들이 실행될 준비가 되었는지를 결정한다.
예컨대, 명령 이슈 큐(25)는 프로그램 순서와 관계없이 가산 명령(ID 0), 로드 명령(ID 1), 및 감산 명령(ID 2) 중에서 어느 명령을 먼저 실행할 것인지를 결정한다.
명령 이슈 큐(25)는 가산 명령(ID 0), 로드 명령(ID 1), 및 감산 명령(ID 2)의 순서로 실행하도록 실행 순서를 결정한다. 명령 이슈 큐(25)는 가산 명령(ID 0), 로드 명령(ID 1), 및 감산 명령(ID 2) 각각에 대해 레지스터가 이용가능한지 여부를 판단한다.
예컨대, 명령 이슈 큐(25)는 가산 명령(ID 0)의 레지스터들(p0, p1)이 이용가능하다는 것을 안다. 따라서 레지스터(p0)의 값과 레지스터(p1)의 값을 더하여 레지스터(p2)에 결과값을 저장하는 가산 명령이 준비된다.
다른 명령들은 적어도 하나의 레지스터에 의존적이다. 예컨대, 로드 명령(ID 1)은 가산 명령(ID 0)에 의존적이며, 감산 명령(ID 2)은 로드 명령(ID 1)에 의존적이다.
명령 이슈 큐(25)는 레지스터 파일 유닛(27)으로부터 레지스터들(p0과 p1)의 값들을 리드한다.
실행 유닛(29)은 명령을 실행한다.
산술 명령에서 두 개의 피연산자들(operand, 예컨대, p0와 p1)이 준비될 때, 실행 유닛(29)은 가산 명령 동작을 실행한다.
실행 유닛(29)이 로드 명령(ID 1)을 실행할 때, 실행 유닛(29)은 데이터 캐시(70)의 메모리 주소를 계산하고 데이터 캐시 컨트롤러(60)를 통해 데이터 캐시 (70)의 상기 메모리 주소로부터 데이터(예컨대, 도 3에서 DATA)를 리드한다.
상기 메모리 주소는 레지스터(r2)에 의해 구체화된다.
데이터(DATA)는 직접적으로 제1데이터 채널(DC1)을 통해 리드된다.
ROB(31)는 복수의 ROB 엔트리들(entries; 예컨대, E0~E2)을 포함한다. ROB (31)에서 복수의 ROB 엔트리들(예컨대, E0~E2) 각각은 프로그램 순서로 할당된다.
복수의 ROB 엔트리들(E0~E2) 각각은 복수의 물리적 레지스터들(PREG)을 포함한다.
예컨대, ROB 엔트리(E0)는 피연산자(SRC_0=PREG=p0)와 피연산자 (SRC_1=PREG=p1), 및 가산 명령의 수행 결과 얻어진 결과값을 저장하기 위한 물리적 레지스터(Dest의 PREG=p2)를 포함한다.
예컨대, ROB 엔트리(E1)는 피연산자(SRC_0=PREG=p2)와 로드 명령의 수행 결과 얻어진 결과값을 저장하기 위한 물리적 레지스터(Dest의 PREG=p3)를 포함한다.
예컨대, ROB 엔트리(E2)는 피연산자(SRC_0=PREG=p4), 피연산자(SRC_1=PREG=p3), 및 감산 명령의 수행 결과 얻어진 결과값을 저장하기 위한 물리적 레지스터(Dest의 PREG=p34)를 포함한다.
도 4에서 'ready' 플래그(flag)는 피연산자가 준비되었는지 여부를 나타내며, 'done' 플래그는 결과값이 레지스터(p2, p3, 또는 p34)에 저장되었는지 여부를 나타내며, 'Exception' 플래그는 예외(exception)가 발생했는지 여부를 나타내며, 'ECC Error' 플래그는 데이터 캐시(70)로부터 출력된 데이터에 에러가 포함되어 있는지의 여부를 나타낸다.
예컨대, 피연산자(p0, p1, 또는 p4)가 준비될 때, 'ready' 플래그는 'v'로 나타낸다.
데이터 캐시(70)로부터 출력된 데이터(DATA)에 에러가 포함될 때, 'ECC Error' 플래그는 'F'로 설정되며, 데이터 캐시(70)로부터 출력된 데이터(DATA)가 에러를 포함하지 않을 때, 'ECC Error' 플래그는 'T'로 설정된다.
실행 유닛(29)에서 명령이 실행될 때, 결과값은 ROB(31)에 저장된다.
예컨대, 로드 명령(ID 1)이 실행 유닛(29)에서 실행된 후, 데이터 캐시(70)로부터 출력된 데이터(DATA)가 ROB(31)의 레지스터(p3)에 저장된다.
ROB(31)는 순환(circular) FIFO(first in first out) 버퍼로 구현될 수 있다.
ROB(31)에서 가산 명령(ID 0), 로드 명령(ID 1), 또는 감산 명령(ID 2)이 예외(exception) 또는 에러 없이 성공적으로 실행될 때, 가산 명령(ID 0), 로드 명령 (ID 1), 또는 감산 명령(ID 2)은 안전하게 컴미티드(committed)될 수 있다.
예컨대, ROB(31)에서 가산 명령(ID0)이 예외(exception))없이 성공적으로 수행될 때, 컴미트 컨트롤 유닛(33)은 레지스터 파일 유닛(27)에 레지스터(p2)의 값을 저장하도록 레지스터(p2)를 제어한다. ROB(31)에서 성공적으로 수행된 엔트리 (E0)는 제거된다.
데이터 캐시(70)로부터 출력된 데이터(DATA)가 ROB(31)의 레지스터(p3)에 저장되는 로드 명령(ID 2)이 수행된 후, 데이터(DATA)의 에러가 ECC 로직 유닛(63)에 의해 검출될 때, ECC 로직 유닛(63)은 제1레벨을 갖는 에러 신호(ES)를 CPU 코어 (20)로 전송한다.
제1레벨을 갖는 에러 신호(ES)가 수신될 때, CPU 코어(20)가 ROB(31)의 'ECC Error' 플래그를 'F'로 설정한다.
ROB(31)의 'ECC Error' 플래그가 'F'로 설정될 때, 컴미트 컨트롤 유닛(33)은 제1레벨을 갖는 선택 신호(SS)를 데이터 캐시 컨트롤러(60)로 전송한다.
또한, 로드 명령(ID 1)이 명령 이슈 큐(25)로부터 제거되며, ROB(31)의 엔트리(E1)가 제거된다. 또한, 로드 명령(ID 1) 이후의 명령, 즉, 감산 명령(ID 2)이 명령 이슈 큐(25)로부터 제거되며, ROB(31)의 엔트리(E2)가 제거된다.
명령들(ID 1과 ID 2)이 다시 명령 패치 유닛(21)을 통해 명령 캐시(50)로부터 패치되며, 실행 유닛(29)에 의해 정정된 데이터(CDATA)가 제2데이터 채널(DC2)을 통해 로드된다.
도 2를 참조하면, 실시 예에 따라, 프로세서(1)는 시스템 주변 유닛(3), 멀티 미디어 가속 유닛(multimedia acceleration unit; 5), 접속 유닛(connectivity unit; 7), 및 디스플레이 컨트롤러(9)를 더 포함할 수 있다.
L2 캐시(90), 시스템 주변 유닛(3), 멀티 미디어 가속 유닛(5), 접속 유닛 (7), 디스플레이 컨트롤러(9), 및 메모리 인터페이스 유닛(11) 각각은 시스템 버스 (13)를 통해 데이터 또는 명령을 주거나 받을 수 있다.
시스템 주변 유닛(3)은 실시간 클럭(real-time clock(RTC)), 위상 동기 루프 (phase-locked loop(PLL)), 및 워치독 타이머(watch dog timer)를 포함할 수 있다.
멀티 미디어 가속 유닛(5)은 그래픽 엔진을 포함한다. 실시 예에 따라, 멀티 미디어 가속 유닛(5)은 카메라 인터페이스, 그래픽 계산을 수행하기 위해 비디오 디스플레이 회로(circuitry)와 집적된 그래픽 엔진, 및 압축되지 않은 디지털 데이터를 전송하기 위한 오디오/비디오 인터페이스인 HDMI(high-definition multimedia interface)을 포함할 수 있다.
실시 예에 따라, 멀티 미디어 가속 유닛(5)은 HDMI 대신에 NTSC(national television system committee)/PAL(phase alternate line)에 따른 인터페이스를 포함할 수 있다.
접속 유닛(7)은 오디오 인터페이스(Audio IF), ATA(Advanced Technology Attachment)와 같은 스토리지 인터페이스(storage IF), 및 접속 인터페이스 (connectivity IF)를 포함할 수 있다. 예컨대, 접속 유닛(7)은 입력 장치(120)와 통신을 수행하도록 한다.
디스플레이 컨트롤러(9)는 데이터를 디스플레이(130)에 디스플레이하도록 제어한다.
도 5는 로드 명령에 따라 데이터로부터 에러가 검출되지 않을 때, 도 2에 도시된 CPU 코어의 파이프 라인의 타이밍 도를 나타낸다. 도 5에서 'ID0'은 가산 명령을 나타내며, 'ID1'은 로드 명령을 나타내며, 'ID2'는 감산 명령을 나타낸다.
도 2부터 도 5를 참조하면, 가산 명령(ID0)은 패치 동작(FT), 리네임 동작 (RN), 이슈 동작(IS), 산술 동작(EX), 저장 동작(ROB), 및 컴미트 동작(CM)을 포함한다.
패치 동작(FT)은 명령 패치 유닛(21)에 의해 수행된다.
명령 패치 유닛(21)은 명령 캐시 컨트롤러(40)를 통해 명령 캐시(50)로부터 가산 명령을 패치한다.
리네임 동작(RN)은 레지스터 리네임 유닛(23)에 의해 수행된다.
레지스터 리네임 유닛(23)은 아키텍쳐럴 레지스터들(r0, r1, 및 r2)을 물리적인 레지스터들(p0, p1, 및 p2)로 번역(translate)한다.
이슈 동작(IS)은 명령 이슈 큐(25)에 의해 수행된다.
명령 이슈 큐(25)는 가산 명령(ID0)에 대해 레지스터들(p0 과 p1)이 이용가능한지 여부를 판단한다.
산술 동작(EX)은 실행 유닛(29)에 의해 수행된다.
실행 유닛(29)은 가산 동작을 수행하고, 결과값을 ROB(31)에 저장하는 저장 동작(ROB)을 수행한다.
컴미트 동작(CM)은 컴미트 컨트롤 유닛(33)에 의해 수행된다.
컴미트 컨트롤 유닛(33)은 ROB(31)에서 가산 명령이 에러 없이 성공적으로 수행될 때, 컴미트 컨트롤 유닛(33)은 레지스터 파일 유닛(27)에 레지스터(p2)의 값을 저장하도록 한다.
로드 명령(ID1)의 동작과 감산 명령(ID2)의 동작은 가산 명령(ID0)의 동작과 유사하므로 이에 대한 자세한 설명은 생략한다.
가산 명령(ID0)의 동작과 로드 명령(ID1)의 동작은 병렬적으로 수행될 수 있다. 예컨대, CPU 코어(20)는 가상 명령(ID0)의 리네임 동작(RN)과 로드 명령(ID1)의 패치 동작(FT)을 동시에 수행할 수 있다.
로드 명령(ID1)은 산술 동작(EX) 대신에 리드 동작(RD)을 수행한다.
리드 동작(RD)은 실행 유닛(29)에 의해 수행된다.
실행 유닛(29)은 데이터 캐시(70)의 메모리 주소를 계산하고 데이터 캐시 컨트롤러(60)를 통해 데이터 캐시(70)의 메모리 주소로부터 데이터(DATA)를 리드한다.
데이터(DATA)에서 에러가 검출되지 않을 때, CPU 코어(20)는, 리드 동작(RD)이 수행된 후, 감산 명령(ID2)의 이슈 동작(IS)을 수행할 수 있다.
따라서, 데이터 캐시 컨트롤러(60)는 데이터(DATA)에 대해 에러 검출하기 위한 동작을 수행하지 않고 데이터 캐시(70)로부터 데이터(DATA)를 CPU 코어(20)로 전송함으로써 캐시 레이턴시가 감소될 수 있다.
도 6은 로드 명령에 따라 데이터로부터 에러가 검출될 때, 도 2에 도시된 CPU 코어의 파이프 라인의 타이밍 도를 나타낸다. 도 6에서 'ID0'은 가산 명령을 나타내며, 'ID1'은 로드 명령을 나타내며, 'ID2'는 감산 명령을 나타낸다.
'ID11'은 상기 로드 명령에서 에러가 검출된 이후 다시 수행되는 로드 명령을 나타내며, 'ID22'는 상기 로드 명령에서 에러가 검출된 후 다시 수행되는 감산 명령을 나타낸다.
패치 동작(FT), 리네임 동작(RN), 이슈 동작(IS), 산술 동작(EX), 리드 동작 (RD), 저장 동작(ROB), 및 컴미트 동작(CM)에 대해 도 5에서 설명하였으므로 이에 대한 자세한 설명은 생략한다.
도 2 내지 도 6을 참조하면, 로드 명령(ID1)에서 리드 동작(RD)이 수행 후, 데이터(DATA)에서 에러가 검출될 때, 로드 명령(ID1)과 로드 명령(ID1) 이후의 명령, 즉 감산 명령(ID2)이 명령 이슈 큐(25)로부터 제거된다.
CPU 코어(20)는 명령 패치 유닛(21)을 통해 로드 명령(ID11)과 감산 명령 (ID22)을 명령 캐시(50)로부터 다시 패치하는 패치 동작(FT)을 수행한다.
실행 유닛(29)에 의해 정정된 데이터(CDATA)가 제2데이터 채널(DC2)을 통해 로드된다.
도 7은 도 2에 도시된 데이터 캐시 컨트롤러의 동작 방법의 일 실시 예를 나타내는 흐름도이다. 도 2, 도 3, 도 4 및 도 7을 참조하면, 데이터 캐시 컨트롤러(60)는 데이터 캐시(70)로부터 출력된 데이터(DATA)를 제1데이터 채널(DC1)을 통해 CPU 코어(20)로 전송한다(S10).
예컨대, 제1데이터 채널(DC1)은 디폴트로 설정될 수 있다.
데이터(DATA)는 CPU 코어(20)의 ROB(31)에 저장된다.
ECC 로직 유닛(63)은 데이터(DATA)에 대해 ECC 검사를 수행한다(S20).
데이터(DATA)로부터 에러가 검출될 때, ECC 로직 유닛(63)은 제1레벨을 갖는 에러 신호(ES)를 CPU 코어(20)로 전송한다(S30).
CPU 코어(20)가 제1레벨을 갖는 에러 신호(ES)를 수신하면, ROB(31)의 'ECC Error' 플래그는 'F'로 설정된다.
ROB(31)의 'ECC Error' 플래그가 'F'로 설정될 때, CPU 코어(20)의 컴미트 컨트롤 유닛(33)은 'F'로 설정된 플래그를 참조하여 제1레벨을 갖는 선택 신호(SS)를 출력한다.
제1데이터 채널(DC1)을 통하여 입력된 데이터(DATA)는 ROB(31)로부터 제거되며, 데이터(DATA)를 로드하는데 사용된 로드 명령(ID1)은 명령 이슈 큐(25)로부터 제거된다.
데이터(DATA)로부터 에러가 검출되지 않을 때, ECC 로직 유닛(63)은 제2레벨을 갖는 에러 신호(ES)를 CPU 코어(20)로 전송한다.
CPU 코어(20)가 제2레벨을 갖는 에러 신호(ES)를 수신하면, ROB(31)의 'ECC Error' 플래그는 'T'로 설정된다.
ROB(31)의 'ECC Error' 플래그가 'T'로 설정될 때, CPU 코어(20)의 컴미트 컨트롤 유닛(33)은 'T'로 설정된 플래그를 참조하여 제2레벨을 갖는 선택 신호(SS)를 출력한다.
데이터(DATA)는 ROB(31)로부터 레지스터 파일 유닛(27)으로 이동된다.
ECC 로직 유닛(63)에 의해 에러가 검출될 때, ECC 로직 유닛(63)은 데이터 (DATA)에 대해 에러를 정정한다(S40).
명령 패치 유닛(21)은 로드 명령(ID1)을 다시 명령 캐시(50)로부터 패치한다.
선택기(65)는 제1레벨을 갖는 에러 신호(ES)에 응답하여 CPU 코어(20)로부터 출력된 제1레벨을 갖는 선택 신호(SS)에 따라, 에러 정정된 데이터(CDATA)를 제2데이터 채널(DC2)을 통해 상기 CPU 코어(20)로 전송한다(S50).
에러 정정된 데이터(CDATA)가 완전히 CPU 코어(20)로 전송된 후, CPU 코어 (20)는 제2데이터 채널(DC2)을 제1데이터 채널(DC1)로 복구하기 위해 제2레벨을 갖는 선택 신호(SS)를 데이터 캐시 컨트롤러(60)로 출력할 수 있다.
도 8은 CPU 코어가 데이터 캐시에 데이터를 라이트하고자 할 때, 도 2에 도시된 CPU 코어의 파이프 라인의 실시 예를 나타낸다.
도 3과 도 8을 참조하면, CPU 코어(20)는 명령 패치 유닛(21), 레지스터 레네임 유닛(23), 명령 이슈 큐 (25), 레지스터 파일 유닛(27), 실행 유닛(29), ROB(31), 컴미트 컨트롤 유닛(33), 컨트롤 로직 유닛(35), 데이터 머지 유닛(data merge unit; 37), 및 ECC 인코드 유닛(ECC encode unit; 39)을 포함한다.
도 8에 도시된 명령 패치 유닛(21), 레지스터 레네임 유닛(23), 명령 이슈 큐 (25), 레지스터 파일 유닛(27), 실행 유닛(29), ROB(31), 및 컴미트 컨트롤 유닛(33)은 도 4에 도시된 명령 패치 유닛(21), 레지스터 레네임 유닛(23), 명령 이슈 큐 (25), 레지스터 파일 유닛(27), 실행 유닛(29), ROB(31), 및 컴미트 컨트롤 유닛(33)과 도면 부호가 같고, 동작 및 기능이 유사하므로 이에 대한 자세한 설명은 생략한다.
명령 캐시(50)로부터 패치된 세이브 명령(save instruction)에 응답하여 컨트롤 로직 유닛(35)은 데이터(DATA1)를 데이터 캐시(70)에 저장하도록 데이터 캐시 컨트롤러(60)에 라이트 인에이블 신호(WE)를 전송하고, 데이터(DATA1)를 데이터 머지 유닛(37)에 전송한다.
데이터 캐시 컨트롤러(60)는 라이트 인에이블 신호(WE)에 응답하여 데이터 캐시(70)로부터 데이터(DATA)를 리드하도록 데이터 캐시(70)를 제어한다. 접속 블록(67)은 라이트 인에이블 신호(WE)를 수신한다.
데이터 캐시(70)로부터 출력된 데이터(DATA)는 제1데이터 채널(DC1)을 통해 CPU 코어(20)로 전송된다. 즉, 데이터 캐시(70)로부터 출력된 데이터(DATA)는 데이터 머지 유닛(37)으로 전송된다.
데이터 머지 유닛(37)은 데이터 머지 유닛(37)은 데이터(DATA)와 컨트롤 로직 유닛(35)으로부터 출력된 데이터(DATA1)를 머지하여 머지된 데이터(DATA2)를 ECC 인코드 유닛(39)으로 출력한다.
ECC 인코드 유닛(39)은 상기 머지된 데이터(DATA2)를 인코딩하여 인코딩된 데이터(DATA3)를 데이터 캐시 컨트롤러(60)를 통해 데이터 캐시(70)로 전송한다.
따라서 데이터 캐시(70)는 상기 인코딩된 데이터(DATA3)를 저장할 수 있다.
ECC 로직 유닛(63)은 데이터 캐시(70)로부터 출력된 데이터(DATA)에 대해 에러 검사(error check), 예컨대 ECC 검사를 수행할 수 있다.
ECC 로직 유닛(63)이 데이터 캐시(70)로부터 출력된 데이터(DATA)의 에러를 검출할 때, ECC 로직 유닛(63)은 제1레벨, 예컨대 로직 1 또는 하이 레벨을 갖는 에러 신호(ES)를 CPU 코어(20)로 전송할 수 있다.
컴미트 컨트롤 유닛(33)은 제1레벨을 가지는 에러 신호(ES)에 응답하여 제1레벨을 갖는 선택 신호(SS)를 출력한다.
이 때, CPU 코어(61)는 명령 캐시(50)로부터 다시 세이브 명령을 패치한다.
컨트롤 로직 유닛(35)은 상기 세이브 명령에 응답하여 데이터(DATA1)를 데이터 캐시(70)에 다시 저장하도록 데이터 캐시 컨트롤러(60)에 라이트 인에이블 신호(WE)를 전송하고, 데이터(DATA1)를 데이터 머지 유닛(37)에 전송한다.
선택기(65)는 제1레벨을 갖는 선택 신호(SS)에 응답하여 에러 정정된 데이터 (CDATA)를 제2데이터 채널(DC2)을 통하여 데이터 머지 유닛(37)으로 다시 전송한다.
데이터 머지 유닛(37)은 에러 정정된 데이터(CDATA)와 컨트롤 로직 유닛(35)으로부터 출력된 데이터(DATA1)를 머지하여 머지된 데이터(DATA2)를 ECC 인코드 유닛(39)으로 출력한다.
ECC 인코드 유닛(39)은 상기 머지된 데이터(DATA2)를 인코딩하여 인코딩된 데이터(DATA3)를 데이터 캐시 컨트롤러(60)를 통해 데이터 캐시(70)로 전송한다.
따라서 데이터 캐시(70)는 상기 인코딩된 데이터(DATA3)를 저장할 수 있다.
도 9는 도 2에 도시된 데이터 캐시 컨트롤러의 동작 방법의 다른 실시 예를 나타내는 흐름도이다.
도 2, 도 3 및 도 9를 참조하면, 데이터 캐시 컨트롤러(60)는 데이터 캐시(70)로부터 출력된 제1데이터(DATA)를 제1레이턴시로 CPU 코어(20)로 전송한다(S100).
상기 제1레이턴시는 명령 캐시(50)로부터 패치된 제1명령과 상기 제1데이터(DATA)의 전송 사이의 지연을 의미한다. 상기 제1명령은 제1데이터(DATA)를 CPU 코어(20)로 로드(load)하기 위해 명령이다.
ECC 로직 유닛(63)은 데이터(DATA)에 대해 ECC 검사를 수행한다(S110).
데이터(DATA)로부터 에러가 검출될 때, ECC 로직 유닛(63)은 제1레벨을 갖는 에러 신호(ES)를 CPU 코어(20)로 전송한다(S120).
데이터(DATA)로부터 에러가 검출되지 않을 때, ECC 로직 유닛(63)은 제2레벨을 갖는 에러 신호(ES)를 CPU 코어(20)로 전송한다.
ECC 로직 유닛(63)에 의해 에러가 검출될 때, ECC 로직 유닛(63)은 데이터 (DATA)에 대해 에러를 정정하고, 에러 정정된 제2데이터(CDATA)를 출력한다(S130).
선택기(65)는 제1레벨을 갖는 에러 신호(ES)에 응답하여 CPU 코어(20)로부터 출력된 제1레벨을 갖는 선택 신호(SS)에 따라, 에러 정정된 제2데이터(CDATA)를 제2레이턴시로 상기 CPU 코어(20)로 전송한다(S140).
상기 제2레이턴시는 명령 캐시(50)로부터 패치된 제2명령과 제2데이터(CDATA)의 전송 사이의 지연을 의미한다. 상기 제2명령은 제2데이터(CDATA)를 CPU 코어(20)로 로드(load)하기 위해 명령이다.
도 10은 본 발명의 실시 예에 따른 서버 시스템의 블록도를 나타낸다.
도 10을 참조하면, 서버 시스템(1000)은 소프트웨어 어플리케이션들을 실행시키기 위한 어플리케이션 서버(application server), 다른 컴퓨터에 데이터베이스 서비스들(database services)를 제공하기 위한 데이터베이스 서버(database server), 파일 서비스를 제공하기 위한 파일 서버, 또는 비디오 게임 서비스를 제공하기 위한 게임 서버로 구현될 수 있다.
서버 시스템(1000)은 SOC(System on Chip; 1100), 및 메모리(1200), 이더넷 스위치 장치(ethernet switch device; 1300), 및 하드 디스크 드라이브(1400)를 포함한다.
SOC(1100)는 적어도 하나 이상의 CPU(10-1), L2 캐시(1120)를 제어하기 위한 L2 캐시 컨트롤러(1110), 메모리 장치(1200)를 제어하기 위한 메모리 인터페이스 유닛(1130), 이더넷 스위치 장치(1300)를 제어하기 위한 네트워크 인터페이스 유닛(1140), 및 하드 디스크 드라이브(1400)를 제어하기 위한 스토리지 인터페이스 유닛(storage interface unit; 1150)을 포함한다.
L2 캐시(1120), 메모리 인터페이스 유닛(1130), 네트워크 인터페이스 유닛(1140), 및 스토리지 인터페이스 유닛(1150) 각각은 시스템 버스(1160)를 통해 데이터 또는 명령을 주거나 받을 수 있다.
실시 예에 따라 SOC(1100)는 복수의 CPU들(10-1~10-n; n은 자연수)을 포함할 수 있다.
CPU(10-1), L2 캐시 컨트롤러(1110), L2 캐시(1120), 및 메모리 인터페이스 유닛(1130)은 도 2에 도시된 CPU(10), L2 캐시 컨트롤러(80), L2 캐시(90), 및 메모리 인터페이스 유닛(11)과 동작 및 기능이 유사하므로 이에 대한 자세한 설명은 생략한다. 또한, 메모리(1200)는 도 1에 도시된 메모리(110)와 동작 및 기능이 유사하므로 이에 대한 설명도 생략한다.
이더넷 스위치 장치(1300)는 네트워크에 접속하는 컴퓨터 네트워킹 장치(computer networking)이다.
이더넷 스위치 장치(1300)는 네트워크 인터페이스 유닛(1140)을 통해 SOC(1100)와 데이터 통신을 수행한다.
스토리지 인터페이스 유닛(1150)은 하드 디스크 드라이브(1400)와 SOC(110) 사이에 데이터 통신을 수행하도록 한다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 전자 장치 3; 시스템 주변 유닛
1; 프로세서 5; 멀티 미디어 가속 유닛
110; 메모리 7; 접속 유닛
120; 입력 장치 9; 디스플레이 컨트롤러
130; 디스플레이 40; 명령 캐시 컨트롤러
10; 중앙 처리 유닛 50; 명령 캐시
80; L2 캐시 컨트롤러 60; 데이터 캐시 컨트롤러
90; L2 캐시 70; 데이터 캐시
11; 메모리 인터페이스 유닛

Claims (10)

  1. 데이터 캐시로부터 출력된 제1데이터를 제1레이턴시로 CPU 코어로 전송하는 단계;
    제2데이터를 상기 제1레이턴시보다 큰 제2레이턴시로 상기 CPU 코어로 전송하는 단계; 및
    상기 제1데이터에 대해 에러 정정 동작을 수행하여 에러 정정된 데이터를 생성하는 단계를 포함하며,
    상기 제1레이턴시는 명령 캐시로부터 패치된 제1명령의 실행에 따른 상기 데이터 캐시로의 리드 요구와 상기 제1데이터의 전송 사이의 지연을 의미하고,
    상기 제2레이턴시는 상기 명령 캐시로부터 패치된 제2명령의 실행에 따른 상기 데이터 캐시로의 리드 요구와 상기 제2데이터의 전송 사이의 지연을 의미하고,
    상기 제2데이터는 상기 제1데이터에 대해 수행된 상기 에러 정정 동작에 기초하여 출력된 데이터 캐시 컨트롤러의 동작 방법.
  2. 제1항에 있어서, 상기 데이터 캐시 컨트롤러의 동작 방법은,
    상기 제1데이터의 에러를 검출하고 에러 신호를 상기 CPU 코어로 전송하는 단계; 및
    상기 제1데이터에 대해 에러 정정을 수행하여 상기 제2데이터를 생성하는 단계를 더 포함하고,
    상기 제2데이터를 상기 CPU 코어로 전송하는 단계는, 상기 에러 신호에 응답하여 상기 CPU 코어로부터 출력된 선택 신호에 따라 상기 제2데이터를 상기 CPU 코어로 전송하는 단계를 포함하는 데이터 캐시 컨트롤러의 동작 방법.
  3. CPU 코어; 및
    데이터 캐시로부터 출력된 데이터를 제1데이터 채널을 통해 상기 CPU 코어로 전송한 후, 상기 데이터에 대한 에러 정정 동작을 수행하여 에러 정정된 데이터를 생성하고, 상기 CPU 코어의 제어에 따라, 상기 에러 정정된 데이터를 제2데이터 채널을 통하여 상기 CPU 코어로 전송하는 데이터 캐시 컨트롤러를 포함하는 프로세서.
  4. 제3항에 있어서, 상기 데이터 캐시 컨트롤러는,
    상기 CPU 코어로부터 출력된 선택 신호에 따라, 상기 제1데이터 채널과 상기 제2데이터 채널을 스위칭할 수 있는 선택기를 포함하는 프로세서.
  5. 제3항에 있어서, 상기 데이터 캐시 컨트롤러는,
    상기 데이터에 포함된 에러를 검출하고 에러 신호를 상기 CPU 코어로 출력하고, 상기 데이터에 대해 상기 에러 정정 동작을 수행하여 상기 에러 정정된 데이터를 생성하고, 상기 에러 정정된 데이터를 출력하는 ECC(error correction code) 로직 유닛; 및
    상기 에러 신호에 기초하여 상기 CPU 코어로부터 출력된 선택 신호에 따라, 상기 데이터를 상기 제1데이터 채널을 통하여 상기 CPU 코어로 전송하고 상기 에러 정정된 데이터를 상기 제2데이터 채널을 통하여 상기 CPU 코어로 전송하는 선택기를 포함하는 프로세서.
  6. 제5항에 있어서, 상기 CPU 코어는,
    상기 에러 신호에 대응되는 플래그를 저장하는 리오더 버퍼 (reorder buffer); 및
    상기 플래그에 따라 상기 선택 신호를 출력하는 컨트롤 유닛을 포함하는 프로세서.
  7. 제6항에 있어서, 상기 CPU 코어는,
    라이트 인에이블 신호를 상기 데이터 캐시 컨트롤러로 전송하는 컨트롤 로직 유닛을 더 포함하는 프로세서.
  8. 제7항에 있어서, 상기 CPU 코어는,
    상기 컨트롤 로직 유닛으로부터 출력되는 데이터와, 상기 데이터 또는 상기 에러 정정된 데이터를 머지(merge)하는 데이터 머지 유닛; 및
    상기 데이터 머지 유닛으로부터 출력되는 데이터를 인코딩하는 ECC 인코딩 유닛을 더 포함하는 프로세서.
  9. 프로세서; 및
    상기 프로세서에 의해 처리된 데이터를 디스플레이하는 디스플레이를 포함하며, 상기 프로세서는,
    CPU 코어;
    로드 명령을 저장하는 명령 캐시;
    데이터를 저장하는 데이터 캐시; 및
    상기 명령 캐시에 의해 패치된 상기 로드 명령에 따라 상기 데이터 캐시로부터 출력된 상기 데이터를 제1데이터 채널을 통해 상기 CPU 코어로 전송하고, 상기 데이터에 대해 에러 정정 동작을 수행하여 에러 정정된 데이터를 생성하고, 상기 CPU 코어의 제어에 따라, 상기 에러 정정된 데이터를 제2데이터 채널을 통하여 상기 CPU 코어로 전송하는 데이터 캐시 컨트롤러를 포함하는 전자 장치.
  10. 제9항에 있어서, 상기 전자 장치는 PC(personal computer) 또는 휴대용 장치(portable device)인 전자 장치.
KR1020110115052A 2011-11-07 2011-11-07 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 KR101703173B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110115052A KR101703173B1 (ko) 2011-11-07 2011-11-07 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법
US13/446,345 US8645791B2 (en) 2011-11-07 2012-04-13 Data cache controller, devices having the same, and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110115052A KR101703173B1 (ko) 2011-11-07 2011-11-07 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20130049964A KR20130049964A (ko) 2013-05-15
KR101703173B1 true KR101703173B1 (ko) 2017-02-07

Family

ID=48224592

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110115052A KR101703173B1 (ko) 2011-11-07 2011-11-07 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법

Country Status (2)

Country Link
US (1) US8645791B2 (ko)
KR (1) KR101703173B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9535804B2 (en) * 2012-05-21 2017-01-03 Cray Inc. Resiliency to memory failures in computer systems
JP2018156556A (ja) 2017-03-21 2018-10-04 東芝メモリ株式会社 計算機システム及びメモリデバイス

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070079216A1 (en) * 2005-09-13 2007-04-05 Bell Robert H Jr Fault tolerant encoding of directory states for stuck bits

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4021991B2 (ja) 1998-06-10 2007-12-12 沖電気工業株式会社 メモリ制御システム
US6772383B1 (en) * 1999-05-27 2004-08-03 Intel Corporation Combined tag and data ECC for enhanced soft error recovery from cache tag errors
US20040047209A1 (en) * 2000-11-22 2004-03-11 Chuen-Der Lien FIFO memory devices having multi-port cache memory arrays therein that support hidden EDC latency and bus matching and methods of operating same
JP2004030527A (ja) 2002-06-28 2004-01-29 Fujitsu Ltd 記憶制御装置、および記憶制御方法
JP4201783B2 (ja) * 2005-08-04 2008-12-24 富士通マイクロエレクトロニクス株式会社 キャッシュメモリ装置、半導体集積回路およびキャッシュ制御方法
US7689891B2 (en) * 2005-09-13 2010-03-30 International Business Machines Corporation Method and system for handling stuck bits in cache directories
KR101437396B1 (ko) 2008-02-27 2014-09-05 삼성전자주식회사 레이턴시를 줄일 수 있는 에러 정정 블록을 포함하는메모리 시스템 및 그것의 에러 정정 방법
US8051337B2 (en) * 2009-01-22 2011-11-01 Taiwan Semiconductor Manufacturing Company, Ltd. System and method for fast cache-hit detection
JP2012103826A (ja) * 2010-11-09 2012-05-31 Fujitsu Ltd キャッシュメモリシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070079216A1 (en) * 2005-09-13 2007-04-05 Bell Robert H Jr Fault tolerant encoding of directory states for stuck bits

Also Published As

Publication number Publication date
KR20130049964A (ko) 2013-05-15
US20130117627A1 (en) 2013-05-09
US8645791B2 (en) 2014-02-04

Similar Documents

Publication Publication Date Title
US11853763B2 (en) Backward compatibility by restriction of hardware resources
TWI654562B (zh) 藉由演算法匹配、停用特徵或限制效能之回溯相容性
US9830158B2 (en) Speculative execution and rollback
KR101531078B1 (ko) 데이터 처리 시스템 및 데이터 처리 방법
TWI483265B (zh) 硬體動態快取電源管理
US10747539B1 (en) Scan-on-fill next fetch target prediction
TW201337753A (zh) 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法
KR101669784B1 (ko) 메모리 대기 시간 관리
US9746910B2 (en) Supporting runtime D3 and buffer flush and fill for a peripheral component interconnect device
US10402322B2 (en) Systems and methods for faster read after write forwarding using a virtual address
TWI510912B (zh) 多核電路中之容錯
TW201423404A (zh) 具資料擱置狀態之系統快取記憶體
JP2017033501A (ja) 記憶装置および制御方法
JP2017537408A (ja) アウトオブオーダー(ooo)プロセッサにおける早期命令実行を提供すること、ならびに関連する装置、方法、およびコンピュータ可読媒体
US20110173361A1 (en) Information processing apparatus and exception control circuit
KR101703173B1 (ko) 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법
KR20150035161A (ko) 그래픽 처리 장치 및 이의 동작 방법
US20120185733A1 (en) Application reliability and fault tolerant chip configurations
US9152588B2 (en) Race-free level-sensitive interrupt delivery using fabric delivered interrupts
US9437172B2 (en) High-speed low-power access to register files
US11099846B2 (en) Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability
US10514925B1 (en) Load speculation recovery
US8214592B2 (en) Dynamic runtime modification of array layout for offset
JP2009181422A (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
FPAY Annual fee payment

Payment date: 20191226

Year of fee payment: 4