KR19980041729A - 캐쉬 제어 유닛 - Google Patents

캐쉬 제어 유닛 Download PDF

Info

Publication number
KR19980041729A
KR19980041729A KR1019970017467A KR19970017467A KR19980041729A KR 19980041729 A KR19980041729 A KR 19980041729A KR 1019970017467 A KR1019970017467 A KR 1019970017467A KR 19970017467 A KR19970017467 A KR 19970017467A KR 19980041729 A KR19980041729 A KR 19980041729A
Authority
KR
South Korea
Prior art keywords
cache
data
state
request
tag
Prior art date
Application number
KR1019970017467A
Other languages
English (en)
Other versions
KR100227278B1 (ko
Inventor
파이 옛-핑
누옌 르
Original Assignee
윤종용
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25020702&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR19980041729(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 윤종용, 삼성전자 주식회사 filed Critical 윤종용
Publication of KR19980041729A publication Critical patent/KR19980041729A/ko
Application granted granted Critical
Publication of KR100227278B1 publication Critical patent/KR100227278B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

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

본 발명은 캐쉬 제어 유닛 및 캐쉬 제어 방법을 개시한다. 상기 캐쉬는 캐쉬 액세싱 장치에 결합된다. 제1캐쉬 요구는 상기 장치로부터 수신된다. 요구식별 정보는 상기 제1캐쉬 요구에 할당되고 요구하는 장치에 제공된다. 상기 제1캐쉬 요구는 처리가 시작될 수 있다. 제2캐쉬 요구는 상기 캐쉬 액세싱 장치로부터 수신된다. 상기 제2캐쉬 요구는 상기 제1캐쉬 요구에 할당되고 요구하는 장치에 제공된다. 상기 제1 및 제2캐쉬 요구가 최종적으로 서비스된다.

Description

캐쉬 제어 유닛
본 발명의 프로세서에 고속 메모리 액세스를 제공하는 것에 관한 것으로, 특히 캐쉬 메모리 시스템의 제어를 제공하는 것에 관한 것이다.
프로세서는 흔히 프로세서의 클럭 속도에 비교할 때 비교적 느린 메모리를 사용한다. 이와 같은 프로세서를 위해 메모리 액세스의 속도를 향상시키기 위해, 상대적으로 적은 용량의 고속 메모리가 데이타 캐쉬에 사용될 수 있다.
캐쉬는 메모리 액세스를 중개할 수 있고 캐쉬가 어드레스 공간에 비해 작을 때에도 프로세서의 모든 또는 많은 부분의 어드레스 공간을 위해 평균 메모리 액세스 시간을 느슨하게 한다. 캐쉬는 프로세서의 어드레스 공간의 특정 부분을 점유하지 않지만, 그 대신에 캐쉬의 라인에 있는 정보를 위한 어드레스를 식별하는 태그 정보를 포함한다.
전형적으로, 캐쉬는 프로세서로부터 수신된 어드레스를 캐쉬에 저장된 태그 정보와 비교하여 캐쉬가 액세스되는 메모리에 대한 유효 엔트리를 포함하는 지를 판단한다. 만일 이와 같은 캐쉬 엔트리가 존재(즉, 캐쉬 히트(cache hit)가 존재하면)하면, 프로세서는 저속 메모리 대신에 고속 메모리를 액세스(그로부터 판독 또는 그것에 기록)한다. 테그 정보 이외에, 캐쉬 엔트리는 전형적으로 엔트리에 있는 연관된 정보가 유효한지 그리고 상기 연관된 정보가 저속 메모리에 다시 기록될 변경을 포함하고 있는 지를 각각 가리키는 유효(validity) 비트와 더티(dirty)비트를 포함한다. 만일 액세스되는 어드레스에 대한 어떠한 캐쉬 엔트리도 존재하지 않으면(즉, 캐쉬 미스(cache miss)가 존재하면), 방금 액세스된 메모리 어드레스에 대한 새로운 엔트리를 생성하기 위해 상기 캐쉬에 대해 저속 메모리에의 액세스가 요구된다.
캐쉬는 기존의 엔트리가 새로운 엔트리로 교체되었는지를 판단하기 위해 최근에 가장 적게 사용된(least recently used) 또는 가장 오래전에 사용된(not last used) 교체 기법과 같은 캐쉬 폴리시(cache policies)를 사용한다. 전형적으로, 컴퓨터 프로그램은 동일한 메모리 어드레스를 반복적으로 액세스한다. 따라서, 가장 최근에 액세스된 데이타는 초기 액세스 직후에 다시 엑세스될 가능성이 있다. 최근에 액세스된 데이타는 후속하는 액세스를 위해 캐쉬에서 이용할 수 있기 때문에, 캐쉬는 프로세서의 어드레스 공간에 걸쳐 액세스 시간을 향상시킬 수 있다.
프로세스 속도를 증가시키기 위한 다른 방법은 병렬 프로세싱 기법의 사용이다. 예를 들어, 서로 다른 작업을 수행하는 다수의 기능 유닛을 제공함으로써, 매우 긴 명령 워드(VLIW) 프로세서는 단일 명령으로 다수의 기능을 수행할 수 있다. 또한, 범용 프로세서와 벡터 프로세서가 병렬로 동작하도록 통합될 수 있다. 통합된 멀티프로세서는 두개의 프로세서가 각 프로세서에 이상적으로 적합한 작업만을 수행하기 때문에 적은 비용으로 고성능을 달성할 수 있다. 예를 들어, 범용프로세서는 실시간 운영체제를 실행하고 전체적인 시스템 관리를 수행하는 반면에, 벡터 프로세서는 벡터라고 하는 데이타 구조를 사용하여 병렬 연산을 수행하는데 사용된다(벡터는 전형적으로 동일한 종류의 데이타 엘리먼트의 집합이다). 멀티프로세서 컨피그레이션은 특히 비디오, 오디오, 및 통신 데이타의 코딩과 디코딩과 같은 디지탈 신호 프로세싱에 관련된 오퍼레이션에 장점이 있다.
다수의 장치에 의한 캐쉬의 액세스는 캐쉬 액세스를 식별하는 트랜잭션 식별논리 회로를 포함하는 캐쉬 제어 유닛에 의해 관리될 수 있다. 이와 같은 장치는 하나 이상의 장치에 의한 메모리 액세스의 속도를 증가시킴으로써 성능을 향상시키는 장점을 제공한다. 특히, 이와 같은 장치는 캐쉬로 하여금 먼저 도달하는 요구이전에 나중에 도달하는 요구를 제공하는 것을 가능하게 한다.
본 발명의 한 실시예에서, 캐쉬는 액세싱 장치에 결합한다. 제1캐쉬 요구는 상기 장치로부터 수신된다. 요구 식별 정보가 상기 제1캐쉬 요구에 할당되고 요구하는 장치에 제공된다. 상기 제1캐쉬 요구는 처리가 시작될 수 있다. 제2캐쉬 요구는 상기 캐ㅌ쉬 액세싱 장치로부터 수신된다. 상기 제2캐쉬 요구는 상기 제1캐쉬 요구에 할당되고 요구하는 장치에 제공된다. 상기 제1 및 제2캐쉬 요구가 최종적으로 완전히 서비스된다.
다른 실시예에서, 캐쉬 시스템은 정보를 일시적으로 저장하기 위한 캐쉬와 캐쉬 제어 유닛을 구비한다. 상기 캐쉬 제어 유닛은 액세스 논리 회로, 식별 논리 회로 및 결과 논리 회로를 구비한다. 상기 액세스 논리 회로는 캐쉬 액세싱 장치에 의한 액세스를 수신하여 실행한다. 상기 식별 논리 회로는 식별 정보를 각각의 캐쉬 액세스에 할당하고, 상기 캐쉬 액세싱 장치에 요구 식별 정보를 제공한다. 상기 식별 논리 회로는 상기 액세스 제어 논리 회로에 의한 캐쉬 액세스의 실행 이전에 요구 식별 정보를 제공할 수 있다. 상기 결과 논리 회로는 캐쉬 액세스가 판독이었다면 상기 캐쉬 액세싱 장치에 상기 요구 식별 정보와 상기 캐쉬 액세싱 장치에 의해 요구된 요구 식별 정보를 제공한다.
도 1은 본 발명의 실시예에 따른 멀티미디어 신호 프로세서의 블럭도.
도 2는 본 발명의 실시예에 따른 캐쉬 시스템의 블럭도.
도 3은 본 발명의 실시예에 따른 캐쉬 시스템에 사용된 데이타 파이프라인의 블럭도.
도 4는 본 발명의 실시예에 따른 캐쉬 시스템에 사용된 데이타 파이프라인의 블럭도.
도 5는 본 발명의 실시예에 따른 캐쉬 시스템에 사용된 어드레스 파이프라인의 블럭도.
도 6은 본 발명의 실시예에 따른 캐쉬 제어 유닛 및 프로세스 인터페이스의 상태도.
도 7은 본 발명의 실시예에 따른 캐쉬 유닛 및 버스 인터페이스의 상태도.
도 8은 본 발명의 실시예에 따른 데이타 수신기 상태 머신의 상태도.
도 9는 본 발명의 실시예에 따른 판독/기록 상태 머신의 상태도.
*도면의 주요 부분에 대한 부호의 설명*
100 : 프로세서110 : 범용 프로세서
112 : 제어 버스114 : 인터럽트 라인
120 : 벡터 프로세서130 : 캐쉬 시스템
140, 170 : 고속 랜덤 액세스 메모리160 : 캐쉬 제어 유닛
216, 440 : 판독 포트218, 430 : 기록 포트
220 : 데이타 파이프 라인230 : 어드레스 파이프라인
본 발명은 기술분야의 숙련자에게 첨부하는 도면을 참조할 때 용이하게 이해할 수 있으며 많은 목적, 특징 및 장점이 명확할 것이다. 다른 도면에서 동일한 참조 부호의 사용은 유효하거나 동일한 구성요소를 가리킨다.
다음은 바람직한 실시예의 상세한 설명이다. 본 설명은 본 발명의 예시이며 한정하는 의미로 해석해서는 안된다. 많은 변형, 수정, 추가 및 개선의 다음의 특허청구의 범위에 한정되는 바와 같이 본 발명의 영역이내에 포괄될 수 있다.
도 1을 참조하면, 프로세서(100)는 백터 프로세서(120)에 결합된 범용 프로세서(110)을 구비한다. 범용 프로세서(110)와 벡터 프로세서(120)는 제어 버스(112)와 인터럽트 라인(114)을 거쳐 결합된다. 범용 프로세서(110)와 벡터 프로세서(120)는 각각 버스(116와 118)를 거쳐 캐쉬 시스템(130)에 결합된다. 캐쉬 시스템은 입력/출력 버스(IOBUS)(180)와 고속 버스(FBUS)(190)에 결합된다. IOBUS(180)는 시스템 타이머(182), 유니버셜 비동기 수신기-송신기(UART)(184), 비트스프림 프로세서(186) 및 인터럽트 제어기(188)에 결합된다. FBUS(190)는 다바이스 인터페이스(192), 직접 메모리 액세스(DMA) 제어기(194), 국부 버스 인터페이스(196), 및 메모리 제어기(198)에 결합된다.
범용 프로세서(110)와 벡터 프로세서(120)는 개별적인 프로그램 스래드를 병렬로 실행한다. 범용 프로세서(110)는 전형적으로 스칼라 데이타를 조작하는 명령을 실행한다. 벡터 프로세서(120)는 전형적으로 벡터 오퍼런드, 즉 각각 동일한 유형의 다수 데이타 엘리먼트를 포함하는 오퍼런드를 갖는 명령을 실행한다. 몇몇 실시예에서, 범용 프로세서(110)는 제한된 벡터 프로세싱 능력을 갖는다. 그러나, 많은 데이타의 어레이에 대해 다수의 연산을 필요로 하는 어플리케이션은 스칼라 프로세싱 또는 제한된 벡터 프로세싱하는 적합하지 않다. 예를 들어, 오디오 및 비디오 데이타 압축 및 해제와 같은 멀티미디어 어플리케이션은 오디오 데이타의 픽셀 어레이와 스트링에 대해 많은 반복적인 연산을 필요로 한다. 실시간 멀티미디어 연산을 수행하기 위해, 스칼라 데이타(즉, 오퍼런드마다 하나의 픽셀 값 또는 음성 진폭)를 조작하는 범용 프로세서 또는 단지 작은 벡터 프로세서는 고속 클럭 주파수로 동작하여야 한다. 이와 대조적으로, 벡터 프로세서는 각 오퍼런드가 다수의 데이타 엘리먼트(즉, 다수의 픽셀 값 또는 음성 진폭)을 포함하는 벡터인 명령을 실행한다. 따라서, 벡터 프로세서(120)는 범용 프로세서(110)가 동일한 함수를 수행하는데 필요한 약간의 클럭 주파수에서 실시간 멀티미디어 연산을 수행할 수 있다. 이와 같이, 예를 들어 멀티미디어 어플리케이션에 필요한 작업의 효율적인 분할을 가능하게 함으로써, 범용 프로세서(110)와 벡터 프로세서(120)의 조합은 비용 대비 높은 성능을 제공한다. 비록 바람직한 실시예에서는, 프로서세(100)가 멀티미디어 어플리케이션을 위한 것이었지만, 프로세서(100)는 임의 유형의 프로세서일 수 있다.
한 실시예에서는, 범용 프로세서(110)는 호스트 컴퓨터 시스템과 통신하는 미디어 회로 보드를 위해 설계된 실시간 운영 체제를 실행한다. 상기 실시간 운영체제는 호스트 컴퓨터 시스템의 주 프로세서와 통신하고, 상기 미디어 회로 보드상의 또는 그것에 결합된 입/출력(I/O) 디바이스에는 서비스를 제공하고, 벡터 프로세서(120)가 실행하는 작업을 선택한다. 상기 실시예에서는, 벡터 프로세서(120)는 많은 데이타 블럭의 조작을 필요로 하는 연산에 있어서 집중적인 작업을 수행하도록 설계된 반면, 범용 프로세서(110)는 벡터 프로세서(120)에 대해 마스터 프로세서로서의 역할을 한다.
예시적인 실시예에서, 범용 프로세서(110)는 40Mhz에서 동작하는 32-비트 RISC 프로세서이며, 표준 ARM7 명령 세트에 부합한다. ARM7 축소 명령 세트 컴퓨터(RISC) 프로세서와 ARM7 명령 세트를 위한 아키텍춰는 Advanced RISC Machines Ltd.로부터 입수할 수 있는 ARM7DM 데이타 쉬트에 기술되어 있다. 범용 프로세서(110)는 또한 벡터 프로세서(120)와의 인터페이스를 위한 명령을 포함하는 ARM7 명령 세트의 확장을 구현한다. 본 발명의 예시적인 실시예를 위한 ARM7 명령 세트에의 확장은 본 발명에서 참조로 인용되고, 현재 계류중이며, Senugyoon Peter Song, Moataz A. Mohamed, Heon-Chul Park 및 Le Nguyen이 발명한 미합중국 특허출원 제 08/699,295호(1996년 8월 19일 출원), attorney docket 제M-4366 US, 발명의 명칭 System and Method for Handling Software Interrupts with Argument Passing에 기술되어 있다. 범용 프로세서(110)는 ARM7 명령 세트의 확장을 수행하기 이해 제어 버스(112)에 의해 벡터 프로세서(120)에 결합된다. 또한, 인터럽트 라인(114)은 범용 프로세서(110)에 대해 인터럽트를 요구하는 벡터 프로세서(120)에 의해 사용된다.
예시적인 실시예에서, 벡터 프로세서(120)는 단일 명령 복수 데이타(SIMD) 아키텍춰를 가지며, 스칼라 및 벡터 양 모두를 조작한다. 예시적인 실시예에서, 벡터 프로세서(120)는 80Mhz로 동작하며 288-비트 벡터 레지스터 화일을 갖는 파이프라인된 축소 명령 세트 컴퓨터(RISC) 중앙 처리 장치(CPU)로 구성된다. 벡터 레지스터 화일에 있는 각각의 벡터 레지스터는 32 데이타 엘리먼트까지 수용할 수 있다. 벡터 레지스터는 두개의 8-비트 또는 9-비트 정수 데이타 엘리먼트, 16개의 16-비트 정수 데이타 엘리먼트 또는 8개의 32-비트 정수 또는 부동 소수점 엘리먼트를 수용할 수 있다. 부수적으로, 예시적인 실시예는 또한 두개의 벡터 레지스터를 스팬하는 576-비트 벡터 오퍼런드를 연산할 수 있다.
벡터 프로세서(120)용 명령 세트는 벡터를 조작하고 스칼라를 조작하기 위한 명령을 포함한다. 본 발명의 예시적인 실시예를 위한 명령 세트와 상기 명령을 구현하기 위한 아키텍춰는 본 발명의 참조로 일체화되어 있으며 현재 계류중이고, Le trong Nguyen이 발명한 미국 특허출원 제_______(1996년 8월 19일 출원), attorney docket 제. M-4355 US, 발명의 명칭 Single-Instruction-Multiple-Data Processing in a Multimedia Signal Processor에 기술되어 있다.
범용 프로세서(110)는 일반적인 작업을 수행하며 디바이스 드라이버와의 통신을 제어하는 실시간 운용체제를 실행한다. 벡터 프로세서(120)는 벡터 작업을 수행한다. 범용 프로세서(110)와 벡터 프로세서(120)는 스칼라 또는 슈퍼스칼라 프로세서일 수 있다. 본 발명의 예시적인 실시예의 멀티프로세서 연산은 본 발명의 참조로 일체화되어 있으며 계류중이고, Le Trong Nguyen이 발명한 미국 특허출원 제_______(1996년 8월 19일 출원), attorney docket 제. M-4354 US, 발명의 명칭 Multiprocessor Operations in a Multimedia Signal Processor에 보다 상세히 기술되어 있다.
도 1을 다시 참조하면, 캐쉬 시스템(130)은 고속 랜덤 액세스 메모리(RAM) 블럭(블럭(140 및 170)으로 그래픽하게 도시됨), 판독 전용 메모리(ROM)(150) 및 캐쉬 제어 장치(160)를 포함한다. 캐쉬 시스템(130)은 RAM 블럭을 (i) 범용 프로세서(110)를 위한 명령 캐쉬(142)와 데이타 캐쉬(144), 및 (ii) 벡터 프로세서(120)를 위한 명령 캐쉬(172) 및 데이타 캐쉬(174)로 컨피그할 수 있다. 바람직한 실시예에서, RAM 블럭(140, 170)은 스태틱 RAM(SRAM)을 포함한다.
본 발명에 따른 컴퓨터 시스템이 실시예에서, 범용 프로세서(110)와 벡터 프로세서(120)는 단일 어드레스 공간을 통해 액세스 가능한 다양한 온-칩 및 오프-칩자원을 공유한다. 캐쉬 시스템(130)은 메모리를 비트스트림 프로세서(186), UART(184), DMA 콘트롤러(194), 국부 버스 인터페이스(196), 및 디바이스 인터페이스(192)를 통해 인터페이스되는 코더-디코더(CODEC) 디바이스와 같은 임의의 몇몇 메모리 맵된 디바이스에 결합시킨다. 캐쉬 시스템(130)은 프로세서들과 메모리 맵된 자원들 가운데 데이타 액세스를 위한 스위치보드를 구현하기 위해 트랜잭션-지향 프로토콜을 이용할 수 있다. 예를 들어, 트랜잭션-지향 프로토콜은 초기의 캐쉬 트랜잭션의 완료가 지연(즉, 캐쉬 미스로 인해)되었다면, 다른 캐쉬 액세스 트랜잭션이 상기 초기의 트랜잭션의 완료 이전에 진행할 수 있는지를 제공한다. 이와 같이, 스텝-어사이드-앤드-웨이트(step-aside-and-wait)능력이 본 발명에 따른 캐쉬 관리 시스템이 본 실시예에 제공된다. 유사한 트랜잭션-지향 프로토콜은 본 발명의 참조로 일체화되어 있으며, 계류중이고, Amjad Z. Qureshi와 Le Trong Nguyen에 의해 발명된 미국특허출원 제_________호, attorney docket No. M-4398 US(1996년 10월 18일 출원)인 발명의 명칭 Shared Bus System with Transaction and Destination ID에 더 시술되어 있다.
캐쉬 시스템(130)은 범용 프로세서(110)와 벡터 프로세서(120)를 두개의 시스템 버스, 즉 IOBUS(180)와 FBUS(190)에 결합시킨다. IOBUS(180)는 전형적으로 FBUS(190)보다는 저속 주파수로 동작한다. 저속 디바이스는 IOBUS(180)에 결합되어 있는 반면에, 고속 디바이스는 FBUS(190)에 결합되어 있다. 고속 디바이스로부터 저속 디바이스를 분리함으로서, 저속 디바이스가 고속 디바이스의 성능에 부당하게 영향을 미치하는 것을 방지할 수 있다.
캐쉬 시스템(130)은 또한 IOBUS(180), FBUS(190), 범용 프로세서(110), 및 벡터 프로세서(120) 간의 통신을 위한 스위치보드로서의 역할을 한다. 대부분의 캐쉬 시스템(130) 실시예에서, 버스와 프로세서 간의 다수의 동시 액세스가 가능하다. 예를 들어, 벡터 프로세서(120)는 범용 프로세서(110)가 IOBUS(180)와 통신하고 있을 때에 동시에 FBUS(190)와 통신할수 있다. 본 발명의 한 실시예에서, 스위치보드와 캐쉬 기능의 결합은 FBUS(190)와 IOBUS(180)에 대해 직접 맵핑 기술을 이용함으로서 달성된다. 특히, FBUS(190)와 IOBUS(180)상의 디바이스는 적당한 어드레스에서 표준 메모리 판독 및 기록에 의해 범용 프로세서(110)와 벡터 프로세서(120)에 의해 액세스될 수 있다.
FBUS(190)는 주 메모리에 인터페이스를 제공한다. 메모리에의 인터페이스 유닛은 네개의 엔트리 어드레스 큐와 하나의 엔트리 기록 래치로 구성된다. 인터페이스는 범용 프로세스 명령 캐쉬(142)로부터의 하나의 계류중인 리필(refil)(판독) 요구, 벡터 프로세서 명령 캐쉬(172)로부터의 하나의 계류중인 리필(판독) 요구, 벡터 프로세서 데이타 캐쉬(174)로부터의 하나의 기록 요구 및 더티 캐쉬 라인으로 인한 벡터 프로세서 데이타 캐쉬로부터의 하나의 기록 요구를 제공할 수 있다.
FBUS(190)는 메모리 콘트롤로(198) 및 DMA 콘트롤러(194)와 같은 다양한 고속 디바이스, 국부 버스 인터페이스(196), 및 디바이스 인터페이스(192)에 결합되어 있다. 메모리 콘트롤러(196)와 DMA 콘트롤러(194)는 메모리 인터페이스를 제공한다. 국부 버스 인터페이스(196)는 프로세서에 결합된 국부 버스에 인터페이스를 제공한다. 디바이스 인터페이스(192)는 비디오, 오디오 또는 통신 어플리케이션을 위해 프로세서(100)에 결합될 수 있는 다양한 디지탈-아날로그 및 아날로그-디지탈 변환기(DAC 및 ACD, 각각)에 인터페이스를 제공한다.
메모리 콘트롤러(198)는 국부 메모리가 프로세서(100)에 제공되어 있으면 국부 메모리에 대해 인터페이스를 제공한다. 메모리 콘트롤러(198)는 국부 메모리에의 판독 및 기록을 제어한다. 예시적인 실시예에서, 메모리 콘트롤러(198)은 24 내지 26 어드레스 비트와 32 데이타 비트를 사용하도록 구성되어 있고, (i) 프로그래머블 리프레쉬 속도로 수행되는 CAS-비포(before)-RAS 리프레쉬 프로토콜, (ⅱ) 판독-수정-기록 연산을 초기화시키는 부분 기록, 및 (ⅲ) 내부 뱅크 인터리브의 특징을 갖는 동기성 다이나믹 RAM(두개의 1M×16 SDRAM 칩)의 뱅크에 결합되어 그것을 제어한다. 메모리 콘트롤러(198)는 또한 국부 메모리와 FBUS(190) 간의 1 : 1 주파수 매치, 수정 양쪽 뱅크 프리차지, 및 FBUS(190)를 보다 잘 이용하기 위한 어드레스 및 데이타 큐잉을 제공한다. 동기성 DRAM은 이와 같은 주파수(80MHz)에서 효율적으로 동작하는 것으로 알려져 있고, 표준 고속 페이지 DRAM과 확장된 데이타 아웃(EDO) DRAM도 역시 사용될 수 있다. 예시적인 실시예에서 메모리 콘트롤러(198)와 유사한 기능을 갖는 DRAM 콘트롤러는 기술분야에 공지되어 있다.
DMA 콘트롤러(194)는 호스트 컴퓨터의 주 메모리와 프로세서(100)가 국부 메모리 간의 직접 메모리 액세스를 제어한다. 이와 같은 DMA 콘트롤러는 기술분야에 공지되어 있다. 본 발명이 일부 실시예에서, 메모리 데이타 무버(mover)가 포함된다. 메모리 데이타 무버는 한 블럭의 메모리에서 다른 블럭의 메모리로 DMA를 수행한다.
국부 버스 인터페이스(196)는 국부 버스를 통해 호스트 컴퓨터와 통신하기 위한 소정의 프로토콜을 구현한다. 예시적인 실시예에서, 국부 버스 인터페이스(196)는 33-MHz, 32-비트 PCI 버스에 인터페이스를 제공한다. 이와 같은 인터페이스는 기술분야에 공지되어 있다.
디바이스 인터페이스(192)는 전형적으로 멀티미디어 어플리케이션에 적합한 프로세서(100)와 함께 인쇄 회로 기판 상에 놓이는 오디오, 비디오 및 통신 DAC 및 ADC용 디바이스에 하드웨어 인터페이스를 제공한다. 디바이스 인터페이스(192)는 프로세서(100)의 특정 어플리케이션을 위해 커스텀화될 수 있다. 특히, 디바이스 인터페이스(192)는 특수한 디바이스 또는 집적회로(IC)에 대해 인터페이스를 제공할 수 있다. 디바이스 인터페이스(192) 내의 전형적인 유닛은 표준 ADC, DAC 또는 CODEC의 접속을 위한 인터페이스를 제공한다. ADC, DAC, 및 CODEC 인터페이스를 위한 설계는 기술분야에 공지되어 있어 본 발명에서는 서술되지 않는다. 사용될 수 있는 다른 인터페이스는 디지탈 전화용 종합 정보 통신 네트웍(ISDN) 인터페이스와 마이크로채널 버스용과 같은 버스를 위한 인터페이스를 포함하지만 이것에 한정되지 않는다. 프로세서(100)의 한 실시예에서는, 디바이스 인터페이스(192)는 소정의 기능을 수행하도록 프로그램될 수 있는 응용 주문형 집적회로(ASIC)이다.
바람직한 실시예에서, IOBUS(180)는 FBUS(190)가 동작 주파수(80MHz)보다 낮은 주파수(40MHz)에서 동작한다. 또한 바람직한 실시예에서, IOBUS(180)는 시스템 타이머(182), UART(184), 비트스트림 프로세서(186) 및 인터럽트 콘트롤러(188)에 결합된다.
시스템 타이머(182)는 시스템 타이머(182)에 대응하여 레지스터에 기록함으로써 선택되는 스케쥴된 간격으로 범용 프로세서(110)를 인터럽트한다. 예시적인 실시예에서, 시스템 타이머(182)는 세개의 독립적인 16-비트 카운터와 6개의 프로그램 가능한 카운터 모드를 갖는 표준 Intel 8254 호환성 간격 타이머이다.
UART(184)는 공통 16450 UART 집적회로와 호환가능한 직렬 인터페이스이다. 16450 UART IC는 개인용 컴퓨터의 표준 직렬 통신(COM) 포트를 필요로 하는 모뎀 또는 팩시밀리 어플리케이션에 사용된다.
비트스트림 프로세서(186)는 입력 또는 출력 비트스트림에 대한 특정 기능을 수행하는 고정된 하드웨어 프로세서이다. 예시적인 실시예에서, 비트스트림 프로세서(186)는 MPEG 코딩 또는 디코딩의 초기 또는 마지막 스테이지를 수행한다. 특히, 비트스트림 프로세서(186)는 가변 길이(호프만) 코딩 및 디코딩, 지그-재그 포맷으로 비디오 데이타의 패키와 언패킹을 수행한다. 비트스트림 프로세서(186)는 범용 프로세서(110)와 벡터 프로세서(120)의 제어하에 병렬로 동작한다. 프로세서(110 및 120)는 제어 레지스터를 통해 비트스트림 프로세서(186)를 구성한다. 비트스트림 프로세서(186)의 예시적인 실시예가 본 발명의 참조로 일체화되어 있으며, 계류중이고, Cliff Reader, Jae Cheol Son, Amjad Qureshi 및 Le Nguyen이 발명한 미국특허출원 번호 제______호(1996년 8월 19일 출원), attorney docket No. M-4386 US인 발명의 명칭 Methods and Apparatus for Processing Vodeo Data에 서술되어 있다.
인터럽트 콘트롤러(188)는 범용 프로세서(110)의 인터럽트를 제어하고 다수의 인터럽트 우선순위를 지원한다. 마스크 레지스터가 제공되어 각각의 인터럽트 우선권이 개별적으로 마스크될 수 있게 한다. 본 발명의 예시적인 실시예에서, 인터럽트 콘트롤러(188)는 프로그램 가능하며, x86-근거한 개인용 컴퓨터에 공통인 표준 Intel 8259 인터럽트 시스템을 구현한다. 최우선권(레벨 0) 인터럽트는 시스템 타이머(242)에 할당된다. 우선순위 레벨(1, 2, 3 및 7)은 각각 가상 프레임 버퍼, DMA 콘트롤러(194) 및 디바이스 인터페이스(192), 비트스프림 프로세서(186), 국부 버스 인터페이스(196), 및 UART(184)에 할당된다. 인터럽트 우선순위 레벨(4, 5 및 6)은 본 발명의 예시적인 실시예에서 할당되어 있지 않다. 본 발명의 일부 실시예에 포함된 우선순위 레벨 1인 가상 프레임 버퍼는 표준 VGA 프레임 버퍼를 에뮬레이트한다.
도 2를 참조하면, 캐쉬 시스템(130)은 SRAM 블럭(210), ROM(150), 데이타 파이프라인(220), 어드레스 파이프라인(230) 및 캐쉬 제어 유닛(160)을 구비한다. SRAM 블럭(210), ROM(150) 및 캐쉬 에저 유닛(200)은 각각 데이타 파이프라인(220)과 어드레스 파이프라인(230)에 결합되어 있다. 데이타 파이프라인(220)은 IOBUS(180), FBUS(190), 범용 프로세서(110) 및 벡터 프로세서(120)에 결합되어 있다. 어드레스 파이프라인(230)은 범용 프로세서(110) 및 벡터 프로세서(120)에 결합되어 있다.
SRAM 블럭(210)은 네개의 메모리 뱅크로 분할되어 벡터 프로세서(120)와 함께 사용하기 위한 명령 캐쉬(172) 및 데이타 캐쉬(174)는 물론 범용 프로세서(110)와 함께 사용하기 위한 명령 캐쉬(142) 및 데이타 캐쉬(144)를 형성한다. 임의의 사이클에서, 캐쉬 시스템(130)은 하나의 판독 요구 및 하나의 기록 요구를 수락할 수 있다. SRAM 블럭(210)은 판독 포트(440)와 기록 포트(430)를 갖는 이중 포트로 된 메모리로, SRAM 블럭(210)의 동시 판독 및 기록이 지원된다. SRAM 블럭(210)은 또한 각각의 메모리 뱅크(142A, 144A, 172A 및 172A)에 대해 TAG 142B, TAG 144B, TAG 172B 및 TAG 174B로 세분화된다. 태그 RAM은 두개의 판독 포트를 갖는다. 판독 포트 어드레스와 기록 포트 어드레스는 히트 또는 미스 상태를 위해 내부 캐쉬 태그와 비교될 수 있다. 각각의 캐쉬 라인에 대한 태그 정보는 태그, 두개의 유효비트, 두개의 더티 비트, 및 사용 정보를 포함한다. 각각의 유효 비트 및 더티 비트는 단일 판독 또는 기록 연산에 의해 전송된 데이타의 양과 같은 캐쉬 라인의 32-바이트 하프에 상당한다. 각각의 더티 비트는 외부 메모리에 대한 단일 256-비트 기록을 가리키고, 각각의 유효 비트는 외부 메모리로부터의 단일 256-비트 판독을 가리킨다. 사용된 비트는 새로운 엔트리를 생성하는데 사용된 엔트리 교체 기법을 위한 것이다. 캐쉬 뱅크 선택 신호의 네개 세트와 라인 인덱스의 세개 세트는 SRAM 블럭(210)을 액세스하는데 필요하다.
ROM(150)는 ROM 캐쉬 필드(150A) 및 ROM 태그 필드(150B)를 구비한다. ROM(150)은 캐쉬로서 구성될 수 있다. 비록 태그 필드(150B)가 수정될 수 없더라도, 개별적인 어드레스는 데이타 또는 명령이 ROM(150)에 있는 데이타 또는 명령 대신에 사용될 메모리로부터 불러올 수 있도록 유효로 표시될 수 있다. ROM(150)은 범용 프로세서(110)와 벡터 프로세서(120)를 위한 흔히 사용되는 명령 및 데이타를 포함한다. 예시적인 실시예에서 ROM(150)은 ; 리셋 및 초기화 프르시져 ; 자기 진단 프로시져 ; 인터럽트 및 예외 핸들러 ; 및 사운드블러스터 에뮬레이션용 서브루틴 ; V.34 모뎀 신호 프로세싱을 위한 서브루틴 ; 일반적인 전화 기능 ; 2-차원 및 3-차원 그래픽스 서브루틴 라이브러리 ; 및 MPEG-1, MPEG-2, H.261, H.263, G.728 및 G.723과 같은 오디오 및 비디오 표준을 위한 서브루틴 라이브러리를 포함한다.
데이타 파이프라인(220)은 캐쉬 시스템(130)의 데이타 스위치보드 기능을 수행한다. 데이타 파이프라인(220)은 IOBUS(180), FBUS(190), 범용 프로세서(110), 벡터 프로세서(120) 및 SRAM 블럭(210) 및 ROM(150) 간에 다수의 동시 데이타 통신경로를 생성할 수 있다. 이와 유사하게, 어드레스 파이프라인(230)은 어드레스를 위한 스위치 보드 기능을 수행한다. 도 2의 실시예에서, IOBUS(180) 및 FBUS(190)는 어드레스 및 데이타 신호를 위한 시분할 사용한다. 캐쉬 제어(160)는 데이타 파이프라인(220) 및 어드레스 파이프라인(230)에 제어 라인을 제공하여 통신 채널을 적절히 구성한다.
캐쉬 시스템(130)의 몇몇 실시예에서, 트랜잭션에 근거한 프로토콜이 사용되어 모든 판독 기록을 지원한다. 범용 프로세서(110), 벡터 프로세서(120)와 같은 캐쉬 시스템(130)에 결합된 임의의 유닛, 또는 IOBUS(180) 및 FBUS(190)에 결합된 다양한 디바이스는 캐쉬 시스템(130)에 대해 요구할 수 있다. 이와 같은 요구는 요구된 메모리 장소의 디바이스 식별 코드(디바이스 ID) 및 어드레스에 의해 형성된다. 각각의 유닛은 구별되는 디바이스 ID를 가지고 있으며, 캐쉬 시스템(130)은 요구를 표시하는 유닛의 디바이스 ID에 근거한 요구에 우선순위를 부여할 수 있다. 요구된 어드레스에 있는 데이타가 이용가능할 때, 캐쉬 시스템은 디바이스 ID, 트랜잭션 식별 코드(트랜잭션 ID), 어드레스, 및 요구된 데이타에 응답한다. 만일 요구된 어드레스가 SRAM 블럭(210) 또는 ROM(150)에 포함되어 있지 않으면, 캐쉬 시스템(130)은 몇몇 클럭 사이클 동안 특수한 요구에 응답할 수 없는 한편 메모리 어드레스에 있는 데이타가 회수될 것이다. 그러나, 제1요구의 데이타가 회수되고 있는 동안, 캐쉬 시스템(130)은 서로 다른 유닛으로부터 제2요구를 처리할 수 있다. 이와 같이, 계류중인 요구는 다른 디바이스 ID를 갖는 서로 다른 유닛으로부터의 후속하는 요구를 차단하지 않을 것이다. 더우기, 캐쉬 시스템(130)은 판독 요구와 기록 요구를 한 사이클로 동시에 처리할 수 있다.
상술한 바와 같이, SRAM 블럭(210)은 네개의 메모리 뱅크로 분할되어 있다. SRAM 블럭(210)은 판독 포트(216)와 기록 포트(218)를 갖는 이중 포트로 되어 있어, 임의의 사이클에서 SRAM 블럭(210)은 하나의 판독 요구와 기록 요구를 수락할 수 있다. SRAM 블럭(210)의 TAG부(212)는 동시 판독 및 기록 요구를 지원할 수 있도록 두 개의 판독 포트를 가져야만 한다. 이와 같이 기록 포트(214)에 의해 사용된 어드레스는 물론 판독 포트(216)에 의해 사용된 어드레스는 히드 또는 미스 상태를 위한 내부 캐쉬 태그와 동시에 비교될 수 있다. 또한 태그부(212)는 기록 포트(414)에서의 기록 요구가 수행됨에 따라 적당한 태그 필드도 역시 바뀌도록 개별적인 기록 포트를 포함한다.
전체적인 시스템의 제한으로 인해, 캐쉬 시스템(130)은 라이트-백 또는 라이트-스루우(write-back or write-thourgh) 캐쉬 정책중 어느 하나와 함께 사용될 수 있다. 또한, 몇몇 실시예에서, 속도를 증가시키기 위해, 캐쉬 라인-크기는 데이타 폭의 두개로 될 수 있다. 이들 실시예에서, 각각의 캐쉬 라인은 각각의 캐쉬 라인이 두개의 벡터를 포함하고 있기 때문에 북-키핑(book-keeping) 목적으로 두개의 유효 비트와 두개의 더티 비트가 할당되어야만 한다. SRAM 블럭(210)은 또한 전역 클리어 신호가 수신되면 모든 유효 비트를 전역적으로 클리어하여야 한다. 다른 실시예에서, 개별적인 클리어 신호가 SRAM 뱅크(210)의 네개의 각 뱅크에 대해 지원된다. 이들 및 다른 캐쉬 정책은 본 발명의 참조로 일체화되어 있는 Jim Handy에 의한 The Cache Memory Book(1993)에 상세히 서술되어 있다.
도 2를 다시 참조하면, 어드레스 파이프라인(230)은 IOBUS(180) 및 FBUS(190)에 결합된다. 어드레스 파이프라인은 어드레스 버스(232)를 거쳐 범용 프로세서(110), 데이타 어드레스 버스(234)를 거쳐 벡터 프로세서(120)에 더 결합하며, 명령 어드레스 버스(236)는 히트/미스 계산을 위해 태그 메모리(330)에 어드레스를 제공한다. 두개의 어드레스 ; 판독 어드레스 및 기록 어드레스는 캐쉬 태그 메모리(212)에 인가될 수 있다. 어드레스 파이프라인(230)으로부터의 각 어드레스의 경우, 히트/미스 계산 논리 회로는 어드레스(판독 어드레스 또는 기록 어드레스)로부터 인덱스(판독 인덱스 또는 기록 인덱스)를 추출하여 섹션(142B, 144B, 172B 및 174B)를 식별한다. 사용된 태그 메모리(212)부는 어드레스의 소스에 따른다. 히트/미스 계산 논리는 식별된 태그값을 어드레스의 최상위 비트와 비교하여, 연관된 데이타 캐쉬(142A, 144A, 172A 및 174A)가 어드레스에 대응하는 엔트리를 포함하고 있는지를 판단한다.
만일 판독 어드레스용 히트가 존재하면, 태그 메모리(212)는 판독 인덱스를 SRAM(210)에 인가하고, 연관된 캐쉬 라인으로부터의 데이타가 판독 포트(216)와 데이타 파이프라인(220)을 거쳐 이용가능하다. 어드레스 파이프라인(230)은 캐쉬 라인내로부터 요구된 데이타를 식별하는 어드레스 신호의 6개의 최하위 비트로부터 유도된 오프셋 신호를 제공한다. 만일 판독 어드레스를 위한 캐쉬 미스가 존재하면 외부 메모리에의 액세스가 요구된다. 소스(범용 프로세서(110) 또는 벡터 프로세서(120)) 및 판독 어드레스 신호의 유형(데이타 또는 명령)에 대응하는 태그 메모리(212)의 섹션(142B, 144B, 172B 및 174B)에 새로운 엔트리가 생성된다. IOBUS(180) 또는 FBUS(190)로부터의 어드레스를 위해 어떠한 엔트리도 생성되지 않는다.
만일 기록 어드레스 태그를 위한 히트가 존재하면, 태그 메모리(212)는 기록 인덱스를 SRAM(210)으로 루트한다. 데이타 파이프라인(220)으로부터의 데이타는 기록 포트(214)를 거쳐 SRAM(210)에 기록될 수 있고, 유효 비트는 연관된 캐쉬 라인이 더티라는 것을 가리키도록 세트된다. 만일 프로세서(110 또는 120)으로부터의 기록 어드레스를 위한 캐쉬 미스가 존재하면, 데이타가 SRAM(210)에 기록되기 전에 새로운 엔트리가 생성된다. 생성된 엔트리는 어드레스 신호의 소스(프로세서(110 또는 120))에 대응하는 태그 메모리(212)의 섹션(144B 또는 174B)에 존재한다. 유사한 프로시져가 ROM에 대한 캐쉬 액세스에 사용될 수 있다.
도 3은 데이타 파이프라인(220)의 한 실시예의 블럭도이다. 주지한 바와 같이, 캐쉬 시스템(130)은 IOBUS(180), FBUS(190), 범용 프로세서(110), 및 벡터 프로세서(120)를 위한 캐슁 시스템 및 스위치보드 모두를 위한 것이다. 버스와 프로세서는 캐쉬를 통해 또는 캐쉬가 다른 디바이스에 의해 사용되고 있으면 직접 통신할 수 있어야 한다. 프로세서는 일반적으로 버스 상의 디바이스보다 고속이고, 따라서, 프로세서는 일반적으로 기록에 대한 캐쉬를 사용하여 캐쉬 라이트-백 시스템으로 하여금 적당한 버스 디바이스에 데이타를 위치시키게 한다. 이와 유사하게, 프로세서는 일반적으로 디바이스로부터 직접 보다는 캐쉬로부터 정보를 요구한다. 만일 캐쉬가 요구된 데이타를 포함하고 있지 않으면, 프로세서는 전형적으로 요구된 데이타를 캐쉬로 회수하여 프로세서로 데이타를 산출하는 캐쉬 시스템에 의존한다. 그러나, 캐쉬가 비지(busy)일 때 프로세서를 직접 액세스할 수 있다.
데이타는 IO MUX(320)를 거쳐 범용 프로세서(110)에서 IOBUS(180)로 전송된다. IOBUS(180)에서 범용 프로세서(110)로의 데이타는 GP 판독 MUX(360)를 통해 전달된다. 데이타는 캐쉬 판독 MUX(340)와 GP 판독 MUX(36)를 통해 SRAM 블록(210) 또는 ROM(150)중 어느 하나에서 범용 프로세서(110)로 전달된다. 데이타는 캐쉬 기록 MUX(350)를 통해 범용 프로세서(110)에서 SRAM 블록(210)으로 전달된다. 캐쉬 판독 MUX(340), 캐쉬 기록 MUX(350), IO MUX(320) 및 GP 판독 MUX(360)은 종래의 멀티플렉서일 수 있고, 타이밍 제한으로 내부 래치 또는 레지스터를 포함할 수 있다. 멀티플렉서의 선택 제어 라인(도시않됨)은 캐쉬 제어 유닛(160)에 의해 지시된다. 데이타는 캐쉬 기록 MUX(350) 및 FBUS MUX(310)를 통해 범용 프로세서(110)에서 FBUS(190)로 전달된다. FBUS(190)에서 범용 프로세서(110)로의 데이타는 버퍼(330), 캐쉬 판독 MUX(340), 및 GP 판독 MUX(360)를 통해 채널된다. 이들 기능을 수행하기 위해, 버퍼(330)는 종래의 버퍼, 래치 또는 레지스터일 수 있다.
범용 프로세서(110)는 제어 라인(112)(도 1 참조)을 통해 벡터 프로세서(120)를 제어할 수 있다. 범용 프로세서(110)와 벡터 프로세서(120) 간의 직접 데이타 전송은 일반적으로 필요하지 않지만, 두개의 프로세서가 공통 메모리 맵을 공유하기 때문에 SRAM 블럭(210) 또는 다른 디바이스를 통해 달성될 수 있다.
ROM(150) 및 SRAM 블럭(210)에서 IOBUS(180)으로의 데이타는 캐쉬 판독 MUX(340) 및 IO MUX(320)를 통해 이동된다. IOBUS(180)에서 SRAM 블럭(210)으로의 데이타는 캐쉬 기록 MUX(350)을 통해 이동된다. IOBUS(180)에서 FBUS(190)으로의 데이타는 기록 MUX(350) 및 FBUS(310)를 통해 전달된다. FBUS(190)로부터 IOBUS(180)를 위한 데이타는 버퍼(330), 캐쉬 판독 MUX(340) 및 IO MUX(320)를 통해 전달된다. 벡터 프로세서(120)로부터의 IOBUS(180)를 위한 데이타는 캐쉬 기록 MUX(350)와 IO MUX(320)를 통해 전달된다. IOBUS(180)에서 벡터 프로세서(120)로의 데이타는 캐쉬 판독 MUX(340)를 통해 전달된다. 본 발명의 몇몇 실시예에서, 벡터 프로세서(120)에서 IOBUS(180)으로의 데이타를 위한 직접 파이프라인 데이타 파이프라인(220)의 설계를 간단히 하기 위해 제거되어 있다. 벡터 프로세서(120)의 대역폭이 IOBUS(180)의 그것보다 훨씬 크기 때문에, 벡터 프로세서(120) 또는 IOBUS(180)로부터의 직접 통신 경로는 벡터 프로세서(120)의 프로세싱 시간과 관련하여 비효율적으로 된다.
SRAM 블럭(210) 및 ROM(150)으로부터의 FBUS(190)를 위한 데이타는 캐쉬 판독 MUX(340)와 FBUS MUX(310)를 통해 전달된다. FBUS(190) 또는 SRAM 블럭(210)으로부터의 데이타는 버퍼(330)와 캐쉬 기록 MUX(350)를 통해 전달된다. FBUS(190)로부터의 데이타는 버퍼(330)와 캐쉬 판독 MUX(340)를 통해 벡터 프로세서(120)에 직접 도달할 수 있다. FBUS(190)를 위한 데이타는 또한 캐쉬 기록 MUX(350)와 FBUS MUX(310)를 통해 벡터 프로세서(120)로부터 직접 올 수 있다.
벡터 프로세서(120)로부터의 데이타는 캐쉬 기록 MUX(350)를 통해 SRAM 블럭(210)으로 이동된다. SRAM 블럭(210) 및 ROM(150)으로부터의 데이타는 캐쉬 판독 MUS(340)를 통해 벡터 프로세서(120)에 전달된다.
도 4는 데이타 파이프라인(220)의 제2실시예의 세부 블럭도이다. 도 4의 실시예의 기능이 도3의 실시예의 기능과 유사하기 때문에, 상기 두 실시예 간의 차이점만이 상세히 서술될 것이다. 그러나, 각 실시예에 있는 구성요소의 전체 구성도 역시 설명된다. 도 4에서, 캐쉬 판독 MUX(340)는 캐쉬 판독 MUX(450) 및 MUX 래치(451)에 의해 교체된다. 버퍼(330)는 판독 래치(460)로 교체된다. FBUS MUX(310)는 FBUS MUX(440), 기록 백(WB) 데이타 래치(441), 메모리 기록 래치(442), 및 메모리 기록 래치(443)로 교체된다. 도 4의 실시예에 있는 래치는 데이타 파이프라인을 파이프라인하는데 사용된다. 캐쉬 기록 MUX(350)는 캐쉬 기록 MUX(410), 기록 데이타 래치(412), 얼라이너(aligner)(413), 및 IO 기록 래치(411)로 교체된다. IO MUX(320)는 IO 판독 래치(431) 및 IO 판독 래치(432)로 교체된다. GP 판독 MUX(360)은 IO 기록 래치(421), 및 마이크로캐쉬(422)로 교체된다.
마이크로캐쉬(422)는 주 캐쉬, SRAM 블럭(210) 및 ROM(150)을 범용 프로세서(110)에 결합시킨다. 마이크로캐쉬(422)는 마이크로-명령 캐쉬와 마이크로-데이타 캐쉬로 분할되며, 이들 각각은 태그부(522)(도 5 참조), 태그 비교기, 및 유효 비트를 포함한다. 마이크로캐쉬(422)는 프리훼치 버퍼로서 작용한다. 범용 프로세서(110)로부터의 요구의 어드레스는 먼저 마이크로캐쉬(422)의 태그부(522)와 비교된다. 만일 마이크로캐쉬 미스가 발생하면(즉, 마이크로캐쉬 태그(522)내에 어떠한 일치도 없음), 어드레스 및 다른 제어 정보를 갖는 요구의 어드레스가 주 캐쉬로 보내진다. 마이크로캐쉬(422)를 간단히 하기 위해, 마이크로캐쉬(422)에 있는 태그를 일치하는 범용 프로세서(110)로부터의 데이타 기록은 기록된 데이타가 주 캐쉬로 보내질 수 있도록 마이크로캐쉬 어드레스를 무효로 한다. 이와 같이, 마이크로캐쉬(422)에 대한 복잡한 라이트 백 또는 라이트 스루우 관계없이 캐쉬 코히어런스가 유지될 수 있다.
도 5는 어드레스 파이프라인(230)의 한 실시예의 블럭도이다. FBUS 인터페이스(550)는 네개의 엔트리 어드레스 큐와 기록 백 래치로 구성된다. FBUS 인터페이스(550)는 명령 캐쉬(262)로부터의 계류중인 판독, 명령 캐쉬(142)로부터의 계류중인 판독, 데이타 캐쉬(141)로부터의 기록 요구, 및 데이타 캐쉬(144)로부터의 라이트-백 요구를 동시에 지원할 수 있다. 기록 요구를 위한 어드레스는 기록 어드레스 MUX(510)으로 보내지는 한편, 판독 요구를 위한 어드레스는 판독 어드레스 MUX(520)로 보내진다. 캐쉬 제어 유닛(160)(도 2)은 요구의 디바이스 ID에 근거하여, 범용 프로세서(110), 벡터 프로세서(120), IOBUS(180), 및 FBUS(190)로부터의 요구간의 중재를 수행한다. 캐쉬 제어 유닛(160)은 다음에 상기 요구를 처리하기 위한 데이타 파이프라인(210)과 어드레스 파이프라인(230)의 다양한 멀티플렉서를 구성한다. 중재 방법은 각 디바이스의 중요성의 평가에 근거하여 결정될 수 있다. 전형적으로, 범용 프로세서(110)에는 최우선권이 주어진다. 상기 서술된 바와 같이, 캐쉬 시스템(130)은 동시 판독 및 기록 동작을 할 수 있다. 따라서, 개별적인 비교기가 판독 및 기록 요구를 위해 요구된다. 비교기(511)는 기록 어드레스 MUX(510)로부터 기록 어드레스를 기록 태그 포트(506-1)를 통해 수신된 어드레스와 비교하여 현재의 요구의 기록 어드레스가 캐쉬에 있는지를 결정하는데 사용된다. 만일 어드레스가 캐쉬에 있으면, 캐쉬는 일치하는 캐쉬 장소에서 새로운 데이타로 갱신된다. 만일 어드레스가 캐쉬에 있지 않으면, 어드레스 및 데이타는 사용되지 않은 캐쉬 장소 또는 가장 최근에 액세스되지 않은 장소에 있는 캐쉬 기록된다. 결국, 데이타는 라이트 백 또는 라이트 수루우 캐쉬 기법을 이용하여 적당한 직접 맵핑된 디바이스에 보내진다.
비교기(521)는 판독 어드레스 MUX(520)로부터의 판독 요구의 판독 어드레스와 판독 태그 포트(506-2)를 통해 수신된 어드레스를 비교하는데 사용된다. 만일 태그가 판독 어드레스와 일치하면, TAG와 연관된 데이타가 데이타 파이프라인(220)을 이용하여 요구하는 디바이스에 보내진다. 상술된 바와 같이, 만일 트랜잭션 프로토콜이 사용되면 데이타는 디바이스 ID, 트랜잭션 ID, 및 요구된 어드레스로서 변환될 것이다. 만일 태그가 판독된 어드레스와 일치하면, 캐쉬 시스템(130)은 요구된 데이타를 적당한 직접 메모리 맵핑된 디바이스로부터 수신하여야 한다. 요구된 데이타가 회수되면, 요구된 데이타, 디바이스 ID, 트랜잭션 ID, 및 어드레스가 요구하는 디바이스에 보내진다. 첫번째 요구에 대한 데이타가 회수되고 있는 동안, 캐쉬 시스템(130)은 캐쉬를 필요로 하는 두번째 디바이스가 첫번째 디바이스에 의해 차단되지 않도록 두번째 판독 요구를 서비할 수 있다.
범용 프로세서(110) 판독 요구는 먼저 마이크로캐쉬(422)의 마이크로-명령캐쉬로 보내진다. 마이크로-명령은 캐쉬는 범용 프로세서(110)와 SRAM(210) 간에 제공된다. 주지한 바와 같이, 마이크로캐쉬(422)는 데이타 및 어드레스 파이프라인(220 및 230)에 제공된다. 마이크로-명령 태그 및 마이크로-데이타 태그는 어드레스 파이프라인(230) 및 태그부(522)에 제공된다. 마이크로-명령 캐쉬 RAM 및 마이크로-데이타 캐쉬 RAM은 데이타 파이프라인(220)에 제공된다. 요구 어드레스는 각각의 마이크로캐쉬 RAM의 마이크로-태그와 비교된다. 만일 어드레스 일치가 발견되면, 요구는 마이크로캐쉬(422)에 의해 서비스된다. 즉, 판독 요구의 경우, 만일 마이크로캐쉬 히트가 존재하면, 요구된 데이타가 마이크로-데이타 캐쉬로부터 판독되어 캐쉬 제어 유닛(160)에 의해 범용 프로세서(110)에 제공된다. 마이크로 캐쉬 미스가 발생되면, 판독 요구는 캐쉬 제어 유닛(160)을 보내진다.
범용 프로세서(110) 기록 요구는 캐쉬 제어 유닛(160)에 직접 보내진다. 마이크로캐쉬(422) 코히어런시는 기록 요구의 각 어드레스에서 마이크로캐쉬(422)에 있는 데이타를 무효로 함으로써 제공된다. 라이트-스루우도 라이트-백 능력도 마이크로캐쉬(422)에는 제공되지 않는다.
캐쉬 제어 유닛(160)은 요구하는 모든 다바이스로부터의 요구를 중재한다. 바람직한 실시예에서는, 범용 프로세서(110)는 마이크로캐쉬(422) 때문에 범용 프로세서(110)가 캐쉬 엑세스를 거의 요구하지 않기 때문에 최우선권을 갖는다. 캐쉬 제어 유닛(160)은 복수의 사이클 요구 또는 어드레스 큐가 차있는(full) 상태가 발생하지 않는 한 캐쉬 액세스 요구를 허락한다. 바람직한 실시예에서, 복수 사이클 요구 또는 어드레스 큐가 차있는 상태가 발생하면, 캐쉬 제어 유닛(160)은 내부 보류 사이클로 진입하고 캐쉬 엑세스 요구를 허락하지 않는다.
바람직한 실시예에서, 캐쉬 시스템(130)은 다음과 같은 3스테이지 ; 요구사이클, 태그 사이클 및 데이타 사이클의 파이프라인 사이클로 동작한다. 캐쉬 히트의 경우, 캐쉬 시스템(130)은 모든 사이클 마다 명령 또는 데이타를 반환할 수 있다.
캐쉬 제어 유닛(160)은 캐쉬 SRAM 엑세스를 위한 범용 프로세서(110), 벡터 프로세서(120), FBUS(190), 및 IOBUS(180)들 간의 중재를 수행한다. 캐쉬 제어 유닛(160)은 이들 네개의 마스터로부터의 버스 요구를 모니터하고 승자에게 특정한 식별 번호를 갖는 버스를 허락한다. 캐쉬 제어 유닛(160)은 또한 캐쉬를 액세스하고 택 비교를 수행하기 위해 캐쉬 어드레스 버스 및 판독/기록 제어 신호를 발생한다.
만일 캐쉬 히트가 존재하면, 중재에서 이간 버스 마스터는 판독/기록 동작을 위해 캐쉬(210)를 액세스할 수 있을 것이다. 만일 캐쉬 미스가 존재하면, 캐쉬 제어 유닛(160)은 제1동작으로부터 미스하는 데이타가 주 메모리로부터 돌아오는 것을 대기하지 않고 요구하는 다음 버스 마스터에 서비스를 제공할 것이다. 따라서, 캐쉬 미스를 갖는 버스 마스터는 계류중인 버스가 중지되지 않는 트랜잭션으로부터 데이타를 수신하기 위해 식별 번호를 유지하여야만 한다. 라인 훼치가 주 메모리로부터 데이타를 얻기 위해 수행할 것이다. 라인 크기는 64바이트로 정의되어 있어, 캐쉬 제어 유닛(160)은 주 메모리에서 캐쉬(210)로 데이타를 얻기 위해 연속하는 8메모리 액세스(각각 64바이트)를 실행할 것이다. 첫번째 요구된 데이타가 주 메모리에서 캐쉬로 반환되면, 캐쉬 제어 유닛(160)은 미스하는 데이타 버스 마스터에게 동일한 식별 번호를 갖는 허락 신호를 보낼 것이다. 이 버스 마스터는 데이타를 수락하거나 또는 무시할 수 있다.
캐쉬 제어 유닛(160)은 범용 프로세서(110), 벡터 프로세서(120) 및 IOBUS(180) 및 FBUS(190) 상의 디바이스를 포함하는 다양한 유닛으로부터 요구를 수신한다. 예를 들어, 도 6을 참조하면, 캐쉬 제어 유닛(160)은 범용 프로세서 인터페이스 상태 머신에 따라 범용 프로세서(110)와 인터페이스한다. 특히, 캐쉬 제어 유닛(160)은 요구가 존재하지 않고, 판독 데이타가 반환되거나 또는 보류없이 기록 요구가 존재하면 시작 상태(60)에서 제어를 시작한다. 시작 상태(60)에 있는 동안, 캐쉬 제어 유닛(160)은 범용 프로세서(110)로부터의 요구를 대기한다.
범용 프로세서(110)는 첫번째 클럭의 시작에서 캐쉬 제어 유닛(160)에 요구신호와 판독/기록 신호를 확정한다. 만일 캐쉬가 비지가 아니면, 캐쉬 제어 유닛(160)은 첫번째 클럭의 끝에서 요구를 수락할 것이다. 캐쉬 제어 유닛(160)은 허락 신호를 구동시키고 허락된 요구에 대해 요구 식별 번호를 부여함으로써 요구를 허락할 것이다. 바람직한 실시예에서 10 비트 요구 ID가 요구자에게 구동된다. 만일 요구 ID의 상위 4비트가 요구자의 유닛 ID와 일치하면, 요구가 허락된다. 요구자는 그것이 상기 요구과 연관된 트랜잭션 ID이기 때문에 요구 ID의 하위 6비트를 래치하여야 한다. 만일 요구가 허락되면, 요구자는 어드레스와 데이타 유형을 같은 다른 제어 정보를 캐쉬 제어 유닛(160)에 구동시켜야 한다.
시작 상태(60)가 현재의 상태이고 어떠한 요구도 이루어지지 않으면, 다음 상태가 시작 상태(60)이다. 시작 상태(60)가 현재 상태이고 캐쉬 제어 유닛(160)이 판독 또는 기록에 대한 요구를 수신하여 허락하지만 보류(즉, 캐쉬가 다른 캐쉬요구를 처리하느라 비지인 경우)로서 허락을 무효로 할 때. 다음 상태가 보류 상태(61)이다. 시작 상태(60)가 현재 상태이고 캐쉬 제어 유닛(160)이 판독 또는 기록에 대한 요구를 수신하여 범용 프로세서(110)에 허락하면, 다음 상태가 태그 상태(62)이다.
보류 상태(61)에 있는 동안, 캐쉬 제어 유닛(160)은 요구를 허락하였고 상기 요구에 요구 ID를 부여하였다. 만일 캐쉬가 다른 캐쉬 트랜잭션을 처리하느라 비지이면, 캐쉬 제어 유닛(160)은 보류 신호로서 캐쉬 요구를 보류할 것이다. 만일 캐쉬 제어 유닛의 보류 신호가 제2클럭의 끝에 의해 확정되지 않으면, 요구는 완전히 캐쉬 제어 유닛(160)에 의해 점유되고 요구된 데이타는 나중 사이클 동반 반환될 것이다. 그러나, 만일 캐쉬 제어 보류 신호가 확정되면, 요구자는 제1클럭에서 허락된 요구가 무효로 된 듯이 어드레스와 제어 정보를 계속 구동시켜야 한다. 다음 사이클에서, 이전의 요구 ID정보가 여전히 유효이기 때문에 동일한 요구가 다시 이루어질 필요는 없다. 보류 신호는 제2클럭 동안 캐쉬 제어 유닛(160)에 의해 확정될 때까지 그것은 제1클럭 동안 항상 확정될 것이다. 캐쉬 제어 유닛 보류 신호는 타이밍이 중요한 신호이다. 캐쉬 제어 유닛(160)이 현재의 사이클에서 다른 것들을 처리하는데 비지이고 허락된 요구가 아직 처리될 수 없다는 것을 요구자에게 알리는데 사용된다.
보류 상태(61)가 현재 상태이고 캐쉬가 비지이지만 보다 많 은 요구를 받아들일 수 있을 때, 다음 상태는 시작 상태(60)이다. 이로써 캐쉬 시스템(130)은 캐쉬 요구를 계속 받아들일 수 있게 된다. 보류 상태(61)가 현재 상태이고 부수적인 요구가 캐쉬 시스템(130)에 의해 받아들여질 수 있으면, 다음 상태가 보류 상태(61)이다. 보류 상태(61)가 현재 상태이고 캐쉬가 다음 요구를 처리할 준비가 되면, 다음 상태가 태그 상태(62)이다.
태그 상태(62)에 있는 동안, 캐쉬 제어 유닛(160)은 어드레스 일치를 위해 캐쉬 태그를 점검한다. 캐쉬 제어 유닛(160)은 어드레스와 뱅크 선택 신호를 사용하여 태그 판독을 위해 캐쉬 뱅크(즉, 범용 또는 벡터)중 하나의 뱅크로부터 라인선택을 할 것이다. 태그 히트가 발생하거나 또는 발생하지 않는 지가 제2클럭의 끝에서 알려질 것이다. 히트의 경우, 데이타는 다음 사이클에서 반환될 것이다. 어드레스 큐 상태가 또는 사이클에서 평가된다. 태그 미스 또는 거의 차있는 어드레스 큐 상태는 캐쉬 제어 유닛(160)의 판독 보류를 강제할 것이다. 캐쉬 제어 유닛(160)은 임의의 새로운 판독 요구를 처리하지 않을 것이지만, 중지된 태그 비교를 재시도할 것이다. 부수적으로, 각각의 캐쉬 라인(64B)이 두개의 벡터를 포함하기 때문에, 엑세스하는 벡터의 유효 비트는 태그 히트를 얻기 위해 유효이어야 한다. 이중 벡터(64B) 데이타 판독의 경우, 유효 비트 모두는 태그 히트를 얻기 위해 유효이어야 한다.
태그 상태(62)가 현재 상태이고 어떠한 어드레스 일치도 발견되지 않는 경우(즉, 캐쉬 미스가 발생), 다음 상태가 미스 상태(63)이다. 태그 상태(62)가 현재 상태이고 어드레스 일치가 발견되는 경우(즉, 캐쉬 히트가 발생), 다음 상태가 데이타 상태(64)이다.
미스 상태(63)에 있는 동안, 캐쉬 제어 유닛(160)은 시스템 메모리에 리필 요구(freil request)를 보낸다. 만일 태그 사이클에서 태그 미스가 존재하고 어드레스 큐가 채워져 있지 않으면, 캐쉬 제어 유닛(160)은 제1클럭 동안 미스하는 어드레스, id정보, 및 다른 제어 정보를 네개의 엔트리 어드레스 큐에 배치함으로써 캐쉬 라인 훼치를 시작할 것이다. 현재, 각각의 어드레스 큐가 약 69비트 정보를 포함하고 있다. 제2클럭 동안, FBUS,요구가 다음의 제1클럭으로 이루어질 수 있도록 메모리 어드레스 래치가 로드될 것이다.
미스 상태(63)가 현재 상태이고 캐쉬가 아직 다시 채워져 있지 않은 경우, 다음 상태는 미스 상태(63)이다. 캐쉬 제어 범용 프로세서 인터페이스 상태 머신은 캐쉬가 주 메모리로부터 다시 채워질 때까지 미스 상태(63)에 남는다 : 미스 상태(63)가 현재 상태이고 캐쉬가 다시 채워진 경우 다음 상태는 데이타 상태(64)이다.
데이타 상태(64)에 있는 동안, 판독 데이타는 캐쉬 제어 유닛(160)으로 반환된다. 캐쉬 제어 유닛(160)은 판독 데이타를 요구하는 디바이스, 이 경우 범용 프로세서(110)에 보낸다. 데이타는 하위의 16B가 제1클럭에서 구동되고 상위의 16B,가 제2클럭에서 구동될 것이다. 64B 데이타 요구의 경우, 하나의 부수적인 사이클이 전송을 종료하는데 사용된다. 캐쉬 제어 유닛(160)은 다음의 제1클럭에서 데이타가 반환될 것이라는 것을 요구자에게 알리기 위해 항상 요구 ID를 반사이클 먼저(제2사이클) 구동시킬 것이다. 요구자는 항상 적당한 반환된 데이타에 대해 요구 ID를 비교한다. 부수적으로, 태그 히트는 또한 반환된 데이타의 표시로서 사용된다. 데이타 상태(64)가 현재 상태일 때, 다음 상태는 시작 상태(60)이다.
도 7을 참조하면, 캐쉬 제어 유닛(160)은 FBUS 인터페이스 상태 머신에 따라 FBUS(190)와 인터페이스한다. 캐쉬 제어 유닛은 FBUS(190), 즉, 상술된 범용 프로세서(110)에 의한 캐쉬 액세스 동안 캐쉬 미스의 경우 액세스를 요구한다. 특히, 캐쉬 제어 유닛은 아이들 상태(70)에서 제어를 시작한다. 아이들 상태(70)가 현재 상태이고 어떠한 요구도 수신되지 않으면, 다음 상태는 아이들 상태(70)이다. 캐쉬 미스가 발생하면, 캐쉬 제어 유닛은 FBUS(190)를 거쳐 주 메모리에서 다시 채우는 것을 수행하여야 한다. 따라서, 아이들 상태(70)가 현재 상태이고 캐쉬 미스가 발생하면, 다음 상태는 요구 상태(71)이다.
요구 상태(71)에 있는 동안, 캐쉬 제어 유닛(160)은 FBUS 중재기에 판독 또는 기록 요구를 한다. 요구 상태(71)가 현재 상태이고 캐쉬 제어 유닛(160)이 FBUS(190)에의 액세스가 아직 허락되지 않았으면(만일 FBUS가 비지이면), 다음 상태는 요구 상태(71)이다. 요구 상태(71)가 현재 상태이고 캐쉬 제어 유닛(160)이 FBUS(190)에의 액세스가 허락되었으면, 다음 상태는 제1허락 상태(72)이다.
제2허락 상태(72)에 있는 동안, 캐쉬 제어 유닛(160)에는 8바이트 판독 또는 기록 동안 액세스가 허락된다. 최소의 액세스는 8바이트이다. 제1허락 상태(72)가 현재 상태이고 허락 크기가 8바이트이면, 다음 상태는 아이들 상태(70)이다. 제1허락 상태(72)가 현재 상태이고 허락 크기가 8바이트 이상이면, 다음 상태는 제2허락 상태(73)이다.
제2허락 상태(73)에 있는 동안, 캐쉬 제어 유닛에는 다른 8바이트 내지 총16바이트 동안 액세스가 허락된다. 제2허락 상태(73)가 현재 상태이고 허락크기가 16바이트이면, 다음 상태는 아이들 상태(70)이다. 제2허락 상태(73)가 현재 상태이고 허락 크기가 16바이트 이상이면, 다음 상태는 제3허락 상태(74)이다.
제3허락 상태(74)에 있는 동안, 캐쉬 제어 유닛에는 다른 8바이트 내지 총24바이트 동안 액세스가 허락된다. 제3허락 상태(74)가 현재 상태이고 허락 크기가 24바이트이면, 다음 상태는 아이들 상태(70)이다. 제3허락 상태(74)가 현재 상태이고 허락 크기가 24바이트 이상이면, 다음 상태는 제4허락 상태(75)이다.
제4허락 상태(75)에 있는 동안, 캐쉬 제어 유닛에는 다른 8바이트 내지 총 32바이트 동안 액세스가 허락된다. 제4허락 상태(75)동안, 데이타는 마지막 사이클 동안 구동되고 있다. 제4허락 상태(75)가 현재 상태이면, 다음 상태는 아이들 상태(70)이다.
도 8을 참조하면, 상태도는 캐쉬를 다시 채우는 것과 범용 프로세서(110) 및 벡터 프로세서(120)로의 전송을 위해 FBUS(190)으로부터 데이타 파이프라인(220)에 의한 데이타의 수신을 상세히 도시하는 데이타 수신기 상태 머신을 도시한다. 특히, 데이타 파이프라인(220)은 아이들 상태(80)에서 제어를 시작한다. 아이들 상태(80)가 현재 상태이고 FBUS(190)가 캐쉬 시스템(130)에 데이타를 구동시킬 준비가 되어 있지 않을 때, 다음 상태는 아이들 상태(80)이다. 아이들 상태(80)가 현재 상태이고 FBUS가 캐쉬 시스템(130)에 데이타를 구동시킬 준비가 되어 있을 때, 다음 상태는 제1수신 상태(81)이다. 아이들 상태(80)에서 제1수신 상태(81)로의 천이는 FBUS가 메모리 요구를 수신하고 그 요구에 대해 서비스를 제공한 후에 발생한다. 결국, 천이는 각각의 데이타에 대한 초기 요구가 발생하고 허락된 후에 임의의 사이클 수 동안 발생할 수 있다.
제1수신 상태(81)에 있는 동안, 데이타 파이프라인(220)은 Fdata63 : 0를 통해 FBUS(190)으로부터 8바이트의 제1세트를 수신한다. 제1수신 상태(81)가 현재 상태이고 허락 크기가 8바이트이면, 다음 상태는 상태(85)를 리필한다. 제1수신 상태(81)가 현재 상태이고 허락 크기가 8바이트 이상이면, 다음 상태는 제2수신 상태(82)이다.
제2수신 상태(82)에 있는 동안, 데이타 파이프라인(220)은 Fdata63 : 0를 통해 FBUS(190)으로부터 8바이트의 제2세트를 수신한다. 제2수신상태(82)가 현재 상태이고 허락 크기가 16바이트이면, 다음 상태는 상태(85)를 리필한다. 제2수신 상태(82)가 현재 상태이고 허락 크기가 16바이트 이상이면, 다음 상태는 제3수신 상태(83)이다.
제3수신 상태(83)에 있는 동안, 데이타 파이프라인(220)은 Fdata63 : 0를 통해 FBUS(190)으로부터 8바이트의 제3세트를 수신한다. 제3수신 상태(83)가 현재 상태이고 허락 크기가 24바이트이면, 다음 상태는 상태(85)를 리필한다. 제3수신 상태(83)가 현재 상태이고 허락 크기가 24바이트 이상이면, 다음 상태는 제4수신 상태(84)이다.
제4수신 상태(84)에 있는 동안, 데이타 파이프라인(220)은 Fdata63 : 0를 통해 FBUS(190)으로부터 8바이트의 제4세트를 수신한다. 제4수신 상태(84)가 현재 상태이고 모든 바이트의 그룹이 FBUS(190)로부터 수신되었을 때, 다음 상태는 상태(85)를 리필(refil)한다.
리필 상태(85)에 있는 동안, 데이타 파이프라인(220)은 범용 프로세서(110)와 같이 요구하는 디바이스에 의해 요구되었던 SRAM(210)의 캐쉬 라인을 리필한다. 리필 상태(85)가 현재상태일 때, 다음 상태는 준비 상태(86)이다.
준비 상태(86)에 있는 동안, 데이타 파이프라인(220)는 데이타를 요구하는 디바이스에 반환할 준비가 되어 있다. 적당한 트랜잭션 ID를 갖는 요구하는 다바이스는 데이타를 액세스할 수 있다. 준비 상태(86)가 현재 상태이고 요구하는 프로세서가 요구된 데이타를 아직 준비하지 않았을 때, 다음 상태는 준비 상태(86)이다. 준비 상태(86)가 현재 상태이고 요구하는 프로세서가 요구된 데이타를 준비하고 있으면, 다음 상태는 아이들 상태(80)이다.
도 9를 참조하면, 상태도는 캐쉬 시스템(130)에 대한 판독 및 기록 액세스 동안 캐쉬 제어 유닛(160)의 상태를 도시한다. 특히, 캐쉬 시스템(130)은 아이들 상태(90), 즉 시스템 리셋후 제어를 시작한다. 아이들 상태(90)가 현재 상태이고 어떠한 캐쉬 엑세스도 이루어지지 않거나 또는 캐쉬 액세스가 이루어지지만 취소될 때, 다음 상태가 아이들 상태(90)이다. 아이들 상태(90)가 현재 상태이고 캐쉬 제어 유닛(160) 보류 신호에 의해 취소되지 않고 캐쉬 액세스가 이루어지고 액세스가 허락될 때, 다음 상태는 런 상태(91)이다.
런 상태(91)에 있는 동안, 캐쉬 시스템(130)은 요구하는 다비이스로부터 어드레스를 수신하고 어드레스와의 일치를 위해 TAG부(212)를 점검한다. 런 상태(91)에 있는 동안, 캐쉬 제어 유닛은 다수의 요구를 받아들일 수 있다. 예를 들어, 만일 캐쉬 판독 요구가 캐쉬 제어 미스가 되는 경우, 캐쉬는 리필 상태(96)로 천이하고 주 메모리로부터 어드레스를 위해 데이타를 요구한다. 주 메모리가 FBUS와 응답하는 동안, 캐쉬는 런 상태(91)로 돌아가 다른 캐쉬 요구를 받아들이고 서비스한다.
런 상태(91A)가 현재 상태이고 클린(clean) 판독 미스가 발생할 때, 다음 상태는 정체 상태(92)이다. 런 상태(91A)가 현재 상태이고 캐쉬 판독 히트가 발생할 때, 다음 상태는 데이타 준비 상태(93)이다. 런 상태(91A)가 현재 상태이고 더티 라인에 대해 캐쉬 판독 히트가 발생할 때, 다음 상태는 라이트 백 사태(94)이다.
런 상태(91B)가 현재 상태이고 캐쉬 기록 미스가 발생할 때, 다음 상태는 기록 리필 상태(96)이다. 런 상태(91B)가 현재 상태이고 캐쉬 기록 히트가 발생할 때, 만일 외부의 메모리 기록이 로우(low) 벡터 위치를 엑세스하고 있으면, 다음 상태는 로우(low) 기록 상태(97)이다. 런 상태(91B)가 현재 상태이고 캐쉬 기록 히트가 발생하면, 만일 외부 메모리 기록이 하이(high) 벡터 위치를 엑세스하고 있으면 다음 상태는 하이(high) 기록 상태(98)이다.
정체 상태(92)에 있는 동안, 캐쉬 제어 유닛은 정체된다. 특히, 캐쉬 요구(판독 또는 기록 동작)을 서비스하는데 보다 많은 자원이 필요하다. 어드레스가 저장되고 모든 새로운 허락이 취소된다. 정체 상태(92)가 현재 상태이고 새로운 요구가 처리될 수 없을 때, 다음 상태는 정체 상태(92)이다. 정체 상태(92)가 현재 상태이고 정체 조건이 제거될 때, 다음 상태는 런 상태(91)이다.
데이타 준비 상태(93)에 있는 동안, 캐쉬 시스템(130)은 요구된 데이타를 요구하는 디바이스로 구동시킨다. 예를 들어, 데이타 캐쉬 히트후 또는 캐쉬 리필후, 요구된 데이타는 적당한 요구하는 디바이스에 의해 수신될 요구 트랜잭션 ID로 구동된다. 데이타 준비 상태(93)가 현재 상태일 때, 다음 상태는 런 상태(91)이다.
라이트 백 상태(94)에 있는 동안, 제1더티 벡터가 라이트 백된다. 상술된 바와 같이, 캐쉬 제어 유닛(160)은 제1클럭 동안 다양한 유닛으로부터 기록 요구를 받아 들일 것이다. 요구자는 요구 신호, 판독/기록 신호, 및 제1클럭 동안 초기의 벡터 유형을 어써트할 것이다. 제1클럭의 끝에서, 캐쉬 제어 유닛(160)은 이들 기록 요구중 하나를 허락할 것이다. 서로 다른 유닛에의 기록 허락은 요구하는 유닛에 직접 허락 신호를 어써트함으로서 실시된다. 어떠한 데이타도 반환되지 않기 때문에, 요구 유닛이 캐쉬 제어 유닛(160)으로부터 요구 ID를 수신할 필요는 없다. 제2클럭에서, 요구자는 어드레스 및 데이타 유형을 공급하여야 한다. 판독의 경우에서와 같이, 캐쉬 제어 유닛(160)은 허락이 부여되었더라도 현재 사이클에서 처리될 수 없다는 것을 요구자에게 알리기 위해 제2클럭의 끝날 무렵 보류 신호를 어써트할 수 있다. 요구하는 디바이스는 보류 신호가 디-어써트될 때까지 어드레스와 데이타형 정보를 계속 구동시켜야 한다. 다음 사이클 동안, 요구자는 기록 데이타를 공급할 것이다.
요구자는 제1클럭에서 하위의 16바이트 및 제2클럭에서 상위의 16바이트로서 캐쉬 제어 유닛(160)에 데이타를 구동시키기 시작한다. 64바이트 데이타 전송의 경우, 요구자는 데이타를 구동할 부수적인 한 사이클을 취할 것이다. 캐쉬 제어 유닛(160)은 이 데이트를 보류하기 위해 내부 기록 데이타 래치를 갖는다. 이 기록이 캐쉬를 히트(캐쉬로 실제로 데이타를 기록하기 위한 하나 이상의 사이클을 취한다) 또는 캐쉬를 미스(데이타를 기록할 극히 적은 수의 사이클을 취할 수 있다)하던지, 요구자는 기록을 종료된 것으로 간주할 수 있다.
더티 캐쉬 라인을 갖는 기록 미스의 경우, 캐쉬 제어 유닛(160)은 먼저 더티 라인을 복사할 것이다. 더티 데이타가 아직 이용가능하지 않기 때문에, 캐쉬 제어 유닛(160)은 새로운 판독 또는 기록도 허락되지 않도록 허락 논리 회로에 보류를 어써트한다. 다음에 이는 더티 캐쉬 라인 데이타를 훼치하기 위해 더티 라인 어드레스를 사용하여 내부 판독을 시작할 것이다. 궁극적으로, 라이트 백 어드레스와 데이타는 메모리로 나갈 것이다.
라이트 백 상태(94)가 현재 상태이고 라이트 백 버퍼가 차있을 때, 다음 상태는 라이트 백 상태(94)이다. 라이트 백 상태(94)가 현재 상태이고 런 상태(91A)가 이전 상태(즉, 더티 캐쉬 판독 히트)였다면, 다음 상태는 런 상태(91B)이고 제2 다음 상태는 리필 상태(96)이다. 라이트 백 상태(94)가 현재 상태이고 런 상태(91B)가 이전 상태(즉, 기록 미스)일 때, 다음 상태는 런 상태(9)이다. 라이트 백 상태(94)가 현재 상태이고 기록 요구가 32바이트 이상일 때, 다음 상태는 다음 라이트 백 상태(95)이다.
다음 라이트 백 상태(95)에 있는 동안, 다음 더티 벡터가 라이트 백된다. 다음 라이트 백 상태(95)가 현재 상태일 때, 다음 상태는 런 상태(91)이다.
리필 상태(96)에 있는 동안, 캐쉬 제어기는 주 메모리에 리필 요구를 보낸다. 캐쉬 리필 동안, 만일 데이타형 32B이고 라인이 클린(두개 벡터가 클린)이면, 캐쉬 제어 유닛(160)은 단순히 기존의 라인을 새로운 태그와 새로운 데이타로 오버-라이트할 것이다. 이는 또한 엑세스하는 벡터를 유효로 표시하는 한편, 동일한 라인에서 다른 벡터를 떠나는 동안 무효로 표시할 것이다. 만일 데이타형이 32B 미만이면, 이는 부분 데이타 기록이 된다. 이 부분 데이타는 일시 레지스터에 유지될 것이다. 캐쉬 제어 유닛(160)은 주 메모리로부터 미스하는 하프 라인(half line)(32B)을 훼치하고 이것을 캐쉬로 로드할 것이다. 다음에 상기 부분 데이타는 적당한 바이트 인에이블 신호로서 캐쉬 라인으로 기록될 것이다. 더티 캐쉬 라인을 갖는 기록 미스의 경우, 캐쉬 제어 유닛(160)은 먼저 더티 라인을 복사할 것이다. 더티 데이타가 아직 이용가능하지 않기 때문에, 캐쉬 제어 유닛(160)은 새로운 판독 또는 기록 요구도 허락되지 않도록 허락 논리 회로에 보류를 어써트할 것이다. 다음에 이는 더티 캐쉬 라인 데이타를 훼치하기 위해 더티 라인 어드레스를 사용하여, 내부 판독을 시작할 것이다. 궁극적으로, 라이트 백 어드레스와 데이타는 메모리로 나갈 것이다.
리필 상태(96)가 현재 상태이면 다음 상태가 상태(9)이다. 리필 상태(96)가 현재 상태이면, 다음 상태는 상태(9)이다. 리필 상태(96)가 현재 상태이면, 다음 상태는 상태(9)이다.
로우 기록 상태(96)에 있는 동안, 기록은 외부 메모리 기록을 위해 어드레스 큐로 로드된다. 로우 기록 상태(97)가 현재 상태이고 FBUS 수신기 데이타가 준비되지 않을 때, 다음 상태는 하이 기록 상태(98)이다.
하이 기록 상태(98)에 있는 동안, 기록은 외부 메모리 기록을 위해 어드레스 큐로 로드된다. 하이 기록 상태(98)가 현재 상태이면, 다음 상태는 런 상태(91)이다.
부록 1은 도 9의 판독/기록 상태 머신이 버젼을 나타낸다.
비록 본 발명이 다양한 실시예와 관련하여 서술되었지만, 이들 실시예들은 예시적인 것이며 본 발명의 영역은 이들에 제한되지 않는다는 것을 알 것이다. 상술된 실시예이 수정, 추가, 및 개선이 본 발명의 청구범위에 따라 이루어질 수 있다. 기술 분야의 숙련자는 본 발명에 따라 대체 실시예가 이루어질 수 있다는 것을 알 수 있을 것이다. 예를 들어, 본 개시에 비추어, 기술 분야의 숙련자는 데이타 파이프라인, 스위치보드, 어드레스 파이프라인, 캐쉬 시스템, 멀티플렉서, 래치, 버스, 프로세서의 다른 구현이 본 발명의 영역 내에 정의할 수 있으며, 다지탈 신호 프로세서를 만들기 위해 이들 대체 특징을 이용할 수 있다. 또한, 기술분야의 숙련자는 논리 블럭들간의 경계는 단지 예시적인 것이며 대체 실시예는 논리 블럭들을 결합하거나 또는 데이타 및 어드레스 파이프라인(220 및 230), 캐쉬(140, 170) 및 캐쉬 제어 유닛(160)을 포함하는 캐쉬 시스템(130)을 위해 기능을 선택적으로 분해할 수 있다는 것을 알 수 있을 것이다. 또한, 대체 실시예는 특정 구성요소의 다수의 예를 결합할 수 있다. 이들 및 다른 변형, 수정, 부가, 및 개선은 첨부하는 특허청구의 범위로 한정되는 바와 같이 본 발명의 영역 내에 포괄될 수 있다.
내용없음

Claims (8)

  1. 디바이스에 결합되어 있는 캐쉬의 제어 방법에 있어서,
    상기 디바이스로부터 제1캐쉬 요구를 수신하는 단계 ;
    상기 제1캐쉬 요구에 대한 요구 ID 값을 상기 디바이스에 제공하는 단계 ;
    상기 제1캐쉬 요구를 처리하는 단계 ;
    상기 디바이스로부터 제2캐쉬 요구를 수신하는 단계 ;
    상기 제2캐쉬 요구에 대한 요구 ID 값을 상기 디바이스에 제공하는 단계 ; 및
    상기 제1 및 제2캐쉬 요구의 처리를 완료하는 단계 ; 를 구비하는 것을 특징으로 하는 캐쉬 제어 방법.
  2. 제1항에 있어서,
    상기 요구 ID의 제공 단계가,
    상기 디바이스를 식별하는 유닛 ID를 제공하는 단계 ; 및 상기 캐쉬 요구를 식별하는 트랜잭션 ID를 제공하는 단계 ; 를 포함하는 것을 특징으로 하는 캐쉬 제어 방법.
  3. 캐쉬 시스템에 있어서,
    정보를 일시적으로 저장하는 캐쉬 ; 및
    캐쉬 액세싱 디바이스(a cache accessing device)에 의한 다수의 캐쉬 액세스를 수신하고 실행하는 액세스 제어 논리회로(access control logic) ;
    상기 액세스 제어 논리회로에 의한 상기 다수의 캐쉬 액세스를 실행하기 이전에 요구 식별 정보를 제공할 수 있으며, 상기 요구 식별 정보를 상기 다수의 캐쉬 액세스 각각에 할당하고, 상기 요구 식별 정보를 상기 캐쉬 액세싱 디바이스에 제공하는 식별 논리 회로 ; 및
    상기 캐쉬 액세스가 판독되었으면 상기 요구 식별 정보와 상기 캐쉬 액세싱 디바이스에 의해 요구된 데이타를 상기 캐쉬 액세싱 디바이스에 제공하는 결과 논리 회로(result logic)를 구비하는
    캐쉬 제어 유닛
    을 구비하는 것을 특징으로 하는 캐쉬 시스템.
  4. 제3항에 있어서,
    상기 캐쉬는,
    정보를 일시적으로 저장하는 다수의 라인을 갖는 기억 어레이 ; 및
    대응하는 다수의 태그를 저장하며, 상기 기억 어레이의 상기 다수의 라인에 대응하며, 상기 기억 어레이의 대응하는 라인에 저장된 정보를 어드레스를 가리키는 태그를 각각 저장하는 다수의 태그 장소를 태그 어레이 ; 를 구비하는 것을 특징으로 하는 캐쉬 시스템.
  5. 제4항에 있어서,
    상기 기억 어레이는,
    명령 정보를 일시적으로 저장하는 다수의 라인을 갖는 명령 기억 어레이, 및
    데이타 정보를 일시적으로 저장하는 다수의 라인을 갖는 데이타 기억 어레이를 더 구비하며 ;
    상기 태그 어레이는,
    대응하는 다수의 명령 태그를 저장하며, 상기 명령 기억 어레이의 상기 다수의 라인에 대응하며, 상기 명령 기억 어레이의 대응하는 라인에 저장된 정보의 어드레스를 가리키는 명령 태그를 각각 저장하는 다수의 명령 태그 장소를 갖는 명령 태그 어레이 ; 및
    대응하는 다수의 데이타 태그를 저장하며, 상기 데이타 기억 어레이의 상기 다수의 라인에 대응하며, 상기 데이타 기억 어레이의 대응하는 라인에 저장된 정보의 어드레스를 가리키는 데이타 태그를 각각 저장하는 다수의 데이타 태그 장소를 갖는 데이타 태그 어레이를 더 구비하는 것을 특징으로 하는 캐쉬 시스템.
  6. 제3항에 있어서,
    상기 캐쉬는 명령 정보를 일시적으로 저장하는 명령 캐쉬 ; 및 데이타 정보를 일시적으로 저장하는 데이타 캐쉬를 더 구비하는 것을 특징으로 하는 캐쉬 시스템.
  7. 제3항에 있어서,
    상기 캐쉬 시스템은 제1디바이스와 제2디바이스에 대해 일시적으로 저장을 제공하기 위한 것이며,
    상기 캐쉬는
    상기 제1디바이스로서 사용하기 위한 명령 정보를 일시적으로 저장하기 위해 다수의 라인을 갖는 명령 기억 어레이 ;
    상기 제2디바이스로서 사용하기 위한 명령 정보를 일시적으로 저장하기 위해 다수의 라인을 갖는 명령 기억 어레이 ;
    상기 제1디바이스로서 사용하기 위한 데이터 정보를 일시적으로 저장하기 위해 다수의 라인을 갖는 데이타 기억 어레이 ;
    상기 제2디바이스로서 사용하기 위한 데이타 정보를 일시적으로 저장하기 위해 다수의 라인을 갖는 데이타 기억 어레이 ; 및
    상기 명령 및 데이타 기억 어레이의 대응하는 라인에 저장된 정보의 어드레스를 가리키는 태그를 각각 저장하고 대응하는 다수의 태그를 저장하고 상기 명령 및 데이타 기억 어레이의 상기 다수의 라인에 대응하는 다수의 태그 장소를 가지며, 상기 명령 및 데이타 기억 어레이에 대응하는 다수의 태그 어레이
    를 구비하는 것을 특징으로 하는 캐쉬 시스템.
  8. 제3항에 있어서,
    상기 캐쉬 시스템은 다수의 디바이스에 대해 일시적인 저장을 제공하기 위한 것이며,
    상기 캐쉬는,
    상기 다수의 디바이스의 각각으로서 사용하기 위한 명령 정보를 일시적으로 저장하기 위해 다수의 라인을 갖는, 상기 다수의 다비이스 각각을 위한 명령 뱅크 ;
    상기 다수의 디바이스의 직각으로서 사용하기 위한 데이타 정보를 일시적으로 저장하기 위해 다수의 라인을 갖는, 상기 다수의 디바이스 각각을 위한 데이타 뱅크 ; 및
    명령 및 데이타 뱅크의 대응하는 라인에 저장된 정보의 어드레스를 가리키는 태그를 각각 저장하고 대응하는 명령 및 데이타 뱅크의 상기 다수의 라인에 대응하며 대응하는 다수의 태그를 저장하는 다수의 태그 장소를 가지며, 상기 다수의 디바이스 직각을 위한 태그 어레이를 구비하는 것을 특징으로 하는 캐쉬 시스템.
KR1019970017467A 1996-11-15 1997-05-07 캐쉬 제어 유닛 KR100227278B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/751,149 US5860158A (en) 1996-11-15 1996-11-15 Cache control unit with a cache request transaction-oriented protocol
US8/751,149 1996-11-15

Publications (2)

Publication Number Publication Date
KR19980041729A true KR19980041729A (ko) 1998-08-17
KR100227278B1 KR100227278B1 (ko) 1999-11-01

Family

ID=25020702

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970017467A KR100227278B1 (ko) 1996-11-15 1997-05-07 캐쉬 제어 유닛

Country Status (2)

Country Link
US (1) US5860158A (ko)
KR (1) KR100227278B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100358155B1 (ko) * 1999-12-24 2002-10-25 한국전자통신연구원 인터럽트 제어 장치 및 그 제어 방법과 그를 이용한 캐쉬제어기

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173368B1 (en) * 1995-12-18 2001-01-09 Texas Instruments Incorporated Class categorized storage circuit for storing non-cacheable data until receipt of a corresponding terminate signal
US6195674B1 (en) * 1997-04-30 2001-02-27 Canon Kabushiki Kaisha Fast DCT apparatus
US6055606A (en) * 1997-09-05 2000-04-25 Sandcraft, Inc. Writeback cache cell with a dual ported dirty bit cell and method for operating such a cache cell
US6347075B1 (en) * 1997-12-31 2002-02-12 At&T Corp. Circuit to provide backup telephone service for a multiple service access system using a twisted pair
US6385693B1 (en) * 1997-12-31 2002-05-07 At&T Corp. Network server platform/facilities management platform caching server
US7445146B2 (en) * 1998-04-17 2008-11-04 Diebold, Incorporated Card activated cash dispensing automated banking machine system and method
US7542944B1 (en) * 1999-02-17 2009-06-02 Diebold, Incorporated Method and system for connecting services to an automated transaction machine
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs
US6446237B1 (en) * 1998-08-04 2002-09-03 International Business Machines Corporation Updating and reading data and parity blocks in a shared disk system
WO2000011607A1 (en) 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6427196B1 (en) 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
US6401175B1 (en) * 1999-10-01 2002-06-04 Sun Microsystems, Inc. Shared write buffer for use by multiple processor units
US6327645B1 (en) 1999-11-08 2001-12-04 Silicon Integrated Systems Corp. Cache memory system with memory request address queue, cache write address queue, and cache read address queue
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6584522B1 (en) * 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6976095B1 (en) 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
AU2000237002A1 (en) * 2000-02-16 2001-08-27 Intel Corporation Processor with cache divided for processor core and pixel engine uses
US6889291B1 (en) 2000-06-30 2005-05-03 Intel Corporation Method and apparatus for cache replacement for a multiple variable-way associative cache
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6665775B1 (en) 2000-09-22 2003-12-16 Intel Corporation Cache dynamically configured for simultaneous accesses by multiple computing engines
US7020871B2 (en) 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6801208B2 (en) 2000-12-27 2004-10-05 Intel Corporation System and method for cache sharing
KR100416858B1 (ko) * 2001-02-15 2004-02-05 정창우 명령어 처리장치
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US6985999B2 (en) * 2001-10-23 2006-01-10 Ip-First, Llc Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests
US7313658B2 (en) * 2001-10-23 2007-12-25 Via Technologies, Inc. Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests
US20030097582A1 (en) * 2001-11-19 2003-05-22 Yves Audebert Method and system for reducing personal security device latency
US7158964B2 (en) * 2001-12-12 2007-01-02 Intel Corporation Queue management
US7107413B2 (en) 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7269179B2 (en) 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7181573B2 (en) 2002-01-07 2007-02-20 Intel Corporation Queue array caching in network devices
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7181594B2 (en) * 2002-01-25 2007-02-20 Intel Corporation Context pipelines
US7149226B2 (en) 2002-02-01 2006-12-12 Intel Corporation Processing data packets
GB2390700B (en) * 2002-04-15 2006-03-15 Alphamosaic Ltd Narrow/wide cache
US7471688B2 (en) * 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7971030B2 (en) 2002-08-07 2011-06-28 Mmagix Technology Limited Method for using multiple processing resources which share multiple co-processor resources
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US6941438B2 (en) * 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7017014B2 (en) * 2003-01-28 2006-03-21 International Business Machines Corporation Method, system and program product for maintaining data consistency across a hierarchy of caches
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
KR20050106756A (ko) * 2004-05-06 2005-11-11 박용직 오폐수 처리장치
US7599044B2 (en) 2005-06-23 2009-10-06 Apple Inc. Method and apparatus for remotely detecting presence
WO2006031551A2 (en) * 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US7594081B2 (en) * 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7242169B2 (en) * 2005-03-01 2007-07-10 Apple Inc. Method and apparatus for voltage compensation for parasitic impedance
US7577930B2 (en) 2005-06-23 2009-08-18 Apple Inc. Method and apparatus for analyzing integrated circuit operations
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7433191B2 (en) * 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
US8415978B2 (en) * 2008-12-29 2013-04-09 Stmicroelectronics S.R.L. State machine for generating a pulse width modulation (PWM) waveform
US8996812B2 (en) * 2009-06-19 2015-03-31 International Business Machines Corporation Write-back coherency data cache for resolving read/write conflicts
FR2958765B1 (fr) * 2010-04-09 2012-04-13 Commissariat Energie Atomique Memoire cache segmentee.
US10599433B2 (en) * 2013-07-15 2020-03-24 Texas Instruments Incorported Cache management operations using streaming engine
US9237204B1 (en) * 2014-07-30 2016-01-12 Iboss, Inc. Web redirection for caching
CN105512090B (zh) * 2015-12-07 2018-09-21 中国航空工业集团公司西安航空计算技术研究所 一种基于fpga的网络节点内数据缓冲的组织方法
US10789132B2 (en) 2018-09-06 2020-09-29 International Business Machines Corporation Performing a recovery copy command to create a recovery volume for a consistency group
US11182094B2 (en) 2018-09-06 2021-11-23 International Business Machines Corporation Performing a recovery copy command using a recovery copy data structure for a backup volume lookup
US11182081B2 (en) * 2018-09-06 2021-11-23 International Business Machines Corporation Performing a recovery copy command to restore a safeguarded copy backup to a production volume
US11586552B2 (en) * 2021-05-13 2023-02-21 Apple Inc. Memory cache with partial cache line valid states
CN117707994B (zh) * 2024-02-02 2024-06-21 北京象帝先计算技术有限公司 请求缓冲器、系统、组件、设备及传输方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4707784A (en) * 1983-02-28 1987-11-17 Honeywell Bull Inc. Prioritized secondary use of a cache with simultaneous access
US4701844A (en) * 1984-03-30 1987-10-20 Motorola Computer Systems, Inc. Dual cache for independent prefetch and execution units
US4695943A (en) * 1984-09-27 1987-09-22 Honeywell Information Systems Inc. Multiprocessor shared pipeline cache memory with split cycle and concurrent utilization
US4899275A (en) * 1985-02-22 1990-02-06 Intergraph Corporation Cache-MMU system
DE69323790T2 (de) * 1992-04-29 1999-10-07 Sun Microsystems Inc Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
WO1994008287A1 (en) * 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5838894A (en) * 1992-12-17 1998-11-17 Tandem Computers Incorporated Logical, fail-functional, dual central processor units formed from three processor units
US5524265A (en) * 1994-03-08 1996-06-04 Texas Instruments Incorporated Architecture of transfer processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100358155B1 (ko) * 1999-12-24 2002-10-25 한국전자통신연구원 인터럽트 제어 장치 및 그 제어 방법과 그를 이용한 캐쉬제어기

Also Published As

Publication number Publication date
KR100227278B1 (ko) 1999-11-01
US5860158A (en) 1999-01-12

Similar Documents

Publication Publication Date Title
KR100227278B1 (ko) 캐쉬 제어 유닛
US5966734A (en) Resizable and relocatable memory scratch pad as a cache slice
KR100280285B1 (ko) 멀티미디어 신호에 적합한 멀티미디어 프로세서
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
US5579473A (en) Interface controller for frame buffer random access memory devices
US8386748B2 (en) Address translation unit with multiple virtual queues
US5586294A (en) Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer
JP3285644B2 (ja) キャッシュメモリを有するデータプロセッサ
US5638531A (en) Multiprocessor integrated circuit with video refresh logic employing instruction/data caching and associated timing synchronization
US5875463A (en) Video processor with addressing mode control
KR100316505B1 (ko) 프로세서에 데이타를 제공하기 위한 캐시 및 캐시로부터 프로세서에 데이타를 제공하기 위한 방법
US5860086A (en) Video processor with serialization FIFO
US7073026B2 (en) Microprocessor including cache memory supporting multiple accesses per cycle
JP2006517040A (ja) キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ
EP0726523A2 (en) Method for maintaining memory coherency in a computer system having a cache
JPH05224921A (ja) データ処理システム
US5696985A (en) Video processor
US5784076A (en) Video processor implementing various data translations using control registers
US5557759A (en) Video processor with non-stalling interrupt service
US5717896A (en) Method and apparatus for performing pipeline store instructions using a single cache access pipestage
US5649232A (en) Structure and method for multiple-level read buffer supporting optimal throttled read operations by regulating transfer rate
US6836823B2 (en) Bandwidth enhancement for uncached devices
US7124236B1 (en) Microprocessor including bank-pipelined cache with asynchronous data blocks
JPH06202975A (ja) コンピュータ入出力キャッシュ・システムと方法
AU2002326916A1 (en) Bandwidth enhancement for uncached devices

Legal Events

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

Payment date: 20120801

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20130731

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20140731

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20160801

Year of fee payment: 18

EXPY Expiration of term