KR101591583B1 - 캐싱 장치 및 방법 - Google Patents

캐싱 장치 및 방법 Download PDF

Info

Publication number
KR101591583B1
KR101591583B1 KR1020140010410A KR20140010410A KR101591583B1 KR 101591583 B1 KR101591583 B1 KR 101591583B1 KR 1020140010410 A KR1020140010410 A KR 1020140010410A KR 20140010410 A KR20140010410 A KR 20140010410A KR 101591583 B1 KR101591583 B1 KR 101591583B1
Authority
KR
South Korea
Prior art keywords
cache
memory
columns
input
row
Prior art date
Application number
KR1020140010410A
Other languages
English (en)
Other versions
KR20150089594A (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 KR1020140010410A priority Critical patent/KR101591583B1/ko
Publication of KR20150089594A publication Critical patent/KR20150089594A/ko
Application granted granted Critical
Publication of KR101591583B1 publication Critical patent/KR101591583B1/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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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

Abstract

캐싱 장치 및 방법이 제공된다. 캐싱 장치는 하나의 입출력 단위에 대한 접근에 대해 메모리의 복수의 행들 중 하나의 행의 복수의 열들을 사용할 수 있다. 또한, 캐싱 장치는 캐시의 입출력 단위의 크기의 변화에 따라 메모리를 재구성할 수 있다.

Description

캐싱 장치 및 방법{METHOD AND APPARATUS FOR CACHING}
기술분야는 캐싱에 관한 것으로, 특히 캐시 데이터를 관리하는 장치 및 방법에 관한 것이다.
캐시는 컴퓨터의 연산 장치 및 주 메모리의 사이에 위치하여, 연산 장치에 대응하는 속도로 동작하는 고속의 메모리를 의미한다.
캐시는 주 메모리 내에 저장된 데이터의 일부를 저장할 수 있다. 캐시 내에 저장된 데이터는 주 메모리 내에 저장된 데이터에 비해 더 빠르게 접근될 수 있다. 이러한 캐시의 기능을 통해, 캐시는 빠른 속도의 연산 장치 및 느린 속도의 주 메모리 간의 속도들의 차이에 의해 발생하는 병목 현상을 완화시킬 수 있다.
또한, 상술된 것과 같은 기능을 통해, 캐시는 시스템의 성능에 큰 영향을 줄 수 있다.
캐시는 다양한 어플리케이션들에 의한 메모리에 대한 다양한 접근 패턴들을 수용할 수 있어야 한다. 상기의 수용을 위해 충분한 캐시 크기가 요구될 수 있으며, 접근 패턴에 맞는 정책을 제공할 필요가 있다. 그러나, 캐시 크기의 증가는 캐시의 회로 면적의 증가 및 캐시에 의한 소비 전력의 증가를 야기한다.
실리콘 관통 전극(Through Silicon Via; TSV) 기술의 발달에 따라, 3D 다이 적층 기술이 메모리 구조에도 적용되면서, 디램(Dynamic Random Access Memory; DRAM), 및 피씨램(Phase Change Random Access Memory; PCRAM) 등 다양한 종류의 메모리가 캐시로서 사용된다. 따라서, 메모리의 특성이 다양해짐에 따라 캐시의 기능 또한 상기의 메모리의 특성에 대응하도록 다양하게 개발될 수 있다.
한국공개특허 제10-2002-0064143호(공개일 2002년 08월 07일)에는 SRAM과 DRAM을 모두 지원하는 캐시 인터페이스를 개시한다. 설계자는 캐시로 이용할 RAM을 선택할 수 있고, 연산 장치(processor) 상의 캐시 컨트롤러 인터페이스는 설계자의 선택에 따라 RAM의 종류를 구성한다. 또한, 캐시의 속도 및 사이즈가 프로그래밍될 수 있는 캐시 인터페이스가 개시된다.
일 실시예는 재구성이 가능한 캐싱 장치 및 방법을 제공할 수 있다.
일 실시예는 어플리케이션에 적합한 구성으로 변환되는 캐싱 장치 및 방법을 제공할 수 있다.
일 측면에 있어서, 캐시의 데이터를 저장하는 메모리 및 제어부를 포함하고, 상기 제어부는 상기 캐시의 하나의 입출력 단위에 대한 접근에 대해 상기 메모리의 복수의 행들 중의 하나의 행의 복수의 열들을 사용하는 캐싱 장치가 제공된다.
상기 캐시는 하나 이상의 셋들을 포함할 수 있다.
상기 캐시의 하나 이상의 셋들의 각 셋은 하나 이상의 웨이들을 포함할 수 있다.
상기 각 셋은 상기 메모리의 하나 이상의 행들 중 하나의 행에 대응할 수 있다.
상기 각 셋의 하나 이상의 웨이들의 각 웨이는 상기 하나 이상의 행들 중 하나의 행에만 대응할 수 있다.
상기 하나 이상의 셋들에 대응하는 상기 메모리의 하나 이상의 행들은 상기 메모리 상에서 서로 간에 인터리빙될 수 있다.
상기 메모리의 하나의 행은 상기 행에 대응하는 상기 캐시의 셋의 하나 이상의 웨이들 중 중 하나의 웨이만을 저장할 수 있다.
상기 입출력 단위는 상기 캐시의 하나의 셋 내의 하나의 웨이일 수 있다.
상기 제어부는 복수의 버스들을 사용함으로써 상기 메모리의 상기 복수의 열들에 동시에 접근할 수 있다.
상기 메모리는 디램(Dynamic Random Access Memory; DRAM), 에스디램(Synchronous Dynamic Random Access Memory; SDRAM) 또는 피씨램(Phase Change Random Access Memory; PCRAM) 중 하나일 수 있다.
상기 제어부는 상기 입출력 단위에 대한 접근에 있어서 버스트 접근 모드(Burst Access Mode)를 사용할 수 있다.
상기 입출력 단위에 대한 접근에 있어서 버스트 접근 모드(Burst Access Mode)를 사용할 수 있다.
상기 캐싱 장치는, 카운터 저장부를 더 포함할 수 있다.
상기 카운터 저장부는 상기 접근을 위해 사용되는 상기 복수의 열들 중 하나의 열을 가리키는 값을 저장할 수 있다.
상기 제어부는 상기 복수의 열들에 순차적으로 접근하고, 상기 복수의 열들 중 접근되는 열을 식별하기 위해 상기 카운터 저장부 내에 저장된 값을 제어할 수 있다.
상기 제어부는 상기 입출력 단위의 크기를 동적으로 재구성할 수 있다.
상기 캐싱 장치는, 상기 카운터 저장부를 더 포함할 수 있다.
상기 제어부는 재구성된 상기 입출력 단위의 크기에 기반하여 상기 카운터 저장부가 저장하는 값들의 범위를 제어할 수 있다.
다른 일 측면에 있어서, 캐시의 하나의 입출력 단위에 대한 접근에 대해 사용할 메모리 내의 영역을 특정하는 단계 및 상기 특정된 영역을 사용하여 상기 하나의 입출력 단위에 대한 접근을 처리하는 단계를 포함하고, 상기 특정한 영역은 상기 메모리의 복수의 행들 중의 하나의 행의 복수의 열들인 캐싱 방법이 제공된다.
상기 캐싱 방법은, 카운터를 저장하는 단계를 더 포함할 수 있다.
상기 저장하는 단계는 상기 접근을 위해 사용되는 상기 복수의 열들 중 하나의 열을 가리키는 값을 저장할 수 있다.
상기 처리하는 단계는 상기 복수의 열들에 순차적으로 접근하고, 상기 복수의 열들 중 접근되는 열을 식별하기 위해 상기 카운터를 저장하는 단계에서 저장된 값을 제어할 수 있다.
상기 처리하는 단계는 상기 입출력 단위의 크기를 동적으로 재구성할 수 있다.
상기 캐싱 방법은 상기 카운터를 저장하는 단계를 더 포함할 수 있다.
상기 처리하는 단계는 재구성된 상기 입출력 단위의 크기에 기반하여 상기 카운터를 저장하는 단계가 저장하는 값들의 범위를 제어할 수 있다.
캐시의 하나의 입출력 단위에 대한 접근에 대해 메모리의 복수의 행들 중의 하나의 행의 복수의 열들을 사용함으로써 캐싱의 레이턴시를 감소시킬 수 있는 캐싱 장치 및 방법이 제공된다.
캐시의 입출력 단위의 크기에 대한 재구성이 가능한 캐싱 장치 및 방법이 제공된다.
도 1은 집합 연관 캐시(set associative cache)의 구성도이다.
도 2는 일 실시예에 따른 전자 장치를 도시한다.
도 3은 재구성이 가능한 캐시에서의 캐시 라인 크기 증가에 따른 캐시의 입출력 단위에 대한 메모리 상의 배치를 나타낸다.
도 4는 데이터 버스를 선택적으로 사용하는 재구성이 가능한 캐시를 나타낸다.
도 5는 캐시의 입출력 단위의 변화에 따른 캐시 내의 데이터 배치를 나타낸다.
도 6은 일 예에 따른 캐시 내의 데이터 배치를 도시한다.
도 7은 일 예에 따른 캐시의 입출력 단위의 크기가 2 배가 된 경우의 캐시 내의 데이터 배치를 도시한다.
도 8은 일 예에 따른 캐시의 입출력 단위의 크기가 4 배가 된 경우의 캐시 내의 데이터 배치를 도시한다.
도 9는 일 실시예에 따른 캐싱 방법의 흐름도이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
일반적으로, 재구성이 가능한 캐시 메모리는 캐시 메모리 라인 크기를 늘리기 위해서 제1 기법 및 제2 기법을 사용할 수 있다. 제1 기법은 카운터를 사용하여 동일한 웨이에서의 인접한 셋들을 연속적으로 접근하는 기법이다. 제2 기법은 충분히 큰 데이터 버스를 구성하고, 데이터 버스를 선택적으로 사용하여 다수의 셋들을 동시에 접근하는 기법이다.
제1 기법에 있어서, DRAM을 사용하여 캐시 메모리를 구현할 경우, 추가적인 레이턴시 오버헤드(latency overhead)를 발생시킬 수 있고, SRAM을 캐시 메모리로 구현하는 경우에 비해 비효율적일 수 있다. 즉, DRAM과 같이 연속적인 데이터가 동일한 행에 있는지 상이한 행에 있는지에 따라 레이턴시 차이가 크게 나는 메모리에서는 데이터의 배치에 따라 캐시 라인 크기를 증가시켰을 때 읽기 동작에서 비효율적일 수 있다.
제2 기법은 사용하지 않는 데이터 버스로 인한 공간 오버헤드(area overhead) 및 정적 전력 소모(static power consumption)와 같은 추가적인 오버헤드가 발생될 수 있다.
DRAM의 접근에 있어서, 다양한 종류의 레이턴시(latency)가 발생할 수 있다. DRAM의 접근에 관련하여 발생되는 레이턴시는 카스(Column Address Strobe; CAS) 레이턴시, 라스(Row Address Strobe; RAS) 레이턴시 및 프리차지(precharge) 레이턴시를 포함할 수 있다. DRAM에 대한 접근의 종류들에 따라 접근에 의해 발생하는 레이턴시들이 서로 상이할 수 있다.
CAS 레이턴시는 CAS 명령에 대한 대기 시간일 수 있다. CAS 레이턴시는 DRAM의 특정한 열(column)을 접근하기 위해 요구되는 시간 또는 클럭의 개수일 수 있다.
RAS 레이턴시는 RAS 명령에 대한 대기 시간일 수 있다. RAS 레이턴시는 데이터 요청 및 프리차지 명령 사이에서, DRAM의 특정한 행을 접근하기 위해 요구되는 시간 또는 클럭의 개수일 수 있다.
프리차지 레이턴시는 프리차지 명령에 대한 대기 시간일 수 있다. 프리차지 레이턴시는 DRAM 상에서 오픈된 하나의 행에 대한 접근을 종료하기 위해 요구되는 시간 또는 클럭의 개수일 수 있고, 다음의 행에 대한 접근을 오픈하기 위해 요구되는 시간 또는 클럭의 개수일 수 있다.
도 1은 집합 연관 캐시(set associative cache)의 구성도이다.
캐시에 대한 접근은 데이터 블록(block) 단위로 이루어질 수 있다. 말하자면, 캐시의 접근의 단위는 데이터 블록일 수 있고, 캐시는 하나 이상의 데이터 블록들을 저장할 수 있다.
기본적으로 데이터 블록은 메모리 내에 저장된다. 캐시가 특정한 데이터 블록들을 캐싱함에 있어서, 캐시가 사용하는 전체의 슬롯들 중 특정한 슬롯들에게로만 상기의 특정한 데이터 블록의 저장이 제한될 수 있다. 말하자면, 데이터 블록을 저장하는 메모리의 주소 공간(address space)은 데이터 블록의 주소에 기반하여 캐시로 사상될 수 있다.
연산 장치(processor) 등이 데이터 블록을 사용할 때, 우선 캐시 내에 접근이 요청되는 데이터 블록이 존재하는지 여부가 판단될 수 있다. 만약, 캐시 내에 현재 접근하려는 데이터 블록이 존재하면 캐시 히트(cache hit)가 발생할 수 있고, 캐시 내에 현재 접근하려는 데이터 블록이 존재하지 않으면 캐시 미스(cache miss)가 발생할 수 있다.
메모리들 간의 계층 구조(hierarchy)에 따라 하위 계층인 메모리의 주소 공간의 크기는 상위 계층인 캐시의 크기보다 훨씬 더 크다. 따라서, 캐시 내에 저장되지 않은 다수의 데이터 블록들에 대한 접근에 대하여, 높은 확률로 캐시 미스가 발생될 수 있다.
캐시 미스가 발생된 경우에, 접근하려는 데이터 블록은 우선 캐시 내에 저장될 수 있다. 캐시 내에 상기의 데이터 블록의 저장을 위해 사용될 수 있는 공간들 중 빈 공간이 없으면, 상기의 데이터 블록은 캐시 내에 이미 저장된 다른 데이터 블록과 교체되어야 한다. 캐시 미스로 인한 교체를 통해 캐시에서 방출되는 데이터 블록을 희생자(victim)로 칭한다. 희생자는 캐시의 교체 정책(replacement policy)에 따라 결정될 수 있다.
도 1에서, 주소(110)는 데이터의 주소를 나타낼 수 있다.
주소(110)는 태그(tag) 필드(field)(112), 인덱스(index) 필드(114) 및 오프셋(offset) 필드(116)를 포함할 수 있다.
태그 필드(112)는 인덱스 필드(114)에 의해 사상된 캐시 상의 위치에 저장된 데이터 블록(들)이 현재 접근하려는 주소의 데이터 블록과 매칭되는지를 식별하기 위해 사용되는 필드일 수 있다.
인덱스 필드(114)는 데이터 블록이 캐시 상에 사상될 위치를 결정하는 필드일 수 있다. 여기서, 위치는 캐시의 하나 이상의 셋들 중 인덱스 필드(114)에 대응하는 하나의 셋을 나타낼 수 있다. 캐시의 셋은 캐시의 로우일 수 있다.
예를 들어, 인덱스 필드(114)가 i 비트(bit)라면, 캐시 상에 데이터 블록이 사상될 수 있는 위치(말하자면, 로우)의 개수는 2i개일 수 있다. 데이터 블록의 주소(110)의 인덱스 필드(114)의 값이 x 라면, 데이터 블록은 캐시의 x 번째 셋에 사상될 수 있다.
상술된 태그 필드(112) 및 인덱스 필드(114)에 의해 캐시 내에 저장된 데이터 블록들이 메모리 주소 공간 중 어느 주소의 데이터 블록인지가 식별될 수 있다.
오프셋 필드(116)는 인덱스 필드(114) 및 태그 필드(112) 외의 나머지의 j 개의 최하위 비트들일 수 있다. 오프셋 필드(116)는 메모리 주소 공간의 위치를 나타내는 주소의 비트들 중 중 데이터 블록 및 캐시 상의 위치 간의 사상에 무관한 비트들 일 수 있다.
오프셋 필드(116)의 크기는 캐시의 접근 단위인 데이터 블록의 크기에 대응할 수 있다. 예를 들어 오프셋 필드(116)가 j 비트라면, 데이터 블록의 크기는 2j 바이트(byte), n2j 바이트(byte) 또는 2j 워드(word) 등일 수 있다.
상기의 설명에서, i, j 및 n은 각각 0 이상의 정수일 수 있다.
데이터 주소(110)의 크기, 태그 필드(112)의 크기, 인덱스 필드(114)의 크기 및 오프셋(116)의 크기는 캐시 또는 캐시를 포함하는 컴퓨터 시스템에 의존적으로 결정될 수 있다.
캐시는 연관도(associativity)에 따라 직접 사상 캐시(direct mapped cache), 전 연관 캐시(fully associative cache) 및 집합 연관 캐시(set associative cache)로 구분될 수 있다.
직접 사상 캐시에서는, 데이터 블록의 주소에 기반하여 데이터 블록이 저장될 캐시 상의 위치가 고정된다. 전 연관 캐시에서는 데이터 블록의 주소에 무관하게 캐시 상의 데이터 블록이 저장될 수 잇는 전체의 위치들 중 선택된 하나의 위치에 데이터 블록이 저장된다. 집합 연관 캐시에서는 데이터 블록은 데이터 블록의 주소에 따라, 캐시 상의 데이터 블록들이 저장될 일부의 위치들 중 선택된 하나의 위치에 데이터 블록이 저장된다. 집합 연관 캐시의 경우, 캐시는 하나 이상의 셋들을 포함하고, 하나 이상의 셋들의 각각은 하나 이상의 웨이들을 포함한다. 여기서, 셋은 캐시의 로우, 웨이는 캐시의 컬럼에 대응할 수 있다. 집합 연관 캐시의 경우, 데이터 블록의 주소에 기반하여 우선 하나 이상의 셋들 중 데이터 블록을 저장할 셋이 결정되고, 결정된 셋의 하나 이상의 웨이들 중 데이터 블록을 저장할 웨이가 결정된다. 집합 연관 캐시는, 캐시의 셋의 개수 및 웨이의 개수에 따라, m-셋 n-웨이 캐시로 명명될 수 있다. m 및 n은 각각 1 이상의 정수일 수 있다.
m-셋 및 n-웨이의 집합 연관 캐시의 관점에서 보면, 직접 사상 캐시는 m*n-셋 및 1-웨이(1-way)인 집합 연관 캐시일 수 있다. 또한 m-셋 및 n-웨이의 집합 연관 캐시의 관점에서 보면 전 연관 캐시는 1-셋 및 m*n-웨이인 집합 연관 캐시일 수 있다.
도 1에서, 도시된 캐시(100)는 m-셋 및 n-웨이의 집합 연관 캐시일 수 있다.
캐시(100)는 태그 어레이(120) 및 데이터 어레이(130)를 포함할 수 있다.
태그 어레이(120)는 태그 어레이 저장부(122) 및 비교기(126)를 포함할 수 있다.
태그 어래이 저장부(122)는 m개의 행(row)(123) 및 n개의 열(column)(124)로 구분될 수 있다. 태그 어레이 저장부(122)의 i번째 행은 i-셋에 대응할 수 있고, j번째 열은 j-웨이에 대응할 수 있다. 말하자면, 데이터 블록의 주소(110) 중 인덱스 필드(114)에 의해 태그 어레이 저장부(122) 내의 셋들 중 데이터 블록에 대응하는 셋이 결정될 수 있다. 태그 어레이 저장부(122)의 i번째 행의 j번째 열에는 데이터 어레이(132)의 i-셋의 j-웨이에 저장된 데이터 블록의 태그(112)가 저장될 수 있다.
비교기(126)는 태그 어레이 저장부(122)에 저장된 태그들 및 데이터 블록의 주소(110)의 태그 필드(112)의 값들을 비교할 수 있다. 데이터의 주소(110)의 인덱스 필드(114)에 의해 결정된 태그 어레이 저장부(122)의 셋이 제1 셋이라고 가정하면, 비교기(126)는 태그 어레이 저장부(122)의 제1 셋의 n개의 웨이들에 저장된 태그들에 대하여, 저장된 태그들의 각각의 값 및 데이터 블록의 주소(110)의 태그 필드(112)의 값을 비교할 수 있다. 상기의 비교는 저장된 태그들에 대하여 동시에 이루어질 수 있다.
만약, 상기의 비교의 결과로서 제1 셋의 n개의 웨이들 중 하나인 제1 웨이에 저장된 태그 및 데이터 블록의 주소(110)의 태그 필드(112)의 값이 동일하다면, 캐시 히트가 발생할 수 있다. 만약, 상기의 비교의 결과로서, 제1 셋의 n개의 웨이에 저장된 태그들의 값들 중 데이터의 주소(110)의 태그 필드(112)의 값과 동일한 값이 없다면 캐시 미스가 발생할 수 있다.
일 예에서 데이터 어레이(130)는 데이터 어래이 저장부(132) 및 멀티플렉서(MUltipleXer; MUX)(136)를 포함할 수 있다.
일 예에서 데이터 어레이 저장부(132)은 m개의 행(row)(133) 및 n개의 열(column)(134)로 구분될 수 있다. 일 예에서 데이터 어레이 저장부(132)의 i번째 행은 i-셋에 대응할 수 있고, j번째 열은 j-웨이에 대응할 수 있다.
데이터 블록의 주소(110) 중 인덱스 필드(114)에 의해 데이터 어레이 저장부(132) 내의 셋들 중 데이터 블록에 대응하는 셋이 결정될 수 있다. 인덱스 필드(114)에 의해 데이터 블록에 대응하는 셋이 결정되면, 결정된 셋의 웨이들 중 하나의 웨이가 데이터 블록에 대한 접근을 위해 사용될 수 있다. 여기서, 접근은 데이터 블록의 저장을 포함할 수 있다. 예를 들면, 데이터 블록은 인덱스 필드(114)에 의해 결정되는 셋의 웨이들 중 비어있는 웨이 또는 캐시 정책에 의해 선택된 웨이에 저장될 수 있다.
MUX(136)는 비교기(126)에 의한 비교의 결과를 선택의 신호로 사용할 수 있다. MUX(136)는 캐시 히트가 발생한 경우에 데이터 어레이 저장부(132)의 데이터 블록에 대응하는 셋의 웨이들 중, 비교기(126)에 의해 지정된 웨이를 선택할 수 있고, 선택된 웨이에 저장된 데이터 블록을 출력할 수 있다.
도 2는 일 실시예에 따른 전자 장치(200)를 도시한다.
도 2의 전자 장치(200)는 캐싱 장치(210) 및 주 메모리(220)를 포함할 수 있다. 캐싱 장치(210)는 도 1을 참조하여 전술된 캐시(100)에 대응할 수 있다.
주 메모리(220)는 연산 장치가 필요로 하는 데이터와 명령어들을 저장하는 공간일 수 있다.
주 메모리(220) 내의 데이터 및 명령어는 연산 장치에 의해 기입(read) 및 독출(write)될 수 있다. 주 메모리(220)는 램(Random Access Memory; RAM)을 포함할 수 있다. 주 메모리(220)는 휘발성 메모리(volatile memory)일 수 있다.
캐싱 장치(210)는 메모리(212), 제어부(214) 및 카운터 저장부(216)를 포함할 수 있다. 메모리(212)는 도 1을 참조하여 전술된 태그 어레이(120) 및 데이터 어레이(130)에 대응할 수 있다.
캐싱 장치(210)는 연산 장치 및 주 메모리(220) 사이에 위치하는 고속 기억 장치일 수 있다.
캐싱 장치(210) 및 주 메모리(220) 간의 데이터의 이동은 캐시 라인(cache line) 단위로 이루어질 수 있다. 말하자면, 주 메모리(220)에 있어서, 캐싱 장치(210)에 대한 접근의 단위는 캐시 라인일 수 있다.
메모리(212)는 캐싱 장치(210)의 데이터, 즉 캐시된 데이터를 저장하는 저장 공간을 의미할 수 있다. 메모리(212)는 캐시의 데이터를 저장할 수 있다. 메모리(212)는 데이터 블록의 태그 및 데이터를 저장하는 캐시의 저장 공간일 수 있다.
메모리(212)는 디램(Dynamic Random Access Memory; DRAM), 에스디램(Synchronous Dynamic Random Access Memory; SDRAM) 또는 피씨램(Phase Change Random Access Memomry; PCRAM) 중 하나일 수 있다.
메모리(212)는 하나 이상의 행들 및 하나 이상의 열들로 구분될 수 있다. 하나 이상의 행들 및 하나 이상의 열들은 도 1을 참조하여 전술된 행들 및 열들에 각각 대응할 수 있다. 또한, 하나 이상의 행들 및 하나 이상의 열들은 도 1을 참조하여 전술된 하나 이상의 셋들 및 하나 이상의 웨이들에 각각 대응할 수 있다.
캐시는 하나 이상의 셋들을 포함할 수 있다. 캐시의 하나 이상의 셋들의 각 셋은 하나 이상의 웨이들을 포함할 수 있다. 각 셋은 메모리(212)의 하나 이상의 행들 중 하나의 행에 대응할 수 있다.
각 셋의 하나 이상의 웨이들의 각 웨이는 하나 이상의 행들 중 하나의 행에만 대응할 수 있다. 말하자면, 캐시의 하나의 셋의 하나의 웨이는 메모리(212)에서 상기의 하나의 행에만 위치할 수 있고, 복수의 행들에 걸칠 수 없다. 각 웨이가 하나 이상의 행들 중 하나의 행에만 대응하는 예들이 하기에서 도 6 내지 도 8을 참조하여 상세히 설명된다.
제어부(214)는 캐시의 입출력을 제어할 수 있다.
제어부(214)는 메모리(212)에 대한 접근을 수행함에 있어서, 우선 메모리(212)의 행을 선택한 후, 다음으로 열을 선택하여 데이터를 입출력 할 수 있다. 말하자면, 메모리(212)에 대한 데이터의 접근에 있어서, 우선 메모리(212)의 하나 이상의 행들 중 특정한 행이 선택될 수 있고, 다음으로 선택된 행의 하나 이상의 열들 중 특정한 열이 선택될 수 있다. 상기의 선택들 후, 선택된 행 및 선택된 열에 저장된 데이터가 접근될 수 있다. 상기의 접근은 입력 동작 및 출력 동작, 말하자면 독출 및 기입을 포함할 수 있다. 메모리(212)의 특성 상, 서로 다른 행들의 데이터가 연속적으로 접근될 때에 비해, 동일한 행의 서로 다른 열들의 데이터가 연속적으로 접근될 때, 더 적은 처리 시간 또는 레이턴시가 발생할 수 있다.
캐시의 하나의 입출력 단위는 캐시의 하나의 셋 내의 하나의 웨이일 수 있다. 캐시에 저장되는 하나의 데이터 블록은 캐시 라인에 대응할 수 있다. 또한, 하나의 캐시 라인은 캐시의 하나의 웨이에 대응할 수 있다. 캐시의 하나의 웨이는 메모리(212)의 동일한 행 내의 복수의 열들에 대응할 수 있다.
제어부(214)는 캐시의 하나의 입출력 단위에 대한 접근에 대해 메모리(212)의 복수의 행들 중의 하나의 행의 복수의 열들을 사용할 수 있다. 여기서, 하나의 입출력 단위는 하나 이상의 웨이들일 수 있다. 하나의 입출력 단위에 대한 접근에 대해 메모리(212)의 복수의 행들 중의 하나의 행의 복수의 열들이 사용되는 예들이 하기에서 도 7 및 도 8을 참조하여 상세히 설명된다.
캐시의 하나의 입출력 단위에 대한 접근을 위해 메모리(212)의 동일한 행 내의 복수의 열들이 사용될 수 있고, 하나의 입출력 단위에 대해서, 메모리(212)의 서로 다른 두 개 이상의 행들의 복수의 열들이 사용되지 않을 수 있다.
제어부(214)는 메모리(212)의 행 번호 및 열 번호를 좌표로서 사용할 수 있고, 행 번호 및 열 번호가 가리키는 위치, 말하자면 메모리(212)의 행 및 열이 교차되는 위치에 대한 접근을 수행할 수 있다.
제어부(214)는 복수의 버스들을 사용함으로써 메모리(212)의 복수의 열들에 동시에 접근할 수 있다. 예를 들어 메모리(212)의 하나 이상의 열들의 각 열 별로 상기의 각 열의 전용의 버스가 구성될 수 있다. 제어부(214)는 복수의 버스들을 사용하여 메모리(212)의 복수의 열들에 대한 접근을 동시에 수행할 수 있다. 말하자면, 복수의 열들에 분산하여 저장된 하나의 입출력 단위가 복수의 버스들에 의해 동시에 접근될 수 있다. 복수의 버스들이 활성화된 온-칩 버스 및 비활성화된 온-칩 버스로 구분되고, 복수의 활성화된 온-칩 버스들을 사용함으로써 메모리(212)의 복수의 열들에 대한 동시 접근을 제공하는 예가 하기에서 도 4를 참조하여 상세히 설명된다.
제어부(214)는 캐시의 입출력 단위에 대한 접근에 있어서 버스트 접근 모드(Burst Access Mode)를 사용할 수 있다. 예를 들어, 입출력이 수행될 메모리(212)의 행이 결정된 후, 제어부(214)는 버스트 접근 모드를 사용하여 입출력을 수행할 메모리(212)의 열의 개수를 지정할 수 있고, 지정된 개수의 열들에 대한 입출력을 수행할 수 있다.
제어부(214)는 입출력 단위의 크기를 동적으로 재구성할 수 있다. 예를 들면, 제어부(214)는, 후술될 도 6 내지 도 8을 참조하여 설명된 것처럼, 입츨력 단위가 1 개, 2 개 또는 4 개의 데이터 블록(들)에 대응하도록 입출력 단위의 크기를 변경시킬 수 있다.
제어부(214)는 캐시 라인의 크기를 동적으로 재구성할 수 있고, 상기의 재구성에 따라 캐시의 입출력 단위의 크기를 증가시키거나 감소시킬 수 있다. 입출력 단위는 하나 이상의 데이터 블록들 또는 하나 이상의 웨이들일 수 있다.
카운터 저장부(216)는 캐시의 하나의 입출력 단위에 대한 접근을 위해 사용되는 복수의 열들 중 하나의 열을 가리키는 값을 저장할 수 있다. 말하자면, 카운터 저장부(216)의 카운터는 메모리(212)의 복수의 열들 중 접근을 위해 선택된 열을 가리킬 수 있다.
일 예에서 제어부(214)는 캐시의 하나의 입출력 단위에 대한 접근을 위해 사용되는 복수의 열들에 순차적으로 접근하고, 상기의 복수의 열들 중 접근되는 열을 식별하기 위해 카운터 저장부(216) 내에 저장된 값을 제어할 수 있다. 예를 들어 카운터 저장부(216)는 접근될 열의 번호로서 i를 저장할 수 있고, 제어부(214)는 카운터 저장부(216)에 저장된 것과 같이 메모리(212)의 복수의 열들 중 제i 열에 접근할 수 있다. 제i 열에 접근한 뒤에 제어부(214)는 카운터 저장부(216)에 저장된 열의 번호를 i+1로 변경할 수 있고, 이후 제어부(214)는 제i+1 열에 접근할 수 있다.
제어부(214)는 동적으로 재구성된 입출력 단위의 크기에 기반하여 카운터 저장부(216)가 저장하는 값들의 범위를 제어할 수 있다. 제어부(214)는 캐시의 입출력 단위를 증가시킨 경우에 카운터 저장부(216)에 저장되는 값의 범위를 증가시킬 수 있고 반대로 캐시의 입출력 단위를 감소시킨 경우에는 카운터 저장부(215)에 저장되는 값의 범위를 감소시킬 수 있다. 예를 들어, 재구성된 입출력 단위의 크기가 메모리(212)의 2 개의 열들에 대응할 경우, 카운터 저장부(216)가 저장하는 값은 0 내지 1의 범위 또는 1 내지 2의 범위를 가질 수 있다. 재구성된 입출력 단위의 크기가 메모리(212)의 4 개의 열들에 대응할 경우, 카운터 저장부(216)가 저장하는 값은 0 내지 3의 범위 또는 1 내지 4의 범위를 가질 수 있다.
도 3은 재구성이 가능한 캐시에서의 캐시 라인 크기 증가에 따른 캐시의 입출력 단위에 대한 메모리 상의 배치를 나타낸다.
캐시 라인의 크기는 도 2를 참조하여 전술된 캐시의 입출력 단위의 크기와 동일할 수 있다.
재구성이 가능한 캐시는 주 메모리와 온-칩 버스(on-chip bus)를 통해 연결될 수 있고, 카운터를 가질 수 있다. 재구성이 가능한 캐시는 카운터를 사용함으로써 동일한 열의 인접한 행들을 연속적으로 접근할 수 있다. 카운터는 입출력의 대상인 열의 개수를 카운트 할 수 있다.
제1 상태(310)는 캐시의 입출력 단위의 크기가 캐시의 메모리의 하나의 열의 크기와 동일한 경우를 나타낸다. 여기서, 하나의 열의 크기는 캐시의 하나의 웨이가 저장할 수 있는 데이터 또는 데이터 블록의 크기를 의미할 수 있다. 입출력의 대상이 되는 열의 개수가 1이므로, 카운터는 1을 카운트할 수 있다..
제2 상태(320)는 캐시의 입출력 단위의 크기가 캐시의 메모리의 열의 크기의 2 배인 경우를 나타낸다. 크기의 차이 때문에, 하나의 입출력 단위는 캐시의 메모리의 두 개의 열에 나뉘어서 저장되어야 한다.
도 3의 재구성이 가능한 캐시는 두 개의 다른 행들에 각각 배치된 두 개의 열을 하나의 입출력 단위의 저장을 위해 사용할 수 있다. 하나의 입출력 단위에 2 개의 열들이 대응하기 때문에, 카운터는 1부터 2까지를 카운트할 수 있다.
제3 상태(330)는 캐시의 입출력 단위의 크기가 캐시의 메모리의 열의 크기의 4 배인 경우를 나타낸다. 하나의 입출력 단위는 캐시의 메모리의 네 개의 열들에 나뉘어서 저장되어야 한다. 재구성이 가능한 캐시는 네 개의 다른 행들에 각각 배치된 네 개의 열을 하나의 입출력 단위의 저장을 위해 사용할 수 있다. 하나의 입출력 단위에 4 개의 열들이 대응하기 때문에 카운터는 1부터 4까지를 카운트할 수 있다..
도 4는 데이터 버스를 선택적으로 사용하는 재구성이 가능한 캐시를 나타낸다.
재구성이 가능한 캐시는 주 메모리와 복수의 온-칩 버스(on-chip bus)들을 통해 연결될 수 있다. 재구성이 가능한 캐시는 복수의 온-칩 버스들을 사용함으로써 메모리의 복수의 열에 동시에 접근할 수 있다. 재구성이 가능한 캐시는 복수의 온-칩 버스들의 각각을 선택적으로 활성화(activate)함으로써 하나의 입출력 단위 또는 캐시 라인의 크기를 재구성할 수 있다.
제1 상태(410)는 캐시의 입출력 단위의 크기 및 캐시의 메모리의 열의 크기가 서로 동일한 경우를 나타낼 수 있다. 입출력의 대상은 하나의 열이므로, 캐시에 대한 접근이 이루어지는 한 순간에 하나의 온-칩 버스만이 활성화되고 세 개의 온-칩 버스들은 비활성화될 수 있다.
제2 상태(420)는 캐시의 입출력 단위의 크기가 캐시의 메모리의 열의 크기의 2 배인 경우를 나타낸다. 입출력의 대상은 두 개의 열들이므로, 캐시에 대한 접근이 이루어지는 한 순간에 두 개의 온-칩 버스들이 활성화되고 나머지 두 개의 온-칩 버스들은 비활성화될 수 있다.
제3 상태(430)는 캐시의 입출력 단위의 크기가 캐시의 메모리의 열의 크기의 4 배인 경우를 나타낸다. 입출력의 대상은 네 개의 열들이므로, 캐시에 대한 접근이 이루어지는 한 순간에 네 개의 온-칩 버스들이 활성화될 수 있다.
복수의 버스들을 선택적으로 사용하는 재구성이 가능한 캐시에 있어서, 사용되지 않는 온-칩 버스로 인한 공간 오버헤드가 발생할 수 있고, 공간 오버헤드 외에도 정적인 전력 소모를 포함하는 추가적인 오버헤드가 발생할 수 있다.
도 5는 캐시의 입출력 단위의 변화에 따른 캐시 내의 데이터 배치들을 나타낸다.
캐시는 하나 이상의 행들 및 하나 이상의 열들로 구성되며, 도 5에서 캐시 8 개의 행들 및 4 개의 열들로 구성된 것으로 도시되었다. 캐시는 하나 이상의 블록들을 포함할 수 있고, 블록은 행 및 열로 구분될 수 있다. 여기서, 블록은 도 1 내지 도 4를 참조하여 전술된 데이터 블록을 저장하는 단위일 수 있다. 또는, 블록은 전술된 데이터 블록을 저장하기 위한 위치일 수 있다.
블록 내의 숫자들은 블록에 대응하는 캐시의 셋 및 웨이를 각각 나타날 수 있다.
제1 배치(510)는 캐시의 입출력 단위의 크기 및 블록의 크기가 서로 동일한 경우의 캐시 내의 데이터의 배치를 나타낸다. 제1 배치(510)에서, 하나의 입출력 단위는 하나의 블록 내에 저장된다. 캐시의 행은 셋에 대응하고, 열은 웨이에 대응한다.
빗금처진 블록(512)은 접근되는 캐시 라인에 대응하는 블록을 나타낼 수 있다. 말하자면, 블록(512)은 캐시의 입출력 단위에 대응할 수 있다. 캐시의 제1 셋의 제2 웨이는 메모리의 제1 행의 제2 열에 배치된다.
제2 배치(520)는 캐시의 입출력 단위의 크기가 블록의 크기의 2 배인 경우의 캐시 내의 데이터의 배치를 나타낸다. 제2 배치(520)에서, 하나의 입출력 단위는 2 개의 블록들에 나뉘어서 저장된다. 2 개의 블록들은 열이 동일하고 행이 상이한 블록들이다.
빗금처진 블록들(522)은 접근되는 캐시 라인에 대응하는 블록들을 나타낼 수 있다. 말하자면, 블록들(522)은 캐시의 입출력 단위에 대응할 수 있다. 캐시의 제1 셋의 제2 웨이는 제1 행, 제2 열의 블록 및 제2 행, 제2 열의 블록에 배치된다.
제3 배치(530)는 캐시의 입출력 단위의 크기가 블록의 크기의 4 배인 경우의 캐시 내의 데이터의 배치를 나타낸다. 제3 배치(530)에서, 하나의 입출력 단위는 4 개의 블록들에 나뉘어서 저장된다. 4 개의 블록들은 열이 동일하고 행이 상이한 블록들이다.
빗금처진 블록들(532)은 접근되는 캐시 라인에 대응하는 블록들을 나타낼 수 있다. 말하자면, 블록들(532)은 캐시의 입출력 단위에 대응할 수 있다. 캐시의 제1 셋의 제2 웨이는 제1 행, 제2 열의 블록 및 제2 행, 제2 열의 블록에 배치된다.
캐시의 입출력 단위가 복수의 행들로 나뉘는 데이터 배치가 사용될 경우, 캐시 라인의 크기가 증가되었을 때, 추가적인 레이턴시 오버헤드(latency overhead)가 발생할 수 있다. 추가적인 레이턴시 오버헤드는, 캐시의 메모리가 DRAM인 경우, CAS 레이턴시, RAS 레이턴시 및 프리차지 레이턴시를 포함할 수 있다. 추가적인 레이턴시 오버헤드는 1 개의 CAS 레이턴시, 1 개의 RAS 레이턴시 및 2 개의 프리차지 레이턴시들을 포함할 수 있다.
상기의 데이터 배치가 사용된 경우, 입출력 단위에 대한 접근을 위해, 서로 상이한 n 개의 로우들이 차례로 접근되어야 한다. 따라서, 입출력 단위에 대한 접근을 위해 n-1 번의 추가적인 레이턴시가 발생할 수 있다.
도 6은 일 예에 따른 캐시 내의 데이터 배치를 도시한다.
도 6은 캐시의 입출력 단위의 크기가 도 2를 참조하여 전술된 메모리(212)의 하나의 열에 대응하는 경우를 나타낸다.
메모리(212)는 행 및 열로 구분되는 하나 이상의 블록들을 포함할 수 있다. 도 6에서, 캐시의 입출력 단위는 1 개의 블록일 수 있다. 블록 내의 숫자들은 캐시의 셋 및 웨이를 각각 나타낼 수 있다.
빗금처진 블록(610)은 접근되는 캐시 라인을 나타낼 수 있고, 캐시의 입출력 단위에 대응할 수 있다. 캐시의 제1 셋의 제1 웨이는 메모리(212)의 제1 행, 제1 열의 블록에 배치된다.
도 7은 일 예에 따른 캐시의 입출력 단위의 크기가 2 배가 된 경우의 캐시 내의 데이터 배치를 도시한다.
도 7은 캐시의 입출력 단위의 크기가 도 2를 참조하여 전술된 메모리(212)의 2 개의 열들에 대응하는 경우를 나타낸다.
도 7에서, 캐시의 입출력 단위는 2 개의 블록들일 수 있다. 입출력 단위에 대응하는 2 개의 블록들은 동일한 행의 상이한 열들의 2 개의 블록들일 수 있다.
빗금처진 블록(710)은 접근되는 캐시 라인을 나타낼 수 있고, 캐시의 입출력 단위에 대응할 수 있다. 캐시의 제1 셋의 제1 웨이는 메모리(212)의 제1 행의 제1 열 및 제1 행의 제2 열에 나뉘어서 배치된다.
일 예에서, 하나 이상의 셋들에 대응하는 메모리(212)의 하나 이상의 행들은 상기의 메모리(210) 상에서 서로 간에 인터리빙될 수 있다. 말하자면, 캐시의 하나의 셋에 대응하는 하나 이상의 행들은 메모리(212)에서 상호 인접하지 않을 수 있다. 도 7에서 도시된 것과 같이, 제1 셋의 제1 웨이 및 제1 셋의 제 3웨이에 대응하는 메모리(212)의 제1 행은 제1 셋의 제2 웨이 및 제1 셋의 제4 웨이에 대응하는 메모리(212)의 제5 행에 인접하지 않을 수 있다. 즉, 캐시의 제1 셋의 4 개의 웨이들은 메모리(212)의 서로 인접하지 않은 2 개의 행들인 제1 행 및 제5 행에 분산되어 저장되었다.
도 8은 일 예에 따른 캐시의 입출력 단위의 크기가 4 배가 된 경우의 캐시 내의 데이터 배치를 도시한다.
도 8은 캐시의 입출력 단위의 크기가 도 2를 참조하여 전술된 메모리(212)의 4 개의 열들에 대응하는 경우를 나타낸다.
도 8에서, 캐시의 입출력 단위는 2 개의 블록들일 수 있다. 입출력 단위에 대응하는 4 개의 블록들은 동일한 행의 상이한 열들의 4 개의 블록들일 수 있다.
빗금처진 블록(810)은 접근되는 캐시 라인을 나타낼 수 있고, 캐시의 입출력 단위에 대응할 수 있다. 캐시의 제1 셋의 제1 웨이는 메모리(212)의 제1 행의 제1 열 내지 제4 열에 나뉘어서 배치된다.
일 예에서 메모리(212)의 하나의 행은 상기의 행에 대응하는 캐시의 셋의 하나 이상의 웨이들 중 중 하나의 웨이만을 저장할 수 있다. 말하자면, 하나의 웨이의 크기는 하나의 행에 대응할 수 있고, 하나의 행의 하나 이상의 열들 모두에게 대응할 수 있다. 도 8에서 도시된 것과 같이, 메모리(212)의 제1 행은 메모리(212)의 제1 행에 대응하는 캐시의 제1 셋의 제1 웨이만을 저장할 수 있다. 또한, 제1 셋은 단지 하나의 웨이만을 가질 수 있다.
도 6 내지 도 8과 같은 데이터 배치가 사용될 경우, 접근된 캐시의 로우에 요구되는 데이터가 없을 확률은 (n-1)/n일 수 있다. 접근된 캐시의 로우에 요구되는 데이터가 없을 경우, 캐시의 입출력 단위를 접근함에 있어서, 1 번의 추가적인 레이턴시가 발생할 수 있다. 말하자면, 입출력 단위가 복수의 블록들에 나뉘어서 저장된 경우라도, 상기의 복수의 블록들은 모두 동일한 행의 상이한 열들에 나뉘어서 저장되어 있기 때문에, 복수의 블록들 중 첫 번째의 블록에 접근할 때 외에는 접근되는 행이 변경되지 않으며, 따라서, 추가적인 레이턴시는 첫 번째의 블록을 접근할 때만 발생할 수 있다.
도 9는 일 실시예에 따른 캐싱 방법의 흐름도이다.
단계(910)에서 제어부(214)는 캐시의 하나의 입출력 단위에 대한 접근에 대해 사용할 메모리(212) 내의 영역을 특정할 수 있다. 상기의 특정한 영역은 메모리(212)의 복수의 행들 중의 하나의 행의 복수의 열들일 수 있다.
단계(920)에서 제어부(214)는 단계(910)에서 특정된 영역을 사용하여 하나의 입출력 단위에 대한 접근을 처리할 수 있다.
단계(920)에서 제어부(214)는 입출력 단위의 크기를 동적으로 재구성할 수 있다.
단계(930)에서 카운터 저장부(216)는 카운터를 저장할 수 있다.
단계(930)에서 카운터 저장부(216)는 단계(920)에서의 접근을 위해 사용되는 복수의 열들 중 하나의 열을 가리키는 값을 저장할 수 있다.
단계(940)에서 제어부(214)는 복수의 열들에 순차적으로 접근하고, 상기의 복수의 열들 중 접근되는 열을 식별하기 위해 단계(930)에서 저장된 값을 제어할 수 있다.
단계(940)에서 제어부(214)는 재구성된 입출력 단위의 크기에 기반하여 단계(930)에서 저장하는 값들의 범위를 제어할 수 있다.
앞서 도 1 내지 도 8을 참조하여 전술된 실시예는 도 9의 실시예에도 적용될 수 있다. 이하, 중복되는 설명은 생략한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
100: 캐시
200: 전자 장치
210: 캐싱 장치
212: 메모리
214: 제어부
216: 카운터 저장부
220: 주 메모리

Claims (13)

  1. 캐시의 데이터를 저장하는 메모리;
    상기 캐시의 하나의 입출력 단위에 대한 접근에 대해 상기 메모리의 복수의 행들 중의 하나의 행의 복수의 열들을 사용하는 제어부; 및
    상기 하나의 입출력 단위에 대한 접근을 위해 순차적으로 사용되는 상기 복수의 열들 중 제어부가 접근하는 하나의 열을 가리키는 값을 저장하는 카운터 저장부
    를 포함하는 캐싱 장치.
  2. 캐시의 데이터를 저장하는 메모리; 및
    제어부;
    를 포함하고,
    상기 제어부는,
    상기 캐시의 하나의 입출력 단위에 대한 접근에 대해 상기 메모리의 복수의 행들 중의 하나의 행의 복수의 열들을 사용하며,
    상기 캐시는 하나 이상의 셋들을 포함하고,
    상기 캐시의 하나 이상의 셋들의 각 셋은 하나 이상의 웨이들을 포함하고,
    상기 각 셋은 상기 메모리의 하나 이상의 행들 중 하나의 행에 대응하고,
    상기 각 셋의 하나 이상의 웨이들의 각 웨이는 상기 하나 이상의 행들 중 하나의 행에만 대응하는 캐싱 장치.
  3. 제2항에 있어서,
    상기 하나 이상의 셋들의 각 셋에 대응하는 상기 메모리의 하나 이상의 행들은 상기 메모리 상에서 서로 간에 인터리빙된 캐싱 장치.
  4. 제2항에 있어서,
    상기 메모리의 하나의 행은 상기 행에 대응하는 상기 캐시의 셋의 하나 이상의 웨이들 중 중 하나의 웨이만을 저장하는 캐싱 장치.
  5. 캐시의 데이터를 저장하는 메모리; 및
    제어부;
    를 포함하고,
    상기 제어부는,
    상기 캐시의 하나의 입출력 단위에 대한 접근에 대해 상기 메모리의 복수의 행들 중의 하나의 행의 복수의 열들을 사용하며,
    상기 입출력 단위는 상기 캐시의 하나의 셋 내의 하나의 웨이를 나타내며, 상기 하나의 웨이는 상기 메모리의 동일한 행 내의 복수의 열에 대응하는 캐싱 장치.
  6. 캐시의 데이터를 저장하는 메모리; 및
    제어부;
    를 포함하고,
    상기 제어부는,
    상기 캐시의 하나의 입출력 단위에 대한 접근에 대해 상기 메모리의 복수의 행들 중의 하나의 행의 복수의 열들을 사용하며,
    상기 제어부는 상기 메모리의 하나 이상의 열들의 각 열 별로 대응하는 복수의 버스들을 사용하여 상기 메모리의 상기 복수의 열들에 동시에 접근하는 캐싱 장치.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 제1항에 있어서,
    상기 제어부는 상기 복수의 열들에 순차적으로 접근하고, 상기 복수의 열들 중 접근되는 열을 식별하기 위해 상기 카운터 저장부 내에 저장된 값을 제어하는 캐싱 장치.
  11. 캐시의 데이터를 저장하는 메모리; 및
    제어부;
    를 포함하고,
    상기 제어부는,
    상기 캐시의 하나의 입출력 단위에 대한 접근에 대해 상기 메모리의 복수의 행들 중의 하나의 행의 복수의 열들을 사용하며,
    상기 제어부는 하나 이상의 데이터 블록들 또는 하나 이상의 웨이들로 구성되는 입출력 단위의 크기를 동적으로 재구성하는 캐싱 장치.
  12. 제 11항에 있어서,
    상기 제어부는 재구성된 상기 입출력 단위의 크기에 기반하여 카운터 저장부가 저장하는 값들의 범위를 제어하는 캐싱 장치.
  13. 캐시의 하나의 입출력 단위에 대한 접근에 대해 사용할 메모리 내의 영역을 특정하는 단계; 및
    상기 특정된 영역을 사용하여 상기 하나의 입출력 단위에 대한 접근을 처리하는 단계
    를 포함하고,
    상기 특정한 영역은 상기 메모리의 복수의 행들 중의 하나의 행의 복수의 열들이며,
    상기 처리하는 단계는,
    상기 접근을 위해 순차적으로 사용되는 상기 복수의 열들 중 접근되는 열을 식별하기 위해 저장된 값을 통해 처리하는 캐싱 방법.
KR1020140010410A 2014-01-28 2014-01-28 캐싱 장치 및 방법 KR101591583B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140010410A KR101591583B1 (ko) 2014-01-28 2014-01-28 캐싱 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140010410A KR101591583B1 (ko) 2014-01-28 2014-01-28 캐싱 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150089594A KR20150089594A (ko) 2015-08-05
KR101591583B1 true KR101591583B1 (ko) 2016-02-04

Family

ID=53886010

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140010410A KR101591583B1 (ko) 2014-01-28 2014-01-28 캐싱 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101591583B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100327934B1 (ko) * 1998-03-23 2002-03-14 포만 제프리 엘 가변 캐시 크기를 위한 개선된 캐시 디렉토리 어드레싱 메카니즘

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100327934B1 (ko) * 1998-03-23 2002-03-14 포만 제프리 엘 가변 캐시 크기를 위한 개선된 캐시 디렉토리 어드레싱 메카니즘

Also Published As

Publication number Publication date
KR20150089594A (ko) 2015-08-05

Similar Documents

Publication Publication Date Title
US11132300B2 (en) Memory hierarchy using page-based compression
JP6236011B2 (ja) 物理的な行に共に記憶されたタグ及びデータを有するdramキャッシュ
JP6928123B2 (ja) メモリシステム内のページマイグレーションのオーバヘッドを低減するメカニズム
US8001330B2 (en) L2 cache controller with slice directory and unified cache structure
US11294808B2 (en) Adaptive cache
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US10282292B2 (en) Cluster-based migration in a multi-level memory hierarchy
US8868843B2 (en) Hardware filter for tracking block presence in large caches
US9811456B2 (en) Reliable wear-leveling for non-volatile memory and method therefor
JP7036925B2 (ja) キャッシュ制御を考慮したメモリコントローラ
US10503655B2 (en) Data block sizing for channels in a multi-channel high-bandwidth memory
US9477605B2 (en) Memory hierarchy using row-based compression
KR20060049710A (ko) 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법
US20170083444A1 (en) Configuring fast memory as cache for slow memory
JP7108141B2 (ja) データ領域を記憶するためのキャッシュ
US20180032429A1 (en) Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators
US10366008B2 (en) Tag and data organization in large memory caches
KR101591583B1 (ko) 캐싱 장치 및 방법
EP3271826A1 (en) Interleaved access of memory
KR101490072B1 (ko) 캐시의 전력 제어를 위한 장치 및 방법
US20230359556A1 (en) Performing Operations for Handling Data using Processor in Memory Circuitry in a High Bandwidth Memory
US11467937B2 (en) Configuring cache policies for a cache based on combined cache policy testing
KR102317248B1 (ko) 캐시의 부분연관 재구성을 이용한 캐시 제어 장치 및 캐시 관리 방법
KR20240014431A (ko) 스토리지 장치를 위한 적응형 캐시 인덱싱
WO2017091197A1 (en) Cache manager-controlled memory array

Legal Events

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