KR20140066392A - 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법 - Google Patents
캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법 Download PDFInfo
- Publication number
- KR20140066392A KR20140066392A KR1020120133553A KR20120133553A KR20140066392A KR 20140066392 A KR20140066392 A KR 20140066392A KR 1020120133553 A KR1020120133553 A KR 1020120133553A KR 20120133553 A KR20120133553 A KR 20120133553A KR 20140066392 A KR20140066392 A KR 20140066392A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- cache memory
- lower bit
- sub
- bit data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 캐시 메모리에 관한 것이다. 본 발명의 캐시 메모리는, 불휘발성 랜덤 액세스 메모리를 포함하고 하위 비트 데이터 및 상위 비트 데이터를 포함하는 데이터 라인의 단위로 외부 장치와 데이터를 교환하는 메인 캐시 메모리, 그리고 랜덤 액세스 메모리를 포함하고 메인 캐시 메모리에 저장되는 데이터 중 적어도 일부 데이터의 하위 비트 데이터를 저장하도록 구성되는 서브 캐시 메모리를 포함한다. 메인 캐시 메모리 및 서브 캐시 메모리는 단일 레벨의 캐시 메모리를 형성한다.
Description
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법에 관한 것이다.
근래에, 스마트폰, 스마트 패드, 노트북 컴퓨터 등과 같은 휴대용 정보기기의 사용이 급증하고 있다. 반도체 기술 및 통신 기술의 발전은, 휴대용 정보기기의 정보 처리량의 증가를 유발하고 있다. 휴대용 정보기기의 정보 처리량이 증가하면서, 휴대용 정보기기는 스마트 기기라는 새로운 형태로 발전하고 있다.
스마트 기기는 사용자가 자유롭게 어플리케이션을 설치하고, 설치된 어플리케이션을 이용하여 정보를 생산 및 가공할 수 있는 기능을 지원한다. 스마트 기기에서 구동되는 어플리케이션 및 콘텐츠가 발전하면서, 스마트 기기의 연산 능력의 향상이 요구되고 있다.
스마트 기기의 연산 능력을 향상시키는 방법들 중 하나는 스마트 기기의 어플리케이션 프로세서에서 사용되는 캐시 메모리의 성능을 향상시키는 것이다. 어플리케이션 프로세서의 전력 소모를 감소시키기 위하여, 어플리케이션 프로세서의 캐시 메모리를 불휘발성 메모리로 사용하는 방안이 연구되고 있다.
본 발명의 목적은, 감소된 전력 소모를 갖는 어플리케이션 프로세서를 포함하는 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 캐시 메모리는, 불휘발성 랜덤 액세스 메모리를 포함하고, 하위 비트(LSB, Less Significant Bit) 데이터 및 상위 비트(MSB, More Significant Bit) 데이터를 포함하는 데이터 라인의 단위로 외부 장치와 데이터를 교환하는 메인 캐시 메모리; 그리고 랜덤 액세스 메모리를 포함하고, 상기 메인 캐시 메모리에 저장되는 데이터 중 적어도 일부 데이터의 하위 비트(LSB) 데이터를 저장하도록 구성되는 서브 캐시 메모리를 포함하고, 상기 메인 캐시 메모리 및 서브 캐시 메모리는 단일 레벨의 캐시 메모리를 형성한다.
실시 예로서, 상기 메인 캐시 메모리 및 서브 캐시 메모리 각각은 복수의 라인들을 포함하고, 상기 서브 캐시 메모리에 무효 라인이 존재하고 상기 외부 장치로부터 새로운 데이터가 전달될 때, 상기 전달되는 데이터 중 상위 비트 데이터는 상기 메인 캐시 메모리의 선택된 무효 라인의 상위 비트 영역에 저장되고, 하위 비트 데이터는 상기 서브 캐시 메모리의 무효 라인에 저장된다.
실시 예로서, 상기 메인 캐시 메모리 및 서브 캐시 메모리 각각은 복수의 라인들을 포함하고, 상기 서브 캐시 메모리에 무효 라인이 존재하지 않고 상기 외부 장치로부터 새로운 데이터가 전달될 때, 상기 서브 캐시 메모리의 선택된 라인에 저장된 하위 비트 데이터는 상기 메인 캐시 메모리의 대응하는 라인의 하위 비트 영역으로 후기입(write back)되고, 상기 전달되는 데이터 중 상위 비트 데이터는 상기 메인 캐시 메모리의 선택된 무효 라인의 상위 비트 영역에 저장되고, 하위 비트 데이터는 상기 후기입을 통해 무효화된 상기 서브 캐시 메모리의 라인에 저장된다.
실시 예로서, 상기 외부 장치로부터 갱신 데이터가 전달되고, 상기 갱신 데이터와 원본 데이터의 차이가 하위 비트 데이터에 존재하고, 상기 원본 데이터의 하위 비트 데이터가 상기 서브 캐시 메모리에 저장되어 있을 때, 상기 서브 캐시 메모리에 저장된 상기 원본 데이터의 하위 비트 데이터가 갱신된다.
실시 예로서, 상기 외부 장치로부터 갱신 데이터가 전달되고, 상기 갱신 데이터와 원본 데이터의 차이가 하위 비트 데이터에 존재하고, 상기 원본 데이터의 하위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있을 때, 상기 메인 캐시 메모리에 저장된 상기 원본 데이터의 하위 비트 데이터가 갱신된다.
실시 예로서, 상기 외부 장치로부터 갱신 데이터가 전달되고, 상기 갱신 데이터와 원본 데이터의 차이가 상위 비트 데이터에 존재할 때, 상기 메인 캐시 메모리에 저장된 상기 원본 데이터의 상기 하위 비트 데이터가 갱신된다.
실시 예로서, 선택된 데이터의 상위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있고, 하위 비트 데이터가 상기 서브 캐시 메모리에 저장되어 있고, 상기 선택된 데이터가 상기 외부 장치에 의해 읽어질 때, 상기 메인 캐시 메모리에 저장된 상위 비트 데이터 및 상기 서브 캐시 메모리에 저장된 하위 비트 데이터가 읽어진다.
실시 예로서, 선택된 데이터의 상위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있고, 하위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있고, 상기 선택된 데이터가 상기 외부 장치에 의해 읽어질 때, 상기 메인 캐시 메모리에 저장된 상위 비트 데이터 및 하위 비트 데이터가 읽어진다.
실시 예로서, 상기 메인 캐시 메모리는 자기 랜덤 액세스 메모리(MRAM, Magnetic Random Access Memory)를 포함한다.
실시 예로서, 상기 서브 캐시 메모리는 정적 랜덤 액세스 메모리(SRAM, Static Random Access Memory)를 포함한다.
실시 예로서, 상기 서브 캐시 메모리는 상기 메인 캐시 메모리보다 적은 양의 쓰기 전류를 소모한다.
실시 예로서, 상기 서브 캐시 메모리는 상기 메인 캐시 메모리의 하위 비트 데이터를 저장하는 세트 결합 캐시 메모리이다.
실시 예로서, 상기 메인 캐시 메모리는, 상기 외부 장치로부터 수신되는 라인 인덱스 및 태그를 저장하도록 구성되는 어드레스 버퍼; 상위 비트 데이터 및 하위 비트 데이터를 저장하도록 구성되는 복수의 라인들을 포함하는 복수의 데이터 어레이; 상기 복수의 데이터 어레이에 저장된 데이터와 연관된 태그들을 저장하도록 구성되는 태그 어레이; 상기 태그 어레이를 액세스하고, 상기 어드레스 버퍼에 저장된 상기 라인 인덱스 및 태그에 기반하여 히트가 발생하는지 판별하도록 구성되는 중간 회로; 그리고 상기 판별 결과 및 상기 라인 인덱스에 따라 상기 복수의 데이터 어레이를 액세스하도록 구성되는 입출력 회로를 포함한다.
실시 예로서, 상기 서브 캐시 메모리는, 상기 어드레스 버퍼로부터 상기 라인 인덱스를 수신하고, 상기 중간 회로로부터 히트가 발생한 것으로 판별된 상기 복수의 데이터 어레이의 위치에 대한 정보를 수신하고, 상기 수신된 라인 인덱스 및 정보에 기반하여 하위 비트 라인 인덱스 및 하위 비트 태그를 출력하도록 구성되는 하위 비트 어드레스 버퍼; 하위 비트 데이터를 저장하도록 구성되는 복수의 서브 라인들을 포함하는 복수의 하위 비트 데이터 어레이; 상기 복수의 하위 비트 데이터 어레이에 저장된 하위 비트 데이터와 연관된 하위 비트 태그들을 저장하도록 구성되는 하위 비트 태그 어레이; 상기 하위 비트 태그 어레이를 액세스하고, 상기 하위 비트 어드레스 버퍼로부터 출력되는 상기 하위 비트 라인 인덱스 및 하위 비트 태그에 기반하여 히트가 발생하는지 판별하도록 구성되는 제 2 중간 회로; 그리고 상기 제 2 중간 회로의 판별 결과 및 상기 하위 비트 라인 인덱스에 따라 상기 복수의 하위 비트 데이터 어레이를 액세스하도록 구성되는 제 2 입출력 회로를 포함한다.
메인 캐시 메모리 및 서브 캐시 메모리를 포함하는 본 발명의 실시 예에 따른 어플리케이션 프로세서의 데이터 관리 방법은, 상위 비트(MSB, More Significant Bit) 데이터 및 하위 비트(LSB, Less Significant Bit) 데이터를 페치하는 단계; 그리고 상기 페치된 상위 비트(MSB, More Significant Bit) 데이터를 상기 메인 캐시 메모리의 상위 비트 영역에서 관리하고, 상기 페치된 하위 비트(LSB, Less Significant Bit) 데이터를 상기 서브 캐시 메모리 및 상기 메인 캐시 메모리의 하위 비트 영역에서 관리하는 단계를 포함한다.
실시 예로서, 상기 관리하는 단계는, 하위 비트 데이터 및 상위 비트 데이터를 수신하는 단계; 그리고 상기 서브 캐시 메모리에 무효 라인이 존재하면, 상기 수신된 상위 비트 데이터를 상기 메인 캐시 메모리에 저장하고 상기 수신된 하위 비트 데이터를 상기 서브 캐시 메모리의 무효 라인에 저장하고, 상기 서브 캐시 메모리에 무효 라인이 존재하지 않으면, 상기 서브 캐시 메모리에 저장된 하위 비트 데이터를 상기 메인 캐시 메모리로 후기입하고 상기 수신된 상위 비트 데이터를 상기 메인 캐시 메모리에 저장하고 상기 수신된 하위 비트 데이터를 상기 후기입을 통해 무효화된 상기 서브 캐시 메모리의 무효 라인에 저장하는 단계를 포함한다.
실시 예로서, 상기 관리하는 단계는, 갱신을 위한 하위 비트 데이터 및 상위 비트 데이터를 수신하는 단계; 상기 수신된 데이터에 대응하는 데이터를 상기 메인 캐시 메모리 또는 서브 캐시 메모리로부터 읽는 단계; 상기 읽어진 데이터 및 수신된 데이터를 비교하는 단계; 상기 비교 결과에 따라, 상기 읽어진 데이터의 하위 비트 데이터가 상기 서브 캐시 메모리에 저장되어 있고, 상기 읽어진 데이터의 하위 비트 데이터와 상기 수신된 데이터의 하위 비트 데이터가 차이를 가지면, 상기 서브 캐시 메모리에 저장된 하위 비트 데이터를 갱신하는 단계; 상기 비교 결과에 따라, 상기 읽어진 데이터의 하위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있고, 상기 읽어진 데이터의 하위 비트 데이터와 상기 수신된 데이터의 하위 비트 데이터가 차이를 가지면, 상기 메인 캐시 메모리에 저장된 하위 비트 데이터를 갱신하는 단계; 그리고 상기 비교 결과에 따라, 상기 읽어진 데이터의 상위 비트 데이터와 상기 수신된 데이터의 하위 비트 데이터가 차이를 가지면, 상기 메인 캐시 메모리에 저장된 상위 비트 데이터를 갱신하는 단계를 포함한다.
실시 예로서, 상기 관리하는 단계는, 데이터 요청을 수신하는 단계; 상기 데이터 요청에 의해 요청된 데이터를 상기 메인 캐시 메모리 및 서브 캐시 메모리로부터 선택하는 단계; 그리고 상기 선택된 데이터를 읽는 단계를 포함한다.
실시 예로서, 상기 관리하는 단계는, 상기 메인 캐시 메모리의 태그(Tag)를 디코딩하는 단계; 상기 메인 캐시 메모리의 데이터를 액세스하는 단계; 상기 메인 캐시 메모리의 데이터를 액세스하는 동안 상기 서브 캐시 메모리의 태그를 디코딩하는 단계; 그리고 상기 서브 캐시 메모리의 데이터를 액세스하는 단계를 포함한다.
실시 예로서, 상기 관리하는 단계는, 상기 메인 캐시 메모리의 태그(Tag)를 디코딩하는 단계; 상기 메인 캐시 메모리의 태그를 디코딩하는 동안, 상기 메인 캐시 메모리의 데이터를 액세스하는 단계; 상기 메인 캐시 메모리의 태그를 디코딩하는 동안, 상기 서브 캐시 메모리의 태그를 디코딩하는 단계; 그리고 상기 메인 캐시 메모리의 태그를 디코딩하는 동안, 상기 서브 캐시 메모리의 데이터를 액세스하는 단계를 포함한다.
본 발명의 실시 예들에 따르면, 어플리케이션 프로세서의 캐시는 불휘발성 메모리로 구성된 메인 캐시 메모리 및 정적 랜덤 액세스 메모리로 구성된 서브 캐시 메모리를 포함한다. 메인 캐시 메모리는 갱신이 적은 상위 비트 데이터를 저장하고, 서브 캐시 메모리는 갱신이 잦은 하위 비트 데이터를 저장한다. 상대적으로 큰 전력을 소모하는 불휘발성 메모리의 갱신 횟수가 감소되므로, 감소된 전력 소모를 갖는 어플리케이션 프로세서를 포함하는 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 도 1의 어플리케이션 프로세서의 데이터 관리 방법을 보여주는 순서도이다.
도 3a 및 도 3b는 도 1의 메인 메모리, 메인 캐시 메모리 및 서브 캐시 메모리 사이의 관계를 보여준다.
도 3c는 도 3a 및 도 3b의 메인 캐시 메모리 및 서브 캐시 메모리를 간략화하여 보여준다.
도 4는 도 3c의 캐시 메모리들에 데이터가 저장되는 방법을 보여주는 순서도이다.
도 5a 내지 도 5c는 도 3c의 캐시 구조에서 도 4의 저장 방법이 수행되는 예들을 보여주는 블록도들이다.
도 6은 도 3c의 캐시 메모리들에서 데이터가 갱신되는 방법을 보여주는 순서도이다.
도 7a 내지 도 7c는 도 3c의 캐시 구조에서 도 6의 저장 방법이 수행되는 예들을 보여주는 블록도들이다.
도 8은 도 3c의 캐시 메모리들에서 읽기가 수행되는 방법을 보여주는 순서도이다.
도 9a 내지 도 9c는 도 3c의 캐시 구조에서 도 8의 읽기 방법이 수행되는 예들을 보여주는 블록도들이다.
도 10a 및 도 10b는 도 1, 도 3a 및 도 3b의 메인 캐시 메모리 및 서브 캐시 메모리에 데이터가 기입되는 다른 예를 보여주는 순서도이다.
도 10c는 도 1, 도 3a 및 도 3b의 메인 캐시 메모리 및 서브 캐시 메모리에서 데이터가 읽어지는 다른 예를 보여주는 순서도이다.
도 11a는 본 발명의 제 1 실시 예에 따른 캐시 메모리들의 액세스 시간을 보여주는 그래프이다.
도 11b는 본 발명의 제 2 실시 예에 따른 캐시 메모리들의 액세스 시간을 보여주는 그래프이다.
도 12a는 메인 캐시 메모리 및 서브 캐시 메모리가 읽기 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 12b는 메인 캐시 메모리 및 서브 캐시 메모리가 읽기 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 12c는 하위 비트 데이터를 서브 캐시 메모리로부터 메인 캐시 메모리로 후기입하는 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 13은 본 발명의 다른 실시 예에 따른 어플리케이션 프로세서, 그리고 어플리케이션 프로세서와 통신하는 외부 메모리 및 외부 칩을 보여주는 블록도이다.
도 2는 도 1의 어플리케이션 프로세서의 데이터 관리 방법을 보여주는 순서도이다.
도 3a 및 도 3b는 도 1의 메인 메모리, 메인 캐시 메모리 및 서브 캐시 메모리 사이의 관계를 보여준다.
도 3c는 도 3a 및 도 3b의 메인 캐시 메모리 및 서브 캐시 메모리를 간략화하여 보여준다.
도 4는 도 3c의 캐시 메모리들에 데이터가 저장되는 방법을 보여주는 순서도이다.
도 5a 내지 도 5c는 도 3c의 캐시 구조에서 도 4의 저장 방법이 수행되는 예들을 보여주는 블록도들이다.
도 6은 도 3c의 캐시 메모리들에서 데이터가 갱신되는 방법을 보여주는 순서도이다.
도 7a 내지 도 7c는 도 3c의 캐시 구조에서 도 6의 저장 방법이 수행되는 예들을 보여주는 블록도들이다.
도 8은 도 3c의 캐시 메모리들에서 읽기가 수행되는 방법을 보여주는 순서도이다.
도 9a 내지 도 9c는 도 3c의 캐시 구조에서 도 8의 읽기 방법이 수행되는 예들을 보여주는 블록도들이다.
도 10a 및 도 10b는 도 1, 도 3a 및 도 3b의 메인 캐시 메모리 및 서브 캐시 메모리에 데이터가 기입되는 다른 예를 보여주는 순서도이다.
도 10c는 도 1, 도 3a 및 도 3b의 메인 캐시 메모리 및 서브 캐시 메모리에서 데이터가 읽어지는 다른 예를 보여주는 순서도이다.
도 11a는 본 발명의 제 1 실시 예에 따른 캐시 메모리들의 액세스 시간을 보여주는 그래프이다.
도 11b는 본 발명의 제 2 실시 예에 따른 캐시 메모리들의 액세스 시간을 보여주는 그래프이다.
도 12a는 메인 캐시 메모리 및 서브 캐시 메모리가 읽기 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 12b는 메인 캐시 메모리 및 서브 캐시 메모리가 읽기 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 12c는 하위 비트 데이터를 서브 캐시 메모리로부터 메인 캐시 메모리로 후기입하는 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 13은 본 발명의 다른 실시 예에 따른 어플리케이션 프로세서, 그리고 어플리케이션 프로세서와 통신하는 외부 메모리 및 외부 칩을 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템(100)을 보여주는 블록도이다. 예시적으로, 컴퓨팅 시스템(100)은 모바일 멀티미디어 장치일 수 있다. 도 1을 참조하면, 컴퓨팅 시스템(100)은 어플리케이션 프로세서(110), 메인 메모리(120), 스토리지 장치(130), 모뎀(140), 그리고 사용자 인터페이스(150)를 포함한다.
어플리케이션 프로세서(110)는 컴퓨팅 시스템(100)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 어플리케이션 프로세서(110)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 어플리케이션 프로세서(110)는 캐시 메모리(111), 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)를 포함할 수 있다.
캐시 메모리(111)는 어플리케이션 프로세서(110)의 레벨 1 (L1) 캐시 메모리일 수 있다. 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 어플리케이션 프로세서(110)의 레벨 2 (L2) 캐시 메모리일 수 있다. 메인 캐시 메모리(113)는 불휘발성 메모리, 더 상세하게는 자기 랜덤 액세스 메모리(MRAM, Magnetic Random Access Memory)를 포함할 수 있다. 서브 캐시 메모리(115)는 정적 랜덤 액세스 메모리(SRAM, Static RAM)를 포함할 수 있다.
메인 캐시 메모리(113)는 하위 비트(LSB, Less Significant Bit) 데이터 및 상위 비트(MSB, More Significant Bit) 데이터를 포함하는 데이터의 단위로 캐시 메모리(111) 또는 메인 메모리(120)와 데이터를 교환할 수 있다. 서브 캐시 메모리(115)는 메인 캐시 메모리(113)에 저장되는 데이터 중 일부 데이터의 하위 비트(LSB) 데이터를 저장할 수 있다.
메인 메모리(120)는 컴퓨팅 시스템(100)의 동작 메모리로 사용될 수 있다. 메인 메모리(120)는 동적 랜덤 액세스 메모리(DRAM)와 같은 휘발성 메모리, 또는 자기 랜덤 액세스 메모리(MRAM), 상 변화 랜덤 액세스 메모리(PRAM, Phase-change RAM), 저항성 랜덤 액세스 메모리(RRAM, Resistive RAM), 강유전체 랜덤 액세스 메모리(FRAM, Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지 장치(130)는 컴퓨팅 시스템(100)의 스토리지로 사용될 수 있다. 스토리지는 데이터의 장기적인 보존을 목적으로 하는 저장소일 수 있다. 스토리지 장치(130)는 플래시 메모리(flash memory), 하드 디스크 드라이브(HDD), 자기 랜덤 액세스 메모리(MRAM), 상 변화 랜덤 액세스 메모리(PRAM, Phase-change RAM), 저항성 랜덤 액세스 메모리(RRAM, Resistive RAM), 강유전체 랜덤 액세스 메모리(FRAM, Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
예시적으로, 메인 메모리(120) 및 스토리지 장치(130)는 하나의 메모리로 집적될 수 있다. 하나의 메모리의 제 1 부분은 메인 메모리(120)로 사용되고, 제 2 부분은 스토리지 장치(130)로 사용될 수 있다.
모뎀(140)은 어플리케이션 프로세서(110)의 제어에 따라 외부 장치와 무선 또는 유선 통신을 수행할 수 있다. 모뎀(140)은 와이파이, CDMA, GSM, LTE, 블루투스, NFC 등과 같은 다양한 통신 표준들 중 적어도 하나에 기반하여 통신을 수행할 수 있다. 예시적으로, 모뎀(140)은 어플리케이션 프로세서(110)와 함께 시스템-온-칩(SoC)을 구성할 수 있다.
사용자 인터페이스(150)는 외부와 신호를 교환할 수 있다. 예를 들어, 사용자 인터페이스(150)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(150)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
이하에서, 제 2 레벨의 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)를 참조하여, 본 발명의 실시 예들이 설명된다. 도 1에서, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 제 2 레벨의 캐시 메모리들인 것으로 설명되었으나, 본 발명의 기술적 사상은 이에 한정되지 않는다.
도 2는 도 1의 어플리케이션 프로세서(110)의 데이터 관리 방법을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S110 단계에서, 상위 비트 데이터 및 하위 비트 데이터가 페치된다. S120 단계에서, 상위 비트 데이터가 메인 캐시 메모리(113)의 상위 비트 영역에서 관리되고, 하위 비트 데이터가 메인 캐시 메모리(113)의 하위 비트 영역 및 서브 캐시 메모리(115)에서 관리된다.
도 3a 및 도 3b는 도 1의 메인 메모리(120), 메인 캐시 메모리(113) 및 서브 캐시 메모리(115) 사이의 관계를 보여준다. 도 1 및 도 3a를 참조하면, 메인 메모리(120)는 라인의 단위로 데이터를 저장하도록 구성될 수 있다. 라인은 어플리케이션 프로세서(110) 또는 어플리케이션 프로세서(110)의 캐시 메모리가 데이터를 전송하는 단위일 수 있다. 메인 메모리(120)의 라인들은 각각 메인 메모리 어드레스(MA)에 의해 구별되고, 액세스될 수 있다.
메인 메모리(120)는 복수의 그룹들(G_00~G_FF)로 분할될 수 있다. 각 그룹은 복수의 라인들을 포함할 수 있다. 복수의 그룹들(G_00~G_FF)은 각각 동일한 사이즈를 갖도록 분할될 수 있다.
분할된 복수의 그룹들(G_00~G_FF) 각각에 태그(T)가 할당될 수 있다. 분할된 복수의 그룹들(G_00~G_FF)의 라인들에 라인 인덱스(LI)가 할당될 수 있다. 예를 들어, 복수의 그룹들(G_00~G_FF) 각각의 라인들에 동일한 라인 인덱스(LI)가 할당될 수 있다. 제 1 그룹(G_00)의 제 1 라인의 인덱스(0000)는 제 2 그룹(G_02)의 제 1 라인의 인덱스(0000)와 동일할 수 있다.
메인 캐시 메모리(113)는 메인 메모리(120)에 할당된 태그(T) 및 라인 인덱스(LI)에 기반하여 메인 메모리(120)를 액세스할 수 있다. 예를 들어, 메인 캐시 메모리(113)는 태그(T) 및 라인 인덱스(LI)에 기반하여 메인 메모리(120)로부터 데이터를 페치(fetch)하거나 메인 메모리(120)에 데이터를 후기입(write back)할 수 있다. 메인 캐시 메모리(113)는 메인 메모리(120)에 기반하여 동작하는 세트 결합(set associative) 캐시 메모리일 수 있다.
메인 캐시 메모리(113)는 복수의 웨이들(WAY_0~WAY_F)을 포함한다. 복수의 웨이들(WAY_0~WAY_F) 각각은 메인 메모리(120)의 하나의 그룹과 동일한 수의 라인들을 포함할 수 있다. 복수의 웨이들(WAY_0~WAY_F)의 수는 메인 메모리(120)의 그룹들(G_00~G_FF)의 수보다 적을 수 있다. 즉, 메인 캐시 메모리(113)의 사이즈는 메인 메모리(120)의 사이즈보다 작을 수 있다.
메인 메모리(120)의 각 그룹에 할당된 라인 인덱스(LI)와 메인 캐시 메모리(113)의 각 그룹에 할당된 라인 인덱스(LI)는 대응 관계를 가질 수 있다. 예를 들어, 메인 메모리(120)의 각 그룹의 특정한 위치의 라인에 저장된 데이터는 메인 캐시 메모리(113)의 동일한 위치의 라인으로 페치될 수 있다. 메인 메모리(120)의 서로 다른 그룹의 동일한 위치의 라인들에 저장된 두 개의 데이터는 메인 캐시 메모리(113)의 동일한 위치의 라인의 서로 다른 웨이들로 페치될 수 있다.
예를 들어, 메인 메모리(120)의 그룹(G_01)의 제 1 라인(0000)에 위치한 데이터(aaa)는 메인 캐시 메모리(113)의 웨이(WAY_0)의 제 1 라인(0000)으로 페치될 수 있다. 페치되는 데이터는 메인 메모리(120)의 그룹의 위치를 가리키는 태그(T, 01)와 함께 저장될 수 있다. 메인 메모리(120)의 그룹(G_FF)의 제 1 라인(0000)에 위치한 데이터(bbb)는 메인 캐시 메모리(113)의 다른 웨이(WAY_F)의 제 1 라인(0000)으로 페치될 수 있다. 페치되는 데이터는 메인 메모리(120)의 그룹의 위치를 가리키는 태그(T, FF)와 함께 저장될 수 있다.
메인 캐시 메모리(113)의 웨이(WAY_0)의 제 1 라인(0000)에 페치된 데이터(aaa)는 라인 인덱스(LI, 0000) 및 태그(T, 01)를 참조하여, 메인 메모리(120)의 그룹(G_01)의 첫 번째 라인으로 후기입될 수 있다. 메인 캐시 메모리(113)의 웨이(WAY_F)의 제 1 라인(0000)에 페치된 데이터(bbb)는 라인 인덱스(LI, 0000) 및 태그(T, FF)를 참조하여, 메인 메모리(120)의 그룹(G_FF)의 첫 번째 라인으로 후기입될 수 있다.
도 1, 도 3a 및 도 3b를 참조하면, 메인 캐시 메모리(113)의 라인들은 메인 캐시 메모리 어드레스(MCA)에 의해 구별되고 액세스될 수 있다. 메인 캐시 메모리 어드레스(MCA)는 메인 캐시 메모리(113)의 웨이 정보(WI) 및 라인 인덱스(LI)에 의해 구별되고 액세스될 수 있다. 웨이 정보(WI)는 메인 캐시 메모리(WI)의 웨이들(WAY_0~WAY_F)의 위치에 대한 정보를 포함할 수 있다.
메인 캐시 메모리(113)는 복수의 그룹들(G_00~G_FF)로 분할될 수 있다. 각 그룹은 복수의 라인들을 포함할 수 있다. 복수의 그룹들(G_00~G_FF)은 각각 동일한 사이즈를 갖도록 분할될 수 있다.
분할된 복수의 그룹들(G_00~G_FF) 각각에 하위 비트 태그(LBT)가 할당될 수 있다. 분할된 복수의 그룹들(G_00~G_FF)의 라인들에 하위 비트 라인 인덱스(LBLI)가 할당될 수 있다. 예를 들어, 복수의 그룹들(G_00~G_FF) 각각의 라인들에 동일한 라인 인덱스(LI)가 할당될 수 있다. 제 1 그룹(G_00)의 제 1 라인의 인덱스(0000)는 제 2 그룹(G_02)의 제 1 라인의 인덱스(0000)와 동일할 수 있다.
서브 캐시 메모리(115)는 메인 캐시 메모리(113)에 할당된 하위 비트 태그(LBT) 및 하위 비트 라인 인덱스(LBLI)에 기반하여 메인 캐시 메모리(113)를 액세스할 수 있다. 예를 들어, 서브 캐시 메모리(115)는 하위 비트 태그(T) 및 하위 비트 라인 인덱스(LBLI)에 기반하여 메인 캐시 메모리(113)로부터 데이터를 페치(fetch)하거나 메인 캐시 메모리(113)에 데이터를 후기입(write back)할 수 있다. 서브 캐시 메모리(115)는 메인 캐시 메모리(113)에 기반하여 동작하는 세트 결합(set associative) 캐시 메모리일 수 있다.
서브 캐시 메모리(115)는 복수의 웨이들(WAY_0~WAY_7)을 포함한다. 복수의 웨이들(WAY_0~WAY_7) 각각은 메인 캐시 메모리(115)의 하나의 그룹과 동일한 수의 서브 라인들을 포함할 수 있다. 복수의 웨이들(WAY_0~WAY_7)의 수는 메인 캐시 메모리(113)의 그룹들(G_00~G_FF)의 수보다 적을 수 있다. 즉, 서브 캐시 메모리(115)의 사이즈는 메인 캐시 메모리(115)의 사이즈보다 작을 수 있다.
메인 캐시 메모리(113)의 각 그룹에 할당된 하위 비트 라인 인덱스(LBLI)와 서브 캐시 메모리(115)의 각 그룹에 할당된 하위 비트 라인 인덱스(LBLI)는 대응 관계를 가질 수 있다. 예를 들어, 메인 캐시 메모리(113)의 각 그룹의 특정한 위치의 라인에 저장된 데이터 중 하위 비트 데이터는 서브 캐시 메모리(115)의 동일한 위치의 서브 라인으로 페치될 수 있다. 메인 캐시 메모리(113)의 서로 다른 그룹의 동일한 위치의 라인들에 저장된 두 개의 데이터의 두 개의 하위 비트 데이터는 서브 캐시 메모리(115)의 동일한 위치의 서브 라인의 서로 다른 웨이들로 페치될 수 있다.
예를 들어, 메인 캐시 메모리(113)의 그룹(G_cc)의 제 1 라인(0000)에 위치한 데이터(ccc)의 하위 비트 데이터(c)는 서브 캐시 메모리(115)의 웨이(WAY_0)의 제 1 라인(0)으로 페치될 수 있다. 페치되는 하위 비트 데이터는 메인 캐시 메모리(113)의 그룹의 위치를 가리키는 하위 비트 태그(LBT, cc)와 함께 저장될 수 있다. 메인 캐시 메모리(113)의 그룹(G_dd)의 제 1 라인(0000)에 위치한 데이터(ddd)의 하위 비트 데이터는 서브 캐시 메모리(115)의 다른 웨이(WAY_7)의 제 1 라인(0)으로 페치될 수 있다. 페치되는 데이터는 메인 캐시 메모리(113)의 그룹의 위치를 가리키는 하위 비트 태그(LBT, dd)와 함께 저장될 수 있다.
서브 캐시 메모리(115)의 웨이(WAY_0)의 제 1 라인(0)에 페치된 하위 비트 데이터(a)는 하위 비트 라인 인덱스(LBLI, 0) 및 하위 비트 태그(LBT, cc)를 참조하여, 메인 캐시 메모리(113)의 그룹(G_cc)의 첫 번째 라인으로 후기입될 수 있다. 서브 캐시 메모리(115)의 웨이(WAY_7)의 제 1 라인(0)에 페치된 하위 비트 데이터(d)는 하위 비트 라인 인덱스(LBLI, 0) 및 하위 비트 태그(LBT, dd)를 참조하여, 메인 캐시 메모리(113)의 그룹(G_dd)의 첫 번째 라인으로 후기입될 수 있다.
도 3a 및 도 3b에서, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)의 사이즈들이 특정되어 설명되었다. 그러나, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)의 사이즈들은 도 3a 및 도 3b에 도시된 수치들로 한정되지 않는다.
도 3c는 도 3a의 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)를 간략화하여 보여준다. 예시적으로, 도 3a의 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)의 하나의 웨이가 도 3c에 도시된다. 간결한 설명을 위하여, 이하에서, 도 3c에 도시된 서브 캐시 메모리(115)의 하나의 웨이 이외의 다른 부분들은 모두 유효한 데이터를 저장하는 것으로 가정된다. 즉, 도 3c에 도시된 서브 캐시 메모리(115)의 하나의 웨이를 참조하여, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)의 동작이 설명된다.
도 1 내지 도 3c를 참조하면, 메인 캐시 메모리(113)의 라인들 각각은 상위 비트 영역 및 하위 비트 영역으로 분할된다. 상위 비트 영역은 하나의 라인에 저장되는 데이터 중 상위 비트 쪽에 위치한 제 1 부분의 데이터(상위 비트 데이터)를 저장하고, 하위 비트 영역은 하나의 라인에 저장되는 데이터 중 하위 비트 쪽에 위치한 제 2 부분의 데이터(하위 비트 데이터)를 저장할 수 있다. 하나의 라인에 대응하는 데이터의 상위 비트 데이터 및 하위 비트 데이터를 구분하는 기준은 어플리케이션 프로세서(110)에 의해, 어플리케이션 프로세서(110)의 제조 시에, 컴퓨팅 시스템(100)의 제조 시에, 또는 사용자에 의해 결정될 수 있다.
서브 캐시 메모리(115)는 복수의 서브 라인들을 포함된다. 하나의 서브 라인은 메인 캐시 메모리(113)의 하나의 라인의 하위 비트 영역에 대응할 수 있다.
제 2 레벨의 캐시 메모리들(메인 캐시 메모리(113) 및 서브 캐시 메모리(115))에서 관리(저장, 갱신 및 출력)되는 데이터 중 상위 비트 데이터는 메인 캐시 메모리(113)의 상위 비트 영역에서 관리되고, 하위 비트 데이터는 메인 캐시 메모리(113)의 하위 비트 영역 및 서브 캐시 메모리(115)에서 관리될 수 있다.
도 4는 도 3c의 캐시 메모리들(113, 115)에 데이터가 저장되는 방법을 보여주는 순서도이다. 도 3c 및 도 4를 참조하면, S210 단계에서, 하위 비트 데이터 및 상위 비트 데이터를 포함하는 데이터가 수신된다. 예를 들어, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 상위 레벨의 캐시 메모리, 어플리케이션 프로세서, 하위 레벨의 캐시 메모리 또는 메인 메모리로부터 데이터를 수신할 수 있다. 데이터와 함께, 데이터의 어드레스가 수신될 수 있다. 예를 들어, 데이터와 연관된 라인 인덱스(LI) 및 태그(T)가 수신될 수 있다.
S220 단계에서, 서브 캐시 메모리에 무효 서브 라인(invalid sub line)이 존재하는지 판별된다. 예시적으로, 무효 서브 라인은 데이터를 저장하지 않는 서브 라인 또는 무효한 데이터를 저장하는 서브 라인을 포함할 수 있다. 서브 캐시 메모리(115)에 무효 서브 라인이 존재하지 않으면, S230 단계에서, 하위 비트 데이터가 서브 캐시 메모리(115)로부터 메인 캐시 메모리(113)로 후기입(write back) 또는 플러시(flush)된다. 예를 들어, 서브 캐시 메모리(115)의 선택된 서브 라인에 저장된 하위 비트 데이터가 메인 캐시 메모리(113)의 대응하는 라인으로 후기입될 수 있다. 예를 들어, 서브 캐시 메모리(115)에 저장된 하위 비트 데이터 중 가장 오래 전에 액세스된 하위 비트 데이터가 후기입될 수 있다. 후기입된 하위 비트 데이터가 저장되어 있던 라인은 무효화될 수 있다. 이후에 S240 단계가 수행된다.
서브 캐시 메모리(115)에 무효 서브 라인이 존재하면, S230 단계가 생략되고 S240 단계가 수행된다.
S240 단계에서, 수신된 데이터 중 하위 비트 데이터가 서브 캐시 메모리(115)에 저장된다. 예를 들어, 하위 비트 데이터는 서브 캐시 메모리(115)의 데이터를 저장하지 않는 빈 서브 라인 또는 무효 서브 라인에 저장될 수 있다.
S250 단계에서, 수신된 데이터 중 상위 비트 데이터가 메인 캐시 메모리(113)의 상위 비트 영역에 저장된다.
예시적으로, S220 단계 내지 S240 단계는 하위 비트 데이터를 저장하는 동작일 수 있다. S250 단계는 상위 비트 데이터를 저장하는 동작일 수 있다. 하위 비트 데이터를 저장하는 동작 및 상위 비트 데이터를 저장하는 동작은 병렬적으로 또는 순차적으로 수행될 수 있다. 메인 캐시 메모리(113)에 무효 라인이 존재하지 않을 때, 메인 캐시 메모리(113)에서 후기입(write back)이 수행될 수 있다. 이는 도 10a 및 도 10b를 참조하여 더 상세하게 설명된다.
도 5a 내지 도 5c는 도 3c의 캐시 구조에서 도 4의 저장 방법이 수행되는 예들을 보여주는 블록도들이다. 도 1, 도 4 및 도 5a를 참조하면, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 하위 비트 데이터(LD1) 및 상위 비트 데이터(MD1)를 포함하는 데이터를 수신할 수 있다. 예를 들어, 데이터는 하위 레벨의 캐시 또는 메인 메모리(120)로부터 수신될 수 있다.
예시적으로, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 모두 비어 있는 상태인 것으로 가정된다.
서브 캐시 메모리(115)에 무효 서브 라인이 존재하므로, 서브 캐시 메모리(115)의 후기입은 발생하지 않는다.
수신된 데이터 중 상위 비트 데이터(MD1)는 메인 캐시 메모리(113)의 선택된 라인의 상위 비트 영역에 저장된다. 상위 비트 데이터(MD1)는 선택된 라인 인덱스(LI)를 갖는 라인에, 하위 레벨의 캐시 또는 메인 메모리(120)를 가리키는 태그(T)와 함께 저장될 수 있다.
수신된 데이터 중 하위 비트 데이터(LD1)는 서브 캐시 메모리(115)의 선택된 서브 라인에 저장된다. 하위 비트 데이터(LD1)는 선택된 하위 비트 라인 인덱스(LBLI)를 갖는 라인에, 메인 캐시 메모리(113)를 가리키는 하위 비트 태그(LBT)와 함께 저장될 수 있다.
도 1, 도 4 및 도 5b를 참조하면, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 하위 비트 데이터(LD2) 및 상위 비트 데이터(MD2)를 포함하는 데이터를 수신할 수 있다. 예를 들어, 데이터는 상위 레벨의 캐시(111) 또는 어플리케이션 프로세서(110)로부터 수신될 수 있다.
서브 캐시 메모리(115)에 무효 서브 라인이 존재하므로, 서브 캐시 메모리(115)의 후기입은 발생하지 않는다.
수신된 데이터 중 상위 비트 데이터(MD2)는 메인 캐시 메모리(113)의 선택된 라인의 상위 비트 영역에 저장된다. 수신된 데이터 중 하위 비트 데이터(LD2)는 서브 캐시 메모리(115)의 선택된 서브 라인에 저장된다.
도 1, 도 4 및 도 5c를 참조하면, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 하위 비트 데이터(LD3) 및 상위 비트 데이터(MD3)를 포함하는 데이터를 수신할 수 있다. 예를 들어, 데이터는 하위 레벨의 캐시 또는 메인 메모리(120)로부터 수신될 수 있다.
서브 캐시 메모리(115)에 무효 서브 라인이 존재하지 않으므로, 서브 캐시 메모리(115)의 후기입이 발생한다. 예시적으로, 서브 캐시 메모리(115)의 첫 번째 서브 라인에 저장된 하위 비트 데이터(LD1)가 후기입될 수 있다. 선택된 하위 비트 데이터(LD1)에 대응하는 하위 비트 라인 인덱스(LBLI) 및 하위 비트 태그(LBT)에 기반하여, 선택된 하위 비트 데이터(LD1)에 대응하는 상위 비트 데이터(MD1)가 저장된 메인 캐시 메모리(113)의 어드레스(예를 들어, 태그(T) 및 라인 인덱스(LI))가 검출될 수 있다. 하위 비트 데이터(LD1)는 검출된 어드레스가 가리키는 메인 캐시 메모리(113)이 라인의 하위 비트 영역으로 후기입될 수 있다. 후기입이 수행된 하위 비트 데이터(LD1)가 저장되어 있던 서브 캐시 메모리(115)의 서브 라인은 무효화될 수 있다.
수신된 데이터 중 상위 비트 데이터(MD3)는 메인 캐시 메모리(113)의 선택된 라인의 상위 비트 영역에 저장된다.
수신된 데이터 중 하위 비트 데이터(LD3)는 서브 캐시 메모리(115)의 선택된 서브 라인에 저장된다. 하위 비트 데이터(LD3)는 후기입이 발생하여 무효화된 서브 라인에 저장될 수 있다.
도 6은 도 3c의 캐시 메모리들(113, 115)에서 데이터가 갱신되는 방법을 보여주는 순서도이다. 도 1, 도 3c 및 도 6을 참조하면, S310 단계에서, 하위 비트 데이터 및 상위 비트 데이터를 포함하는 갱신을 위한 데이터가 수신된다. 데이터는 상위 레벨의 캐시 메모리, 어플리케이션 프로세서, 하위 레벨의 캐시 메모리 또는 메인 메모리로부터 수신될 수 있다. 데이터와 연관된 라인 인덱스 및 태그가 데이터와 함께 수신될 수 있다.
S320 단계에서, 수신된 데이터에 대응하는 데이터가 메인 캐시 메모리(113) 또는 서브 캐시 메모리(115)로부터 읽어진다. 예를 들어, 데이터가 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에 분산 저장되어 있는 경우, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)로부터 데이터가 읽어질 수 있다. 데이터가 메인 캐시 메모리(113)에만 저장되어 있는 경우, 메인 캐시 메모리(113)로부터 데이터가 읽어질 수 있다.
S330 단계에서, 읽어진 데이터 및 수신된 데이터가 비교된다.
S340 단계에서, 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있고, 하위 비트 데이터가 변화 비트들을 가질 때, 서브 캐시 메모리(115)에 저장된 하위 비트 데이터가 갱신된다. 예를 들어, 수신된 데이터와 읽어진 데이터의 비교 결과가 하위 비트 데이터가 차이가 있음을 가리킬 때, 하위 비트 데이터가 변화 비트들을 가지는 것으로 판별될 수 있다.
S350 단계에서, 하위 비트 데이터가 메인 캐시 메모리(113)에 저장되어 있고, 하위 비트 데이터가 변화 비트들을 가질 때, 메인 캐시 메모리(113)에 저장된 하위 비트 데이터가 갱신된다.
S360 단계에서, 상위 비트 데이터가 변화 비트들을 가질 때, 메인 캐시 메모리(113)에 저장된 상위 비트 데이터가 갱신된다. 예를 들어, 수신된 데이터와 읽어진 데이터의 비교 결과가 상위 비트 데이터가 차이가 있음을 가리킬 때, 상위 비트 데이터가 변화 비트들을 가지는 것으로 판별될 수 있다.
도 7a 내지 도 7c는 도 3c의 캐시 구조에서 도 6의 저장 방법이 수행되는 예들을 보여주는 블록도들이다. 도 6 및 도 7a를 참조하면, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 하위 비트 데이터(LD3') 및 상위 비트 데이터(MD3)를 포함하는 갱신 데이터를 수신할 수 있다. 예를 들어, 데이터는 하위 레벨의 캐시 또는 메인 메모리(120)로부터 수신될 수 있다.
갱신 데이터의 상위 비트 데이터(MD3)는 메인 캐시 메모리(113)에 저장된 상위 비트 데이터(MD3)와 동일하다. 따라서, 상위 비트 데이터는 변화 비트들을 갖지 않는 것으로 판별되고, 갱신되지 않는다.
갱신 데이터의 하위 비트 데이터(LD3')는 서브 캐시 메모리(115)에 저장된 하위 비트 데이터(LD3)와 다르다. 따라서, 하위 비트 데이터(LD3)는 변화 비트들을 갖는 것으로 판별되고, 서브 캐시 메모리(115)에 저장된 하위 비트 데이터(LD3)가 새로운 데이터(LD3')로 갱신된다.
도 6 및 도 7b를 참조하면, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 하위 비트 데이터(LD1') 및 상위 비트 데이터(MD1)를 포함하는 갱신 데이터를 수신할 수 있다. 예를 들어, 데이터는 상위 레벨의 캐시(111) 또는 어플리케이션 프로세서(110)로부터 수신될 수 있다.
갱신 데이터의 상위 비트 데이터(MD1)는 메인 캐시 메모리(113)에 저장된 상위 비트 데이터(MD1)와 동일하다. 따라서, 상위 비트 데이터는 변화 비트들을 갖지 않는 것으로 판별되고, 갱신되지 않는다.
갱신 데이터의 하위 비트 데이터(LD1')는 메인 캐시 메모리(113)에 저장된 하위 비트 데이터(LD1)와 다르다. 따라서, 하위 비트 데이터(LD1)는 변화 비트들을 갖는 것으로 판별되고, 메인 캐시 메모리(113)에 저장된 하위 비트 데이터(LD1)가 새로운 데이터(LD1')로 갱신된다.
도 6 및 도 7c를 참조하면, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 하위 비트 데이터(LD2) 및 상위 비트 데이터(MD2')를 포함하는 갱신 데이터를 수신할 수 있다. 예를 들어, 데이터는 하위 레벨의 캐시 또는 메인 메모리(120)로부터 수신될 수 있다.
갱신 데이터의 상위 비트 데이터(MD2')는 메인 캐시 메모리(113)에 저장된 상위 비트 데이터(MD2)와 다르다. 따라서, 상위 비트 데이터는 변화 비트들을 갖는 것으로 판별되고, 메인 캐시 메모리(113)에 저장된 상위 비트 데이터(MD2)가 새로운 데이터(MD2')로 갱신된다.
갱신 데이터의 하위 비트 데이터(LD2)는 서브 캐시 메모리(115)에 저장된 하위 비트 데이터(LD2)와 동일하다. 따라서, 하위 비트 데이터(LD2)는 변화 비트들을 갖지 않는 것으로 판별되고, 갱신되지 않는다.
도 8은 도 3c의 캐시 메모리들에서 읽기가 수행되는 방법을 보여주는 순서도이다. 도 3c 및 도 8을 참조하면, S410 단계에서, 데이터 요청이 수신된다. 데이터 요청과 함께, 데이터의 어드레스가 수신될 수 있다. 예를 들어, 데이터와 연관된 라인 인덱스(LI) 및 태그(T)가 수신될 수 있다.
S420 단계에서, 요청된 데이터가 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에서 선택된다.
S430 단계에서, 선택된 데이터가 읽어진다.
도 9a 내지 도 9c는 도 3의 캐시 구조에서 도 8의 읽기 방법이 수행되는 예들을 보여주는 블록도들이다. 도 8 및 도 9a를 참조하면, 메인 캐시 메모리(113)의 첫 번째 라인에 저장된 데이터에 대한 데이터 요청이 수신될 수 있다.
선택된 라인의 상위 비트 데이터(MD1)는 메인 캐시 메모리(113)의 상위 비트 영역에 저장되어 있고, 하위 비트 데이터(LD1')는 메인 캐시 메모리(113)의 하위 비트 영역에 저장되어 있다. 따라서, 메인 캐시 메모리(113)로부터 상위 비트 데이터(MD1) 및 하위 비트 데이터(LD1')가 읽어지고, 읽어진 데이터가 출력된다. 예를 들어, 읽어진 데이터는 하위 레벨의 캐시 또는 메인 메모리(120)로 출력될 수 있다.
도 8 및 도 9b를 참조하면, 메인 캐시 메모리(113)의 두 번째 라인에 저장된 데이터에 대한 데이터 요청이 수신될 수 있다.
선택된 라인의 상위 비트 데이터(MD2')는 메인 캐시 메모리(113)의 상위 비트 영역에 저장되어 있고, 하위 비트 데이터(LD2)는 서브 캐시 메모리(115)에 저장되어 있다. 따라서, 메인 캐시 메모리(113)로부터 상위 비트 데이터(MD2')가 읽어지고, 서브 캐시 메모리(115)로부터 하위 비트 데이터(LD2)가 읽어진다. 이후에, 읽어진 데이터가 출력된다. 예를 들어, 읽어진 데이터는 상위 레벨의 캐시(111) 또는 어플리케이션 프로세서(110)로 출력될 수 있다.
도 8 및 도 9c를 참조하면, 메인 캐시 메모리(113)의 세 번째 라인에 저장된 데이터에 대한 데이터 요청이 수신될 수 있다.
선택된 라인의 상위 비트 데이터(MD3)는 메인 캐시 메모리(113)의 상위 비트 영역에 저장되어 있고, 하위 비트 데이터(LD3')는 서브 캐시 메모리(115)에 저장되어 있다. 따라서, 메인 캐시 메모리(113)로부터 상위 비트 데이터(MD3)가 읽어지고, 서브 캐시 메모리(115)로부터 하위 비트 데이터(LD3)가 읽어진다. 이후에, 읽어진 데이터가 출력된다. 예를 들어, 읽어진 데이터는 하위 레벨의 캐시 또는 메인 메모리(120)로 출력될 수 있다.
상술된 바와 같이, 본 발명의 실시 예들에 따르면, 어플리케이션 프로세서(110, 도 1 참조)의 특정 레벨의 캐시 메모리는 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)로 구성된다. 메인 캐시 메모리(113)는 복수의 라인들을 포함하고, 각 라인은 상위 비트 영역 및 하위 비트 영역으로 구성될 수 있다. 서브 캐시 메모리(115)는 메인 캐시 메모리(113)의 하위 비트 영역에 해당하는 복수의 서브 라인들을 포함한다.
캐시 메모리들(113, 115)에 입력되는 데이터 중 상위 비트 데이터는 메인 캐시 메모리(113)에 바로 저장되고, 하위 비트 데이터는 서브 캐시 메모리(115)에 의해 버퍼링된 후 메인 캐시 메모리(113)에 저장된다.
어플리케이션 프로세서의 연산 및 어플리케이션 프로세서에 의해 수행되는 어플리케이션의 연산들은 통계적으로 하위 비트 데이터의 갱신을 상위 비트 데이터의 갱신보다 더 많이 수행한다. 즉, 캐시 메모리들(113, 115)에서, 하위 비트 데이터의 갱신 빈도는 상위 비트 데이터의 갱신 빈도보다 높다.
자기 랜덤 액세스 메모리(MRAM)는 불휘발성 메모리로, 데이터를 저장하고 있는 데에 전력을 소모하지 않는다. 따라서, 어플리케이션 프로세서의 전력 소모를 감소시키기 위하여, 어플리케이션 프로세서의 특정 레벨의 캐시 메모리로 자기 랜덤 액세스 메모리(MRAM)가 사용될 수 있다.
그런데, 자기 랜덤 액세스 메모리(MRAM)는 쓰기를 수행할 때, 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM)와 같이 통상적인 캐시 메모리로 사용되는 메모리보다 더 많은 전력을 소모한다. 즉, 데이터 유지를 위해 소모되는 전력을 감소시키기 위해 자기 랜덤 액세스 메모리를 캐시 메모리로 사용하는 경우, 데이터 갱신으로 인해 오히려 더 많은 전력이 소모되는 상황이 발생할 수 있다.
본 발명의 실시 예들에 따르면, 갱신 빈도가 높은 하위 비트 데이터는 정적 랜덤 액세스 메모리(SRAM)로 구성되는 서브 캐시 메모리(115)에 의해 버퍼링된다. 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있는 동안, 하위 비트 데이터의 갱신은 쓰기 전력을 자기 랜덤 액세스 메모리(MRAM)보다 적게 소모하는 서브 캐시 메모리(115)에서 수행된다. 따라서, 데이터 유지를 위한 전력 소모가 감소되고, 데이터 갱신을 위한 전력 소모 또한 감소되는 어플리케이션 프로세서, 그것을 포함하는 컴퓨팅 시스템 및 어플리케이션 프로세서의 데이터 관리 방법이 제공된다.
도 10a 및 도 10b는 도 1, 도 3a 및 도 3b의 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에 데이터가 기입되는 다른 예를 보여주는 순서도이다. 도 1, 도 3a, 도 3b, 도 10a 및 도 10b를 참조하면, S511 단계에서, 상위 비트 데이터 및 하위 비트 데이터를 포함하는 데이터와 어드레스가 수신된다. 어드레스는 데이터와 연관된 라인 인덱스(LI) 및 태그(T)를 포함할 수 있다.
S513 단계에서, 메인 캐시 메모리(113)에서 히트가 발생하는지 판별된다. 예를 들어, 수신된 어드레스가 메인 캐시 메모리(113)에 저장되어 있는 어드레스와 일치할 때, 히트가 발생할 수 있다. 히트의 판별은, 수신된 어드레스 중 라인 인덱스(LI)에 대응하는 메인 캐시 메모리(113)의 라인을 선택하고, 선택된 라인에 저장된 태그(T)와 수신된 어드레스의 태그가 일치하는지 판별하는 동작을 포함할 수 있다. 예를 들어, 라인 인덱스(LI)에 대응하는 메인 캐시 메모리(113)의 라인이 선택되고, 복수의 웨이들(WAY_0~WAY_F)의 선택된 라인에 저장된 태그들 중 수신된 어드레스의 태그와 일치하는 태그가 존재하는지 판별될 수 있다. 히트가 발생하면 S515 단계가 수행되고, 히트가 발생하지 않으면 S531 단계가 수행된다.
메인 캐시 메모리(113)에서 히트가 발생하면, 즉 쓰기 요청된 어드레스에 대응하는 데이터가 메인 캐시 메모리(113)에 저장되어 있으면, S515 단계에서, 수신된 데이터가 상위 비트 데이터 및 하위 비트 데이터로 분리된다.
S517 단계에서, 상위 비트 데이터가 메인 캐시 메모리(113)에 저장된다. 예시적으로, 도 6, 및 도 7a 내지 도 7c를 참조하여 설명된 바와 같이, 메인 캐시 메모리(113)에 저장된 상위 비트 데이터와 수신된 상위 비트 데이터가 일치하면, S517 단계는 생략될 수 있다. 메인 캐시 메모리(113)에 저장된 상위 비트 데이터와 수신된 상위 비트 데이터가 일치하지 않으면, 갱신이 발생할 수 있다.
S519 단계에서, 서브 캐시 메모리(115)에서 히트가 발생하는지 판별된다. 예를 들어, 수신된 어드레스에 대응하는 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있으면, 히트가 발생할 수 있다. 히트의 판별은, 수신된 어드레스 중 라인 하위 비트 인덱스(LBLI)에 대응하는 서브 캐시 메모리(115)의 서브 라인을 선택하고, 선택된 서브 라인에 저장된 하위 비트 태그(LBT)와 수신된 어드레스의 태그가 대응하는지 판별하는 동작을 포함할 수 있다. 예를 들어, 도 3a 및 도 3b를 참조하여 설명된 바와 같이, 상위 비트 데이터가 저장된 메인 캐시 메모리(113)의 어드레스(라인 인덱스(LI) 및 태그(T))는 서브 캐시 메모리(115)에서 관리되는 어드레스(하위 비트 라인 인덱스(LBLI) 및 하위 비트 태그(LBT))로 변환될 수 있다. 변환된 하위 비트 라인 인덱스(LBLI)가 선택되고, 변환된 하위 비트 태그(LBT)가 선택된 서브 캐시 메모리(115)의 서브 라인에 저장되어 있는지 판별될 수 있다. 서브 캐시 메모리(115)에서 히트가 발생하면, S529 단계가 수행된다. 서브 캐시 메모리(115)에서 히트가 발생하지 않으면, S521 단계가 수행된다.
메인 캐시 메모리(113)에서 히트가 발생하고, 서브 캐시 메모리(115)에서 히트가 발생하지 않으면, 즉, 수신된 어드레스에 대응하는 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있지 않으면, S521 단계에서, 서브 캐시 메모리(115)에 무효 서브 라인이 존재하는지 판별된다. 무효 서브 라인은 하위 비트 데이터를 저장하지 않는 서브 라인 또는 무효한 하위 비트 데이터를 저장하는 서브 라인을 포함할 수 있다. 서브 캐시 메모리(115)에 무효 서브 라인이 존재하면, S529 단계가 수행된다. 서브 캐시 메모리(115)에 무효 서브 라인이 존재하지 않으면, S523 단계가 수행된다.
메인 캐시 메모리(113)에서 히트가 발생하고, 서브 캐시 메모리(115)에서 히트가 발생하지 않고, 서브 캐시 메모리(115)에 무효 서브 라인이 존재하지 않으면, S523 단계에서, 서브 캐시 메모리(115)에서 희생 데이터가 선택된다. 예를 들어, 서브 캐시 메모리(115)에 저장된 하위 비트 데이터 중 메인 캐시 메모리(113)로 후기입(write back) 또는 플러시(flush)될 데이터가 선택될 수 있다. 예를 들어, 서브 캐시 메모리(115)에 저장된 하위 비트 데이터 중 가장 오래 전에 액세스된 하위 비트 데이터가 선택될 수 있다.
S527 단계에서, 선택된 희생 데이터가 메인 캐시 메모리(113)로 후기입된다. 이후에, S529 단계에서, 하위 비트 데이터가 서브 캐시 메모리(115)에 저장된다.
메인 캐시 메모리(113)에서 히트가 발생하고, 서브 캐시 메모리(115)에서 히트가 발생하지 않고, 서브 캐시 메모리(115)에 무효 서브 라인이 존재하면(S521 단계), S529 단계에서, 서브 캐시 메모리(115)의 무효 서브 라인에 하위 비트 데이터가 저장될 수 있다.
메인 캐시 메모리(113)에서 히트가 발생하고, 서브 캐시 메모리(115)에서 히트가 발생하면(S519), S529 단계에서, 하위 비트 데이터가 서브 캐시 메모리(115)에 저장된다. 예시적으로, 도 6, 및 도 7a 내지 도 7c를 참조하여 설명된 바와 같이, 서브 캐시 메모리(115)에 저장된 하위 비트 데이터와 수신된 하위 비트 데이터가 일치하면, S529 단계는 생략될 수 있다. 서브 캐시 메모리(115)에 저장된 하위 비트 데이터와 수신된 하위 비트 데이터가 일치하지 않으면, 갱신이 발생할 수 있다.
메인 캐시 메모리(113)에서 히트가 발생하지 않으면(S513 단계), S531 단계에서, 메인 캐시 메모리(113)에 무효 라인이 존재하는지 판별된다. 무효 라인은 데이터를 저장하지 않는 라인 또는 무효한 데이터를 저장하는 라인을 포함할 수 있다. 메인 캐시 메모리(113)에 무효 라인이 존재하면, 상위 비트 데이터가 메인 캐시 메모리(113)의 무효 라인에 저장될 수 있다. 이후에, S521 단계 내지 S529 단계에서, 서브 캐시 메모리(115)에 하위 비트 데이터를 저장하는 동작(예를 들어, 후기입(write back)을 포함하여)이 수행될 수 있다.
메인 캐시 메모리(113)에서 히트가 발생하지 않고, 메인 캐시 메모리(113)에 무효 라인이 존재하지 않으면(S531 단계), S535 단계에서, 메인 캐시 메모리(113)에서 희생 데이터가 선택된다. S537 단계에서, 선택된 희생 데이터가 메인 캐시 메모리(113)로부터 읽어진다.
S539 단계에서, 서브 캐시 메모리(115)에서 히트가 발생하는지 판별된다. 예를 들어, 읽어진 희생 데이터의 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있는지 판별될 수 있다.
읽어진 희생 데이터의 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있지 않으면, S549 단계에서, 읽어진 희생 데이터가 하위 캐시 메모리 또는 메인 메모리(120)로 후기입된다. 이후에, S533 단계에서 상위 비트 데이터가 메인 캐시 메모리(113)에 저장되고, S521 단계 내지 S529 단계에서 하위 비트 데이터를 서브 캐시 메모리(115)에 저장하는 동작(예를 들어, 후기입을 포함하여)이 수행된다.
읽어진 희생 데이터의 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있으면, S541 단계에서, 서브 캐시 메모리(115)로부터 하위 비트 데이터가 읽어진다. S543 단계에서, 메인 캐시 메모리(113)로부터 읽어진 상위 비트 데이터 및 서브 캐시 메모리(115)로부터 읽어진 하위 비트 데이터가 조합된다. S545 단계에서, 조합된 데이터가 하위 캐시 메모리 또는 메인 메모리(120)로 후기입(write back)된다. S547 단계에서, 수신된 하위 비트 데이터 및 상위 비트 데이터가 서브 캐시 메모리(115) 및 메인 캐시 메모리(113)에 각각 저장된다.
도 10c는 도 10c는 도 1, 도 3a 및 도 3b의 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에서 데이터가 읽어지는 다른 예를 보여주는 순서도이다. 도 1, 도 3a, 도 3b 및 도 10c를 참조하면, S610 단계에서, 읽기 요청 및 어드레스가 수신된다. 어드레스는 메인 캐시 메모리(113)의 라인 인덱스(LI) 및 태그(T)를 포함할 수 있다.
S620 단계에서, 메인 캐시 메모리(113)에서 히트가 발생하는지 판별된다. 예를 들어, 수신된 라인 인덱스(LI)에 대응하는 메인 캐시 메모리(113)의 복수의 웨이들(WAY_0~WAY_F)의 라인들에 수신된 태그(T)와 일치하는 태그가 저장되어 있는지 판별될 수 있다. 예를 들어, 읽기 요청된 데이터가 메인 캐시 메모리(113)에 저장되어 있는지 판별될 수 있다. 요청된 데이터가 메인 캐시 메모리(113)에 저장되어 있으면, S630 단계가 수행된다. 요청된 데이터가 메인 캐시 메모리(113)에 저장되어 있지 않으면, S680 단계가 수행된다.
요청된 데이터가 메인 캐시 메모리(113)에 저장되어 있으면, S630 단계에서, 메인 캐시 메모리(113)에 저장된 데이터가 읽어진다. S650 단계에서, 서브 캐시 메모리(115)에서 히트가 발생하는지 판별된다. 예를 들어, 요청된 데이터의 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있는지 판별된다. 요청된 데이터의 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있으면, S650 단계가 수행된다. 요청된 데이터의 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있지 않으면, S670 단계가 수행된다.
요청된 데이터의 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있으면, S650 단계에서, 서브 캐시 메모리(115)로부터 하위 비트 데이터가 읽어진다. S650 단계에서, 메인 캐시 메모리(113)로부터 읽어진 상위 비트 데이터 및 서브 캐시 메모리(115)로부터 읽어진 하위 비트 데이터가 조합된다. S670 단계에서, 조합된 데이터가 읽어진 데이터로 출력된다.
요청된 데이터의 하위 비트 데이터가 서브 캐시 메모리(115)에 저장되어 있지 않으면(S640 단계), 요청된 데이터의 하위 비트 데이터 및 상위 비트 데이터는 메인 캐시 메모리(113)에 저장되어 있다. 따라서, S670 단계에서, 메인 캐시 메모리(113)로부터 읽어진 상위 비트 데이터 및 하위 비트 데이터가 읽어진 데이터로 출력된다.
요청된 데이터가 메인 캐시 메모리(113)에 저장되어 있지 않으면(S620 단계), 요청된 데이터의 페치가 요구된다. S680 단계에서, 요청된 데이터가 하위 캐시 메모리 또는 메인 메모리(120)로부터 페치된다. 이후에, S690 단계에서, 도 10a를 참조하여 설명된 바와 같이, 페치된 데이터가 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에 저장된다. S670 단계에서, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에 저장된 데이터는 읽어진 데이터로 출력된다.
도 11a는 본 발명의 제 1 실시 예에 따른 캐시 메모리들의 액세스 시간을 보여주는 그래프이다. 도 11a에서, 메인 캐시 메모리(113) 하나로부터 데이터가 읽어지는 경우의 액세스 시간 및 메인 캐시 메모리(113)와 서브 캐시 메모리(115)로부터 데이터가 읽어지는 경우의 액세스 시간이 도시되어 있다.
도 1, 도 3a 및 도 11a를 참조하면, 메인 캐시 메모리(113) 하나로부터 데이터가 읽어지는 경우, 메인 캐시 메모리(113)의 태그 디코딩이 수행된 후 데이터 액세스가 수행될 수 있다.
메인 캐시 메모리(113)와 서브 캐시 메모리(115)로부터 데이터가 읽어지는 경우, 메인 캐시 메모리(113)의 태그 디코딩이 수행된 후 데이터 액세스가 수행될 수 있다. 메인 캐시 메모리(113)의 데이터 액세스가 수행되는 동안, 서브 캐시 메모리(115)의 태그 디코딩이 수행될 수 있다. 예시적으로, 메인 캐시 메모리(113)는 메인 메모리(120)의 전체 어드레스들에 대한 정보를 라인 인덱스(LI) 및 태그(T)로 저장하도록 구성된다. 서브 캐시 메모리(115)는 메인 캐시 메모리(113)의 전체 어드레스들에 대한 정보를 하위 비트 라인 인덱스(LBLI) 및 하위 비트 태그(LBT)로 저장하도록 구성된다. 메인 메모리(120)의 저장 용량이 메인 캐시 메모리(113)의 저장 용량보다 크므로, 태그(T)는 하위 비트 태그(LBT)보다 길다. 즉, 하위 비트 태그(LBT)의 디코딩 시간은 태그(T)의 디코딩 시간보다 짧다. 예를 들어, 서브 캐시 메모리(115)의 하위 비트 태그(LBT)의 디코딩은 메인 캐시 메모리(113)의 데이터 액세스가 종료되기 전에 완료될 수 있다.
서브 캐시 메모리(115)의 태그 디코딩이 수행된 후, 서브 캐시 메모리(115)의 데이터 액세스가 수행된다. 서브 캐시 메모리(115)에 저장되는 하위 비트 데이터는 메인 캐시 메모리(113)에 저장되는 하위 비트 데이터 및 상위 비트 데이터보다 적은 용량을 갖는다. 즉, 서브 캐시 메모리(115)의 데이터 액세스 시간은 메인 캐시 메모리(113)의 데이터 액세스 시간보다 짧다. 예를 들어, 메인 캐시 메모리(113)의 데이터 액세스가 완료되는 시점과 유사한 시점에, 서브 캐시 메모리(115)의 데이터 액세스가 완료될 수 있다.
즉, 메인 캐시 메모리(113)와 서브 캐시 메모리(115)로부터 데이터가 읽어지는 경우의 액세스 시간은 메인 캐시 메모리(113) 하나로부터 데이터가 읽어지는 경우의 액세스 시간보다 길어지지 않을 수 있다. 마찬가지로, 메인 캐시 메모리(113)와 서브 캐시 메모리(115)에 데이터가 저장되는 경우의 액세스 시간은 메인 캐시 메모리(113) 하나로부터 데이터가 읽어지는 경우의 액세스 시간보다 길어지지 않을 수 있다.
도 11b는 본 발명의 제 2 실시 예에 따른 캐시 메모리들의 액세스 시간을 보여주는 그래프이다. 도 11b에서, 메인 캐시 메모리(113) 하나로부터 데이터가 읽어지는 경우의 액세스 시간 및 메인 캐시 메모리(113)와 서브 캐시 메모리(115)로부터 데이터가 읽어지는 경우의 액세스 시간이 도시되어 있다.
도 1, 도 3a 및 도 11b를 참조하면, 메인 캐시 메모리(113) 하나로부터 데이터가 읽어지는 경우, 메인 캐시 메모리(113)의 태그 디코딩과 데이터 액세스가 병렬적으로 수행될 수 있다.
메인 캐시 메모리(113) 및 서브 캐시 메모리(115)로부터 데이터가 읽어지는 경우, 메인 캐시 메모리(113)의 태그 디코딩 및 데이터 액세스, 그리고 서브 캐시 메모리(115)의 태그 디코딩 및 데이터 액세스는 병렬적으로 수행될 수 있다.
도 11a를 참조하여 설명된 바와 같이, 서브 캐시 메모리(115)의 태그 디코딩 시간 및 데이터 액세스 시간은 메인 캐시 메모리(113)의 태그 디코딩 시간 및 데이터 액세스 시간보다 짧다. 따라서, 메인 캐시 메모리(113)와 서브 캐시 메모리(115)로부터 데이터가 읽어지는 경우의 액세스 시간은 메인 캐시 메모리(113) 하나로부터 데이터가 읽어지는 경우의 액세스 시간보다 길어지지 않을 수 있다. 마찬가지로, 메인 캐시 메모리(113)와 서브 캐시 메모리(115)에 데이터가 저장되는 경우의 액세스 시간은 메인 캐시 메모리(113) 하나로부터 데이터가 읽어지는 경우의 액세스 시간보다 길어지지 않을 수 있다.
도 12a는 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)가 읽기 동작을 수행하는 과정을 설명하기 위한 도면이다. 도 1, 도 3a 및 도 12a를 참조하면, 메인 캐시 메모리(113)는 어드레스 버퍼(AB), 태그 어레이(TA), 행 디코더(RD1), 읽기 및 쓰기 회로(RW1), 중간 회로(S1), 복수의 데이터 어레이들(DA1~DAF), 행 디코더(RD2), 열디코더(CD1), 복수의 읽기 및 쓰기 회로들(RW2_1~RW2_F), 그리고 입출력 회로(S2)를 포함한다.
어드레스 버퍼(AD)는 외부로부터 어드레스를 수신하여 저장하도록 구성된다. 예를 들어, 어드레스 버퍼(AD)는 어플리케이션 프로세서(110)로부터 라인 인덱스(LI) 및 태그(T)를 수신하여 저장하도록 구성된다. 어드레스 버퍼(AD)는 라인 인덱스를 행 디코더들(RD1, RD2) 및 서브 캐시 메모리(115)의 하위 비트 어드레스 버퍼(LBAB)로 전달하고, 태그(T)를 중간 회로(S1)로 전달할 수 있다.
태그 어레이(TA)는 메인 캐시 메모리(113)에 저장되는 데이터와 연관된 태그들(T1~TF)을 저장하도록 구성된다. 태그들(T1~TF)은 연관된 데이터의 유효성에 대한 정보를 포함하는 유효성 데이터(V1~VF)와 함께 관리될 수 있다. 태그들(T1~TF) 및 유효성 데이터(V1~VF)는 행들 및 열들에 기반하여 매트릭스 형태로 저장될 수 있다. 예를 들어, 태그들(T1~TF) 및 유효성 데이터(V1~VF)의 행들은 메인 캐시 메모리(113)의 라인들(즉, 라인 인덱스들(LI))에 대응할 수 있다. 태그들(T1~TF) 및 유효성 데이터(V1~VF)의 열들은 메인 캐시 메모리(113)의 웨이들(WAY_0~WAY_F)에 대응할 수 있다.
읽기 동작 시에, 행 디코더(RD1)는 어드레스 버퍼(AD)로부터 수신되는 라인 인덱스(LI)에 응답하여, 태그 어레이(TA)의 행들을 선택하도록 구성된다. 읽기 동작 시에, 읽기 및 쓰기 회로(RW1)는 행 디코더(RD1)에 의해 선택된 행의 태그들(T1~TF) 및 유효성 데이터(V1~VF)를 읽도록 구성된다. 읽어진 태그들(T1~TF) 및 유효성 데이터(V1~VF)는 중간 회로(S1)로 전달된다.
읽기 동작 시에, 중간 회로(S1)는 메인 캐시 메모리(113)에서 히트가 발생하는지 판별할 수 있다. 중간 회로(S1)는 태그 어레이(TA)로부터 수신되는 태그들(T1~TF)을 어드레스 버퍼(AB)로부터 수신되는 태그(T)와 비교할 수 있다. 태그 어레이(TA)로부터 수신되는 태그들(T1~TF) 중 어드레스 버퍼(AB)로부터 수신되는 태그(T)와 일치하는 태그가 존재하고, 해당 태그와 연관된 유효성 데이터가 유효를 가리킬 때, 히트로 판별될 수 있다. 중간 회로(S1)의 인코더(ENC1)는 히트로 판별된 태그의 열 어드레스를 열 디코더(CD1)로 전달하고, 히트로 판별된 태그가 메인 캐시 메모리(113)의 어떤 웨이에 위치하는지를 가리키는 웨이 정보(WI)를 하위 비트 어드레스 버퍼(LBAB)로 전달할 수 있다. 웨이 정보(WI)는 히트된 태그가 저장되어 있는 태그 어레이(TA)의 열 어드레스일 수 있다.
복수의 데이터 어레이들(DA1~DAF)은 데이터를 저장하도록 구성된다. 복수의 데이터 어레이들(DA1~DAF)은 메인 캐시 메모리(113)의 복수의 웨이들(WAY_0~WAY_F)에 각각 대응할 수 있다. 복수의 데이터 어레이들(DA1~DAF) 각각은 행들 및 열들에 기반한 매트릭스 형태로 데이터를 저장할 수 있다. 복수의 데이터 어레이들(DA1~DAF)의 행들은 메인 캐시 메모리(113)의 라인들에 각각 대응할 수 있다. 복수의 데이터 어레이들(DA1~DAF)각각의 하나의 행은 메인 캐시 메모리(113)의 하나의 라인에 대응할 수 있다.
행 디코더(RD2)는 어드레스 버퍼(AB)로부터 수신되는 라인 인덱스(LI)에 기반하여, 복수의 데이터 어레이들(DA1~DAF)의 행들을 선택하도록 구성된다. 열 디코더(CD1)는 인코더(ENC1)로부터 전달된 열 정보에 해당하는 데이터 어레이를 선택하도록 구성된다. 예를 들어, 인코더(ENC1)가 i 번째 열에서 히트가 발생했음을 가리키는 정보를 출력할 때, 열 디코더(CD1)는 복수의 데이터 어레이들(DA1~DAF) 중 i 번째 데이터 어레이를 선택할 수 있다.
읽기 동작 시에, 복수의 읽기 및 쓰기 회로들(RW2_1~RW2_F)은 복수의 데이터 어레이(DA1~DAF) 중 행 디코더(RD2)에 의해 선택된 라인들로부터 데이터를 읽을 수 있다. 예를 들어, 행 디코더(RD2)에 의해 선택된 라인들에 저장된 데이터 중 열 디코더(CD1)에 의해 선택된 데이터 어레이의 라인의 데이터가 읽어질 수 있다.
읽기 동작 시에, 입출력 회로(S2)는 복수의 읽기 및 쓰기 회로들(RW2_1~RW2_F)로부터 데이터를 수신한다. 예를 들어, 입출력 회로(S2)는 행 디코더(RD2) 및 열 디코더(CD1)에 의해 선택된 라인의 데이터를 수신할 수 있다. 입출력 회로(S2)는 수신된 데이터 중 상위 비트 데이터를 데이터 버퍼(DB)로 출력하고, 하위 비트 데이터를 서브 캐시 메모리(115)의 입출력 회로(S4)로 출력할 수 있다.
서브 캐시 메모리(115)는 하위 비트 어드레스 버퍼(LBAB), 하위 비트 태그 어레이(LBTA), 행 디코더(RD3), 읽기 및 쓰기 회로(RW3), 중간 회로(S3), 복수의 하위 비트 데이터 어레이들(LBDA1~LBDAi), 행 디코더(RD4), 열디코더(CD2), 복수의 읽기 및 쓰기 회로들(RW4_1~RW4_i), 그리고 입출력 회로(S4)를 포함한다.
하위 비트 어드레스 버퍼(LBAB)는 메인 캐시 메모리(113)의 어드레스 버퍼(AD) 및 중간 회로(S1)로부터 각각 라인 인덱스(LI) 및 웨이 정보(WI)를 수신한다. 하위 비트 어드레스 버퍼(LBAB)는 수신된 라인 인덱스(LI) 및 웨이 정보(WI)를 조합하여 하나의 어드레스를 형성하고, 이를 다시 하위 비트 라인 인덱스(LBLI) 및 하위 비트 태그(LBT)로 분할할 수 있다. 즉, 하위 비트 어드레스 버퍼(LBAB)는 메인 캐시 메모리(113)의 어드레스를 서브 캐시 메모리(115)의 어드레스로 변환할 수 있다. 하위 비트 라인 인덱스(LBLI)는 행 디코더들(RD3, RD4)로 전달되고, 하위 비트 태그(LBT)는 중간 회로(S3)로 전달된다.
하위 비트 태그 어레이(LBTA)는 서브 캐시 메모리(115)에 저장되는 데이터와 연관된 태그들(LBT1~LBT7)을 저장하도록 구성된다. 하위 비트 태그들(LBT1~LBT7)은 연관된 데이터의 유효성에 대한 정보를 포함하는 유효성 데이터(V1~V7)와 함께 관리될 수 있다. 하위 비트 태그들(LBT1~LBT7) 및 유효성 데이터(V1~V7)는 행들 및 열들에 기반하여 매트릭스 형태로 저장될 수 있다. 예를 들어, 하위 비트 태그들(LBT1~LBT7) 및 유효성 데이터(V1~V7)의 행들은 서브 캐시 메모리(115)의 라인들(즉, 하위 비트 라인 인덱스들(LBLI))에 대응할 수 있다. 하위 비트 태그들(LBT1~LBT7) 및 유효성 데이터(V1~V7)의 열들은 서브 캐시 메모리(115)의 웨이들(WAY_0~WAY_7)에 대응할 수 있다.
읽기 동작 시에, 행 디코더(RD3)는 하위 비트 어드레스 버퍼(LBAD)로부터 수신되는 하위 비트 라인 인덱스(LBLI)에 응답하여, 하위 비트 태그 어레이(LBTA)의 행들을 선택하도록 구성된다. 읽기 동작 시에, 읽기 및 쓰기 회로(RW3)는 행 디코더(RD3)에 의해 선택된 행의 하위 비트 태그들(LBT1~LBT7) 및 유효성 데이터(V1~V7)를 읽도록 구성된다. 읽어진 하위 비트 태그들(LBT1~LBT7) 및 유효성 데이터(V1~V7)는 중간 회로(S3)로 전달된다.
읽기 동작 시에, 중간 회로(S3)는 서브 캐시 메모리(115)에서 히트가 발생하는지 판별할 수 있다. 중간 회로(S3)는 하위 비트 태그 어레이(LBTA)로부터 수신되는 하위 비트 태그들(LBT1~LBT7)을 하위 비트 어드레스 버퍼(LBAB)로부터 수신되는 하위 비트 태그(LBT)와 비교할 수 있다. 하위 비트 태그 어레이(LBTA)로부터 수신되는 하위 비트 태그들(LBT1~LBT7) 중 하위 비트 어드레스 버퍼(LBAB)로부터 수신되는 하위 비트 태그(LBT)와 일치하는 태그가 존재하고, 해당 태그와 연관된 유효성 데이터가 유효를 가리킬 때, 히트로 판별될 수 있다. 중간 회로(S3)의 인코더(ENC2)는 히트로 판별된 하위 비트 태그의 열 어드레스를 열 디코더(CD2)로 전달할 수 있다.
복수의 하위 비트 데이터 어레이들(LBDA1~LBDA7)은 데이터를 저장하도록 구성된다. 복수의 하위 비트 데이터 어레이들(LBDA1~LBDA7)은 서브 캐시 메모리(115)의 복수의 웨이들(WAY_0~WAY_7)에 각각 대응할 수 있다. 복수의 하위 비트 데이터 어레이들(LBDA1~LBDA7) 각각은 행들 및 열들에 기반한 매트릭스 형태로 데이터를 저장할 수 있다. 복수의 하위 비트 데이터 어레이들(LBDA1~LBDA7)의 행들은 서브 캐시 메모리(115)의 서브 라인들에 각각 대응할 수 있다. 복수의 하위 비트 데이터 어레이들(LBDA1~LBDA7) 각각의 하나의 행은 서브 캐시 메모리(115)의 하나의 서브 라인에 대응할 수 있다.
행 디코더(RD4)는 하위 비트 어드레스 버퍼(LBAB)로부터 수신되는 하위 비트 라인 인덱스(LBLI)에 기반하여, 복수의 하위 비트 데이터 어레이들(LBDA1~LBDA7)의 행들을 선택하도록 구성된다. 열 디코더(CD2)는 인코더(ENC2)로부터 전달된 열 정보에 해당하는 하위 비트 데이터 어레이를 선택하도록 구성된다. 예를 들어, 인코더(ENC2)가 i 번째 열에서 히트가 발생했음을 가리키는 정보를 출력할 때, 열 디코더(CD2)는 복수의 하위 비트 데이터 어레이들(DA1~DA7) 중 i 번째 데이터 어레이를 선택할 수 있다.
읽기 동작 시에, 복수의 읽기 및 쓰기 회로들(RW4_1~RW4_7)은 복수의 하위 비트 데이터 어레이(LBDA1~LBDA7) 중 행 디코더(RD4)에 의해 선택된 서브 라인들로부터 데이터를 읽을 수 있다. 예를 들어, 행 디코더(RD4)에 의해 선택된 서브 라인들에 저장된 데이터 중 열 디코더(CD2)에 의해 선택된 하위 비트 데이터 어레이의 서브 라인의 데이터가 읽어질 수 있다.
읽기 동작 시에, 입출력 회로(S4)는 복수의 읽기 및 쓰기 회로들(RW4_1~RW4_7)로부터 데이터를 수신한다. 예를 들어, 입출력 회로(S4)는 행 디코더(RD4) 및 열 디코더(CD2)에 의해 선택된 서브 라인의 데이터를 수신할 수 있다. 입출력 회로(S4)는 메인 캐시 메모리(113)의 입출력 회로(S2)로부터 수신되는 하위 비트 데이터 및 복수의 읽기 및 쓰기 회로들(RW4_1~RW4_7)로부터 수신되는 하위 비트 데이터 중 하나를 데이터 버퍼(DB)로 출력할 수 있다. 예를 들어, 중간 회로(S3)에서 서브 캐시 메모리(115)의 히트가 발생한 것으로 판별된 경우, 입출력 회로(S4)는 복수의 입출력 회로들(RW4_1~RW4_7)로부터 수신되는 하위 비트 데이터를 데이터 버퍼(DB)로 출력할 수 있다. 중간 회로(S3)에서 서브 캐시 메모리(115)의 히트가 발생하지 않은 것으로 판별된 경우, 입출력 회로(S4)는 메인 캐시 메모리(113)의 입출력 회로(S2)로부터 수신된 하위 비트 데이터를 데이터 버퍼(DB)로 출력할 수 있다.
요약하면, 태그 어레이(TA) 및 그와 연관된 회로들(행 디코더(RD1), 읽기 및 쓰기 회로(RW1) 및 중간 회로(S1))에서, 메인 캐시 메모리(113)의 히트 여부가 판별된다. 메인 캐시 메모리(113)에서 히트가 발생하면, 데이터 어레이(DA1~DAF) 및 그와 연관된 회로들(행 디코더(RD2), 열 디코더(CD1), 복수의 읽기 및 쓰기 회로들(RW2_1~RW2_F))에서, 데이터가 읽어진다. 읽어진 데이터 중 상위 비트 데이터는 데이터 버퍼(DB)로 출력된다.
하위 비트 태그 어레이(LBTA) 및 그와 연관된 회로들(행 디코더(RD3), 읽기 및 쓰기 회로(RW3) 및 중간 회로(S3)에서, 서브 캐시 메모리(115)의 히트 여부가 판별된다. 서브 캐시 메모리(115)에서 히트가 발생하면, 하위 비트 데이터 어레이(LBDA1~LBDA7) 및 그와 연관된 회로들(행 디코더(RD4), 열 디코더(CD2), 복수의 읽기 및 쓰기 회로들(RW4_1~RW4_7))에서 하위 비트 데이터가 읽어진다. 서브 캐시 메모리(115)의 히트 여부에 따라, 메인 캐시 메모리(113)로부터 읽어진 하위 비트 데이터 및 서브 캐시 메모리(115)로부터 읽어진 하위 비트 데이터 중 하나가 데이터 버퍼(DB)로 출력된다.
도 12b는 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)가 읽기 동작을 수행하는 과정을 설명하기 위한 도면이다. 간결한 설명을 위하여, 도 12a를 참조하여 설명된 내용과 중복되는 내용은 생략된다.
도 1, 도 3a 및 도 12b를 참조하면, 쓰기 동작 시에, 행 디코더(RD1)는 어드레스 버퍼(AD)로부터 수신되는 라인 인덱스(LI)에 응답하여, 태그 어레이(TA)의 행들을 선택하도록 구성된다.
쓰기 동작 시에, 중간 회로(S1)는 메인 캐시 메모리(113)에서 히트가 발생하는지 판별할 수 있다. 중간 회로(S1)는 태그 어레이(TA)로부터 수신되는 태그들(T1~TF)을 어드레스 버퍼(AB)로부터 수신되는 태그(T)와 비교할 수 있다. 태그 어레이(TA)로부터 수신되는 태그들(T1~TF) 중 어드레스 버퍼(AB)로부터 수신되는 태그(T)와 일치하는 태그가 존재하고, 해당 태그와 연관된 유효성 데이터가 유효를 가리킬 때, 히트로 판별될 수 있다.
중간 회로(S1)의 인코더(ENC1)는 히트로 판별된 태그의 열 어드레스를 출력할 수 있다. 메인 캐시 메모리(113)에서 히트가 발생하지 않을 때, 중간 회로(S1)는 선택된 행에서 무효한 태그를 저장하는 열 또는 태그를 저장하지 않는 열의 열 어드레스를 선택할 수 있다. 열 어드레스의 선택은 무효 블록 선택기(IBS1)에 의해 수행될 수 있다. 인코더(ENC1)에 의해 히트로 판별된 열 어드레스 및 무효 블록 선택기(IBS1)에 의해 선택된 어드레스 중 하나가 열 디코더(CD1)로 전달되고, 웨이 정보(WI)로서 하위 비트 어드레스 버퍼(LBAB)에 전달될 수 있다.
행 디코더(RD2)는 어드레스 버퍼(AB)로부터 수신되는 라인 인덱스(LI)에 기반하여, 복수의 데이터 어레이들(DA1~DAF)의 행들을 선택하도록 구성된다. 열 디코더(CD1)는 중간 회로(S1)로부터 전달된 열 정보에 해당하는 데이터 어레이를 선택하도록 구성된다.
쓰기 동작 시에, 입출력 회로(S2)는 데이터 버퍼(DB)에 저장된 데이터 중 상위 비트 데이터를 복수의 읽기 및 쓰기 회로들(RW2_1~RW2_F)로 전달한다. 예를 들어, 입출력 회로(S2)는 열 디코더(CD1)에 의해 선택된 읽기 및 쓰기 회로에 상위 비트 데이터를 전달할 수 있다. 복수의 읽기 및 쓰기 회로들(RW2_1~RW2_F)은 입출력 회로(S2)로부터 수신되는 상위 비트 데이터를 행 디코더(RD2) 및 열 디코더(CD1)에 의해 선택된 라인에 저장할 수 있다.
쓰기 동작 시에, 행 디코더(RD3)는 하위 비트 어드레스 버퍼(LBAD)로부터 수신되는 하위 비트 라인 인덱스(LBLI)에 응답하여, 하위 비트 태그 어레이(LBTA)의 행들을 선택하도록 구성된다. 쓰기 동작 시에, 읽기 및 쓰기 회로(RW3)는 행 디코더(RD3)에 의해 선택된 행의 하위 비트 태그들(LBT1~LBT7) 및 유효성 데이터(V1~V7)를 읽도록 구성된다.
쓰기 동작 시에, 중간 회로(S3)는 서브 캐시 메모리(115)에서 히트가 발생하는지 판별할 수 있다. 중간 회로(S3)는 하위 비트 태그 어레이(LBTA)로부터 수신되는 하위 비트 태그들(LBT1~LBT7)을 하위 비트 어드레스 버퍼(LBAB)로부터 수신되는 하위 비트 태그(LBT)와 비교할 수 있다.
중간 회로(S3)의 인코더(ENC2)는 히트로 판별된 하위 비트 태그의 열 어드레스를 출력할 수 있다. 서브 캐시 메모리(115)에서 히트가 발생하지 않을 때, 중간 회로(S3)는 선택된 행에서 무효한 하위 비트 태그를 저장하는 열 또는 하위 비트 태그를 저장하지 않는 열의 열 어드레스를 선택할 수 있다. 열 어드레스의 선택은 무효 블록 선택기(IBS2)에 의해 수행될 수 있다. 인코더(ENC2)에 의해 히트로 판별된 열 어드레스 및 무효 블록 선택기(IBS1)에 의해 선택된 어드레스 중 하나가 열 디코더(CD2)로 전달될 수 있다.
행 디코더(RD4)는 하위 비트 어드레스 버퍼(LBAB)로부터 수신되는 하위 비트 라인 인덱스(LBLI)에 기반하여, 복수의 하위 비트 데이터 어레이들(LBDA1~LBDA7)의 행들을 선택하도록 구성된다. 열 디코더(CD2)는 중간 회로(S3)로부터 전달된 열 정보에 해당하는 하위 비트 데이터 어레이를 선택하도록 구성된다.
쓰기 동작 시에, 입출력 회로(S4)는 데이터 버퍼(DB)에 저장된 데이터 중 하위 비트 데이터를 복수의 읽기 및 쓰기 회로들(RW4_1~RW4_7)로 전달한다. 예를 들어, 입출력 회로(S4)는 열 디코더(CD2)에 의해 선택된 읽기 및 쓰기 회로에 하위 비트 데이터를 전달할 수 있다. 복수의 읽기 및 쓰기 회로들(RW4_1~RW4_7)은 입출력 회로(S4)로부터 수신되는 하위 비트 데이터를 행 디코더(RD2) 및 열 디코더(CD1)에 의해 선택된 라인에 저장할 수 있다.
요약하면, 쓰기 동작 시에 히트가 발생하면, 메인 캐시 메모리(113) 또는 서브 캐시 메모리(115)에서 갱신이 수행된다. 히트가 발생하지 않으면, 메인 캐시 메모리(113) 또는 서브 캐시 메모리(115)의 무효한 라인 또는 무효 라인에 데이터가 저장된다.
도 12c는 하위 비트 데이터를 서브 캐시 메모리(115)로부터 메인 캐시 메모리(113)로 후기입하는 동작을 수행하는 과정을 설명하기 위한 도면이다. 간결한 설명을 위하여, 도 12a 또는 도 12b를 참조하여 설명된 내용과 중복되는 내용은 생략된다.
도 1, 도 3a 및 도 12c를 참조하면, 행 디코더(RD3)는 하위 비트 어드레스 버퍼(LBAD)로부터 수신되는 하위 비트 라인 인덱스(LBLI)에 응답하여, 하위 비트 태그 어레이(LBTA)의 행들을 선택하도록 구성된다. 읽기 및 쓰기 회로(RW3)는 행 디코더(RD3)에 의해 선택된 행의 하위 비트 태그들(LBT1~LBT7) 및 유효성 데이터(V1~V7)를 읽도록 구성된다.
중간 회로(S3)는 서브 캐시 메모리(115)에 저장된 태그들 중 후기입될 태그를 선택할 수 있다. 예를 들어, 중간 회로(S3)는 가장 오래 전에 액세스된 태그를 후기입될 태그로 선택할 수 있다. 후기입될 태그의 선택은 희생 데이터 선택기(VS)에 의해 수행될 수 있다. 인코더(ENC2)는 희생 데이터 선택기(VS)에 의해 선택된 태그의 열 어드레스를 열 디코더(CD2)로 전달할 수 있다. 중간 회로(S3)는 선택된 태그와 연관된 유효성 데이터가 무효를 가리키게 갱신되도록 입출력 회로(RW3)를 제어할 수 있다.
행 디코더(RD4)는 하위 비트 어드레스 버퍼(LBAB)로부터 수신되는 하위 비트 라인 인덱스(LBLI)에 기반하여, 복수의 하위 비트 데이터 어레이들(LBDA1~LBDA7)의 행들을 선택하도록 구성된다. 열 디코더(CD2)는 중간 회로(S3)로부터 전달된 열 정보에 해당하는 하위 비트 데이터 어레이를 선택하도록 구성된다.
입출력 회로(S4)는 행 디코더(RD4) 및 열 디코더(CD2)에 의해 선택된 라인의 하위 비트 데이터를 데이터 버퍼(DB)로 출력한다.
입출력 회로(S2)는 데이터 버퍼(DB)에 저장된 하위 비트 데이터를 행 디코더(RD2) 및 열 디코더(CD1)에 의해 선택된 라인의 하위 비트 영역에 저장할 수 있다.
도 12a 내지 도 12c에서, 중간 회로들(S1, S3) 및 입출력 회로들(S2, S4)의 내부 구성들이 서로 다른 것으로 도시되어 있다. 그러나, 이는 간결한 설명을 위한 것으로, 중간 회로들(S1, S3) 및 입출력 회로들(S2, S4)은 도 12a 내지 도 12c에 도시된 기능들을 모두 지원하고, 상황에 따라 기능을 선택하여 수행하도록 구성될 수 있다.
본 발명의 실시 예들은 도 12a 내지 도 12c를 참조하여 설명된 과정들에 따라 수행될 수 있다. 예를 들어, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에 데이터가 저장될 때, 도 12a를 참조하여 설명된 과정에 따라 데이터가 읽어지고, 읽어진 데이터가 저장될 데이터와 비교될 수 있다. 비교 결과에 따라, 도 12b를 참조하여 설명된 과정에 따라, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에서 선택적으로 갱신이 수행될 수 있다.
메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에서, 메인 메모리(120)로의 후기입이 수행된 후 페치가 수행될 수 있다. 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에 저장된 데이터는 도 12a를 참조하여 설명된 과정에 따라 읽어지고, 메인 메모리(120)로 후기입될 수 있다. 이후에, 후기입된 데이터와 연관된 유효성 데이터가 무효를 가리키도록 갱신될 수 있다. 페치된 데이터는 도 12b를 참조하여 설명된 과정에 따라, 무효 데이터를 저장하는 라인에 저장될 수 있다.
메인 캐시 메모리(113) 및 서브 캐시 메모리(115)에서, 하위 비트 데이터의 후기입(또는 플러시)이 수행된 후 저장이 수행될 수 있다. 후기입(또는 플러시)은 이는 도 12c를 참조하여 설명된 과정에 따라 수행될 수 있다. 이후에, 도 12b를 참조하여 설명된 과정에 따라 저장이 수행될 수 있다.
도 13은 본 발명의 다른 실시 예에 따른 어플리케이션 프로세서(1000), 그리고 어플리케이션 프로세서(1000)와 통신하는 외부 메모리(2000) 및 외부 칩(3000)을 보여주는 블록도이다. 도 13을 참조하면, 어플리케이션 프로세서(1000)는 파워 오프 도메인 블록(1100) 및 파워 온 도메인 블록(1300)을 포함한다.
파워 오프 도메인 블록(1100)은 어플리케이션 프로세서(1000)의 저전력(Low-power)을 구현하기 위하여 파워-다운(Powerdown)되는 블록이다. 파워 온 도메인 블록(1300)은 파워 오프 도메인 블록(1100)이 파워-다운 상태인 동안 파워 오프 도메인 블록(1100)의 기능을 일부 동작하기 위하여 파워-온(Power-on)되는 블록이다.
파워 오프 도메인 블록(1100)은 코어(1110), 인터럽트 컨트롤러(1130), 메모리 컨트롤러(1120), 제 1 내지 제 n IP (1141~114n, Intellectual Property) 및 시스템 버스(1150)를 포함한다.
코어(1110)는 메모리 컨트롤러(1120)를 제어하여 외부 메모리(2000)를 억세스한다. 메모리 컨트롤러(1120)는 코어(1110)의 제어에 응답하여 외부 메모리(2000)에 저장된 데이터를 시스템 버스(1150)에 전송한다.
인터럽트 컨트롤러(1130)는 제 1 내지 제 n IP (1141~114n) 각각에게 인터럽트(즉, 특정 이벤트)가 발생하였을 경우, 이를 코어(1110)에 알린다. 제 1 내지 제 n IP (1141~114n)는 어플리케이션 프로세서(1000)의 기능(function)에 따라 구체적인 동작들을 수행한다. 제 1 내지 제 n IP (1141~114n)는 각각의 고유한 내부 메모리들(1361~136n)을 액세스한다. 파워 온 도메인 블록(1300)은 제 1 내지 제 n IP (1141~114n) 각각의 고유한 내부 메모리들(1361~136n)을 포함한다.
파워 온 도메인 블록(1300)은 저전력 관리모듈(1310), 웨이크업 IP (1320, Wake-up IP), 킵얼라이브 IP (1330, Keep Alive IP) 및 제 1 내지 제 n IP (1141~114n)의 내부 메모리들(1361~136n)을 포함한다.
저전력 관리모듈(1310)은 웨이크업 IP (1320)로부터 전송된 데이터에 따라 파워-오프 도메인 블록(1100)을 웨이크업(Wake-up)할 지를 결정한다. 외부의 입력을 기다리는 대기 상태인 동안 오프되는 파워-오프 도메인 블록(1100)의 전력은 오프될 수 있다. 웨이크업은 파워 오프된 어플리케이션 프로세서(1000)에 외부로부터 데이터가 입력되는 경우 전력을 다시 인가하는 동작이다. 즉, 웨이크업은 대기 상태인 어플리케이션 프로세서(1000)을 다시 동작 상태(즉, 파워-온 상태)로 만드는 동작이다.
웨이크업 IP (1320)는 파이(1330, PHY) 및 링크(1340, LINK)를 포함한다. 웨이크업 IP (1320)는 저전력 관리모듈(1310)과 외부 칩(3000) 사이에 인터페이스 역할을 수행한다. 파이(1330)는 외부 칩(3000)과 실제로 데이터를 주고 받고, 링크(1340)는 파이(1330)에서 실제로 주고 받은 데이터를 미리 설정된 프로토콜에 따라 저전력 관리모듈(1310)과 송수신한다.
킵얼라이브 IP (1350)는 웨이크업 IP (1320)의 웨이크업 동작을 판별하여 파워-오프 도메인 블록(1100)의 전력을 활성화하거나 바활성화한다.
저전력 관리 모듈(1310)은 제 1 내지 제 n IP (1141~114n) 중 적어도 하나의 IP로부터 데이터를 수신한다. 데이터가 가공(Processing)되지 않고 단순히 전달만 되는 경우, 저전력 관리 모듈(1310)은 코어(1110)를 대신하여, 수신된 데이터를 해당 IP의 내부 메모리에 저장한다.
제 1 내지 제 n IP (1141~114n)의 내부 메모리들(1361~136n)는 파워-온 모드에서는 각각의 해당 IP들에 의하여 액세스되고, 파워-오프 모드에서는 저전력 관리 모듈(1310)에 의하여 액세스된다.
예시적으로, 본 발명의 실시 예들에 따른 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 파워 오프 도메인 블록(1100)에 제공될 수 있다. 예를 들어, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 코어(1110)의 내부에 포함되거나, 시스템 버스(1150)를 통해 코어(1110)와 통신하도록 제공될 수 있다. 예를 들어, 메인 캐시 메모리(113) 및 서브 캐시 메모리(115)는 파워 온 도메인 블록(1300)에 제공될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 자명하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100; 컴퓨팅 시스템
110; 어플리케이션 프로세서 120; 메인 메모리
130; 저장 장치 140; 모뎀
150; 사용자 인터페이스
111; 캐시 메모리 113; 메인 캐시 메모리
115; 서브 캐시 메모리
AB; 어드레스 디코더 LBAB; 하위 비트 어드레스 디코더
TA; 태그 어레이 LBTA; 하위 비트 태그 어레이
DA1~DAk; 데이터 어레이
LBDA1~LBDAp; 하위 비트 데이터 어레이
RD1~RD4; 행 디코더들 CD1, CD2; 열 디코더들
RW1, RW2_1~RW2_k, RW3, RW4_1~RW4_p; 읽기 및 쓰기 회로들
S1, S3; 중간 회로들 S2, S4; 입출력 회로들
IBS1, IBS2; 무효 블록 선택기 VS; 희생 데이터 선택기
DB; 데이터 버퍼
110; 어플리케이션 프로세서 120; 메인 메모리
130; 저장 장치 140; 모뎀
150; 사용자 인터페이스
111; 캐시 메모리 113; 메인 캐시 메모리
115; 서브 캐시 메모리
AB; 어드레스 디코더 LBAB; 하위 비트 어드레스 디코더
TA; 태그 어레이 LBTA; 하위 비트 태그 어레이
DA1~DAk; 데이터 어레이
LBDA1~LBDAp; 하위 비트 데이터 어레이
RD1~RD4; 행 디코더들 CD1, CD2; 열 디코더들
RW1, RW2_1~RW2_k, RW3, RW4_1~RW4_p; 읽기 및 쓰기 회로들
S1, S3; 중간 회로들 S2, S4; 입출력 회로들
IBS1, IBS2; 무효 블록 선택기 VS; 희생 데이터 선택기
DB; 데이터 버퍼
Claims (19)
- 불휘발성 랜덤 액세스 메모리를 포함하고, 하위 비트(LSB, Less Significant Bit) 데이터 및 상위 비트(MSB, More Significant Bit) 데이터를 포함하는 데이터 라인의 단위로 외부 장치와 데이터를 교환하는 메인 캐시 메모리; 그리고
랜덤 액세스 메모리를 포함하고, 상기 메인 캐시 메모리에 저장되는 데이터 중 적어도 일부 데이터의 하위 비트(LSB) 데이터를 저장하도록 구성되는 서브 캐시 메모리를 포함하고,
상기 메인 캐시 메모리 및 서브 캐시 메모리는 단일 레벨의 캐시 메모리를 형성하는 캐시 메모리. - 제 1 항에 있어서,
상기 메인 캐시 메모리 및 서브 캐시 메모리 각각은 복수의 라인들을 포함하고,
상기 서브 캐시 메모리에 무효 라인이 존재하고 상기 외부 장치로부터 새로운 데이터가 전달될 때, 상기 전달되는 데이터 중 상위 비트 데이터는 상기 메인 캐시 메모리의 선택된 무효 라인의 상위 비트 영역에 저장되고, 하위 비트 데이터는 상기 서브 캐시 메모리의 무효 라인에 저장되는 캐시 메모리. - 제 1 항에 있어서,
상기 메인 캐시 메모리 및 서브 캐시 메모리 각각은 복수의 라인들을 포함하고,
상기 서브 캐시 메모리에 무효 라인이 존재하지 않고 상기 외부 장치로부터 새로운 데이터가 전달될 때, 상기 서브 캐시 메모리의 선택된 라인에 저장된 하위 비트 데이터는 상기 메인 캐시 메모리의 대응하는 라인의 하위 비트 영역으로 후기입(write back)되고, 상기 전달되는 데이터 중 상위 비트 데이터는 상기 메인 캐시 메모리의 선택된 무효 라인의 상위 비트 영역에 저장되고, 하위 비트 데이터는 상기 후기입을 통해 무효화된 상기 서브 캐시 메모리의 라인에 저장되는 캐시 메모리. - 제 1 항에 있어서,
상기 외부 장치로부터 갱신 데이터가 전달되고, 상기 갱신 데이터와 원본 데이터의 차이가 하위 비트 데이터에 존재하고, 상기 원본 데이터의 하위 비트 데이터가 상기 서브 캐시 메모리에 저장되어 있을 때, 상기 서브 캐시 메모리에 저장된 상기 원본 데이터의 하위 비트 데이터가 갱신되는 캐시 메모리. - 제 1 항에 있어서,
상기 외부 장치로부터 갱신 데이터가 전달되고, 상기 갱신 데이터와 원본 데이터의 차이가 하위 비트 데이터에 존재하고, 상기 원본 데이터의 하위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있을 때, 상기 메인 캐시 메모리에 저장된 상기 원본 데이터의 하위 비트 데이터가 갱신되는 캐시 메모리. - 제 1 항에 있어서,
선택된 데이터의 상위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있고, 하위 비트 데이터가 상기 서브 캐시 메모리에 저장되어 있고, 상기 선택된 데이터가 상기 외부 장치에 의해 읽어질 때, 상기 메인 캐시 메모리에 저장된 상위 비트 데이터 및 상기 서브 캐시 메모리에 저장된 하위 비트 데이터가 읽어지는 캐시 메모리. - 제 1 항에 있어서,
선택된 데이터의 상위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있고, 하위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있고, 상기 선택된 데이터가 상기 외부 장치에 의해 읽어질 때, 상기 메인 캐시 메모리에 저장된 상위 비트 데이터 및 하위 비트 데이터가 읽어지는 캐시 메모리. - 제 1 항에 있어서,
상기 메인 캐시 메모리는 자기 랜덤 액세스 메모리(MRAM, Magnetic Random Access Memory)를 포함하는 캐시 메모리. - 제 1 항에 있어서,
상기 서브 캐시 메모리는 정적 랜덤 액세스 메모리(SRAM, Static Random Access Memory)를 포함하는 캐시 메모리. - 제 1 항에 있어서,
상기 서브 캐시 메모리는 상기 메인 캐시 메모리보다 적은 양의 쓰기 전류를 소모하는 캐시 메모리. - 제 1 항에 있어서,
상기 서브 캐시 메모리는 상기 메인 캐시 메모리의 하위 비트 데이터를 저장하는 세트 결합 캐시 메모리인 캐시 메모리. - 제 1 항에 있어서,
상기 메인 캐시 메모리는,
상기 외부 장치로부터 수신되는 라인 인덱스 및 태그를 저장하도록 구성되는 어드레스 버퍼;
상위 비트 데이터 및 하위 비트 데이터를 저장하도록 구성되는 복수의 라인들을 포함하는 복수의 데이터 어레이;
상기 복수의 데이터 어레이에 저장된 데이터와 연관된 태그들을 저장하도록 구성되는 태그 어레이;
상기 태그 어레이를 액세스하고, 상기 어드레스 버퍼에 저장된 상기 라인 인덱스 및 태그에 기반하여 히트가 발생하는지 판별하도록 구성되는 중간 회로; 그리고
상기 판별 결과 및 상기 라인 인덱스에 따라 상기 복수의 데이터 어레이를 액세스하도록 구성되는 입출력 회로를 포함하는 캐시 메모리. - 제 12 항에 있어서,
상기 서브 캐시 메모리는,
상기 어드레스 버퍼로부터 상기 라인 인덱스를 수신하고, 상기 중간 회로로부터 히트가 발생한 것으로 판별된 상기 복수의 데이터 어레이의 위치에 대한 정보를 수신하고, 상기 수신된 라인 인덱스 및 정보에 기반하여 하위 비트 라인 인덱스 및 하위 비트 태그를 출력하도록 구성되는 하위 비트 어드레스 버퍼;
하위 비트 데이터를 저장하도록 구성되는 복수의 서브 라인들을 포함하는 복수의 하위 비트 데이터 어레이;
상기 복수의 하위 비트 데이터 어레이에 저장된 하위 비트 데이터와 연관된 하위 비트 태그들을 저장하도록 구성되는 하위 비트 태그 어레이;
상기 하위 비트 태그 어레이를 액세스하고, 상기 하위 비트 어드레스 버퍼로부터 출력되는 상기 하위 비트 라인 인덱스 및 하위 비트 태그에 기반하여 히트가 발생하는지 판별하도록 구성되는 제 2 중간 회로; 그리고
상기 제 2 중간 회로의 판별 결과 및 상기 하위 비트 라인 인덱스에 따라 상기 복수의 하위 비트 데이터 어레이를 액세스하도록 구성되는 제 2 입출력 회로를 포함하는 캐시 메모리. - 메인 캐시 메모리 및 서브 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법에 있어서:
상위 비트(MSB, More Significant Bit) 데이터 및 하위 비트(LSB, Less Significant Bit) 데이터를 페치하는 단계; 그리고
상기 페치된 상위 비트(MSB, More Significant Bit)를 상기 메인 캐시 메모리의 상위 비트 영역에서 관리하고, 상기 페치된 하위 비트(LSB, Less Significant Bit) 데이터를 상기 서브 캐시 메모리 및 상기 메인 캐시 메모리의 하위 비트 영역에서 관리하는 단계를 포함하고,
상기 상위 비트 데이터 및 하위 비트 데이터는 데이터의 전송 단위인 데이터 라인을 형성하는 데이터 관리 방법. - 제 14 항에 있어서,
상기 관리하는 단계는,
하위 비트 데이터 및 상위 비트 데이터를 수신하는 단계; 그리고
상기 서브 캐시 메모리에 무효 라인이 존재하면, 상기 수신된 상위 비트 데이터를 상기 메인 캐시 메모리에 저장하고 상기 수신된 하위 비트 데이터를 상기 서브 캐시 메모리의 무효 라인에 저장하고, 상기 서브 캐시 메모리에 무효 라인이 존재하지 않으면, 상기 서브 캐시 메모리에 저장된 하위 비트 데이터를 상기 메인 캐시 메모리로 후기입하고 상기 수신된 상위 비트 데이터를 상기 메인 캐시 메모리에 저장하고 상기 수신된 하위 비트 데이터를 상기 후기입을 통해 무효화된 상기 서브 캐시 메모리의 무효 라인에 저장하는 단계를 포함하는 데이터 관리 방법. - 제 14 항에 있어서,
상기 관리하는 단계는,
갱신을 위한 하위 비트 데이터 및 상위 비트 데이터를 수신하는 단계;
상기 수신된 데이터에 대응하는 데이터를 상기 메인 캐시 메모리 또는 서브 캐시 메모리로부터 읽는 단계;
상기 읽어진 데이터 및 수신된 데이터를 비교하는 단계;
상기 비교 결과에 따라, 상기 읽어진 데이터의 하위 비트 데이터가 상기 서브 캐시 메모리에 저장되어 있고, 상기 읽어진 데이터의 하위 비트 데이터와 상기 수신된 데이터의 하위 비트 데이터가 차이를 가지면, 상기 서브 캐시 메모리에 저장된 하위 비트 데이터를 갱신하는 단계;
상기 비교 결과에 따라, 상기 읽어진 데이터의 하위 비트 데이터가 상기 메인 캐시 메모리에 저장되어 있고, 상기 읽어진 데이터의 하위 비트 데이터와 상기 수신된 데이터의 하위 비트 데이터가 차이를 가지면, 상기 메인 캐시 메모리에 저장된 하위 비트 데이터를 갱신하는 단계; 그리고
상기 비교 결과에 따라, 상기 읽어진 데이터의 상위 비트 데이터와 상기 수신된 데이터의 하위 비트 데이터가 차이를 가지면, 상기 메인 캐시 메모리에 저장된 상위 비트 데이터를 갱신하는 단계를 포함하는 데이터 관리 방법. - 제 14 항에 있어서,
상기 관리하는 단계는,
데이터 요청을 수신하는 단계;
상기 데이터 요청에 의해 요청된 데이터를 상기 메인 캐시 메모리 및 서브 캐시 메모리로부터 선택하는 단계; 그리고
상기 선택된 데이터를 읽는 단계를 포함하는 데이터 관리 방법. - 제 14 항에 있어서,
상기 관리하는 단계는,
상기 메인 캐시 메모리의 태그(Tag)를 디코딩하는 단계;
상기 메인 캐시 메모리의 데이터를 액세스하는 단계;
상기 메인 캐시 메모리의 데이터를 액세스하는 동안 상기 서브 캐시 메모리의 태그를 디코딩하는 단계; 그리고
상기 서브 캐시 메모리의 데이터를 액세스하는 단계를 포함하는 데이터 관리 방법. - 제 14 항에 있어서,
상기 관리하는 단계는,
상기 메인 캐시 메모리의 태그(Tag)를 디코딩하는 단계;
상기 메인 캐시 메모리의 태그를 디코딩하는 동안, 상기 메인 캐시 메모리의 데이터를 액세스하는 단계;
상기 메인 캐시 메모리의 태그를 디코딩하는 동안, 상기 서브 캐시 메모리의 태그를 디코딩하는 단계; 그리고
상기 메인 캐시 메모리의 태그를 디코딩하는 동안, 상기 서브 캐시 메모리의 데이터를 액세스하는 단계를 포함하는 데이터 관리 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120133553A KR20140066392A (ko) | 2012-11-23 | 2012-11-23 | 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법 |
US14/086,188 US20140149669A1 (en) | 2012-11-23 | 2013-11-21 | Cache memory and methods for managing data of an application processor including the cache memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120133553A KR20140066392A (ko) | 2012-11-23 | 2012-11-23 | 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140066392A true KR20140066392A (ko) | 2014-06-02 |
Family
ID=50774344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120133553A KR20140066392A (ko) | 2012-11-23 | 2012-11-23 | 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20140149669A1 (ko) |
KR (1) | KR20140066392A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016080580A1 (ko) * | 2014-11-18 | 2016-05-26 | 엘지전자 주식회사 | 적어도 하나의 메모리를 포함하는 디바이스의 제어 방법 및 스마트 tv |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10810159B2 (en) * | 2014-10-14 | 2020-10-20 | Microsoft Technology Licensing, Llc. | Modular updating of visualizations |
US11513956B2 (en) * | 2021-04-01 | 2022-11-29 | EMC IP Holding Company LLC | Maintaining availability of a non-volatile cache |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2256735B (en) * | 1991-06-12 | 1995-06-21 | Intel Corp | Non-volatile disk cache |
JPH0916470A (ja) * | 1995-07-03 | 1997-01-17 | Mitsubishi Electric Corp | 半導体記憶装置 |
US6859861B1 (en) * | 1999-01-14 | 2005-02-22 | The United States Of America As Represented By The Secretary Of The Army | Space division within computer branch memories |
JPWO2006109421A1 (ja) * | 2005-04-08 | 2008-10-16 | 松下電器産業株式会社 | キャッシュメモリ |
US8095735B2 (en) * | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US9177607B2 (en) * | 2012-05-16 | 2015-11-03 | Seagate Technology Llc | Logging disk recovery operations in a non-volatile solid-state memory cache |
-
2012
- 2012-11-23 KR KR1020120133553A patent/KR20140066392A/ko not_active Application Discontinuation
-
2013
- 2013-11-21 US US14/086,188 patent/US20140149669A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016080580A1 (ko) * | 2014-11-18 | 2016-05-26 | 엘지전자 주식회사 | 적어도 하나의 메모리를 포함하는 디바이스의 제어 방법 및 스마트 tv |
US10671534B2 (en) | 2014-11-18 | 2020-06-02 | Lg Electronics Inc. | Method for controlling device including at least one memory, and smart TV |
Also Published As
Publication number | Publication date |
---|---|
US20140149669A1 (en) | 2014-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9384134B2 (en) | Persistent memory for processor main memory | |
US8954672B2 (en) | System and method for cache organization in row-based memories | |
KR20170138765A (ko) | 메모리 장치, 메모리 모듈 및 메모리 장치의 동작 방법 | |
US7380070B2 (en) | Organization of dirty bits for a write-back cache | |
US10013310B2 (en) | Cache memory device and operating method thereof | |
US9317448B2 (en) | Methods and apparatus related to data processors and caches incorporated in data processors | |
KR101845371B1 (ko) | 오프-다이 캐시 메모리의 태그들의 세트들을 캐시하기 위한 방법, 장치, 및 시스템 | |
US10185619B2 (en) | Handling of error prone cache line slots of memory side cache of multi-level system memory | |
US10120806B2 (en) | Multi-level system memory with near memory scrubbing based on predicted far memory idle time | |
US10108549B2 (en) | Method and apparatus for pre-fetching data in a system having a multi-level system memory | |
US9990293B2 (en) | Energy-efficient dynamic dram cache sizing via selective refresh of a cache in a dram | |
US11755480B2 (en) | Data pattern based cache management | |
US20210056030A1 (en) | Multi-level system memory with near memory capable of storing compressed cache lines | |
US10180796B2 (en) | Memory system | |
US20180188797A1 (en) | Link power management scheme based on link's prior history | |
US6826656B2 (en) | Reducing power in a snooping cache based multiprocessor environment | |
KR20140066392A (ko) | 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법 | |
US7649764B2 (en) | Memory with shared write bit line(s) | |
US20170109060A1 (en) | Memory system | |
US20170109066A1 (en) | Memory system | |
US8473685B2 (en) | Cache memory device, processor, and control method for cache memory device to reduce power unnecessarily consumed by cache memory | |
US10915453B2 (en) | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures | |
US20170109071A1 (en) | Memory system | |
US20170109086A1 (en) | Memory system | |
US10180904B2 (en) | Cache memory and operation method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |