KR100974024B1 - 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시제어기 - Google Patents
내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시제어기 Download PDFInfo
- Publication number
- KR100974024B1 KR100974024B1 KR1020087002969A KR20087002969A KR100974024B1 KR 100974024 B1 KR100974024 B1 KR 100974024B1 KR 1020087002969 A KR1020087002969 A KR 1020087002969A KR 20087002969 A KR20087002969 A KR 20087002969A KR 100974024 B1 KR100974024 B1 KR 100974024B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- cache
- processing unit
- address
- access
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0857—Overlapped cache accessing, e.g. pipeline by multiple requestors
-
- 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
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- 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/25—Using a specific main memory architecture
- G06F2212/253—Centralized memory
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)
- Microcomputers (AREA)
Abstract
고속 입력 데이터를 처리할 수 있고, 내장된 DSP가 실시간 조건을 만족할 수 있는 캐시 메모리 시스템이 설명된다. 캐시 메모리 시스템은 프로세서 코어에 인접하게 위치된 캐시 메모리, 다음으로 높은 메모리 레벨에 있는 온-칩 메모리, 및 최상의 메모리 레벨에 있는 외부의 주 메모리를 포함한다. 캐시 제어기는 캐시 메모리와 온-칩 메모리 사이의 명령 및 데이터의 페이징을 처리한다. 직접 메모리 교환(DME) 제어기는 온-칩 메모리와 외부 메모리 사이의 사용자 제어된 페이징을 처리한다. 명령 및 데이터가 실질적으로 필오로되는 시점에 앞서 프로세서 코어에 의해 요구되는 상기 명령 및 데이터가 온칩 메모리에 존재하도록 사용자/프로그래머는 제어할 수 있다..
Description
본 발명은 통상적으로 전자 장치에 관한 것이며, 특히 내장형 디지털 신호 처리기(DSP)용 캐시 메모리 시스템 및 캐시 제어기에 관한 것이다.
DSP는 수학적 계산을 매우 신속하게 처리하기 위해 고안된 특정한 마이크로프로세서이다. DSP는 셀룰러 폰, 개인용 디지털 보조기(PDA) 등과 같은 다양한 소비재 전자 장치에 광범위하게 사용된다. 예를 들어, 셀룰러 폰은 통상적으로 무선 통신을 위한 신호 프로세싱을 실행하기 위해 주문형 집적 회로(ASIC)를 포함하며, 이러한 ASIC는 범용 사용을 위한 내장형 마이크로프로세서 및 계산 강화 태스크를 실행하기 위한 내장된 DSP를 포함할 수 있다.
마이크로프로세서 및 DSP는 명령 및 데이터를 유지하기 위한 메모리를 사용하며, 따라서 이들의 성능은 메모리 시스템의 특성에 매우 의존적이다. 마이크로프로세서 및 DSP가 증가하는 프로세싱 요구에 충족하기 위해 클록 속도를 상향 스케일함에 따라, (1)메모리 액세스가 병목되지 않고, (2)메모리 속도가 프로세서 클록 속도를 제한하지 않도록 캐시 메모리 시스템을 이용하는 것이 필수적이다. 캐 시 메모리 시스템은 통상적으로 외부의 메인 메모리 및 하나 이상의 캐시 메모리를 포함한다. 캐시 메모리는 이러한 프로세서에 의해 사용되는 명령 및 데이터를 저장하기 위해 칩상에 장착되고 프로세서에 인접한 소형 고속의 메모리이다. 고속 캐시 메모리는, 프로세서가 입력 데이터를 검색하고 결과를 더 신속히 저장하므로, 프로세싱 속도를 향상시킨다. 주 메모리는 칩 외부에 위치되고 캐시 메모리용 명령 및 데이터를 저장하는 크고 저속의 메모리이다.
캐시 메모리 시스템의 사용은 내장형 DSP에 대해 몇몇 문제를 유발할 수 있다. 우선, 고속 입력 데이터의 수신은 데이터가 캐시 메모리에 저장될지 아니면 외부 메모리에 저장될지를 결정하기 위해 필요한 오버헤드로 인해 복잡하게 된다. 둘째로, 특정 시간 기한 내에서 태스크의 실시간 프로세싱을 완료하는 것을 보장하는 것이 어려울 수도 있다. 이러한 어려움은 DSP에 의해 요구되는 명령 및/또는 데이터가 캐시 메모리에 있지 않은 경우 초래될 수도 있으며, 이 경우, DSP는 외부 메모리로부터 폐치될(fetch) 명령/데이터를 대기할 필요가 있다. 이러한 두 문제는 하나 이상의 다른 프로세서가 DSP와 외부 메모리를 공유할 때 악화되며, DSP는 외부 메모리에 대한 즉각적인 액세스가 보장되지 않는다.
따라서, 내장형 DSP와 관련하여 상기 설명된 문제를 해결할 수 있는 캐시 메모리 시스템이 요구된다.
고속 입력 데이터를 처리할 수 있고, 내장된 DSP가 실시간 조건을 충족시킬 수 있는 캐시 메모리 시스템이 설명된다. 일 실시예에서, 캐시 메모리 시스템은 프로세서 코어에 인접하게 위치된 캐시 메모리, 다음으로 높은 메모리 레벨에 있는 온-칩 메모리, 및 최상의 메모리 레벨에 있는 외부의 주 메모리를 포함한다. 캐시 제어기는 캐시 미스(miss)에 직면할 때마다, 캐시 메모리와 온-칩 메모리 사이의 명령 및 데이터의 페이징(paging)을 처리한다. 직접 메모리 교환(DME) 제어기는 온-칩 메모리와 외부 메모리 사이의 사용자 제어된 페이징을 처리한다. 사용자/프로그래머는 프로세서 코어에 의해 요구되는 명령 및 데이터가 이러한 명령 및 데이터가 프로세서 코어에 의해 실제로 요구되는 시점에 앞서 온-칩 메모리에 존재하도록 조정한다. 이는 DSP가 외부 메모리에 대한 즉각적인 액세스를 보장하지 않더라도, DSP가 실시간 제한을 충족시킬 수 있음을 보장한다.
캐시 메모리 시스템에서 상이한 두 레벨의 두 메모리에 두 개의 프로세싱 유닛(예를 들어, 프로세서 코어 및 직접 메모리 액세스(DMA) 제어기)이 동시에 액세스하게 하는 캐시 제어기가 또한 개시된다. 일 실시예에서, 캐시 제어기는 두 세트의 입/출력(I/O) 포트, 두 개의 어드레스 체크 유닛, 및 공통 히트/미스(hit/miss) 로직 유닛을 갖는다. 각각의 어드레스 체크 유닛은 프로세싱 유닛에 의한 메모리 액세스를 위해 타겟 메모리 어드레스가 현재 캐시 메모리에 있는 지를 결정하기 위해 각각의 프로세싱 유닛에 대해 어드레스 체크를 실행한다. 히트/미스 로직 유닛은 어떤 프로세싱 유닛이 어떤 메모리에 액세스할지를 결정한다. 만 일, 소정의 애플리케이션의 경우 가능성이 큰 시나리오인, 두 프로세싱 유닛이 두 상이한 레벨의 두 메모리에 액세스하기를 요구하는 경우, 히트/미스 로직 유닛은 메모리 액세스를 동시에 처리할 수 있다. 이러한 성능은 프로세싱 유닛(예를 들어, DMA 제어기)이 메모리를 액세싱할 때마다 다른 프로세싱 유닛(예를 들어, 프로세서 코어)이 정지될 가능성을 현저히 감소시킬 수 있다.
일 특징에서, 집적 회로(IC)가 제공되는데, 이는 집적 회로에 대해 데이터 프로세싱을 실행하도록 동작가능한 프로세서 코어; 프로세서 코어에 대해 데이터를 저장하도록 동작하는 캐시 메모리; 및 캐시 메모리에 대해 데이터를 저장할 수 있는 온-칩 메모리를 포함하며, 상기 캐시 메모리는 캐시 미스에 대해 온-칩 메모리로부터의 데이터로 채워지며, 상기 온-칩 메모리는 사용자의 제어하에서 외부 메모리로부터의 데이터로 채워진다.
다른 특징에서, IC가 제공되는데, 이는 집적 회로를 위한 범용 프로세싱을 실행할 수 있는 제1 프로세서; 집적 회로에 대한 데이터 프로세싱을 실행할 수 있고 데이터 프로세싱을 실행할 수 있는 프로세서 코어를 포함하는 제2 프로세서; 및 프로세서 코어에 대해 데이터를 저장할 수 있는 제1 캐시 메모리; 제1 캐시 메모리에 대해 데이터를 저장할 수 있는 온-칩 메모리; 및 제1 및 제2 프로세서를 외부 메모리에 결합시키는 제1 메모리 버스를 포함하며, 상기 제1 캐시 메모리는 캐시 미스에 대해 온-칩 메모리로부터의 데이터로 채워지며, 상기 온-칩 메모리는 사용자에 제어하에서 외부 메모리로부터의 데이터로 채워진다.
다른 특징에서, 캐시되 메모리 시스템의 2개의 상이한 레벨들에서 캐시 메모 리 및 제2 메모리에 대한 메모리 트랜잭션들을 처리하도록 동작하는 캐시 제어기를 포함하는 IC가 제공되며, 상기 캐시 제어기는 제1 처리 유닛에 연결되어 제1 처리 유닛에 의해 제1 메모리 액세스에 대한 제1 메모리 어드레스가 현재 캐시 메모리에 존재하는지 여부를 결정하도록 동작하는 제1 어드레스 검사 유닛, 제2 처리 유닛에 연결되어 제2 처리 유닛에 의한 제2 메모리 액세스에 대한 제2 메모리 어드레스가 캐쉬 메모리에 현재 존재하는지 여부를 결정하도록 동작하는 제2 어드레스 검사 유닛, 및 상기 제1 및 제2 어드레스 검사 유닛들에 연결되어 상기 제1 및 제2 처리 유닛들에 의한 상기 제1 및 제2 메모리 액세스들에 대한 메모리 트랜잭션들을 처리하도록 동작하는 논리 유닛을 포함한다.
다른 특징에서, 캐시 메모리 시스템에 대한 메모리 트랜잭션을 처리하기 위한 방법이 제공되는데, 제1 프로세싱 유닛에 의해 제1 메모리 액세스에 대한 제1 메모리 어드레스가 캐시 메모리에 현재 위치하는지를 결정하는 단계; 제2 프로세싱 유닛에 의해 제2 메모리 액세스에 대한 제2 메모리 어드레스가 캐시 메모리에 현재 위치하는지를 결정하는 단계; 및 만일 제1 프로세싱 유닛이 캐시 히트이고 제1 프로세싱 유닛이 캐시 미스인 경우, 제1 및 제2 프로세싱 유닛이 각각 캐시 메모리 및 제2 메모리를 동시에 액세스하게 하는 단계를 포함하며, 캐시 메모리 및 제2 메모리는 캐시 메모리 시스템의 상이한 두 레벨에 있는 메모리이다.
본 발명의 특징은 첨부된 도면을 참조하여 이하에서 더욱 명확하게 설명된다.
"예"라는 용어는 "실례, 예증 또는 설명"으로 사용된다. "예"로서 설명된 소정의 실시예 또는 고안은 다른 실시예 또는 고안에 비해 바람직하거나 유리한 것으로 제한되지 않는다. 사용된 바와 같이, "오프-칩" 및 "외부"는 집적 회로(IC) 외부에 위치된 유닛을 의미하며, "온-칩"은 IC 내부에 위치한 유닛을 의미한다. IC는 IC 패키지 내에 캡슐화된 하나 이상의 IC 다이를 포함하며, IC 다이 상에 제조된 모든 유닛은 온-칩으로 간주된다. 사용된 바와 같이, "데이터"는 프로세서용 입력 데이터(예를 들어, 피연산자)를 의미할 수 있으며, 일반적으로 용어가 사용되는 문맥에 따라 소정 타입의 데이터를 의미할 수 있다.
도1은 기존의 2레벨 캐싱된 메모리 시스템(100)의 블록도를 도시한다. 메모리 시스템(100)에서, 레벨1 캐시 메모리(140)는 가장 고속이지만 또한 가장 작은 메모리이며, 프로세서 코어(130)에 가장 근접하게 위치된다. 레벨2 캐시 메모리(150)는 조금 더 크지만 저속 메모리이다. 주 메모리(160)는 가장 크지만 가장 저속인 메모리이며 통상적으로 칩 외부에 위치된다. 메모리(140 내지 160)는 통상적으로 랜덤 액세스 메모리(RAM)이며 동일한 또는 상이한 메모리 기술로 제조될 수 있다. 통상적으로, 캐시 메모리 시스템은 소정 수의 메모리 레벨을 포함할 수 있다. 메모리를 계층적으로 상향시키면, 메모리 속도는 감소되지만 메모리 크기는 증가한다.
캐시 제어기(142 또는 152)는 정확한 데이터가 프로세서 코어(130)에 의해 언제나 액세스되는 것을 보장하기 위해 캐싱된 메모리 시스템(100)에 대한 모든 메 모리 트랜잭션을 처리한다. 캐시 제어기(142 또는 152)는 또한 캐시 메모리 시스템의 상이한 레벨의 메모리들 사이의 명령/데이터의 검색 및 저장을 처리한다. 레벨1 캐시 제어기(142)는 레벨2 캐시 메모리(150)로부터의 명령/데이터로 레벨1 캐시 메모리(140)를 채우는 역할을 수행한다. 캐시 메모리(140)는 통상적으로 "캐시 미스"가 있을 때마다 하나 이상의 캐시 라인으로 채워지며, '캐시 미스'는 프로세서 코어(130)에 의해 요구된 명령/데이터가 캐시 메모리(140)에 존재하지 않는다는 것을 의미한다. 캐시 메모리는 메모리 셀의 2차원 어레이로서 뷰잉될 수 있다. 캐시 라인은 캐시 메모리의 하나의 데이터 라인이며 캐시 메모리 어레이의 폭에 대응하는 치수를 갖는다. 캐시 라인은 또한 블록으로도 언급된다. 레벨2 캐시 제어기(152)는 주 메모리(160)로부터 레벨2 캐시 메모리(150)에 대한 명령/데이터를 페이징하는 역할을 수행한다. 캐시 메모리(150)는 통상적으로 프로세서 코어(130)에 의해 요구된 명령/데이터가 캐시 메모리(140 또는 150)에 존재하지 않을 때마다 다수의 명령/데이터들로 페이징된다.
통상적으로, "채움" 및 "페이징"은 캐시 메모리 시스템에서 상이한 두 레벨의 메모리들 사이의 명령/데이터의 검색 및 저장을 의미하는 동의어이다. 캐시 제어기들(142,152)은 상이한 레벨의 메모리들 사이에서 "캐시 코히어런스(coherence)"(또는 데이터 무결성)을 유지하는 방식으로 페이징을 실행한다. 캐시 코히어런스는 어떠한 데이터도 손실되지 않도록 메모리들의 상이한 레벨들의 동기화를 의미한다. 예를 들어, 프로세서 코어(130)가 새로운 값을 캐시 메모리(140)에 기록하고 캐시 메모리(140)의 새로운 값을 포함하는 캐시 라인이 캐시 채움에 의해 대체될 때 이러한 값이 주 메모리(160)에 복사되지 않으면 데이터 손실이 발생할 수 있다.
도2는 다수의 내장형 프로세서들 및 단일 레벨의 캐싱된 메모리 시스템을 갖는 ASIC2000을 나타낸다. ASIC2000은 마이크로프로세서(210), DSP(220), 및 ASIC2000외부에 위치된 외부 주 메모리(260)에 결합하는 공유 메모리 버스(258)를 포함한다. 마이크로프로세서(210)는 "하버드(harvard)" 구조를 구현하는데, 이는 명령 및 데이터를 저장하기 위해 각각 명령 캐시(214a) 및 데이터 캐시(214b)를 이용한다. 명령 캐시 제어기(212a) 및 데이터 캐시 제어기(212b)는 각각 외부 메모리(260)와 캐시 메모리(214a 및 214b)와 주고 받는 명령 및 데이터를 페이징하는 역할을 수행한다.
유사하게, DSP(220)는 각각 명령 및 데이터를 저장하기 위해 개별 명령 캐시(240a) 및 데이터 캐시(240b)를 포함한다. 명령 캐시 제어기(242a) 및 데이터 캐시 제어기(242b)는 각각 캐시 메모리(240a 및 240b)에 대한 명령 및 데이터를 페이징할 책임이 있다. 프로그램 시퀀서(228)는 명령 캐시(240a)로부터의 명령을 수신하고 DSP 코어(230)의 동작을 조종한다. DSP 코어(230)는 DSP(220)를 위한 수학적 계산 및 다른 프로세싱을 실행하는 다양한 프로세싱 유닛(예를 들어, 곱셈-누적 유닛, 산술 로직 유닛 등)을 포함한다. 프로그램 시퀀서(228)는 또한 명령 캐시 제어기(242a)가 인입 명령이 명령 캐시(240a)에 있는지 또는 외부 메모리(260)로부터 검색될 필요가 있는지 여부를 체크하도록 인입 명령을 식별하고 이러한 명령을 되돌려 전송한다.
DSP(220)가 명령 또는 데이터에 대한 메모리 액세스를 실행하면, 적절한 캐시 제어기는 요구되는 명령이 캐시에 있는지를 알아보기 위해 체크한다. 대답이 '예'이면, "캐시 히트"가 발생하고, DSP(220)는 캐시에 저장된 명령/데이터를 이용하고 프로세싱을 계속한다. 그렇지 않고, 만일 대답이 '아니오'이면, "캐시 미스"가 발생하고, DSP(220)는 캐시 제어기가 외부 메모리(260)로부터 원하는 명령 또는 데이터를 포함하는 캐시 라인을 패치(fetch)하는 동안 멈춰진다. "캐시 채움"이 완료되면, DSP(220)는 프로세싱을 다시 시작한다. 마이크로프로세서(210) 및 DSP(220)의 경우, 캐시 제어기들은 자신의 캐시 메모리들과 외부 메모리(260) 사이의 캐시 코히어런스를 유지한다.
이러한 프로세서의 성능을 개선하기 위해, 도2에 도시된 바와 같이, 마이크로프로세서(210) 및 DSP(220)에 대한 개별 캐시 메모리를 갖는 것이 바람직하다. 그러나, 비용 제한 및 IC 핀 제한으로 인해, 내장형 마이크로프로세서 및 DSP는 도2에 도시된 바와 같이, 통상적으로 동일한 메모리 버스(258) 및 외부 메모리(260)를 공유한다. 이는 마이크로프로세서(210) 및 DSP(220)가 외부 메모리(260)에 대한 액세스를 경쟁하게 한다.
도2에 도시된 바와 같은 캐싱된 메모리 시스템을 갖는 프로세서는 무선 통신(예를 들어, 셀룰러 폰)과 같은 많은 현대의 애플리케이션의 프로세싱 속도 요구를 충족할 필요가 있다. 그러나 캐싱된 메모리 시스템은 이하에 설명되듯이, 특정한 시간 기한 내에서 (1)고속 입력 데이터의 수신 및 (2)실시간 프로세싱 태스크의 완료와 같은 내장된 DSP에 대한 문제를 발생시킬 수 있다. 이러한 문제는 하나 이 상의 다른 프로세서가 DSP와 동일한 메모리 시스템을 공유함으로써 레이턴시(즉, 지연) 및 대역폭 요구가 DSP에 대해 보장될 수 없는 경우에 첨예하다.
셀룰러 폰 애플리케이션에 대한 내장된 DSP는 종종 DMA 데이터 스트림을 수신 및/또는 송신하기 위해 직접 메모리 액세스(DMA)를 이용한다. DMA 데이터는 통상적으로 DSP와 DSP외부의 다른 프로세싱 유닛 사이의 통상적인 실시간 고속 데이터이다. 그러나 DMA는 명령 또는 다른 타입의 데이터일 수 있다. 다수의 DMA 채널들은 다수의 데이터 스트림들이 동시에 DSP에 의해 프로세싱되도록 병렬로 동작될 수 있다. 캐시 메모리 시스템은 DMA 채널을 통해 고속 DMA 데이터 스트림의 수신을 완료한다. DSP가 DMA 채널을 통해 인입 DMA 데이터를 수신함에 따라, 데이터 캐시 제어기는 DMA 데이터를 저장하기 위해 사용되는 버퍼가 현재 데이터 캐시에 상주하는 지를 결정할 필요가 있다. 만일 상주한다면, DSP는 인입 DMA 데이터를 데이터 캐시에 기록하고 진행을 계속한다. 그러나 만일 버퍼가 현재 데이터 캐시에 있지 않다면, DSP는 인입 DMA 데이터를 저장하기 위한 두 옵션을 갖는다. 첫 번째 옵션의 경우, 데이터 캐시 제어기는 외부 메모리로부터의 버퍼를 데이터 캐시로 가져가기 위해 캐시 라인 채움을 실행하고, DSP는 이어 인입 DMA 데이터를 데이터 캐시에 기록할 수 있다. 두 번째 옵션의 경우, DSP는 인입 DMA 데이터를 외부 메모리의 버퍼로 직접 기록할 수 있다.
통상적으로, DSP는 DMA 데이터가 DMA 채널을 통해 수신될 때마다 멈춰진다. 더욱이 전술된 두 옵션은 DSP가 공유 메모리 버스를 통해 외부 메모리에 액세스하고 새로운 DMA 데이터가 도달하기 전에 데이터 기록을 완료하는 것에 의존한다. 만일 DSP가 메모리 버스를 하나 이상의 다른 프로세서와 공유하면, DSP는 통상적으로 다른 프로세서가 메모리 버스를 이용하고 있을 수도 있기 때문에 외부 메모리에 대한 즉각적인 액세스가 보장되지 않을 수도 있다. 만일 DSP가 제시간에 외부 메모리에 대한 액세스를 획득할 수 없다면, 인입 DMA 데이터는 손실되며, 이는 매우 바람직하지 않다.
캐시 메모리 시스템은 또한 DSP가 특정한 시간 제한 내에서 실시간 프로세싱 태스크의 완료를 보장하는 것을 어렵게 한다. 캐시 메모리는 통상적으로 "요구시 페이징(paging-on-demand)"을 이용하며, 이는 명령 및 데이터가 캐시 메모리에서 미싱된 것으로 확인될 때 외부 메모리로부터 패치됨을 의미한다. 만일 외부 메모리가 캐시 미스가 발생할 때 사용중이면, DSP는 외부 메모리가 자유롭게 되어 캐시 채움을 완료하기 위해 DSP에 의해 액세스될 수 있을 때까지 멈춰질 것이다. 따라서, DSP는 (1)자유롭게 될 외부 메모리에 대한 대기 및/또는 (2)캐시 미스에 대한 외부 메모리로부터의 캐시 채움을 실행하는 것과 관련된 오버헤드 및 지연으로 인해 실시간 입력 데이터에 대한 프로세싱을 실행/완료할 수 없을 수도 있다. 프리패치 기술이 다음 캐시 라인을 미리 꺼내어 캐시 미스의 가능성을 최소화하기 위해 사용될 수 있다. 그러나 이러한 기술은 종종 부분적으로만 유효한데, 이는 캐시 제어가 통상적으로 상당 정도 앞서까지 알 수 없기 때문이다.
도3은 고속 DMA 데이터를 처리하고 DSP가 실시간 제한을 충족할 수 있는 혁신적인 캐시 메모리 시스템(300)의 블록도이다. 메모리 시스템(300)은 (1)프로세서 코어(300)에 가장 근접하게 위치된 캐시 메모리(340), (2)캐시 메모리 위쪽에 이웃한 보다 높은 메모리 레벨인 온-칩 메모리(350), 및 (3)온-칩 메모리(350)를 위쪽에 이웃한 가장 높은 메모리 레벨인 외부 주 메모리(360)를 포함한다. 캐시 제어기(342)는 도1에 설명된 캐시 메모리 시스템과 유사하게, 캐시 미스에 대해 캐시 메모리(340)와 온-칩 메모리(350) 사이의 명령 및 데이터의 페이징을 처리한다. DME 제어기(352)는 온-칩 메모리(350)와 외부 메모리(360) 사이의 사용자 제어 페이징을 처리한다. 따라서, 인간 사용자/프로그래머는 DME 제어기(352)를 통해 외부 메모리(360)와 온-칩 메모리(350) 사이의 명령 및 데이터의 페이징을 처리한다.
캐시 메모리 시스템(300)은 캐시 메모리 시스템(100)과 비교하여 메모리 계층 구조에서 상이한 타입의 메모리 레벨을 이용한다. 이는 온-칩 메모리(350)가 기존의 레벨2 캐시 메모리와 상이하기 때문이다. 캐시 메모리 시스템(300)의 일 장점은 명령 및 데이터가 실제로 프로세서 코어에 의해 요구되는 시점에 앞서 프로세서 코어(330)에 의해 요구되는 명령 및 데이터가 온-칩 메모리(350)에 존재하도록 사용자/프로그래머가 조정(arrange)할 수 있다는 것이다. 통상의 레벨2 캐시 제어기는 명령 및 데이터가 프로세서 코어에 의해 요구되는 경우, 명령 및 데이터를 패치하기만 할 것이며, 프로세서 코어는 명령/데이터가 외부 메모리로부터 패치되는 동안 멈춰진다. 따라서, 캐시 메모리 시스템(300)은 DSP가 외부 메모리(360)에 대한 보장된 액세스 및 대역폭을 갖지 않을 경우에도 실시간 제한을 충족시킬 수 있는 것을 보장할 수 있다.
도3은 또한 캐시 메모리 시스템(300)내의 메모리로의 고속 DMA 데이터의 저 장을 도시한다. DMA 제어기(344)는 하나 이상의 DMA 채널을 통해 인입 데이터를 수신하며, 데이터용 버퍼의 현재 위치에 의존하여, 캐시 메모리(340) 또는 온-칩 메모리(350)에 데이터를 저장할 수 있다. 인입 데이터는 외부 메모리(360)에 저장될 필요가 없으며, 이는 사용중인 외부 메모리로 인한 데이터 손실을 방지한다. DMA 제어기(344)는 또한 캐시 코히어런스를 유지하기 위해 캐시 제어기와 함께 동작하지만, 이는 간략화를 위해 도3에 도시되지 않는다. 캐시 메모리 시스템(300)을 이용한 ASIC 설계의 예는 이하에서 설명된다.
도4는 다수의 내장형 프로세서들 및 도3에 도시된 캐시 메모리 시스템을 구비한 ASIC(400)를 도시한다. ASIC(400)는 마이크로프로세서(410), DSP(420), 온-칩 명령/데이터 메모리(450), 및 외부 주메모리(460)에 결합하는 공유 메모리 버스(458)를 포함한다. 마이크로프로세서(410)는 도2의 마이크로프로세서(210)에 대해 전술한 바와 같이, 자신의 캐시 메모리를 위해 하버드 구조를 구현할 수 있다.
도4에 도시된 실시예의 경우, DSP(420)는 명령을 저장하는 명령 캐시(440a) 및 DSP에 대한 데이터를 저장하는 N 개의 데이터 캐시(440b 내지 440x)를 포함한다. 통상적으로, N은 1 또는 그 이상의 정수(예를 들어, N=2 또는 3)일 수 있다. 명령 캐시 제어기(442a)는 온-칩 메모리(450)와 명령 캐시(440a) 사이에 주고 받는 명령을 페이징할 책임이 있으며, 데이터 캐시 제어기(442b)는 온-칩 메모리(450)와 데이터 캐시(440b 내지 440x) 사이에서 데이터를 페이징할 책임이 있다. DSP(420)는 또한 도2에 대해 전술한 바와 같이 동작하는 프로그램 시퀀서(428) 및 DSP 코 어(430)를 포함한다.
DSP(420)에 대한 캐시 메모리 시스템은 (1)레벨1 캐시 메모리용 명령 및 데이터 캐시(440), (2)이웃한 더 높은 레벨 메모리용 온-칩 메모리(450), 및 (3)최상 레벨 메모리용 외부 메모리(460)로 구성된다. (번호 "440"은 사용되는 문맥에 따라, 소정의 하나, 소정의 조합, 또는 모든 캐시(440a 내지 440x)를 나타낼 수 있다.) 캐시(440)는 온-칩 메모리(450)로부터의 명령/데이터로 채워지며, 온-칩 메모리(450)는 외부 메모리(460)로부터의 명령/데이터로 채워진다. 온-칩 메모리(450)는 RAM 또는 다른 타입의 메모리로서 구현될 수 있다. 온-칩 메모리는 또한 소정의 크기 및 치수를 가질 수 있다. 실시예에서, 온-칩 메모리(450)는 데이터 전달을 용이하게 하기 위해 레벨1 캐시(440)와 동일한 폭을 갖는다. 온-칩 메모리(450)는 내장형 메모리(즉, DSP(420)와 동일한 IC 다이상에 제조됨) 또는 적층형 메모리(즉, DSP(420)와 상이한 IC 다이상에 제조됨)로 구현될 수 있다. 온-칩 메모리(450)는 후술하는 바와 같이, 캐시(440)에 대한 명령 및 데이터를 저장하고, 사용자/프로그래머 제어하에 외부 메모리(460)와 명령 및 데이터를 교환하며, 고속 DMA 데이터를 저장한다.
DSP(420)는 명령 캐시 제어기(442a), 데이터 캐시 제어기(442b), 및 DMA 제어기(444)를 온-칩 메모리(450)에 결합시키는 내부 메모리 버스(448)를 추가로 포함한다. 메모리 버스(448)는 온-칩 메모리(450)와 캐시(440) 사이의 명령 및 데이터의 페이징을 용이하게 한다. 메모리 버스(448)는 DMA 제어기(444)로부터 온-칩 메모리(450)로의 DMA 데이터의 저장을 더욱 용이하게 한다. 메모리 버스(448)는 데이터 전달을 위한 높은 대역폭을 제공하고 온-칩 메모리(450)의 용이한 접근성을 보장하기 위해 고성능 버스로 설계될 수 있다. 실시예에서, 메모리 버스(448)는 캐시(440)에 대한 캐시 라인과 동일한 폭으로 구현된다. 그러나 다른 메모리 버스 폭이 사용될 수 있다. 버스 중재기(446)는 DMA와 캐시 제어기들 사이에서 메모리 버스(448)의 사용을 중재한다.
캐시 제어기(442a 및 442b)는 작은 오버헤드로 온-칩 메모리(450)로부터의 캐시(440)를 페이징할 수 있다. 예를 들어, 만일 온-칩 메모리(450), 메모리 버스(448), 및 캐시 제어기(442a 및 442b)를 위한 버스가 하나의 캐시 라인의 폭을 가지면, 명령 캐시(440a) 또는 소정의 하나의 데이터 캐시(440b 내지 440x)에 대한 캐시 라인 채움은 작게는 일 클록 사이클에서 수행될 수 있다. 따라서, 캐시 채움에 대한 레이턴시가 제한되고 공유 메모리 버스(458) 및 외부 메모리(460)에 대한 액세스 가능성에 의존하지 않는다.
DMA 제어기(444)는 캐시 제어기(442a 및 442b) 및 내부 메모리 버스(448)에 연결된다. DMA 제어기(444)는 ASIC(400) 외부 또는 내부의 다른 프로세싱 유닛으로부터 고속 DMA 데이터를 수신할 수 있는 L개의 DMA 채널들을 갖는다. 통상적으로, L은 1 또는 그 이상의 정수일 수 있다. DMA 제어기(444)는 캐시(440) 또는 온-칩 메모리(450) 중 하나로 DMA 채널을 통해 수신된 DMA 데이터의 저장을 처리한다. DMA 샘플(또는 DMA 샘플의 그룹)이 DMA 채널을 통해 수신될 때마다 DMA 제어기(444)는, 샘플이 명령 캐시(440a) 또는 데이터 캐시(440b 내지 440x) 중 하나에 저장되어야 하는지를 조사하고, DMA 샘플에 대한 메모리 어드레스를 결정하며, 어 드레스를 적절한 캐시 제어기에 제공한다. 각각의 캐시 제어기(442)는 자신의 제어 하에 캐시 메모리/메모리들에 현재 저장된 온-칩 메모리(450)의 모든 라인의 라인 어드레스를 저장하는 캐시 태그 RAM을 유지한다. 질의(query)된 캐시 제어기(442)는 자신의 캐시 태그 RAM을 체크하여 DMA 제어기(444)에 의해 액세스된 캐시 라인이 현재 캐시(440)에 있는지를 확인한다. 만일 대답이 '예'이면, DMA 제어기(444)는 DMA 샘플을 캐시 제어기(442)에 제공하고, 캐시 제어기(442)는 샘플(들)을 캐시(440)에 기록한다. 그렇지 않고, 만일 액세스된 캐시 라인이 캐시(440)에 있지 않으면, DMA 제어기(444)는 온-칩 메모리(450)의 저장을 위해 내부 메모리 버스(448)를 통해 DMA 샘플(들)을 제공한다.
온-칩 메모리(450)는 DMA 전달이 멈추지 않고 DMA 데이터가 손실되지 않는 것을 보장한다. 이는 DSP(420)가 언제나 DMA 데이터를 마이크로프로세서(410)와 공유된 외부 메모리(460)가 아닌 온-칩 RAM(450)으로 기록하기 때문이다. 온-칩 RAM(450)은 보장된 대역폭 및 제한된 레이턴시를 갖는다. 각각의 DMA 전달을 위한 캐시 태그 RAM을 체킹하는 프로세스는 캐시(440)와 온-칩 RAM(450) 사이의 캐시 코히어런스(coherency)를 보장한다.
DME 제어기(452)는 온-칩 메모리(450)와 외부 메모리(460) 사이의 명령 및 데이터의 페이징을 제어한다. 도4에 도시된 실시예의 경우, DME 제어기(452)는 공유된 메모리 버스(458) 및 DMA 제어기(444)의 하나의 DMA 채널에 결합한다. DME 제어기(452)는 온-칩 메모리(450)와 외부 메모리(460) 사이의 명령/데이터 블록들을 페이징하도록 사용자/프로그래머에 의해 프로그램될 수 있다. 각각의 DME 전달 은 DMA 제어기(444)를 통해 전달되는데, DMA 제어기(444)는 DME 전달을 위한 온-칩 메모리(450)와 캐시(440) 사이의 캐시 코히어런스를 보장하도록 캐시 태그 체킹 프로세스를 실행한다.
온-칩 메모리 및 DME 제어기(452)를 사용함으로써, DSP(420)는 캐시 채움에 대한 레이턴시가 제한되기 때문에 실시간 조건을 만족할 수 있다. 캐시 미스에 대해 요구되는 명령/데이터를 페이징하는 레벨2 캐시 제어기의 (자동) 제어에 따라 동작하는 기존의 레벨2 캐시 메모리와는 달리, DME 제어기(452)는 명령/데이터가 요구되는 시점에 앞서 외부 메모리(460)로부터의 명령/데이터의 블록을 온-칩 메모리(450)에 가져오도록 사용자/프로그래머에 의해 제어 및 스케줄링될 수 있다. 사용자/프로그래머가 선행(anticipatory) 캐시 제어기로서 동작하도록 함으로써 레벨1 캐시(440)가 온-칩 메모리(450)에서 필요한 명령 및 데이터를 언제나 찾을 수 있게 한다. 임의의 레벨1 캐시(440)의 캐시 채움에 대한 최악의 경우의 레이턴시는 온-칩 메모리(450)와 캐시(440) 사이의 전달에 의해 결정되며, 캐시 채움의 시간에서 공유 메모리 버스(458)와 외부 메모리(460)의 가용성에 의존하지 않는다. 온-칩 메모리(450)와 소정의 캐시(440) 사이의 전달은 전술한 바와 같이 매우 고속이다. 이러한 방식으로 최악의 경우의 레이턴시를 제한함으로써, 사용자/프로그래머는 DSP가 실시간 조건에 대처할 수 있음을 보장할 수 있다.
도4는 도3에 도시된 캐시 메모리 시스템의 특정한 구현을 나타낸다. 통상적으로, 이러한 캐시 메모리 시스템은 제어기 등의 다양한 타입 및 조합을 이용하여 명령/데이터에 대한 소정 수의 캐시 메모리와 함께, 다양한 방식으로 구현될 수 있 다. 더욱이, 메모리 및 제어기는 다양한 방식으로 결합될 수 있는데, 이는 도4에 도시된 것과 상이할 수 있다. 예를 들어, DME 제어기는 DMA 제어기 대신에 명령 및 데이터 캐시에 직접 결합할 수 있다.
도5는 캐시 제어기(442x)의 일 실시예를 도시하는데, 이는 도4의 명령 캐시 제어기(442a) 또는 데이터 캐시 제어기(442b)를 위해 사용될 수 있다. 이러한 실시예의 경우, 캐시 제어기(442x)는 멀티플렉서(510), 캐시 중재자(arbiter)(512) 및 제어 유닛(520)을 포함한다. 멀티플렉서(510)는 DSP 코어(430) 및 DMA 제어기(444)에 결합되며, 이러한 두 유닛에 대한 메모리 트랜잭션을 용이하게 한다. 캐시 중재자(512)는 DSP 코어(430) 및 DMA 제어기(444)로부터 메모리 액세스 요청을 수신하고, 캐시 제어기(442x)에 대한 액세스를 제어하며, DSP 코어(430) 또는 DMA 제어기(444)가 경합하는 경우 이들 중 누가 캐시 제어기(442x)로의 액세스를 획득할 수 있는 지를 결정한다. 간략화를 위해, 도3는 데이터 캐시(440b 내지 440x)에 직접 결합되어 있는 DSP 코어(430)를 도시한다. 실제로, DSP 코어(430)는 데이터 캐시 제어기(442b)를 통해 데이터 캐시(440)에 결합한다.
제어 유닛(520)은 정확한 데이터가 언제나 액세스 되는 것을 보장하기 위해 캐시 메모리(440)의 모든 메모리 액세스에 대한 어드레스 검사를 실행한다. 제어 유닛(520) 내에서, 캐시 태그 RAM(524)은 온-칩 메모리 내의 어떤 라인이 현재 캐시 메모리(440)에 저장되는 지를 계속 추적한다. 캐시 태그 RAM(524)은 캐시 메모리(440)의 캐시 라인 각각에 대한 태그를 포함하는 테이블을 저장한다. 각각의 캐시 라인에 대한 태그는 상기 캐시 라인에 대한 캐시 메모리(440)에 저장된 온-칩 메모리의 특정 라인을 나타낸다.
캐시 메모리의 크기는 통상적으로 온-칩 메모리의 크기에 비해 훨씬 작다. 결론적으로, 캐시 메모리의 각각의 라인으로 맵핑할 수 있는 온-칩 메모리에 많은 가능한 라인이 있다. 예로서, 온-칩 메모리는 크기가 256k 워드일 수 있으며, 캐시 메모리는 크기가 4k 워드 일 수 있다. 온-칩 메모리에 대한 전체 어드레스는 결국 18비트를 포함할 것이다. 만일 각각의 캐시 라인이 8 워드를 포함하면, 온-칩 메모리는 215라인을 포함할 것이며, 캐시 메모리는 29 또는 512 라인을 포함할 것이다. 캐시 메모리의 각각의 라인은 9비트 캐시 라인 어드레스에 의해 한정될 수 있다. 직접 맵핑된 캐시 구조의 경우, 온-칩 메모리의 각각의 라인은 캐시 메모리의 하나의 라인에만 맵핑될 수 있으며, 캐시 메모리의 각각의 라인은 캐시 라인에 대해 캐시 메모리에 현재 저장된 온-칩 메모리의 26 가능한 라인 중 특정한 하나를 한정하는 6비트 태그와 관련된다. M-방식 세트 관련 캐시 구조의 경우, 온-칩 메모리의 각각의 라인은 캐시 메모리의 M개의 가능한 라인들 중 소정의 하나에 맵핑될 수 있다.
도6은 액세스된 소정의 메모리 어드레스("타겟" 메모리 어드레스)가 현재 캐시 메모리(440)에 있는 지를 결정하기 위해 캐시 제어기(442x)에 의해 실행된 어드레스 체킹 프로세스(600)의 블록도를 도시한다. 하나의 프로세싱 유닛(DSP 코어(430) 또는 DMA 제어기(444))은 캐시 중재자(512)에 의해 액세스를 위해 선택(블록(610))된다. 타겟 메모리 어드레스는 캐시 제어기(442x)에 의해 선택된 프로세 싱 유닛으로부터 수신되며(블록(612)), 타겟 태그 및 캐시 라인 어드레스를 획득하기 위해 분석(parse)(블록(614))된다. 직접 맵핑된 캐시 구조를 갖는 전술한 예의 경우, 18 비트 타겟 메모리 어드레스는 (1) 타겟 메모리 어드레스의 최상위 6비트에 의해 형성된 6비트 타겟 태그 및 (2) 타겟 메모리 어드레스의 다음 최상위 9비트에 의해 형성된 9비트 캐시 라인 어드레스로 분석될 수 있다. 캐시 라인 어드레스에 대한 캐시 태그 RAM(524)에 저장된 태그가 검색(블록(616))된다. 이어 저장된 태그는 타겟 태그와 비교(블록(618))된다. 만일 두 태그가 동일하면(즉, 블록(620)에 대해 대답이 '예'이면) 캐시 히트가 선언(블록(622))된다. 그렇지 않으면, 캐시 미스가 선언(블록(624))된다. M-방식 세트 관련 캐시 구조의 경우 다수의 태그들이 캐시 태그 RAM(524)으로부터 검색될 수도 있으며 타겟 태그와 비교될 수 있다.
도5를 참조하면, 캐시 태그 RAM(524)은 캐시 메모리(440)의 각각의 캐시 라인에 대해 태그를 저장하고 캐시 메모리(440)의 소정의 라인이 대체될 때마다 연속적으로 업데이트된다. 어드레스 분석기(522)는 메모리 액세스를 위해 DSP 코어(430) 또는 DMA 제어기(444)로부터 타겟 메모리 어드레스를 수신하고, 타겟 태그 및 캐시 라인 어드레스를 획득하기 위해 타겟 메모리 어드레스를 분석하고, 캐시 태그 RAM(524)으로 캐시 라인 어드레스를 제공하며, 타겟 태그를 비교기(526)에 제공한다. 캐시 태그 RAM(524)은 캐시 라인 어드레스에 대한 저장된 태그를 제공한다. 비교기(526)는 저장된 태그를 타겟 태그와 비교하며, 태그가 동일한 경우 캐시 히트를 나타내고 상이한 경우 타겟 미스를 나타낸다. 캐시 태그 RAM(524)는 캐 시 메모리 시스템이 M-방식 세트 관련 캐시 구조로 구현하는 경우 여러 번 액세스 될 수 있다. 모든 경우에, 캐시 태그 RAM(524)은 캐시 메모리 시스템에서 매 메모리 트랜잭션에 대해 액세스된다.
캐시 히트가 있는 경우, 히트/미스 로직 유닛(528)은 캐시 메모리(440)의 액세스를 제어한다. 만일 메모리 액세스가 판독되면, 캐시 메모리(440)는 타겟 메모리 어드레스에 저장된 명령/데이터를 판독하도록 액세스된다. 만일 메모리 액세스가 기록이면, 캐시 메모리(440)는 타겟 메모리 어드레스에 기록되며, 캐시 라인이 기록된 것을 나타내기 위해 캐시 "더티(dirty) 비트"가 업데이트되어, 라인이 대체될 때 그 라인은 온-칩 메모리(450)(이는 다음의 고레벨 메모리임)로 다시 기록될 것이다. 히트/미스 로직 유닛(528)은 또한 캐시 미스가 있는 경우, 온-칩 메모리(450)로부터 캐시 메모리(440)의 캐시 채움을 처리한다. 이 경우, DSP 코어(430) 및/또는 DMA 제어기(444)는 타겟 캐시 라인이 온-칩 메모리(450)로부터 채워지고 캐시 태그 RAM(524)이 캐시 메모리(440)의 새로운 라인을 반영하기 위해 업데이트되는 동안 멈춰진다.
캐시 제어기(442x)는 캐시 메모리(440)(레벨1 캐시 메모리)와 온-칩 메모리(450)(다음의 고레벨 메모리) 사이의 코히어런스를 유지시킨다. 캐시 제어기(442x)는 어떤 라인이 소정의 순간에 캐시 메모리(440)에 상주하고, 어떤 라인이 캐시 채움에 대해 온-칩 메모리(450)로 다시 기록될 필요가 있는지를 마크하기 위해 자신의 캐시 태그 RAM(524)을 이용한다. DSP 코어(430) 및 DMA 제어기(444)가 동일한 캐시 제어기(442x)를 통과하는 것은 캐시 코히어런스를 보장한다. 그러나 캐시 제어기(442x)가 한 번에 하나의 프로세싱 유닛만을 서브(serve)할 수 있기 때문에, DSP 코어(430)는 DMA 제어기(444)가 캐시 메모리(440) 또는 온-칩 메모리(450)를 액세스할 때마다 멈춰진다.
DSP 코어(430)에 대한 캐시 히트 레이트는 통상적으로 99%의 정도이며, DSP 코어가 캐시 메모리(440)에 액세스할 가능성이 매우 높다. DMA 데이터 저장은 통상적으로 더블 버퍼를 이용하여 처리되며, 더블 버퍼는 인입 DMA 데이터가 하나의 버퍼("현재" 버퍼)에 기록되고 다른 버퍼("채워진" 버퍼)에 저장된 DMA 데이터가 DSP에 의해 프로세싱된다는 것을 의미한다. 따라서, DSP 코어(430)는 (동기화 문제로 인해) DMA 제어기(444)가 기록하는 동일한 버퍼를 액세싱해서는 않된다. 더욱이, 현재의 버퍼가 캐시 메모리(440)에 상주하지 않고 DMA 제어기(444)가 온-칩 메모리(450)로의 액세스를 원할 가능성이 크다. 가장 일반적인 경우가 DSP 코어(430)가 캐시 메모리(440)를 액세스하고 DMA 제어기(444)가 온-칩 메모리(450)를 액세스하는 것이기 때문에, 캐시 제어기는 두 액세스가 DMA 메모리 액세스에 대한 DSP 코어를 멈추는 것을 최소화하기 위해 동시에 발생하도록 설계될 수 있다.
도7은 캐시 제어기(442y)의 실시예를 도시하고 있는데, 이는 두 프로세싱 유닛이 캐시 메모리 시스템의 상이한 두 레벨의 두 메모리를 동시에 액세스하게 한다. 캐시 제어기(442y)는 도4의 명령 캐시 제어기(442a) 및 데이터 제어기(442b)로 사용될 수도 있다. 이러한 실시예의 경우, 캐시 제어기(442y)는 두 세트의 I/O 포트(710a 및 710b), 두 개의 어드레스 체크 유닛(720a 및 720b), 및 공통 히트/미스 로직 유닛(728)을 갖는다. 캐시 제어기(442y)는 I/O 포트(710a)를 통해 DSP 코 어(430)와, 그리고 I/O 포트(710b)를 통해 DMA 제어기(444)와 인터페이스한다. 어드레스 체크 유닛(720a)은 DSP 코어에 의한 메모리 액세스를 위한 타겟 메모리 어드레스가 현재 캐시 메모리(440)에 있는 지를 결정하기 위해 DSP 코어(430)에 대한 어드레스 체크를 실행한다. 유사하게, 어드레스 체크 유닛(720b)은 DMA 제어기에 의한 메모리 액세스를 위해 타겟 메모리 어드레스가 현재 캐시 메모리(440)에 있는 지를 결정하기 위해 DMA 제어기(444)에 대한 어드레스 체크를 실행한다.
각각의 어드레스 체크 유닛(720)은 어드레스 분석기(722), 캐시 태그 RAM(724), 및 비교기(726)를 포함한다. 각각의 어드레스 체크 유닛(720)에서, 어드레스 분석기(722)는 관련된 프로세싱 유닛(DSP 코어(430) 또는 DMA 제어기(444))으로부터 타겟 메모리 어드레스를 수신하고 타겟 태그 및 캐시 라인 어드레스로 분석한다. 캐시 태그 RAM(724)은 캐시 라인 어드레스에 대한 저장된 태그를 제공한다. 비교기(726)는 저장된 태그를 타겟 태그와 비교하여 비교 결과를 히트/미스 로직 유닛(728)에 제공한다.
히트/미스 로직 유닛(728)은 어떤 프로세싱 유닛이 어떤 메모리에 대해 액세스를 갖는지를 결정하는 캐시 중재자를 포함한다. 가장 통상적인 시나리오의 경우, DSP 코어(430)는 캐시 메모리(440)로의 액세스를 원하고 DMA 제어기(444)는 온-칩 메모리(450)로의 액세스를 원한다. 이러한 이벤트는 동일한 액세스 사이클동안 캐시 히트와 직면(encounter)하는 DSP 코어(430) 및 캐시 미스와 직면하는 DMA 제어기(444)에 의해 표시된다. 이러한 경우, 히트/미스 로직 유닛(728)은 두 메모리 액세스들을 동시에 수용할 수 있어서, DSP 코어(430)는 캐시 메모리(440)를 액세스할 수 있고, DMA 제어기(444)는 동일한 사이클에서 온-칩 메모리(450)를 액세스할 수 있다. 이러한 성능은 DMA 메모리 액세스들로 인해 DSP 코어 멈춤의 빈도/가능성을 현저히 감소시킬 수 있다.
히트/미스 로직 유닛(728)은 또한 DSP 코어(430)와 DMA 제어기(444) 사이의 경합을 처리한다. 예를 들어, 만일 DSP 코어(430)와 DMA 제어기(444)가 동일한 메모리로의 액세스를 원하는 경우, 히트/미스 로직 유닛(728)은 프로세싱 유닛들 중 하나가 메모리를 액세스하게 하고 다른 프로세싱 유닛을 멈추게 할 수 있다. 만일 DSP 코어(430)가 캐시 메모리(440)로 액세스를 원하지만, 캐시 미스와 직면하면, 히트/미스 로직 유닛(728)은 하나 또는 두 프로세싱 유닛을 멈출 수 있다. 이러한 두 시나리오는 통상적으로 낮은 가능성을 가지며, 결국 성능은 이러한 이벤트에 의해 심각하게 영향을 받지 않는다.
히트/미스 로직 유닛(728)은 또한 어드레스 체크 유닛(720a 및 720b) 각각에 대한 캐시 태그 RAM(724a 및 724b)를 유지한다. 캐시 태그 RAM(724a 및 724b)은 독립적으로 액세스될 수도 있지만, 동시에 업데이트된다. 히트/미스 로직 유닛(728)은 캐시 메모리(440)의 콘텐츠가 업데이트될 때마다 캐시 태그 RAM(724a 및 724b)을 업데이트하여, 캐시 태그 RAM은 캐시와 동기화된다. 프로세싱 유닛이 캐시 미스와 직면할 때마다, 히트/미스 로직 유닛(728)은 캐시 메모리(440)를 채우기 위해 두 프로세싱 유닛을 멈출 수 있으며, 캐시 태그 RAM(724a 및 724b)을 업데이트할 수 있다.
도8은 DSP 코어(430) 및 DMA 제어기(444)에 의한 동시 메모리 액세스를 위한 캐시 제어기(442y)에 의해 실행되는 프로세스(800)의 흐름도이다. 프로세스(800)에서, 블록(810a 및 810b)은 각각 어드레스 체크 유닛(720a 및 720b)에 의해 실행되며, 블록(820)은 히트/미스 로직 유닛(728)에 의해 실행된다. 각각의 블록(810a 및 810b)에서, 타겟 메모리 어드레스는 관련된 프로세싱 유닛(블록(812))으로부터 수신되며, 타겟 태그 및 캐시 라인 어드레스(블록(814))를 획득하기 위해 분석된다. 캐시 라인 어드레스에 대해 캐시 태그 RAM에 저장된 태그가 검색되고 타겟 태그(블록(818))와 비교된다. 두 블록(810a alc 810b)에 대한 비교의 결과는 히트/미스 로직 유닛(728)에 제공된다.
블록(820)에서, 만일 캐시 히트가 하나의 프로세싱 유닛(예를 들어, DSP 코어)에 대해 선언되고, 캐시 미스가 다른 프로세싱 유닛(예를 들어, DMA 제어기)에 대해 선언(즉, 블록(822)에 대한 대답이 '예'임)되면, 하나의 유닛은 캐시 메모리를 액세스하기 위해 허가되며, 다른 유닛은 온-칩 메모리를 액세스하기 위해 허가(블록(824))된다. 그렇지 않고, 만일 캐시 히트가 두 프로세싱 유닛에 대해 선언(즉, 블록(826)에 대한 대답이 '예'임)되면, 하나의 프로세싱 유닛이 캐시 메모리를 액세스하기 위해 선택되고 다른 프로세싱 유닛은 멈춘다. 그렇지 않고, 만일 캐시 미스가 두 프로세싱 유닛에 대해 선언(즉, 블록(826)에 대한 대답이 '아니오'임)되면, (1) 하나의 프로세싱 유닛이 온-칩 메모리를 액세스하도록 허가되거나, (2) 두 프로세싱 유닛이 캐시 메모리의 캐시 채움을 실행하도록 멈춰진다(블록(830)).
캐시 제어기(442y)는 단일 어드레스 체크 유닛을 갖는 기존의 캐시 제어기에 비해 개선된 성능을 제공할 수 있다. 기존의 캐시 제어기는 DMA 제어기가 메모리를 액세스할 때마다, 통상적으로 DSP 코어를 멈출 것이다. DMA 데이터 레이트는 많은 애플리케이션(예를 들어, 셀룰러 폰을 위한 이미지 및 비디오 프로세싱, 3-D 게임 등)의 경우 DSP 클록 레이트에 비해 상당히 높다. 기존의 캐시 제어기의 경우, 고속 DMA는 DSP 코어가 시간의 대부분에 대해 멈추거나 휴지 상태가 되게 한다. DMA 메모리 액세스는 DSP 코어에 대한 큰 오버헤드를 제공하며, DSP 프로세싱 성능의 상당 부분이 DMA로 인해 멈춤으로 낭비될 것이다. 대조적으로, 캐시 제어기(442y)로 인해, DSP 코어(430) 및 DMA 제어기(444)는 두 I/O 포트(710a 및 710b), 두 어드레스 체크 유닛(720a 및 720b), 및 레벨1 및 2 메모리에 대한 병렬 액세스를 지원하는 히트/미스 로직 유닛(728)을 통해 동시에 서비스될 수 있다. 따라서, DSP 코어에 대한 대부분의 오버헤드가 방지될 수 있다.
혁신적인 캐시 메모리 시스템 및 설명된 캐시 제어기는 무선 통신, 컴퓨팅, 네트워킹, 개인 전자 장치 등을 포함하는 다양한 애플리케이션에 대해 사용될 수도 있다. 무선 통신에 대한 사용의 예는 이하에 설명된다.
도9는 무선 통신 시스템에서 무선 장치(900)의 블록도이다. 무선 장치(900)는 셀룰러 폰, 핸드셋, 터미널, 이동국, 또는 다른 장치 또는 설계일 수도 있다. 무선 통신 시스템은 코드 분할 다중 액세스(CDMA) 시스템, 이동 통신 시스템용 글로벌 시스템(GSM), 다중입력 다중출력(MIMO) 시스템, 직교 주파수 분할 다중화(OFDM) 시스템, 직교 주파수 분할 다중 액세스(OFDMA) 시스템등 일 수 있다. 무선 장치(900)는 수신 경로 및 송신 경로를 통해 양방향 통신을 제공할 수 있다.
수신 경로의 경우, 시스템의 기지국에 의해 송신된 신호는 안테나(912)에 의해 수신되며, 듀플렉서(D)(914)를 통해 라우팅되며, 수신기 유닛(RCVR)(916)에 제공된다. 수신기 유닛(916)은 수신된 신호를 처리(예를 들어, 필터링, 증폭, 및 주파수 하향변환)하고, 처리된 신호를 디지털화하고, 데이터 샘플들을 추가의 프로세싱을 위해 ASIC(920)로 제공한다. 송신 경로의 경우, 무선 장치(900)로부터 송신될 데이터는 ASIC(920)에 의해 송신기 유닛(TMTR)(918)으로 제공된다. 송신기 유닛(918)은 데이터를 처리(예를 들어, 필터링, 증폭, 및 주파수 상향변환)하고, 변조된 신호를 생성하는데, 이는 듀플렉서(914)를 통해 라우팅되며 안테나(912)를 통해 기지국으로 송신된다.
ASIC(920)는 예를 들어, 마이크로프로세서(922), DSP(924), 온-칩 메모리(926), 공유 메모리 버스(928), 및 내부 제어기(930)와 같은 다양한 유닛을 포함한다. 마이크로프로세서(922)는 범용 프로세싱에 사용될 수도 있다. DSP(924)는 송신 경로에 대한 데이터 프로세싱(예를 들어, 엔코딩, 인터리빙, 변조, 코드 채널화, 스펙트럼 확산, 필터링 등)을 실행한다. DSP(924)는 수신 경로에 대한 데이터 프로세싱(예를 들어, 필터링, 디스프레딩 채널화, 변조, 디인터리빙, 디코딩 등)을 또한 실행한다. 이러한 다양한 연산은 기술 분야에 공지되어 있다. DSP(924)에 의해 수행되는 특정한 프로세싱은 통신 시스템에 의존한다. 온-칩 메모리(926)는 DSP(924) 내의 캐시 메모리에 데이터를 제공한다. 공유 메모리 버스(928)는 마이크로프로세서(922) 및 DSP(924)를 ASIC(920) 외부의 다른 유닛과 인터페이스한다. 내부 제어기(930)는 ASIC(920) 내의 다양한 프로세서의 연산을 제어한다.
제어기(950)는 ASIC(920) 및 무선 장치(900) 내의 및 다른 유닛(간략화를 위해 도9에 개시하지 않음)의 연산을 제어한다. 메모리 유닛(952)은 제어기(950)에 의해 사용된 프로그램 코드 및 데이터를 저장한다.
도9는 설명된 혁신적인 캐시 메모리 시스템 및 캐시 제어기가 사용될 수 있는 무선 장치의 예를 도시한다. 캐시 메모리 시스템 및 캐시 제어기는 또한 다른 전자 장치에 사용될 수 있다.
설명된 혁신적인 캐시 메모리 시스템 및 캐시 제어기는 다양한 하드웨어 유닛에서 구현될 수 있다. 예를 들어, 캐시 메모리 시스템 및 캐시 제어기는 ASIC, 디지털 신호 프로세싱 장치(DSPD), 프로그램 가능한 로직 장치(PLD), 필드 프로그램 가능한 게이트 어레이(FPGA), 제어기, 프로세서, 및 다른 전자 장치에서 구현될 수 있다.
본 실시예의 다양한 설명은 당업자가 본원 발명을 이용 및 실시하게 한다. 이러한 실시예에 대한 다양한 변경이 당업자에게 자명하며, 설명된 일반 원칙은 본 발명의 사상을 벗어나지 않고 다른 실시예에 적용될 수 있다. 따라서, 본 발명은 설명된 실시예에 한정되지 않고 전술된 특징 및 원칙에 부합한다.
도1은 통상적인 2레벨 캐시 메모리 시스템이다.
도2는 다중 내장형 프로세서 및 단일 레벨 캐시 메모리 시스템을 갖는 ASIC이다.
도3은 개선된 캐시 메모리 시스템이다.
도4는 다중 내장형 프로세서 및 개선된 캐시 메모리 시스템을 갖는 ASIC이다.
도5는 두 개의 프로세싱 유닛에 작용 가능한 캐시 제어기이다.
도6은 도5의 캐시 제어기에 의해 실행된 어드레스 체킹 프로세스이다.
도7은 두 개의 프로세싱 유닛이 메모리 시스템의 상이한 두 레벨에서 두 개의 메모리에 동시에 액세스 가능하게 할 수 있는 캐시 제어기이다.
도8은 도7의 캐시 제어기에 의해 실행된 어드레스 체킹 프로세스이다.
도9는 무선 통신 시스템에서 무선 장치를 도시한다.
Claims (16)
- 캐시 메모리 시스템에서 서로 다른 레벨로 존재하는 캐시 메모리 및 제2 메모리에 대한 메모리 트랜잭션을 처리하도록 구성된 캐시 제어기를 포함하는 집적회로로서, 상기 캐시 제어기는,제1 프로세싱 유닛에 결합되고, 상기 제1 프로세싱 유닛에 의한 제1 메모리 액세스를 위한 제1 메모리 어드레스가 현재 캐시 메모리에 있는지를 결정하도록 구성된 제1 어드레스 검사 유닛,제2 프로세싱 유닛에 결합되고, 상기 제2 프로세싱 유닛에 의한 제2 메모리 액세스를 위한 제2 메모리 어드레스가 현재 상기 캐시 메모리에 있는지를 결정하도록 구성된 제2 어드레스 검사 유닛, 및상기 제1 및 제2 어드레스 검사 유닛에 결합되고, 상기 제1 및 제2 프로세싱 유닛에 의한 상기 제1 및 제2 메모리 액세스를 위한 메모리 트랜잭션을 처리하도록 구성된 논리(logic) 유닛을 포함하며,상기 논리 유닛은 상기 제1 및 제2 프로세싱 유닛들 모두에 대해 캐시 히트가 선언되는 경우, 상기 제1 및 제2 프로세싱 유닛들 중 하나의 프로세싱 유닛이 상기 캐시 메모리에 액세스하도록 선택되고, 다른 하나의 프로세싱 유닛에 의한 액세스는 중단(stall)되도록 추가로 구성되는,집적회로.
- 제1항에 있어서,만일 상기 제1 프로세싱 유닛이 캐시 히트에 직면(encounter)하고, 상기 제2 프로세싱 유닛이 캐시 미스와 직면한 경우, 상기 논리 유닛은, 상기 제1 프로세싱 유닛이 상기 캐시 메모리를 액세스하고, 상기 제2 프로세싱 유닛이 상기 제2 메모리를 동시에 액세스하게 하도록 구성되는 것을 특징으로 하는 집적회로.
- 제1항에 있어서,상기 제1 및 제2 어드레스 검사 유닛 각각은,타겟 태그 및 캐시 라인 어드레스를 획득하기 위해 상기 제1 또는 제2 메모리 어드레스를 분석(parse)하도록 구성된 어드레스 분석기,상기 캐시 라인 어드레스에 대해, 상기 캐시 라인 어드레스에서 상기 캐시 메모리에 현재 저장된 외부 메모리의 라인을 나타내는 저장된 태그를 제공하도록 구성된 캐시 태그 RAM, 및상기 타겟 태그를 상기 저장된 태그와 비교하도록 구성되고, 상기 제1 또는 제2 메모리 어드레스에 대한 캐시 미스 또는 캐시 히트의 표시를 제공하는 비교기를 포함하는 것을 특징으로 하는 집적회로.
- 제3항에 있어서,상기 제1 어드레스 검사 유닛의 동작은 상기 제2 어드레스 검사 유닛의 동작과는 독립적으로 이뤄지는 것을 특징으로 하는 집적회로.
- 제4항에 있어서,상기 제1 및 제2 어드레스 검사 유닛에 대한 상기 캐시 태그 RAM들은 상기 캐시 메모리가 상기 제2 메모리로부터의 데이터로 채워질 때마다 동시에 업데이트 되는 것을 특징으로 하는 집적회로.
- 제1항에 있어서,상기 캐시 제어기는,상기 제1 프로세싱 유닛에 대한 인터페이스를 위한 입력/출력(I/O) 포트의 제1 세트, 및상기 제2 프로세싱 유닛에 대한 인터페이스를 위한 제2 세트의 I/O 포트를 더 포함하는 것을 특징으로 하는 집적회로.
- 제1항에 있어서,상기 캐시 메모리는 캐시 메모리 시스템의 레벨1 메모리이며, 상기 제2 메모리는 캐시 메모리 시스템의 레벨2 메모리인 것을 특징으로 하는 집적회로.
- 제1항에 있어서,상기 제2 메모리는 온-칩 메모리이며, 상기 캐시 메모리는 캐시 미스에 대해 상기 온-칩 메모리로부터의 데이터로 채워지며, 상기 온-칩 메모리는 사용자의 제어하에 외부 메모리로부터의 데이터로 채워지는 것을 특징으로 하는 집적회로.
- 제1항에 있어서,상기 제1 프로세싱 유닛은 프로세서 코어이며, 상기 제2 프로세싱 유닛은 직 접 메모리 액세스(DMA) 제어기인 것을 특징으로 하는 집적회로.
- 캐시 메모리 시스템에 대한 메모리 트랜잭션을 처리하는 방법으로서,제1 프로세싱 유닛에 의한 제1 메모리 액세스를 위한 제1 메모리 어드레스가 현재 캐시 메모리에 있는지를 결정하는 단계;제2 프로세싱 유닛에 의한 제2 메모리 액세스를 위한 제2 메모리 어드레스가 현재 상기 캐시 메모리에 있는지를 결정하는 단계;만일 상기 제1 프로세싱 유닛이 캐시 히트와 직면하고 상기 제2 프로세싱 유닛이 캐시 미스와 직면한 경우, 상기 제1 및 제2 프로세싱 유닛이 각각 상기 캐시 메모리와 제2 메모리를 동시에 액세스하는 단계; 및상기 제1 및 제2 프로세싱 유닛들 모두에 대해 캐시 히트가 선언되는 경우, 상기 제1 및 제2 프로세싱 유닛들 중에서 상기 캐시 메모리에 액세스할 하나의 프로세싱 유닛을 선택하고, 다른 하나의 프로세싱 유닛에 의한 액세스를 중단(stall)하는 단계를 포함하며,상기 캐시 메모리 및 상기 제2 메모리는 상기 캐시 메모리 시스템의 상이한 두 레벨로 존재하는 메모리이며,상기 동시에 액세스하게 하는 단계는 제1 및 제2 어드레스 검사 유닛들에 연결되어, 상기 제1 및 제2 프로세싱 유닛들에 의한 상기 제1 및 제2 메모리 액세스를 위한 메모리 트랜잭션들을 처리하도록 동작하는 논리 유닛에 의해 수행되는,메모리 트랜잭션 처리 방법.
- 제10항에 있어서,상기 제1 및 제2 메모리 어드레스 각각에 대한 결정 단계는,타겟 태그 및 캐시 라인 어드레스를 획득하기 위해 상기 메모리 어드레스들 각각을 분석하는 단계,상기 캐시 라인 어드레스에 대한 캐시 태그 RAM으로부터, 상기 캐시 라인 어드레스의 상기 캐시 메모리에 현재 저장된 외부 메모리의 라인을 나타내는 저장된 태그를 획득하는 단계, 및상기 메모리 어드레스들 각각이 현재 상기 캐시 메모리에 있는지를 결정하기 위해 상기 타겟 태그를 상기 저장된 태그와 비교하는 단계를 포함하는 것을 특징으로 하는 메모리 트랜잭션 처리 방법.
- 제11항에 있어서,상기 캐시 메모리가 상기 제2 메모리로부터의 데이터로 채워질 때마다, 상기 제1 및 제2 메모리 어드레스가 상기 캐시 메모리에 있는지를 결정하기 위해 사용되는 제1 및 제2 캐시 태그 RAM들을 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 메모리 트랜잭션 처리 방법.
- 제10항에 있어서,만일 상기 제1 및 제2 프로세싱 유닛이 모두 캐시 히트와 직면하면,상기 캐시 메모리를 액세스하기 위해 상기 프로세싱 유닛들 중 하나를 선택하는 단계, 및상기 프로세싱 유닛들 중 다른 하나를 멈추는 단계를 더 포함하는 것을 특징으로 하는 메모리 트랜잭션 처리 방법.
- 제1 프로세싱 유닛에 의한 제1 메모리 액세스를 위한 제1 메모리 어드레스가 현재 캐시 메모리에 있는지를 결정하는 수단;제2 프로세싱 유닛에 의한 제2 메모리 액세스를 위한 제2 메모리 어드레스가 현재 상기 캐시 메모리에 있는지를 결정하는 수단; 및만일 상기 제1 프로세싱 유닛이 캐시 히트와 직면하고 상기 제2 프로세싱 유닛이 캐시 미스와 직면한 경우, 상기 제1 및 제2 프로세싱 유닛이 각각 상기 캐시 메모리와 제2 메모리를 동시에 액세스하게 하는 수단을 포함하며, 상기 캐시 메모리 및 상기 제2 메모리는 상기 캐시 메모리 시스템의 상이한 두 레벨로 존재하는 메모리이며,상기 액세스하게 하는 수단은 상기 2개의 결정 수단들 모두에 연결되어, 상기 제1 및 제2 프로세싱 유닛들에 의한 상기 제1 및 제2 메모리 액세스들을 처리하도록 동작하며,상기 액세스하게 하는 수단은 상기 제1 및 제2 프로세싱 유닛들 모두에 대해 캐시 히트가 선언되는 경우, 상기 제1 및 제2 프로세싱 유닛들 중 하나의 프로세싱 유닛이 상기 캐시 메모리에 액세스하도록 선택되고, 다른 하나의 프로세싱 유닛에 의한 액세스는 중단(stall)되도록 동작하는, 장치.
- 제14항에 있어서,상기 제1 및 제2 메모리 어드레스 각각에 대한 결정 수단은,타겟 태그 및 캐시 라인 어드레스를 획득하기 위해 상기 메모리 어드레스들 각각을 분석하는 수단,상기 캐시 라인 어드레스에 대한 캐시 태그 RAM으로부터, 상기 캐시 라인 어드레스의 상기 캐시 메모리에 현재 저장된 외부 메모리의 라인을 나타내는 저장된 태그를 획득하는 수단, 및상기 메모리 어드레스들 각각이 현재 상기 캐시 메모리에 있는지를 결정하기 위해 상기 타겟 태그를 상기 저장된 태그와 비교하는 수단을 포함하는 것을 특징으로 하는 장치.
- 제15항에 있어서,상기 캐시 메모리가 상기 제2 메모리로부터의 데이터로 채워질 때마다, 상기 제1 및 제2 메모리 어드레스가 상기 캐시 메모리에 있는지를 결정하기 위해 사용되는 캐시 태그 RAM들을 업데이트하는 수단을 더 포함하는 것을 특징으로 하는 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/807,648 US7769950B2 (en) | 2004-03-24 | 2004-03-24 | Cached memory system and cache controller for embedded digital signal processor |
US10/807,648 | 2004-03-24 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020067021998A Division KR20060133054A (ko) | 2004-03-24 | 2005-03-11 | 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시제어기 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080016753A KR20080016753A (ko) | 2008-02-21 |
KR100974024B1 true KR100974024B1 (ko) | 2010-08-05 |
Family
ID=34964028
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087002969A KR100974024B1 (ko) | 2004-03-24 | 2005-03-11 | 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시제어기 |
KR1020067021998A KR20060133054A (ko) | 2004-03-24 | 2005-03-11 | 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시제어기 |
KR1020087020883A KR100940961B1 (ko) | 2004-03-24 | 2005-03-11 | 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시 제어기 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020067021998A KR20060133054A (ko) | 2004-03-24 | 2005-03-11 | 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시제어기 |
KR1020087020883A KR100940961B1 (ko) | 2004-03-24 | 2005-03-11 | 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시 제어기 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7769950B2 (ko) |
KR (3) | KR100974024B1 (ko) |
BR (1) | BRPI0509082A (ko) |
IL (1) | IL178258A0 (ko) |
SG (1) | SG151304A1 (ko) |
TW (1) | TW200608203A (ko) |
WO (1) | WO2005101213A2 (ko) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007538444A (ja) * | 2004-05-20 | 2007-12-27 | キネティック リミテッド | ファイアウォール・システム |
KR100725271B1 (ko) * | 2005-05-20 | 2007-06-04 | 주식회사 엠피오 | 복수개의 dma 채널을 갖는 usb-sd 저장 장치 및 그저장 방법 |
GB0722707D0 (en) * | 2007-11-19 | 2007-12-27 | St Microelectronics Res & Dev | Cache memory |
US7865675B2 (en) | 2007-12-06 | 2011-01-04 | Arm Limited | Controlling cleaning of data values within a hardware accelerator |
US8775824B2 (en) | 2008-01-02 | 2014-07-08 | Arm Limited | Protecting the security of secure data sent from a central processor for processing by a further processing device |
US8332660B2 (en) | 2008-01-02 | 2012-12-11 | Arm Limited | Providing secure services to a non-secure application |
US9461930B2 (en) | 2009-04-27 | 2016-10-04 | Intel Corporation | Modifying data streams without reordering in a multi-thread, multi-flow network processor |
US9444757B2 (en) | 2009-04-27 | 2016-09-13 | Intel Corporation | Dynamic configuration of processing modules in a network communications processor architecture |
US8505013B2 (en) * | 2010-03-12 | 2013-08-06 | Lsi Corporation | Reducing data read latency in a network communications processor architecture |
US8341353B2 (en) | 2010-01-14 | 2012-12-25 | Qualcomm Incorporated | System and method to access a portion of a level two memory and a level one memory |
US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US20120151232A1 (en) * | 2010-12-12 | 2012-06-14 | Fish Iii Russell Hamilton | CPU in Memory Cache Architecture |
US8332488B1 (en) * | 2011-03-04 | 2012-12-11 | Zynga Inc. | Multi-level cache with synch |
US8745134B1 (en) | 2011-03-04 | 2014-06-03 | Zynga Inc. | Cross social network data aggregation |
KR20120108564A (ko) * | 2011-03-24 | 2012-10-05 | 삼성전자주식회사 | 데이터 처리 시스템 및 그 동작 방법 |
US8347322B1 (en) | 2011-03-31 | 2013-01-01 | Zynga Inc. | Social network application programming interface |
US10135776B1 (en) | 2011-03-31 | 2018-11-20 | Zynga Inc. | Cross platform social networking messaging system |
US8522137B1 (en) | 2011-06-30 | 2013-08-27 | Zynga Inc. | Systems, methods, and machine readable media for social network application development using a custom markup language |
US8935485B2 (en) | 2011-08-08 | 2015-01-13 | Arm Limited | Snoop filter and non-inclusive shared cache memory |
GB2495959A (en) | 2011-10-26 | 2013-05-01 | Imagination Tech Ltd | Multi-threaded memory access processor |
US8548900B1 (en) * | 2012-12-19 | 2013-10-01 | Nyse Group, Inc. | FPGA memory paging |
US9239610B2 (en) * | 2013-02-28 | 2016-01-19 | Sandisk Technologies Inc. | Systems and methods for managing data in a system for hibernation states |
US20140301719A1 (en) * | 2013-04-08 | 2014-10-09 | Broadcom Corporation | Processing cache for multiple bit precisions |
CN104657326B (zh) * | 2013-11-25 | 2019-02-12 | 锐迪科(重庆)微电子科技有限公司 | 双cpu通信方法、系统和片上系统芯片 |
US9280290B2 (en) | 2014-02-12 | 2016-03-08 | Oracle International Corporation | Method for steering DMA write requests to cache memory |
KR102347657B1 (ko) | 2014-12-02 | 2022-01-06 | 삼성전자 주식회사 | 전자 장치 및 이의 공유 캐시 메모리 제어 방법 |
US10558570B2 (en) * | 2016-03-14 | 2020-02-11 | Intel Corporation | Concurrent accesses of asymmetrical memory sources |
US11853216B2 (en) * | 2021-08-16 | 2023-12-26 | Micron Technology, Inc. | High bandwidth gather cache |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990071554A (ko) * | 1996-09-25 | 1999-09-27 | 요트.게.아. 롤페즈 | 어드레스충돌검출기능을갖는멀티포트캐시메모리 |
US6272597B1 (en) * | 1998-12-31 | 2001-08-07 | Intel Corporation | Dual-ported, pipelined, two level cache system |
US20030018853A1 (en) * | 2001-07-20 | 2003-01-23 | Yakov Tokar | Method and apparatus for filling lines in a cache |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5459742A (en) * | 1992-06-11 | 1995-10-17 | Quantum Corporation | Solid state disk memory using storage devices with defects |
US5761720A (en) * | 1996-03-15 | 1998-06-02 | Rendition, Inc. | Pixel engine pipeline processor data caching mechanism |
US5987590A (en) * | 1996-04-02 | 1999-11-16 | Texas Instruments Incorporated | PC circuits, systems and methods |
US6192449B1 (en) * | 1996-04-12 | 2001-02-20 | Motorola, Inc. | Apparatus and method for optimizing performance of a cache memory in a data processing system |
US5895487A (en) | 1996-11-13 | 1999-04-20 | International Business Machines Corporation | Integrated processing and L2 DRAM cache |
US6128703A (en) * | 1997-09-05 | 2000-10-03 | Integrated Device Technology, Inc. | Method and apparatus for memory prefetch operation of volatile non-coherent data |
JP3289661B2 (ja) | 1997-11-07 | 2002-06-10 | 日本電気株式会社 | キャッシュメモリシステム |
CA2317473A1 (en) | 1998-01-13 | 1999-07-22 | David L. Tennenhouse | Systems and methods for wireless communications |
US6704820B1 (en) | 2000-02-18 | 2004-03-09 | Hewlett-Packard Development Company, L.P. | Unified cache port consolidation |
EP1215581A1 (en) | 2000-12-15 | 2002-06-19 | Texas Instruments Incorporated | Cache memory access system and method |
US20040133745A1 (en) * | 2002-10-28 | 2004-07-08 | Quicksilver Technology, Inc. | Adaptable datapath for a digital processing system |
EP1399823B1 (en) * | 2001-06-26 | 2011-02-16 | Oracle America, Inc. | Using an l2 directory to facilitate speculative loads in a multiprocessor system |
US6704841B2 (en) * | 2001-06-26 | 2004-03-09 | Sun Microsystems, Inc. | Method and apparatus for facilitating speculative stores in a multiprocessor system |
US6889331B2 (en) * | 2001-08-29 | 2005-05-03 | Analog Devices, Inc. | Dynamic voltage control method and apparatus |
KR100617663B1 (ko) * | 2001-09-14 | 2006-08-28 | 썬 마이크로시스템즈, 인코포레이티드 | 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치 |
WO2004004238A1 (en) | 2002-07-01 | 2004-01-08 | Infineon Technologies Ag | Associating mac addresses with addresses in a look-up table |
US6895475B2 (en) * | 2002-09-30 | 2005-05-17 | Analog Devices, Inc. | Prefetch buffer method and apparatus |
US20050025315A1 (en) * | 2003-07-31 | 2005-02-03 | Kreitzer Stuart S. | Method and apparatus for secure communications among portable communication devices |
US7194576B1 (en) * | 2003-07-31 | 2007-03-20 | Western Digital Technologies, Inc. | Fetch operations in a disk drive control system |
-
2004
- 2004-03-24 US US10/807,648 patent/US7769950B2/en not_active Expired - Fee Related
-
2005
- 2005-03-11 KR KR1020087002969A patent/KR100974024B1/ko not_active IP Right Cessation
- 2005-03-11 KR KR1020067021998A patent/KR20060133054A/ko not_active Application Discontinuation
- 2005-03-11 BR BRPI0509082-2A patent/BRPI0509082A/pt not_active IP Right Cessation
- 2005-03-11 SG SG200902010-8A patent/SG151304A1/en unknown
- 2005-03-11 KR KR1020087020883A patent/KR100940961B1/ko not_active IP Right Cessation
- 2005-03-11 WO PCT/US2005/008373 patent/WO2005101213A2/en active Application Filing
- 2005-03-14 TW TW094107622A patent/TW200608203A/zh unknown
-
2006
- 2006-09-21 IL IL178258A patent/IL178258A0/en unknown
-
2010
- 2010-06-03 US US12/792,865 patent/US8316185B2/en not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990071554A (ko) * | 1996-09-25 | 1999-09-27 | 요트.게.아. 롤페즈 | 어드레스충돌검출기능을갖는멀티포트캐시메모리 |
US6272597B1 (en) * | 1998-12-31 | 2001-08-07 | Intel Corporation | Dual-ported, pipelined, two level cache system |
US20030018853A1 (en) * | 2001-07-20 | 2003-01-23 | Yakov Tokar | Method and apparatus for filling lines in a cache |
Also Published As
Publication number | Publication date |
---|---|
US8316185B2 (en) | 2012-11-20 |
US20100235578A1 (en) | 2010-09-16 |
WO2005101213A2 (en) | 2005-10-27 |
KR20080091379A (ko) | 2008-10-10 |
KR20080016753A (ko) | 2008-02-21 |
TW200608203A (en) | 2006-03-01 |
US20050216666A1 (en) | 2005-09-29 |
BRPI0509082A (pt) | 2007-08-21 |
KR20060133054A (ko) | 2006-12-22 |
KR100940961B1 (ko) | 2010-02-05 |
WO2005101213A3 (en) | 2006-01-26 |
SG151304A1 (en) | 2009-04-30 |
IL178258A0 (en) | 2006-12-31 |
US7769950B2 (en) | 2010-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100974024B1 (ko) | 내장형 디지털 신호 처리기용 캐시 메모리 시스템 및 캐시제어기 | |
US6105111A (en) | Method and apparatus for providing a cache management technique | |
US9323672B2 (en) | Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems | |
US5410669A (en) | Data processor having a cache memory capable of being used as a linear ram bank | |
KR100339904B1 (ko) | 캐시 프로세스용 시스템 및 방법 | |
US7660933B2 (en) | Memory and I/O bridge | |
KR101456860B1 (ko) | 메모리 디바이스의 전력 소비를 감소시키기 위한 방법 및 시스템 | |
EP2092429B1 (en) | Configurable cache for a microprocessor | |
US7073030B2 (en) | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio | |
KR100395756B1 (ko) | 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서 | |
US11954044B2 (en) | Translation lookaside buffer prewarming | |
US10467140B2 (en) | Apparatus having main TLB and local TLBS, and configured to set selected size for new entry allocated to local TLB to a default size | |
US20080140996A1 (en) | Apparatus and methods for low-complexity instruction prefetch system | |
US20070271407A1 (en) | Data accessing method and system for processing unit | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
US20020042861A1 (en) | Apparatus and method for implementing a variable block size cache | |
KR20010102441A (ko) | 프로세서가 대기되는 동안 개시된 병렬 판독 및 직렬판독을 이용하는 세트 연관 캐시 관리 방법 | |
CN112612728A (zh) | 缓存管理方法及装置、设备 | |
US20060143333A1 (en) | I/O hub resident cache line monitor and device register update | |
CA2378777A1 (en) | Shared program memory with fetch and prefetch buffers | |
US8099533B2 (en) | Controller and a method for controlling the communication between a processor and external peripheral device | |
WO2022021158A1 (zh) | 缓存系统、方法和芯片 | |
KR100204004B1 (ko) | 리드/라이트 데이터 포워딩 경로를 가진 캐쉬 데이터경로 회로 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
J201 | Request for trial against refusal decision | ||
E90F | Notification of reason for final refusal | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130628 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140627 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20160629 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |