KR100445927B1 - 메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서 수행되는 방법 및 컴퓨터 시스템 - Google Patents

메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서 수행되는 방법 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR100445927B1
KR100445927B1 KR10-2001-7015756A KR20017015756A KR100445927B1 KR 100445927 B1 KR100445927 B1 KR 100445927B1 KR 20017015756 A KR20017015756 A KR 20017015756A KR 100445927 B1 KR100445927 B1 KR 100445927B1
Authority
KR
South Korea
Prior art keywords
cache
processor
memory
interface
dram
Prior art date
Application number
KR10-2001-7015756A
Other languages
English (en)
Other versions
KR20020064143A (ko
Inventor
보르켄하겐존마이클
파게르네스제럴드그레고리
아이리쉬존데이비드
크롤락데이비드존
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20020064143A publication Critical patent/KR20020064143A/ko
Application granted granted Critical
Publication of KR100445927B1 publication Critical patent/KR100445927B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/0893Caches characterised by their organisation or structure

Abstract

SRAM과 DRAM을 모두 지원하는 캐시 인터페이스가 개시된다. 캐시 인터페이스는 바람직하게 두 부분 즉, 프로세서(130)상의 한 부분(133)과, 캐시(110)상의 한 부분(180)을 포함한다. 설계자는 자신이 어떤 RAM을 캐시로 이용하고자 하는지 간단히 선택할 수 있고, 프로세서(130)상의 캐시 콘트롤러 인터페이스 부분(133)은 프로세서가 이 RAM 종류를 이용하도록 구성한다. 캐시(110)상의 캐시 인터페이스 부분(180)은, DRAM과 이용될 때, 프로세서(130) 및 DRAM 캐시에 의해 발생된 액세스 간에 액세스 충돌이 발생한 시점을 프로세서(130)가 알도록 사용중 표시가 어서트된다는 점에서 간단하다. 사전 충전, 초기화, 리프레시 또는 대기 상태로 인해, DRAM 캐시가 데이터를 판독하거나 기록할 수 없을때 액세스 충돌이 발생한다. 캐시 인터페이스가 SRAM 캐시와 함께 이용될 때, 사용중 표시는 바람직하게도 프로세서(130)와 프로세서(130)의 캐시 인터페이스 부분(133)에 의해 무시된다.
추가적으로, 개시된 캐시 인터페이스는 캐시에 대한 속도 및 사이즈 요구가 인터페이스에 프로그램되도록 한다. 이런 식으로, 인터페이스는 상이한 사이즈 및 속도의 캐시와 이용하기 위해 재설계될 필요가 없어진다.

Description

메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서 수행되는 방법 및 컴퓨터 시스템{A PROGRAMMABLE SRAM AND DRAM CACHE INTERFACE}
오늘날, 우리 사회는 일상 행위를 위해 컴퓨터에 강하게 의존한다. 컴퓨터들은 집이나 회사, 대부분의 생산 및 제조 환경에서 찾아볼 수 있다. 대부분의 컴퓨터 시스템은 중앙 처리 장치(CPU)에 의해 제어되고, 프로그램된 다양한 기능을 수행하기 위해 CPU에 의해 사용될 수 있는 다양한 레벨의 메모리를 구비한다. 전형적으로, 컴퓨터 프로그램은 컴퓨터 시스템의 메모리 기억 영역에 로딩되며, CPU에 의해 실행된다. 프로그램과 데이터는 CPU가 어떤 유형의 기능을 수행중인가에 따라 컴퓨터 시스템의 메모리의 서로 다른 영역에 기억된다. 전통적으로, 컴퓨터 시스템의 메모리는 주 메모리(기본 메모리 또는 주 기억장치)나 혹은 보조 메모리(보조 기억장치)로 분류된다. 프로그램과 데이터는 지금 실행중인 프로그램에 의해 실행되거나 혹은 참조되기 위해 주 메모리내에 있어야 하고, 반면에 지금 당장 필요치 않는 프로그램이나 데이터는 필요할 때까지 보조 메모리에 있다가 실행이나 참조를 위해 주 메모리로 옮겨진다.
1960년에, 전통적인 메모리 기억장치 계층은 그 성능과 활용면에서의 극적인 개선으로 하나 이상의 레벨로 확장될 수 있음이 명확해졌다. 이러한 추가 레벨 즉, "캐시"는 주 메모리보다 훨씬 빠른 고속 메모리이다. 캐시 기억장치는 주 메모리와 비교하면 비교적 비싸고, 그러므로 종래의 컴퓨터 시스템에서는 오로지 비교적 작은 양의 캐시 메모리만이 이용된다. 또한, 캐시 기억장치의 사이즈 제한은 캐시의 속도를 향상시킨다.
캐시 메모리는 일반적으로 5배에서 10배까지 주 메모리보다 고속으로 동작하는데, 어떤 환경에서는 CPU 자체의 동작 속도에 근접할 수도 있다. 가장 빈번하게 액세스되는 인스트럭션 및/또는 데이터를 고속 캐시 메모리에 둠으로써, 시스템에 대한 평균 총 메모리 액세스 시간은 캐시의 액세스 시간에 근접할 것이다. 여러 곳의 메모리 위치들 사이에서 정보를 주고 받는 것과 관련하여 소정 양의 오버헤드가 존재한다. 이러한 오버헤드는 캐시 기억장치를 활용함으로써 얻어지는 성능 증가를 상쇄시키지 않도록 가능한 작게 유지된다. 또한, 만약 수행될 특정 프로그램 인스트럭션이 캐시에 미리 로딩된다면, CPU는 주 메모리 혹은 보조 메모리로 복귀할 필요없이 프로그램 인스트럭션을 실행할 수 있어, 시스템의 동작 속도를 상당히 증가시킨다. CPU가 특정 인스트럭션이나 데이터 아이템을 요구할 때마다, CPU는 인스트럭션이나 데이터가 발견될 수 있는 메모리의 위치나 어드레스의 일부로서 태그(tag)를 포함하는 요구(request)를 발생한다. 만약 CPU에 의해 요구된 정보와 관련한 태그가 캐시에 현재 상주하고 있는 메모리의 라인과 관련한 태그와 일치하면, CPU는 캐시로부터 데이터 혹은 정보를 액세스할 수 있다. 만약 태그가 캐시내의 메모리 라인들과 관련한 모든 태그와 일치하지 않으면, 정보는 페치되어 캐시에 로딩되어야 한다.
캐시 메모리는 컴퓨터 시스템의 어떤 부분에 위치 혹은 연관되었느냐에 따라서 상이한 카테고리로 세분될 수도 있다. 레벨 1 캐시 메모리는 일반적으로 프로세서가 위치되는 반도체 다이 영역에 위치된다. 본래, 마이크로프로세서와 동일한 칩상에 위치되지 않는 추가적인 캐시 메모리는 보통 레벨 2 캐시 메모리로 칭한다. 현재에는 많은 프로세서 설계자들은 프로세서와 같은 반도체 칩상에 레벨 2 캐시를 위치시키고 있다. 레벨 3 메모리는 흔히 "주 메모리"로 부르지만, 어떤 컴퓨터들은 캐시 메모리인 레벨 3 메모리와 주 메모리인 레벨 4 메모리를 구비한다.
과거에는, 캐시들이 정적 랜덤 액세스 메모리(SRAM)로 만들어져 대부분 배타적이었다. 이러한 정적 RAM(SRAM)은 데이터 비트를 포함하는 개개의 셀이 리프레시되지 않아도 되도록 만들어졌다. 개별 셀들의 데이터를 유지하는 설계 기준들 때문에 SRAM은 상당량의 반도체 영역을 차지하여 비교적 비쌌지만, 고속이었다. 또 다른 필적할 만한 RAM이 동적 RAM(DRAM)이다. DRAM은 데이터 셀이 리프레시되어야하는 모든 RAM이다. 각각의 셀은 만약 리프레시되지 않으면, 자신의 정보를 서서히 손실할 것이다. DRAM의 설계는 SRAM과 동일한 비트의 수에 대해 훨씬 적은 영역을 커버할 수 있도록 한다. 또한, 동일한 면적인 경우, DRAM은 SRAM보다 더 많은 정보 비트를 보유한다. 불행히도, DRAM 어레이의 각 셀들은 주기적으로 리프레시되는 것이 필요하므로, 리프레시가 발생하는 동안에는 특정 셀이나 셀의 그룹에 기록 또는 판독될 수 없는 시간이 존재한다.
최근에는, 많은 수의 데이터 비트들이 작은 DRAM 면적에 위치될 수 있기 때문에, 일부 설계자들은 L2 캐시에 DRAM을 사용해왔다. 예를 들면, 륭 등(Leung et al.)에 의한 미국 특허 제 5,829,026호인 "Method and Structure for Implementing a Cache Memory Using a DRAM Array"에는, 프로세서를 보유하고 있는 칩을 온/오프시킬 수 있는 DRAM 캐시가 개시되었다. 또한, 보이드 등(Boyd, et al.)에 의한 미국 특허 제 5,895,487호인 "Integrated Processing and L2 DRAM cache"에는 프로세서와 동일한 반도체 칩상에 위치되는 L2 DRAM 캐시가 개시되었다. 내장형 DRAM(EDRAM;Embedded DRAM)은 정규 DRAM보다는 밀도가 덜하지만 SRAM 액세스 시간에 근접하는 액세스 시간을 갖는 로직 기법으로부터 생성된 DRAM이다.
프로세서와, 오프- 혹은 온-칩 L2 캐시를 갖는 반도체 칩을 설계할 때, L2 캐시가 SRAM인지 DRAM인지에 대한 선택권을 갖는 것이 유리할 것이다. 불행히도, 이전에 논의된 특허들은 오로지 DRAM과 인터페이스하는 캐시 인터페이스(혹은 DRAM)만을 제공한다. 마찬가지로, SRAM용 캐시 인터페이스는 오로지 SRAM과만 인터페이스한다.
또한, 현재의 캐시 인터페이스는 어떠한 프로그램 능력도 제공하지 않는다. SRAM 캐시를 갖는 시스템의 경우, 특히, 특정 사이즈와 속도의 SRAM 캐시를 추가하고자 하는 설계자는 이 특정 사이즈와 속도의 SRAM 캐시에 대한 인터페이스를 반드시 생성해야 한다. 만약 SRAM 캐시의 사이즈와 속도가 다음 프로세서 버전 동안 변경되면, 인터페이스도 재설계되어야 한다. 마찬가지로, 설계자가 DRAM 캐시를 확장하길 원하면, 이 설계자는 캐시 인터페이스를 재설계해야 한다.
이러한 문제들은 특히 프로세서 제조자가 동일한 프로세서에 대해 상이한 캐시 메모리 양과 속도를 갖는 다수 버전들을 판매하고자 하는 오늘날의 프로세서 시장 환경에서는 터무니 없는 것이다.
비록 SRAM 및 DRAM 캐시 인터페이스가 존재하더라도, SRAM과 DRAM 캐시를 모두 지원하는 프로그램 가능형 캐시 인터페이스를 제공할 필요가 있다. 또한, 현재의 설계자는 캐시의 사이즈와 속도가 변할 때마다 새로운 캐시 인터페이스를 생성해야 하는 부담을 떠안고 있으므로, 캐시의 사이즈와 속도 변경이 용이한 프로그램 가능형 캐시 인터페이스가 요구된다.
발명의 개요
본 발명에 따르면, 정적 랜덤 액세스 메모리(SRAM)과 동적 랜덤 액세스 메모리(DRAM) 모드를 지원하는 캐시 인터페이스가 개시된다. 본 발명에 따른 캐시 인터페이스는 바람직하게 두 개의 부분을 포함하는데, 한 부분은 프로세서상에 다른 한 부분은 캐시상에 있다. 설계자는 자신이 캐시로 어떤 RAM을 이용하고자 하는지 단순히 선택할 수 있고, 프로세서 RAM상의 캐시 인터페이스 부분은 프로세서가 이 RAM의 종류를 이용하도록 구성한다. 캐시상의 캐시 인터페이스 부분은, DRAM과 이용될 때, 프로세서 및 DRAM 캐시에 의해 발생된 액세스 사이에 액세스 충돌이 발생한 시점을 프로세서가 알도록 사용중 표시(busy indication)가 어서트된다는 점에서 간단하다. 사전 충전(precharge), 초기화(initialization), 리프레시(refresh) 혹은 대기 상태(standby state)로 인해 DRAM 캐시가 데이터를 판독하거나 기록하는 것이 불가능할 때 액세스 충돌이 발생한다. 만약 사용중 표시가 이미 클래스 미스 로직(class miss logic)을 갖는 L2 캐시 콘트롤러와 이용되었다면, 사용중 표시는 마치 프로세서가 클래스 미스를 가진 것처럼 프로세서가 동작(논리적으로)하도록 해야 하므로, 사용중 표시는 바람직하게 클래스 미스 로직으로 라우트된다. 이러한 구성의 이득은, 클래스 미스 구조가 이미 존재하고 이 구조를 조금만 수정하면 L2 캐시 콘트롤러가 본 발명을 이용할 수 있게 된다는 것이다. 만약 L2 콘트롤러가 클래스 미스 로직을 갖지 않는다면, L2 캐시 콘트롤러는 본 원에 개시된 것과 같은 사용중 표시를 지원하기 위해 약간의 수정을 해야 할 것이다. 캐시 인터페이스가 SRAM 캐시와 함께 이용되면, 사용중 표시는 캐시 프로세서와 프로세서의 캐시 인터페이스 부분에 의해 바람직하게 무시된다.
또한, 개시된 캐시 인터페이스는 캐시에 대한 속도와 사이즈 요구가 인터페이스에 대해 프로그램되는 것을 허용한다. 이런 방식으로, 인터페이스는 상이한 사이즈와 속도를 갖는 캐시와 이용되기 위해 재설계될 필요가 없어진다.
본 발명의 이런 저런 특징과 이점은 첨부된 도면에 예시된 것과 같은 다음의 본 발명의 바람직한 실시예의 보다 상세한 설명으로부터 명확해질 것이다.
관련 출원
본 출원은 크로락 등(Krolak et al.)에 의해 1997년 9월 5일 출원된 미국 출원번호 제 08/924,272 호, 발명의 명칭 "Data Processing System and Multi-Way Associative Cache Utilizing Class Predict Data Structure and Method Thereof"인 동시 계속 출원과 관련있으며 이것을 참조하고 있다.
본 발명은 전반적으로 컴퓨터 시스템 캐시 메모리에 관한 것으로, 더 구체적으로는 랜덤 액세스 캐시 메모리(random access cache memories)를 위한 인터페이스에 관한 것이다.
도 1은 본 발명의 바람직한 실시예를 갖는 반도체 패키지의 블록도,
도 2는 프로세서와 캐시상에 존재하는 부분으로서, 바람직한 캐시 인터페이스 실시예의 부분들의 블록도,
도 3a 및 3b는 본 발명의 바람직한 실시예에 따라 인터페이스가 DRAM에 접속될 때, 캐시 인터페이스의 캐시 부분의 회로도,
도 4는 DRAM과 인터페이스된 캐시 인터페이스의 캐시 부분에 대한 프로세서 판독 사이클과 관련한 본 발명의 바람직한 실시예에 따른 논리 흐름도,
도 5는 DRAM과 인터페이스된 캐시 인터페이스의 캐시 부분에 대한 프로세서 기록 사이클과 관련한 본 발명의 바람직한 실시예에 따른 논리 흐름도,
도 6a 및 6b는 본 발명의 바람직한 실시예에 따라 인터페이스가 SRAM에 접속될 때, 캐시 인터페이스의 캐시 부분의 회로도.
SRAM과 DRAM 모두를 지원하는 캐시 인터페이스가 개시된다. 캐시 인터페이스는 바람직하게 두 부분으로 구성되는데, 프로세서상의 한 부분(바람직하게는 L2 캐시 콘트롤러의 일부임)과 캐시상의 한 부분으로 이루어진다. 캐시 인터페이스의 프로세서 부분은 DRAM이나 SRAM L2(혹은 그보다 상위의) 캐시, 다수의 상이한 캐시 속도 및 상이한 캐시 사이즈를 지원하도록 프로그램가능하다. 따라서, 캐시 인터페이스의 프로세서 부분은 프로세서가 캐시의 대단히 다양한 상이한 사이즈, 속도 및 종류를 액세스하도록 변경시킬 필요가 없다. 그러나 캐시 인터페이스의 캐시 부분은 상이한 캐시 RAM(DRAM 혹은 SRAM)을 가장 잘 지원하도록 바람직하게 변경하는 것이 허용된다.
본 발명은 캐시 및 캐시 어레이(리프레시되어야하는 RAM(DRAM)과 리프레시되지 않아도 되는 RAM(SRAM)으로 이루어짐)와 작업함을 유의하는 것이 중요하다. 오로지 DRAM만이 논의될 것이지만, 본 발명은 특히 내장형 DRAM(EDRAM)을 포함한 모든 종류의 DRAM에도 적용 가능하다. EDRAM은 현재 단일 데이터 전송율(SDR)과 이중 데이터 전송율(DDR) 인터페이스를 지원할 정도로 충분히 고속인 유일한 DRAM이다. 그러나, EDRAM은 리프레시되어야 하므로, 여전히 DRAM이며, DRAM 카테고리로 분류된다. 더 나아가 본 발명은 사용중 표시와 등가의 기능을 갖는 모든 종류의 메모리와 작업한다.
DRAM 캐시 인터페이스는, 프로세서에서 발생된 액세스와 DRAM 캐시에서 발생된 액세스사이에 액세스 충돌이 발생했을 때 프로세서가 이 사실을 알도록 사용중 표시가 어서트된다는 점에서 단순하다. RDAM 캐시가 사전 충전, 초기화, 리프레시 혹은 대기중 상태로 인해 데이터 판독이나 기록이 불가능할 때 액세스 충돌이 발생한다. 사용중 표시는 프로세서에 의한 특정 수의 액세스가 거부될 것임을 의미하지만, 깊은 입/출력 버퍼, FIFO 버퍼 혹은 복합 클록킹 체계의 필요성을 줄이기 위해, 이 거부될 양은 작아야 한다. 그러나, 버퍼를 제공하면 액세스 충돌이 적어지는 추가적인 개선을 제공할 것이다. 그러므로, 액세스 충돌의 회수를 더 줄이기 위해 "외부" 캐시 버스(캐시와 프로세서 사이의 버스)보다 더 넓은 판독 및 기록 버퍼가 제공되는 것이 바람직하다.
더 나아가, 본 발명의 가장 바람직한 실시예는 크로락 등에 의한 계류중인 출원 즉, 1997년 9월 5일 출원된 발명의 명칭이 "Data Processing System and Multi-Way Associative Cache Utilizing Class Predict Data Structure and Method Thereof"인 미국 출원번호 제 08/924,272 호에 개시된 클래스 체계를 이용한다. "크로락의 출원"에 개시된 발명을 이용하는 캐시 인터페이스는 이미 캐시 미스 로직을 갖고 있으며, 사용중 표시는 라우트되어 클래스 미스 로직의 논리적 확장처럼 작용한다. 또한, 본 발명의 가장 바람직한 실시예는, 본 원에서 참조하고 있는 발명의 명칭이 "Pipelined Memory Interface and Method for Using the Same"인 아이리시 등(Irish et al.)에 의한 미국 특허 제 5,790,838호에 기술된 것과 같은 파이프라인 메모리 인터페이스를 포함한다. 이들 개념은 이후에 더 상세히 논의된다.
SRAM이 캐시 메모리에 이용되면, 캐시 인터페이스의 캐시 부분은 DRAM 캐시에 관련된 성능 보강부분을 제거하도록 변경되는데, 일반적으로 이 보강부분은 SRAM에 대해서는 불필요한 것이다. 이러한 DRAM 성능 보강부분은 판독 버퍼, 판독 버퍼 어드레스 레지스터 및 사용중 표시를 포함한다. SRAM이나 DRAM이 캐시로서이용될 때 비록 캐시 인터페이스의 캐시 부분은 변경되는 것이 바람직하더라도, 캐시 인터페이스의 프로세서 부분이 변경되어서는 안된다
설계자는 프로세서 캐시 인터페이스 부분상의 RAM 표시기(RAM indicator)의 종류를 조정함으로써 인터페이스가 어떤 종류의 캐시(SRAM 혹은 DRAM)와 작업할 것인지 선정할 수 있다. 만약 RAM 표시기의 종류가 SRAM을 표시하도록 조정되었다면, 프로세서는 사용중 표시가 무시됨을 알 것이다. 반대로, RAM 표시기의 종류가 DRAM을 표시하도록 조정되었다면, 프로세서는 사용중 표시가 중요하다는 것을 알아차린다.
또한, 개시된 캐시 인터페이스는 캐시와 관련한 속도 및 사이즈 요구가 캐시 인터페이스의 캐시 부분에 프로그램되는 것을 허용한다. 설계자는 이러한 특징과 관련한 표시기를 조정함으로써 인터페이스의 속도 또는 RAM의 사이즈를 변경할 수 있다. 이런 방식으로, 인터페이스는 캐시의 상이한 사이즈 또는 속도와 이용하기 위해 재설계될 필요가 없어진다.
전술한 바와 같이, 본 발명의 캐시 인터페이스는 두 개의 부분을 갖는 것이 바람직한데, 그 중 한 부분은 프로세서와 같은 반도체 영역이나 그 부근에 존재하고, 다른 부분은 캐시나 그 부근에 존재한다. 캐시 인터페이스를 분할함으로써, 프로세서는 이 프로세서에 대해 중요하면서 국소적인 캐시 인터페이스의 대부분의 특징을 프로그래밍하는 것을 제어할 수 있다. 한편, 캐시 인터페이스는 캐시에 대해 중요하면 국소적인 특징들을 제어한다. 이것은 도 2에 대한 논의에서 더 명확해질 것이다. 선택적으로, 캐시 인터페이스는 타이밍과 예컨대 전력, 라우팅 밀도등과 같은 다른 요구들을 충족시킬 수 있는 반도체상의 모든 지점(들)에 위치되는 하나 이상의 부분들을 포함할 수 있다.
이제 도 1로 돌아가서, 이 도면은 본 발명의 바람직한 실시예를 이용하는 반도체 패키지에 대한 하나의 가능한 구성을 예시한다. 반도체 패키지(100)는 버스(150, 160)를 통해 두 개의 SRAM 혹은 DRAM 캐시(110, 120)에 각기 접속된 프로세서(130)를 포함한다. 캐시와 프로세서 사이에 광폭 버스(따라서 데이터 전송율)를 갖는 프로세서(130)를 제공하기 위해 두 개의 SRAM 혹은 DRAM 캐시가 존재한다. 캐시(110)에 대한 캐시 인터페이스는 바람직하게 두 개의 부분 즉, 캐시 부분(180)과 프로세서 부분(133)으로 구성된다. 마찬가지로, 캐시(120)에 대한 캐시 인터페이스는 바람직하게 두 개의 부분 즉, 캐시 부분(190)과 프로세서 부분(136)으로 구성된다. 이들 부분들은 도 2와 도 3을 참조하여 더 상세히 설명될 것이다.
반도체 패키지(100)는 또한 버스(155, 166)를 통해 두 개의 SRAM 혹은 DRAM 캐시(115, 125)에 각기 접속된 제 2 프로세서(140)를 포함한다. 또 다시, 캐시와 프로세서 사이에 광폭 버스(및 결과적으로 데이터 전송율)을 갖는 프로세서(130)를 제공하기 위해 두 개의 SRAM 혹은 DRAM 캐시가 존재한다. 캐시(110)에 대한 캐시 인터페이스는 바람직하게 두 개의 부분 즉, 캐시 부분(185)과 프로세서 부분(143)으로 구성된다. 캐시(125)에 대한 캐시 인터페이스도 바람직하게 두 개의 부분 즉, 캐시 부분(195)과 프로세서 부분(146)으로 구성된다.
따라서, 반도체 패키지(100)는 두 개의 프로세서를 구비하고, 각각의 프로세서는 두 개의 SRAM 혹은 DRAM 캐시에 접속된다. 각각의 캐시와 캐시 인터페이스는 바람직하게 단일 데이터 전송율(SDR) 및/또는 이중 데이터 전송율(DDR) 인터페이스를 지원하는데, 이들은 공업 표준 규격의 캐시 인터페이스이다. 공지된 바와 같이, 데이터는 SDR 인터페이스에서 클록의 에지(edge)에서(도 1에는 도시 안됨) 캐시로/로부터 전송된다. DDR 인터페이스에서는, 데이터가 클록의 상승 및 하강 에지 모두에서 전송된다. DDR과 SDR 사양처럼 캐시 인터페이스는 이 캐시 인터페이스로부터 프로세서로 거슬러 보내지는 하나 이상의 "에코(echo)" 클록(도 1에는 도시 안됨)을 제공한다. 이들 클록은 프로세서와 캐시 사이에서 타이밍을 개선한다.
반도체 패키지(100)은 잠재적으로 다른 레벨의 캐시 메모리, 하드 드라이브, 입/출력 장치, 네트워크 접속부 등을 포함한 다른 레벨의 메모리들과 함께 갖추어져 컴퓨터 시스템 내에 배치될 것이 예상된다.
도 1에 도시된 캐시와 캐시 인터페이스는 각 프로세서에 대한 두 개의 캐시로부터 프로세서마다 하나의 더 큰 캐시로 조합되어 필요한 버스 폭을 제공할 수 있음을 유의해야 한다. 또한, 정규 반도체 칩에 존재하는 많은 다른 특징들이 도 1에는 도시되지 않았다. 예를 들면, 각 프로세서내의 L1 캐시가 도시되지 않았고, 메모리 및 입출력 장치와 오프-칩 통신하는 버스도 도시되지 않았으며, L2 캐시와 상호 접속하는 버스도 도시되지 않았다. 더 나아가, 도 1의 블록도는, 프로세서와 캐시가 도면에서는 뚜렷하게 분리된 장소에 있지만 각 블록의 기능이 특정 블록 영역에 대해 분류되지 않고 반도체 영역 전반에 걸쳐 퍼져 있을 수도 있다는 점에서 단순하게 배치되었다. 도 1은 본 발명과 본 발명의 바람직한 일 실시예의 몇몇 두드러진 특징을 간단히 예시한다.
또한, 도시된 블록의 각각은 분리된 반도체상에 상주하거나, 혹은 모든 블록들이 하나의 더 큰 반도체상에 상주할 수도 있다. 패키지(100)는 또한 개별 패키지로 나뉠 수도 있고, 이 때 각각의 패키지들은 도 1의 하나 이상의 부분들을 포함할 수도 있다. 더 나아가, SRAM 혹은 DRAM L2 캐시(110, 115, 190, 195)에 SRAM이 이용되었는지 혹은 그 대체로서 DRAM이 이용되었는지와 상관없이, 캐시 인터페이스의 프로세서 부분(133, 143, 136, 146)은 변경되지 않는 것이 바람직하다. 이것은 캐시 인터페이스의 프로세서 부분이 상이한 사이즈, 속도 및 메모리 종류(SRAM 혹은 그 대체로서의 DRAM)를 갖는 다양한 캐시와 인터페이스할 수 있다는 이점을 제공한다. 또한, SRAM이 L2 캐시에 이용되면, 액세스 속도, 대역폭 혹은 다른 고려 사항들로 인해 각각의 캐시(110, 115, 120, 125)에 대해 다수의 SRAM 캐시들이 존재할 수도 있다.
"SRAM 혹은 DRAM L2 캐시"라는 용어는, 캐시에 대해 하나의 RAM 혹은 다른 RAM이 선정되는 것처럼, "SRAM 혹은 그 대체로서의 DRAM L2 캐시"를 의미하는 것으로 해석되어야 함으로 유의해야 한다. 두 종류의 RAM 모두를 갖는, 특히 기본적인 DRAM 캐시상에 SRAM 버퍼를 갖는 하나의 캐시를 구비하는 것도 가능하지만, 본 원에서 "캐시 메모리"라는 용어는 주 메모리로부터(혹은 주 메모리로 전송되는) 정보를 기억하는데 이용되는 실제 비트 및 위치를 표시하는 것으로 이용된다. 이 용어는 캐시 메모리내의 정보의 사본으로서 이용되는 중간 단계를 표시하는데 이용되지 않는다. 예를 들면, 보이드 등(Boyd, et al.)에 의한 미국 특허 제 5,895,487호인 "Integrated Processing and L2 DRAM cache"에서는, SRAM과 DRAM 모두를 갖는 L2 캐시 메모리가 개시되었다. 그러나, 캐시의 SRAM 부분은 필수적으로 DRAM 내의 정보의 사본을 포함하는 고속 버퍼이다. DRAM 부분은 실제 정보를 기억하는 부분인 반면, SRAM 부분은 단순히 DRAM 부분의 사본이 된다. 이러한 정의하에서, 보이드 등의 특허의 SRAM/DRAM 캐시는 DRAM 캐시가 된다.
이제 도 2를 참조하면, 이 도면은 하나의 프로세서와 SRAM 혹은 DRAM 사이의 캐시 인터페이스에 대한 더욱 정밀한 조사이다. 이 프로세서와 추가의 캐시 사이의 캐시 인터페이스는 도시되지 않았다. 프로세서(910)은 캐시 인터페이스의 프로세서 부분(905)을 포함하는 반면, SRAM 혹은 DRAM 캐시(970)는 동일한 캐시 인터페이스의 캐시 부분(960)을 포함한다. 따라서, 캐시 인터페이스(903)는 두 개의 부분 즉, 부분(905)과 부분(960)을 포함한다. 프로세서 캐시 인터페이스 부분(905)은 세 개의 표시 즉, RAM 종류(920), 인퍼테이스 속도(930), RAM 사이즈(940)를 포함한다. 프로세서 캐시 인터페이스 부분(905)은 추가적으로 L2 캐시 콘트롤러(947)와 클록 분주기(clock divider)(945)를 포함한다. 프로세서 (910)는 버스(948), 사용중 표시(이것은 액티브 로우(active low)인 것이 바람직함), 클록(CK 및 CK') 및 에코 클록(CQ 및 CB)을 통해 SRAM 혹은 DRAM과 통신한다. 사용중 신호와 관련한 사용중 표시와 에코 클록은 공지된 수신기, 래치 등을 통해 L2 캐시 콘트롤러(947)로 바람직하게 라우트된다. 사용중 표시를 수신하여 그에 대해 작용하도록 프로세서 인터페이스 부분(905)을 구성하는 것과 관련하여 당업자에게 공지된 모든 메커니즘은 본 발명에 적용 가능하다. 이들 메커니즘은 일반적으로 "수신기"로 불리우며, 수신기들은 사용중 표시를 DRAM으로부터 프로세서 칩으로 접속시킨다. 중요한 것은, DRAM이 캐시로서 이용될 때, 프로세서 캐시 부분이 사용중 표시에 대해 작용한다는 것이다. 마찬가지로 중요한 것은, SRAM이 캐시로서 이용될 때에는 사용중 표시와 사용중 클록을 디스에이블시키는 능력이다. 반도체 칩에 대한 외부(혹은 캐시가 온-칩일 경우에는 칩에 대한 내부) 신호를 인에이블링 및 디스에이블링시키는 구조와 방법은 당업자에게는 공지된 것이다.
SRAM 혹은 DRAM L2 캐시(970)는 디렉토리(태그 RAM이라고도 불림)(949), 캐시 인터페이스(903)의 캐시 부분(960), 사용중 타이밍 표시(950)를 포함한다. SRAM 혹은 DRAM L2 캐시(970)은 조금도 필요치 않더라도 결합(associativity)을 지원하는 것이 바람직하다.
도 2에는 도시되지 않았지만, RAM 종류(920), 인터페이스/캐시 속도(930) 및 RAM 사이즈(940) 표시들은 그들의 지원 로직(예컨대 클록 분주기(945))과 함께 L2 캐시 콘트롤러(947)에 위치되는 것이 이로우며 바람직하다. 이것은 캐시 콘트롤러가 캐시(970)와 대부분의 혹은 모든 프로세서(910)의 대화를 제어하는 별개의 메커니즘이 되는 것을 허용한다. 이 실시예에서, L2 캐시 콘트롤러(947)와 프로세서 인터페이스 부분(905)은 동일한 메커니즘이 될 것이다. 그러나 도 2는, 캐시 콘트롤러와 표시들이 필요할 때 접속되기만 한다면, 원한다면, 이 기능이 캐시 콘트롤러의 외부에 위치될 수도 있음을 예시한다. 특히, 캐시 콘트롤러는 RAM 사이즈(940) 표시를 알 필요가 있을 것이다. RAM 종류(920) 표시의 경우, RAM 종류 표시는 사용중 표시, 사용중 클록을 인에이블 혹은 디스에이블시키고, 다음에이것은 L2 캐시 콘트롤러로 라우트된다. 결국, 이것은 캐시 콘트롤러 외부에서 일어날 수 있다. 인터페이스/캐시 속도(930)는 또한 캐시 콘트롤러 외부에서 발생할 수 있으며, 마찬가지로 이것은 적절한 타이밍을 위해 캐시 콘트롤러로 공급될 것이다.
본 발명의 가장 바람직한 실시예는 "아이리시"의 특허에 설명된 것과 같은 파이프라인 메모리 인터페이스를 포함한다. 파이프라인 캐시의 경우, 캐시 인터페이스(903)의 프로세서 부분(905)과 캐시 부분(960)은 파이프라인을 지원해야만 한다. 캐시 인터페이스(903)의 프로세서 부분(905)은 "아이리시"의 특허에 설명된 것처럼 판독과 기록이 실제로 발생하기에 앞서 판독과 기록을 제기함으로써 파이프라이닝을 지원할 것이다. 캐시 인터페이스(903)의 캐시 부분(960)이 프로세서를 바쁘게 하면(사용중 신호를 어서트함으로써), 사용중 표시가 파이프라인에 부가된다. 다음, 파이프라인 데이터 전송이 발생하면, 사용중 표시가 어서트된다. 사용중 표시에 대한 타이밍은 이후에 더 상세히 설명된다.
본 발명의 가장 바람직한 실시예에서, "클로락"에 의한 동시 계속 출원에 설명된 클래스 체계가 이용되는 것이 바람직하다. 클로락의 출원에 설명된 발명을 이용하는 L2 캐시 콘트롤러(947)는 L2 캐시 콘트롤러(947)에 이미 캐시 미스 로직(도 2에는 따로 도시되지 않음)을 구비하고 있을 것이고, 사용중 표시는 라우트되어, 클래스 미스 로직의 논리적 확장으로서 작동할 것이다. 파이프라인인 L2 캐시에 대한 캐스 미스 로직은 일반적으로 태그 파이프 로직(tag pipe logic)과 데이터 파이프 로직(data pipe logic)의 부분을 포함한다. 태그 파이프 로직은 클래스 미스를 결정하는 반면, 데이터 파이프 로직은 공지된 것처럼 판독, 기록 및 검색을 제기한다.
사용중 표시는 논리적으로 클래스 미스처럼 동작하고, 클래스 미스와 "논리합되는" 것처럼 생각될 수도 있다. L2 캐시 콘트롤러(947)의 데이터 파이프 로직에 의해 제어되므로 파이프라인에 대한 이벤트의 시퀀스는 L2 클래스 미스와 사용중 표시 모두에 대해 동일할 것이다. L2 클래스 미스와 사용중 표시에 대해 프로세서(데이터 파이프 로직에 의해 감독되므로)는 액세스를 한번 더 재시도할 것이다. 새로운 데이터가 파이프라인을 통해 들어오기를 대기하는 것, 구(old)(및 틀린) 데이터를 폐기하는 것, 그리고 파이프라인을 지우는 것과 관련된 단계들은 클래스 미스 및 사용중 모두에 대해 동일할 것이다. 그러나 단계들이 시작될 때의 타이밍은 다르다. 태그 파이프 로직은, 로컬 태그 RAM(디렉토리로도 부름)에 액세스하고 태그 RAM에 룩업을 신속하게 수행할 수 있기 때문에, 클래스 미스를 공정하고 신속하게 결정할 수 있다. 그러나, 사용중 신호는, 진행중인 데이터 액세스가 파이프라인을 통과할 때 어서트될 것이다. 따라서, 사용중 표시는 캐시와 프로세서 사이의 데이터 전송이 발생할 때까지 지연되며, 반면에 클래스 미스는 태그 파이프 로직에 의해 금방 발견될 것이다. 일단 태그 파이프 로직이 클래스 미스를 결정하거나 사용중 신호를 수신하면, 이것은 데이터 파이프 로직에 통지하고, 다음에 미스되거나 사용중이었던 액세스의 재시도를 계획한다. 반드시, 캐시 콘트롤러(및 프로세서 캐시 인터페이스 부분)는 프로세서가 액세스를 재시도할 것을 지시한다.
표시들(920, 930, 940, 950)은 시동시 초기화되는 하나 이상의 비트를 포함하는 레지스터인 것이 바람직하다. 원한다면, 레지스터에 올바른 코드들이 생성되도록 레지스터의 비트들을 접지시키거나 혹은 전원에 연결함으로써 레지스터들은 "하드 코드(hard coded)"될 수 있다.
RAM 종류 표시(920)는 SRAM 혹은 DRAM L2 캐시(970)에 이용되는 캐시 RAM의 종류(SRAM이거나 혹은 DRAM)를 나타낸다. 인터페이스 속도 표시(930)는 캐시 인터페이스의 캐시 부분(960)의 속도를 나타내는데, 이것은 데이터가 SRAM 혹은 DRAM 캐시(970)으로/으로부터 전송될 수 있는 속도(클록 주파수로)를 나타내기도 한다. 그러나, 다른 곳에서는 SDR 및 DDR 전송 표시들이 논의됨을 유의해야 한다. 인터페이스 속도 표시(930)는 클록 분주기로서 프로그램되는 것이 바람직하다. 클록 분주기(945)는 프로세서에 대한 클록을 취해서(도 2에 도시 안됨), 이 클록을 클록 분주기로 나누어 클록 CK와 CK'(이것은 CK의 반전 신호로, 이 도면과 다른 도면에서로 표시됨)를 발생하고, 이들은 캐시 인터페이스(903)의 캐시 부분(960)으로 입력된다. 클록 분주기는 당업자에게 공지된 것으로, 출력 클록을 다른(혹은 같은) 속도로 생성하도록 입력 클록의 속도를 변경시킬 수 있는 모든 메커니즘은 클록 분주기(945)로서 이용될 수 있다. 이 클록 변경 메커니즘을 제공함으로써, 더욱 빠른 혹은 더욱 느린 속도의 SRAMs 혹은 EDRAMs이 캐시 인터페이스를 변경하지 않고 이용될 수 있다.
RAM 사이즈 표시(940)는 SRAM 혹은 DRAM L2 캐시(970)의 "깊이(depth)"를 바람직하게 서술한다. 예를 들면, RAM이 64K(여기에서 K는 210인 1024임) 위치들을 구비하면, 숫자 64 혹은 65,536(64K)은 RAM 사이즈 표시(940)내에 위치될 것이다. 이 숫자는 캐시 RAM의 "폭(width)"을 나타내는 것이 아니다. 예를 들어, 버스(948)가 16바이트 폭이라면, RAM 사이즈 표시(940)는 이 사이즈를 나타내지 않는 것이 바람직하다. RAM 사이즈 표시(940)는 RAM의 사이즈와 상관하는 수로 단축될 수 있다. 예를 들면, 숫자 0은 64K를 나타낼 수 있는 반면, 숫자 1은 128K를 나타낼 수 있다. RAM 사이즈 표시(940)는 캐시의 사이즈에 대한 제한으로서 동작하는 레지스터인 것이 바람직하다. 이 숫자는 프로세서와 운영 체계에 캐시의 사이즈를 제공한다. 프로세서와 운영 체계는 캐시의 사이즈를 인지하고, 캐시내에 위치되는 것이 허용되는 데이터의 양을 인지한다.
디렉토리(949)와 L2 캐시 콘트롤러(947)내의 디렉토리(도 2에 도시 안됨)는 어떤 정보가 현재 캐시내에 존재하는지를 추적하는데 이용되는 메커니즘이다. 공지된 바와 같이, 추적 메커니즘은 일반적으로 "태그된 메모리(tagged memory)"이다. 개별적으로 논의되더라도, 디렉토리들은 하나의 디렉토리로 조합될 수도 있다.
캐시 인터페이스(930)의 캐시 부분(960)은 액세스 충돌이 발생했음을 프로세서에게 알리는 사용중 표시(이 경우에는, 사용중 신호)를 발생하는 것이 바람직하다. 사용중 신호는 오로지 SRAM 혹은 DRAM 캐시(970)가 DRAM으로 구성되었을 때에만 유효하다. SRAM 혹은 EDRAM L2 캐시(970)이 SRAM으로 구성되면, 사용중 신호는이용되지 않는다. 사용중 신호와 사용중 에코 클록은 L2 캐시 콘트롤러(947)(및, 전술한 바와 같이, L2 캐시 콘트롤러에 대해 내부적인 클래스 미스 로직)로 라우트된다. SRAM은 리프레싱을 필요로하지 않으므로, 캐시(970)가 SRAM으로 구성되면, 사용중 표시는 이용되지 않는다. SRAM이 캐시로서 이용되면, 사용중 신호와 에코 클록(CB)은 이용되지 않는 것이 바람직하며, 캐시 인터페이스 부분(960)에 나타나지도 않는다. 더 나아가, SRAM이 캐시로서 이용되면, 신호들은 프로세서로 라우트되지 않는다. 만약 프로세서(910)가 별개의 반도체 칩상에 있다면, 이들 신호와 관련하여 캐시 인터페이스의 프로세서 부분상의 수신기들은 여전히 존재한다. 이 수신기들은 SRAM이 이용될 때 하이(high) 혹은 로우(low)로 묶여져 있을 수도 있다. 추가로, 수신기로부터 프로세서의 내부로 신호를 라우팅하는 것은 여전히 존재하지만, 수신기들은 디스에이블되어, 수신기의 출력은 비활성의 사용중 표시(inactive busy indication)를 출력하게 된다. 이들 신호가 특정 전압 레벨로 묶였는지(프로세서 칩에 대해 외적 혹은 내적으로)의 여부와 무관하게, SRAM이 캐시로서 이용되면, L2 캐시 콘트롤러(947)는 이 사용중 표시와 사용중 에코 클록을 간단히 무시한다.
SRAM 혹은 DRAM 캐시(970)가 DRAM으로 구성되면, DRAM 캐시는 다수의 상태중 하나로 될 수 있다. 프로세서와 DRAM에 의해 발생된 액세스(DRAM 캐시에 대한 판독 혹은 기록) 사이의 액세스 충돌은 DRAM 캐시가 사전 충전, 초기화, 리프레시 혹은 대기 상태이기 때문에 초래된다. 사전 충전은 어드레스에 대한 판독 혹은 기록이 발생된 이후에 일어나며, 올바른 전위로 충전될 위치의 비트와 관련한 시간이다. 리프레시는 어드레스가 재충전(recharge)될 때 일어난다. 리프레시는 프로세서와 캐시 인터페이스와는 독립적으로 일어난다. 다시 말하면, 프로세서도 캐시 인터페이스도 리프레시를 제어하지 않는다. DRAM 자신이 리스레시를 제어한다. 그러나, 다른 메커니즘도 가능하며, 도 3을 참조하여 논의된다. 초기화는 칩에 전력이 공급된 이후에 발생한다. 이 기간에는 레지스터가 프로그램되는 것과, 로직이 리셋되는 것 등이 허용된다. 대기 상태는 최소 리프레시가 수행되는 절전 모드이다. DRAM 캐시가 이들중 어떤 상태에 있을 때, DRAM 캐시는 어떠한 새로운 정보도 수용할 수 없으며, 캐시로 부터 어떠한 정보도 검색할 수 없다.
그러나, 결합을 지원하는 캐시의 경우, 액세스가 다른 액세스에 뒤따르는 경우들이 존재한다. 캐시가 결합을 지원하면, 캐시는 하나 이상의 클래스 비트에 의해 표시되는 바와 같이 두 개 이상의 뱅크(banks)로 나뉘어진다. 4방식 결합인 경우, 캐시는 4개 뱅크로 나뉘어진다. 하나의 뱅크내의 위치에 대한 액세스가 존재할 때, 다른 3개의 뱅크중 하나는, 사전 충전의 불리함없이, 다음 사이클동안 액세스될 수도 있다. 그러나, 사전 충전 기간이 지날때까지는 현재 액세스된 뱅크가 다시 액세스될 수는 없다. 지금 논의된 것과 같은 상황 동안에 제공되는 이득으로 인해, DRAM 캐시가 결합을 지원하는 것이 바람직하다.
캐시 인터페이스(930)의 캐시 부분(960)은 클록 CK 및 CK'을 수신하고, 이들은 에코 클록 CQ 및 CB를 발생하는데 이용한다. 이것은 도 3을 참조하여 더 자세히 논의된다. 캐시 인터페이스(930)의 캐시 부분(960)은 또한 사용중 타이밍 표시(950)를 포함하는 것이 바람직하다. 사용중 타이밍 표시(950)는 사용중 신호의 타이밍을 나타내는데, 이것은 특히 클록 CK에 참조된다. 사용중 타이밍 표시(950)는 사용중 표시가 조정되어 클록 CK의 상승 에지에서 유효한지 혹은 하강 에지에서 유효한지를 나타낸다. 사용중 표시의 타이밍은 도 3을 참조하여 더 자세히 논의된다.
지금까지 논의된 것은, DRAM과 SRAM 캐시 모두를 지원하는 캐시 메모리에 대한 캐시 인터페이스이다. 캐시 인터페이스는 바람직하게 두 부분 즉, 프로세서상/부근의 한 부분과, 캐시 상/부근의 다른 부분으로 쪼개지지만, 논의된 기능의 일부 혹은 모두를 갖는 한 부분으로 될 수도 있다. 프로그램 가능하고 SRAM과 DRAM 모두를 지원하는 캐시 인터페이스를 제공하는 것은 설계자에게 상당한 비트 융통성을 제공하며, 프로세서상의 캐시 인터페이스를 완전히 재설계하지 않고 설계자가 자신의 애플리케이션을 위해 가장 좋은 시스템을 선택할 수 있게 해준다.
도 3 내지 도 5에서, SRAM 혹은 DRAM L2 캐시(920)(도 2에 도시됨)는 DRAM 내에 구현되는 것으로서 논의될 것이며, DRAM 캐시에 대한 하나의 가능한 DRAM 캐시 인터페이스가 논의될 것이다. 도 6에서, SRAM 혹은 DRAM L2 캐시(920)(도 2에 도시됨)는 SRAM 내에 구현되는 것으로서 논의될 것이며, DRAM 캐시에 대한 하나의 가능한 SRAM 캐시 인터페이스가 논의될 것이다.
이제, 도 3으로 돌아가서, 캐시 인터페이스에 대한 캐시 부분은 이것이 DRAM과 인터페이스할 때 더 자세히 도시된다. 도 2에서, SRAM 혹은 DRAM 캐시(970)(도 3에는 DRAM 캐시(200)으로 도시됨)는 4개의 별개의 DRAM 캐시 어레이(220, 221, 222, 223)과 캐시 인터페이스 부분(201)을 포함한다. DRAM 캐시(200)는 비록 파이프라인이 도면의 간소화를 위해 명확히 도시되지 않았더라도 파이프라이닝을 지원하는 것이 바람직하다. DRAM의 지원과 SRAM의 지원 사이의 차이는 도 6을 참조하여 설명될 것이다. DRAM 어레이(220, 221, 222, 223)와 캐시 인터페이스(201)는 단일 데이터 전송율(SDR)과 이중 데이터 전송율(DDR) 인터페이스 사양을 충족하는 것이 바람직하다. 캐시(200)는 버스(285)를 통해 프로세서(도시 안됨)와 통신한다. 어드레스 비트 SA0 내지 SA17(전체 256K 위치와 관련하여, 이 예에서는 18비트)은 프로세서로부터 수신된다. 또한 클록 CK 및 CK'와, 이후에 자세히 논의되는 것처럼 프로세서, 캐시 인터페이스 및 캐시 사이의 대화를 나타내는 비트 B1-B3이 프로세서로부터 수신된다.
DRAM을 지원하기 위해, 캐시 인터페이스(201)는 SRAM에 대해 실제로 필수적인 것이 아닌 약간의 보강 부분을 포함한다. 특히, 판독 버퍼 어드레스 레지스터(211), 판독 버퍼(235) 및 사용중 표시(292)(출력 레지스터(254)를 포함)는 SRAM에 필요한 보강부분이다. SRAM과 인터페이스하며 이들 보강 부분을 이용하지 않는 캐시 인터페이스 부분은 도 6에 도시될 것이다.
제어 로직(230)은 캐시 인터페이스 부분(201)이 판독하는지 기록하는지를 제어하고, 내부 타이밍의 일부를 제어하며, SDR 전송이 발생했는지 혹은 DDR 전송이 발생했는지를 제어한다. 이것은 이후에 더 자세히 설명된다. 바람직하게 제어 로직(230)에 의해 발생된 적어도 4개의 신호 즉, 로드(load), 기록, 출력 인에이블 및 진행(advance)이 존재한다. 로드 신호는 프로세서에 의한 판독 요구동안 발생되며, 판독 어드레스 블록(205)을 인에이블 시킨다. 기록 신호는 프로세서에 의한 기록 요구동안 인에이블되며, 입력 레지스터(241, 242)와 기록 어드레스 레지스터(210)를 인에이블시킨다. 출력 인에이블 신호는 데이터가 판독 버퍼(235)와 출력 레지스터(250, 251)을 통해 버스(285)상에서 운전될 때 발생된다. 진행 신호(advance signal)는 제어 로직(115), 판독 버퍼 어드레스 레지스터(211), 멀티플렉서(215)로 진행하기 위해 발생된다. 간소화를 위해 표시되지 않았지만, 출력 레지스터(250, 251)의 출력상의 멀티플렉서처럼 추가의 멀티플렉서가 존재함을 유의하라. 출력 레지스터(254)를 통해 사용중 표시(이 예에서는, 사용중 신호(292))를 발생하는 비교 블록(225) 및 제어 로직(115)은 이후에 논의될 것이다.
클록 CK 및 CK'는, 캐시 인터페이스(903)(도 2에 도시됨)의 프로세서 부분(905)의 속도 인터페이스 표시(930)와 클록 분주기(945)의 사이즈에 의해 설정되는 것이 바람직한 소정 속도이다. 일반적으로, 원한다면, 비록 클록이 프로세서 속도일지라도, 클록 CK 및 CK'는 프로세서의 클록의 절반 속도일 것이다. 이것은 클록이 실행되는 속도에 있어서의 제한 요인이다. 또한, 어레이와 캐시 인터페이스가 바람직하게 DDR을 지원하므로, DDR이 프로세서의 속도로 데이터를 전송중이어서(CK 및 CK" 프로세서 속도의 절반으로 설정되었다고 가정함), 프로세서 속도의 절반보다 빠른 클록 속도는 실제로 필요치 않다. 캐시 인터페이스 부분(201)은 출력 레지스터(252, 253)를 통해 CK 클록("K" 클록으로 부름)을 통과시킴으로써 에코 클록 CQ 및 CB를 발생한다. CB는 사용중 표시(292)와 동기화된 클록이다. CQ 클록은 공업 표준 SDR 및 DDR 인터페이스의 요건을 충족시키는 SDR 및 DDR 에코 클록이다. 이 예에서 18비트당 하나의 CQ 클록이 존재한다. 이 에코 클록은 K 클록에서 세기 시작해 판독, 기록 및 무동작(no-operation;"noop"이라 칭함) 사이클 동안 계속해서 작동한다.
이 예에서, 버스(285)는 16바이트 폭이다(전체 144비트에 대해 에러 정정 코드을 위한 여분 비트와 보안 비트를 가짐). 캐시 인터페이스의 캐시 부분(201)은 DRAM 어레이(220, 221, 222, 223)와 통신한다. DRAM 어레이(220, 221, 222, 223)는 "라인"으로 분할되는 비트들의 어레이다. 각각의 캐시 라인은 버스(285)의 배수인 비트 수를 갖는다. 이 예에서, 이 배수는 8이다. 따라서, 각각의 캐시 라인은 라인당 총 1,152비트에 대해 에러 정정 코드와 보안 비트를 포함해 128 바이트를 보유한다. 프로세서는 한번에 16비트만을 판독 또는 기록할 수 있지만 캐시 라인은 128바이트 폭이므로, 하나의 캐시 라인은 8개의 16-바이트 피스(pieces)의 데이터를 보유할 수 있다. 캐시는 하나의 특정한 데이터 피스를 식별할 수 있어야 하므로, 각각의 데이터 피스는 하나의 어드레스에 대응한다. 따라서, 각각의 캐시 라인은 어드레스의 범위와 다수의 데이터 피스에 대응한다. 이전에 설명된 수는 단지 예시한 것이며, 원하면 변경할 수 있다. 캐시 부분은 오로지 DRAM 어레이(220, 221, 222, 223)에 대해 완전한 라인의 정보만을 판독 또는 기록한다. 더 작은 데이터 부분이 판독되거나 기록되는 것도 가능하지만, 이것은 사전 충전 상태로 인해 액세스 시간을 제한할 것이다.
고속 액세스를 지원하기 위해, 하나의 DRAM 어레이를 갖는 대신에 4개의 DRAM 어레이(220 내지 223)이 존재한다. 이들 어레이의 각각은 독립적으로 동작한다. DRAM 어레이를 쪼개는 것은 본 발명에서 필수적인 것은 아니다. 이것은 단지 DRAM 캐시 어레이로부터 SRAM 성능을 용이하게 달성한다. 어레이를 4개의 블록으로 나눔으로써, 사전 충전이나 리프레시로 인해 판독 또는 기록 대상인 블록이 사용중이 될 확률이 적어진다. 이러한 특별한 예의 경우, 각각의 독립적인 어레이는 하나의 캐시 라인보다 더 작은 폭을 가지며, 하나의 캐시 라인을 각기 검색 또는 기록하는 것의 몇 배까지 판독 또는 기록되어야 한다. 대부분의 메모리의 경우, 첫 번째 판독 및 기록은 이후의 판독 또는 기록보다 더 오래 걸린다. 각각의 어레이는 판독 동안 병렬로 액세스된다. 이것은 판독 버퍼(235)가 각각의 어레이로부터 4개의 캐시 라인 정보를 포함하는 것을 허용한다. 따라서, 각각의 클래스에 대한 각각의 캐시 라인은, 하나의 클래스로부터의 정보가 요구되면, 바람직하게 판독된다.
이 바람직한 실시예는, 모드 4개의 DRAM 어레이(220 내지 223)가 인에이블되어 한 번에 데이터를 전송하므로, 저전력 애플리케이션에 대해 너무 많은 전력을 소비할 수도 있음을 유의하라. 저 전력을 갖는 시스템인 경우, 각각의 DRAM 어레이는 독립적으로 액세스될 수 있거나, 혹은 4개의 어레이가 저속의 하나의 어레이로 통합될 수 있다.
따라서, 판독 버퍼(235)와 기록 버퍼(240)는 각각의 캐시 라인 만큼이나 넓은(바이트와 비트에 있어서) 것이 바람직하다. 프로세서가 DRAM 어레이(220 내지 223)에 대해 기록을 수행할 때, 데이터는 버스(285)상에서 운반되는 반면, SA0-SA17은 하나의 어드레스와 함께 운반되며, B1-B3은 기록을 표시하기 위해 운반된다(이것은 이후에 더 자세히 논의된다). 입력 레지스터(241, 242)는 데이터를 래치하고, 이 데이터를 기록 버퍼(240)로 전송한다. 현재 캐시 라인에 대한 어드레스 범위가 채워질 때까지 프로세서는 각각의 어드레스를 기록하는 것이 바람직하다. 예를 들면, 만약 기록 버퍼가 0에서 7까지의 어드레스에 대한 데이터를 포함한다면(각각의 어드레스는 16바이트의 데이터를 포함), 프로세서는 0에서 시작하여 어드레스 8까지 순차적으로 데이터 기록하는 것이 바람직하다. 따라서, 전체 캐시 라인만이 캐시와 판독/기록 버퍼 사이에 바람직하게 전송된다. 이러한 실시예의 이점은, 캐시 인터페이스에 대한 기록에 의해 캐시 라인 어드레스 경계가 교차될 때, 기록 버퍼(240)은 어레이(220, 221, 222, 223)중 하나에 기록할 것이라는 점이다. 프로세서로부터의 중간 기록이 다음 사이클(혹은 DDR인 경우는 클록 에지)에서 발생하면, 기록 버퍼는, 이전의 기록에 의해 DRAM 어레이에서 초래되는 사전 충전 기간에 무관하게, 금방 기록된 데이터를 자유롭게 받아들인다. 만약 전체 캐시 라인이 전송되지 않았다면, 예컨대 만약 프로세서가 어드레스 0에, 그 다음에 어드레스 22에, 그 다음에는 어드레스 43에 대해 기록하려 했다면, 예를 들어, 기록 버퍼는 두 번째 어드레스(어드레스 22)에 대한 데이터를 수신하면서 DRAM 어레이 내에 첫 번째 어드레스(어드레스 0)에 대한 데이터를 기록해야 할 것이다. 세 번째 어드레스가 캐시 인터페이스에 기록되면, 기록 버퍼는 사전 충전 때문에 두 번째 어드레스에 대한 데이터를 DRAM 어레이에 기록할 수 없기 때문에, 캐시 인터페이스는 사용중 표시를 인에이블시켜야 할 것이다.
판독은 또한 한 번에 하나의 캐시 라인마다 일어나는 것이 바람직하다. 즉, 판독 버퍼(235)는 하나의 캐시 라인을 판독할 것이고, 다음에 프로세서는 제 1 데이터 요소를 액세스하고, 다음에는 모든 다른 데이터 요소를 순차로 액세스함으로써 각각의 어드레스에 대응하는 모든 데이터 요소를 액세스할 것이다. 한번 더, 데이터 요소와 각각의 어드레스를 순차적으로 판독하는 것(혹은 다른 캐시 라인을 액세스하기 전에 버퍼로부터 적어도 두 개의 데이터 요소를 판독하는 것)은 사전 충전 기간으로 인한 액세스 충돌을 제한할 것이다.
캐시 라인 경계들이 자유로이 교차되도록 프로세서가 각각의 어드레스를 임의적으로 기록 또는 판독할 수 있는 것이 요구된다면, 판독(235) 및 기록(240) 버퍼는 깊이가 증가되는 것이 가능하다. 캐시 라인이 버퍼에 기억되는 것을 허용함으로써, 다른 데이터를 각기 수용 또는 전송하면서 버퍼는 SRAM 혹은 DRAM 어레이에 기록 또는 판독될 수 있기 때문에, 액세스 충돌이 덜 발생하게 된다. 그러나, DRAM 어레이는 캐시 인터페이스의 데이터 입출력 속도보다 저속인 것이 바람직하므로, 캐시 라인 경계의 많은 교차점이 존재하면, 버퍼는 가득 찰 수 있다.
액세스 충돌을 추가로 제한하기 위해서, 륭 등(Leung et al.)에 의한 미국 특허 제 5,829,026호인 "Method and Structure for Implementing a Cache Memory Using a DRAM Array"에 설명된 바와 같이, 추가의 판독/기록 버퍼가 있든지 없든지 간에 깊은 판독 혹은 기록 FIFO 버퍼를 이용하는 것이 가능하다. 그러나, 본 발명의 이점중 하나는 DRAM 캐시를 다룰 때 캐시 인터페이스의 간편성이다. 본 발명은 간단한 버퍼와 비교적 단순한 클록킹 체계를 갖는다. 륭의 클록킹 체계와 버퍼는 비교적 복잡하며, 큰 버퍼와 FIFO는 더 많은 반도체 영역을 필요로 한다. DRAM 어레이(220)(및/또는 221, 222, 223)이 SRAM에 구현되면, SRAM은 일반적으로 이러한 클록킹 체계와 버퍼를 요구하지 않으므로, 이러한 복잡성과 추가적인 반도체 영역이 필수적으로 낭비된다. 따라서, 본 발명은, SRAM이 캐시로서 이용될 때에는, 쓸모없는 복잡성과 반도체 영역을 제한하고, DRAM이 캐시로서 이용될 때에는, 복잡성과 반도체 영역을 제한한다.
결합은 이러한 해석에 다소 영향을 미침을 유의하라. 결합을 지원하는 DRAM 어레이를 예시하는 도 3에서, 순차 액세스 사이의 액세스 충돌은 순차 액세스에서 동일한 뱅크가 액세스될 때에만 발생할 것이다. 예를 들면, 만약 프로세서가 뱅크 0 다음에 바로 뱅크 1에 기록하기를 원한다면, 이들 액세스 사이에는 액세스 충돌이 없어야 한다. 그러나, 프로세서가 뱅크 0 다음에 기록하고 이 초기 기록이 종료(사전 충전 포함)되기 전에 동일한 뱅크내의 다른 캐시 라인에 기록을 원한다면, 캐시 인터페이스는 액세스 충돌을 발생할 것이다.
DRAM 어레이가 결합을 지원하면, 캐시 인터페이스 부분(201)은 결합을 지원해야 한다. 원한다면, 어드레스 비트 SA0 내지 SA17중 두 개가 클래스 비트로서 설계될 수도 있다. 선택적으로, 어드레스 비트와 별개인 두 개의 추가 비트(도 3에 도시 안됨)가 클래스 비트로서 설계될 수도 있다. 프로세스가 어레이(220 내지 223)에서 이용되면, 올바른 데이터를 포함하는 뱅크가 액세스될 준비가 되었으므로, 올바른 클래스 비트와 함께 후속 판독은 사용중이 되지 않을 것이다. 예를 들면, 만약 프로세서가 클래스 1로부터 판독을 원한다고 출력하지만 실제로는 클래스 2로부터 판독을 원한다면, 캐시 인터페이스는 클래스 1에 대해 DRAM 어레이를 액세스할 것이지만 캐시 미스를 발생할 것이다. 전술한 바와 같이, 캐시 미스 로직은캐시 인터페이스의 프로세서 부분의 일부인 것이 바람직하다. 다음, 프로세서는 클래스 2에 대한 판독을 재발행할 것이고, 클래스 2가 아닌 클래스 1에 대한 뱅크이고 이 때 사전 충전이 발생중이므로, 캐시 인터페이스는 클래스 2로부터 즉시 판독할 수 있다.
가장 바람직한 실시예에서, 프로세서가 특정 어드레스에 대응하는 하나의 뱅크로부터 데이터를 요구할 때, 판독 버퍼(235)는 모든 뱅크로부터 데이터를 액세스하도록 만들어 질 수 있다. 이 방식에서, 판독 버퍼는 모든 뱅크로부터 모든 데이터를 포함할 것이다. 클래스 미스는 계속 발생할 수 있지만, 프로세서가 다음에 데이터를 요구하면, 모든 4개의 클래스로부터의 모든 4개의 캐시 라인의 데이터가 판독 버퍼(235)내에 있기 때문에, DRAM 어레이중 하나를 액세스하는 것과 관련된 대기 시간은 발생하지 않을 것이다. 전술한 바와 같이, 이것은 4개의 캐시 라인의 데이터를 보유할 수 있으면서 동일한 시간에 모든 뱅크로부터 판독할 수 있는 판독 버퍼를 필요로 할 것이다. 도 3의 예에서, 각각의 DRAM 어레이의 폭은 하나의 캐시 라인의 폭보다 작으며, 버스(285)에 대해 정확한 개수의 비트를 검색하기 위해서는 여러 번 판독된다. 또한, 4개 어레이 모두는 4개의 클래스 모두로부터 4개의 캐시 라인 모두를 검색하기 위해 바람직하게 병렬로 판독된다.
예를 들어, 이전의 예를 이용하여, 만약 프로세서가 클래스 1로부터 데이터와 관련한 요구를 행하지만 실제로는 클래스 2로부터 판독을 원한다면, 판독 버퍼(235)는 현재 결합 체계로 뱅크의 각각으로부터 캐시 라인을 검색할 것이다. 만약 DRAM 어레이가 4방식 결합을 지원하고, 어드레스 비트 SA0 내지 SA17의 최하위 2비트가 클래스 비트이면, 판독 버퍼(235)는 어드레스 X0, X1, X2, X3에 대응하는 캐시 라인을 판독할 것이며, 여기에서 "X"는 어드레스의 동일한 상위 16비트에대응한다. 그러면, 판독 버퍼(235)는 모든 가능한 뱅크에 대한 모든 가능한 데이터를 가질 것이고, 클래스 미스는 존재하지 않을 것이다. 다음, 판독 버퍼는, 프로세서가 올바른 클래스에 대해 올바른 데이터를 요구하면, 프로세서로 올바른 데이터를 건네줄 것이다. 이 예에서, 클래스 2로부터의 데이터는 올바른 데이터이며, 다른 3개의 캐시 라인은 무시될 것이다.
제어 로직(115)은 캐시 인터페이스 부분(201)의 큰 부분이다. 제어 로직(115)은 사용중 신호(292)를 제어하는데, 이 신호는 프로세서에게 액세스 충돌이 발생되었음을 통지한다. 액세스 충돌은 전술한 바와 같이 DRAM 캐시가 사전 충전, 초기화, 리프레시 혹은 대기 상태일 때 발생한다. 이러한 DRAM 캐시 상태중 어떤 것인 동안에, 제어 로직(115)은 사용중 표시(292)(이것은 이 예에서 액티브 로우인 신호이다)를 어서트한다. 제어 로직(115)이 DRAM 어레이가 이전에 설명한 상태들중 하나임을 알게되면, 어떤 종류의 통신이 이들 두 엔티티사이에 존재할 것이다. 일반적으로, 이 통신은 제어 로직에게 DRAM 어레이(220, 221, 222 및/또는 223)가 리프레시할 수 없을 때를 통지하는 신호(도 3에 도시 안됨)가 될 것이다.
각각의 DRAM 어레이(220 내지 223)는 DRAM이 자신의 리프레시를 수행할 수 있도록 자신만의 리프레시 간격 카운터와 리프레시 어드레스를 보유하는 것이 바람직하다. K 클록이 시작되면, 리프레시 간격 카운터는 K 클록을 세기 시작한다. K 클록이 멈추면, DRAM은 바람직하게 내부의 자체 발생된 클록으로 전환하여 절전 대기 모드로 되어 데이터를 유지하는데 필요할 정도의 빈도로만 리프레싱할 것이다. K 클록의 시작을 감지하는 즉시, DRAM은 특정 개수의 사이클내에 대기 상태에서 활성 모드로 전환할 것이다. 대기 모드일 때, 사용중 표시는 제어 로직(115)에 의해 어서트될 것이다. 추가로, 초기화(이것은 전력을 공급한 이후이지만 캐시와 캐시 인터페이스를 리셋하는 것이 허용되었다면 어떤 시간에나 발생할 수 있다) 동안에는, 제어 로직(115)이 사용중 표시(292)를 어서트한다.
다 나아가, 제어 로직(115)은 DRAM 어레이(220 내지 223)에 대한 리프레시를 계획하도록 만들어질 수 있다. 그러나, DRAM 어레이가 그들 자신의 리프레시를 계획하도록 함으로써, SRAM이 어레이(220 내지 223)에 이용될 때, 제어 로직(115)(및 캐시 인터페이스 부분(201))은 SRAM을 지원하기 위해 어떤 식으로든 수정될 필요가 없다. 만약 원한다면, 캐시 인터페이스 부분(201)이 하나의 프로그램된 상태에서는 리프레시를 제어하고 다른 프로그램된 상태에서는 리프레시를 수행하지 않도록, 제어 로직(115) 혹은 캐시 인터페이스 부분(201)의 다른 부분이 프로그램 가능해질 수도 있다. 이것은 캐시 인터페이스 부분(201)에 복잡성을 추가하므로, DRAM 어레이(220 내지 223) 자신이 리프레시를 제어하는 것이 바람직하다.
그러나 원한다면, 캐시 인터페이스 부분(201)이 비트 B1 내지 B3과 제어 로직(230)을 통해 프로세서로부터 리프레시 커맨드를 수용하도록 될 수도 있다. 후술되는 바와 같이, B1 내지 B3은 이용되지 않는 여분의 조합을 갖는다. 이처럼, 제어 로직(230)은 DRAM 어레이가 리프레시하도록 만드는 B1 및 B2의 특별한 조합을 갖게 수정될 수도 있다. 이 실시예는 사전 충전 및 리프레시로 인한 액세스 충돌을 잠재적으로 줄일 수 있는 반면, 프로세서가 리프레시를 계속 추적하는 것이 요구된다. 따라서, 프로세서가 리프레시를 추적하는 것으로부터 자유롭고 DRAM 어레이(220)가 리프레시를 수행할 책임이 있는 것이 더욱 바람직하다.
비트 B1 내지 B3에 관련하여, 다음 표는 프로세서와 캐시 인터페이스(223) 간의 대화를 나타낸다.
K 클록이 상승하면, 다음이 발생한다:
어드레스와 커맨드가 내부에 래치된다. 만약 이전 동작이 비사용중인 기억이었으면, 데이터는 기억 버퍼에 래치된다.
만약 B1='0'이고 B2='1'(페치):
만약 어레이중 선택된 뱅크가 "자유로운"것이면, 이것은 액세스되고, 데이터는 페치 버퍼로 이동되고, 페치 버퍼는 유효로 표시된다.한편, 버퍼내의 어드레스와 요구된 어드레스간의 비교가 행해진다.만약 어레이가 자유로왔거나 페치 어드레스가 페치 버퍼 어드레스와 일치했다면,사용중은 다음의 상승 K 이후 K의 하강시(1.5 사이클후) 차단되고, 데이터 멀티플렉서는 다음 상승 K 이후 하강/상승 쌍(pair)에서 데이터를 적절히 이동하도록 설정되며;그렇지 않다면, 사용중은 다음 상승 K 이후 K의 하강시 턴 온된다.사용중의 타이밍은, 원한다면, K의 하강 대신에 K의 상승 에지에서 인에이블/디스에이블되도록, 도 2에 도시된 사용중 표시(950)에 의해 변경될 수도 있음을 유의하라.또한, 만약 페치 어드레스가 유효 기억 버퍼 엔트리와 일치하면,이 기억 엔트리는 데이터를 일관적(coherent)으로 유지하기 위해 페치 버퍼와 출력으로 이동된다.
만약 B1='0'이고 B2='0'(기억):
만약 현재 기억 어드레스가 기억 버퍼 어드레스와 같지 않고, 어레이가 자유로우면,기억 버퍼는 어레이로 이동되고, 사용중은 다음 상승 K 이후 K의 하강시 차단된다. 기억 버퍼는 기억 데이터 다음 사이클를 수용할 준비가 된다.혹은 만약 현재 기억 어드레스가 유효 기억 버퍼 어드레스와 일치하면,데이터 다음 사이클에 래치할 준비하고, 사용중은 다음 상승 K 이후 K의 하강시 차단된다.그 밖에, 사용중은 다음 상승 K 이후 K의 하강시 턴 온된다. 사용중의 타이밍은, 원한다면, K의 하강 대신에 K의 상승 에지에서 인에이블/디스에이블되도록, 도 2에 도시된 사용중 표시(950)에 의해 수정될 수도 있음을 유의하라.
만약 B1='1'이고 B2='X"(무동작):
파이프라인 동작을 종료하고, 사용중은 다음 상승 K 이후 K의 하강시 턴 온된다. 사용중의 타이밍은, 원한다면, K의 하강 대신에 K의 상승 에지에서 인에이블/디스에이블되도록, 도 2에 도시된 사용중 표시(950)에 의해 수정될 수도 있음을 유의하라. 무동작(no-operation)이 기억 버퍼를 어레이로 옮길 기회로 해석되어서는 안된다.
K 클록이 하강할 때, 다음이 빌생한다:
DDR 페치 혹은 기억 데이터가 파이프라인 상태마다 적절히 이동된다.
위에 도시한 바와 같이, 3개의 상태가 존재하지만, B1과 B2에 대해 4개의 가능한 선택이 존재한다. 네 번째 상태는 리프레시의 프로세서 제어, 혹은 "증분과 계속" 동작, 혹은 당업자에게 공지된 다른 동작으로서 구현될 수 있다.
추가적으로, 비트 B1 내지 B3은 동기 기능을 나타내기 위해 제휴하여 동작한다. 캐시 인터페이스 부분(201)의 동기 기능은 B1 내지 B3에 의해 제어되는데, 이것은 클록 K의 상승 에지에서 포획 또는 래치된다. 동기 기능은 다음의 클록 진리표에 설명된다("n"은 현재의 상승 에지를 말하고, "n+1"은 클록 K의 다음의 상승 에지를 말하며, "n+1.5"는 그 다음의 하강 에지를 말하고, "n+2"는 그 다음의 상승 에지를 말함).
K B1(n) B2(n) B3(n) DQ(n) DQ(n+1) DQ(n+1.5) DQ(n+2) 모드
L->H L L L X X Douta Doutb DDR 판독
L->H L L H X X Douta Douta SDR 판독
L->H L H L X Dina Dinb X DDR 기억
L->H L H H X Dina Dina X SDR 기억
L->H H L X X X Hi-Z Hi-Z 무동작
L->H H H X X X Hi-Z Hi-Z 예약
이제 도 3과 함께 도 4로 돌아가서, 도 4는 프로세서가 캐시 인터페이스 부분(201)과 DRAM 어레이(220 내지 223)으로부터 판독을 요구할 때 발생하는 데이터의 라우팅에 관한 논리도를 도시한다. 도 4는 도 4에 도시된 많은 단계들이 병렬로 발생하므로 이벤트의 시퀀스로서 해석되는 것을 의미하지는 않는다. 그러나, 도 4는 캐시 인터페이스 부분(201)을 통한 데이터의 라우팅을 보여주므로 발명의 이해를 돕는다. 흐름도(300)는 프로세서가 데이터 요구(전술한 표에서, 페치)를수행할 때마다 수행된다.
판독에 대한 프로세서의 요구 이후에, 캐시 인터페이스 부분(201)은 요구된 데이터가 기록 버퍼내에 있는지(단계 310), 혹은 판독 버퍼내에 있는지를 결정한다(단계 320). 이렇게 하기 위해, 비교 회로(225)는 판독 어드레스 레지스터(210)로부터의 어드레스를 판독 버퍼 어드레스 레지스터(211)내의 어드레스 및 기록 어드레스 레지스터(210)내의 어드레스와 비교한다. 만약 판독 어드레스 레지스터(205)내의 어드레스가 기록 어드레스 레지스터(210)내의 어드레스와 일치하면(단계 310=예), 데이터는 기록 버퍼(240)내에 있다. 전술한 바와 같이, 판독 버퍼(235)와 기록 버퍼(240)는 바람직하게 적어도 하나의 캐시 라인을 포함하고, 캐시 라인은 바람직하게 다수의 어드레스로부터 데이터를 포함할 수 있으므로(버스(285)의 폭이 캐시 라인의 폭보다 훨씬 작으므로), 프로세서는 DRAM 어레이(220 내지 230)의 판독 버퍼에 의한 각각의 판독동안, 혹은 기록 버퍼(240)에서 어레이(220 내지 223)로의 각각의 기록동안, 여러 번 각 버퍼에 기록 또는 판독할 수 있다. 기록 버퍼가 요구된 어드레스에 대한 요구된 데이터를 가지고 있는 경우, 제어 로직(115)(제어 로직(230)과 제휴하여)은 기록 버퍼(240)로부터 멀티플렉서를 통하고, 도 3의 판독 버퍼(235) 아래에 위치된 멀티플렉서를 통하고, 출력 레지스터(250, 251)를 통하고, 다른 멀티플렉서를 통하고, 드라이버를 통하여, 버스(285)상으로 데이터를 라우트한다.
판독 어드레스 레지스터(205) 및 기록 어드레스 레지스터(211)내의 어드레스들이 일치하지 않으면(단계 310=아니오), 캐시 인터페이스 부분(201)은 요구된 데이터가 판독 버퍼내에 있는지 검사한다. 만약 하나의 어드레스에 대응하는 데이터가 판독 및 기록 버퍼내에 모두 존재한다면, 기록 버퍼로부터의 데이터가 선정될 것이다. 이것은 데이터 일관성 때문이다(만약 데이터가 동일한 어드레스에 대해 동시에 판독 및 기록된다면, 기록되고 있는 데이터는 판독되고 있는 데이터보다 신규인 것으로 가정된다). 비교 회로(225)는 판독 어드레스 레지스터(205)내의 어드레스를 판독 버퍼 어드레스 레지스터(211)내의 어드레스와 비교한다. 만약 일치한다면(단계 320=예), 제어 로직(115)(제어 로직(230)과 제휴하여)은 판독 버퍼(235)로부터의 데이터를 멀티플렉서를 통하고, 출력 레지스터(250, 251)를 통하고, 다른 멀티플렉서를 통하고, 드라이버를 통하여, 버스(285)상으로 라우트한다(단계 350).
제어 로직(115)은 액세스 충돌이 있는지를 결정한다. 전술한 바와 같이, 액세스 충돌은 DRAM 캐시가 사전 충전, 초기화, 리프레시, 혹은 대기 상태일 때마다 초래된다. 가장 바람직한 실시예에서, 제어 로직은 DRAM 어레이(220 내지 223)에 접속되어 DRAM 캐시가 이들 상태중 하나인지를 결정한다. 전체 캐시 라인을 프로세서가 기록 및 판독하는 것(이것은 캐시에 대해 각기 데이터를 여러 번 기록 및 판독한다)은 발생하는 사전 충전 충돌의 수와 관련한 성능을 개선한다. 추가적으로, 결합성 DRAM 어레이는 또한 발생하는 사전 충전 충돌의 수를 감소시키는 것과 관련한 성능을 개선한다.
제어 로직(115)이 액세스 충돌이 발생했음을 결정하면, 제어 로직은 단계(335)에서 사용중 표시(이 경우에는, 사용중 신호)를 인에이블시킨다. 사용중 신호는 프로세서에게 판독을 재시도해야 함을 통지한다. 사용중 신호에 대한 타이밍은 이전에 논의되었다.
만약 데이터가 판독 혹은 기록 버퍼에 존재하지 않고(단계 310과 320 모두 =아니오), 액세스 충돌도 없다면, 제어 로직(115)은 판독 버퍼에게 어드레스에 대응하는 캐시 라인과 어레이(220 내지 223)으로부터의 데이터를 페치할 것(단계 340)을 명령한다. 데이터가 페치된 이후에, 제어 로직(115)은 판독 버퍼(235)로부터의 데이터를, 멀티플렉서를 통하고, 출력 레지스터(250, 251)를 통하고, 다른 멀티플렉서를 통하고, 드라이버를 통하여 버스(285)상에 라우트한다(단계 350).
이제, 도 3에 더하여 도 5를 참조하면, 도 5는, 프로세서가 캐시 인터페이스 부분(201)과 DRAM 어레이(220 내지 223)에 대한 기록을 요구할 때 발생하는 데이터의 라우팅에 대한 논리도를 도시한다. 도 5는 도 5에 도시된 많은 단계들이 병렬로 발생하므로 이벤트의 시퀀스로서 해석되는 것을 의미하지 않는다. 이전의 표는 도 5에 도시된 이벤트의 타이밍에 대한 더 나은 표시를 제공한다. 그러나, 도 5는 캐시 인터페이스 부분(201)을 통한 데이터의 라우팅을 보여주므로 발명의 이해를 돕는다. 흐름도(400)는 프로세서가 데이터 기록 요구(전술한 표에서, 기억이라고 칭함)를 수행할 때마다 수행된다.
본 발명의 가장 바람직한 실시예에서 프로세서는 다른 캐시 라인을 처리하기 전에 하나의 캐시 라인 전체(이것은 다수의 어드레스로 이루어짐)를 캐시 인터페이스에 기록함을 유의해야 한다. 이 실시예에서, 도 5의 흐름도는 실제로 적용될 수 없는데, 그 이유는 액세스 충돌이 기록 동안에 발생해서는 안되기 때문이다. 기록 버퍼(240)는 프로세서가 다른 캐시 라인에 기록하기 전에 캐시 라인을 DRAM 어레이(220 내지 223)와 관련한 적절한 캐시 라인으로 기록할 수 있어야 한다. 다음, 기록 버퍼는 비어있는(empty) 것이고, 프로세서로부터 다른 캐시 라인에 대한 새로운 기록을 받아들일 수 있을 것이다. 따라서, 흐름도(400)는, 이 실시예의 경우, 캐시 라인 경계(어드레스 경계)가 교차되기 전에 반드시 적어도 두 개의 데이터 요소(두 개의 어드레스에 대응함)가 기록 버퍼에 기록된다고 말할 수 없음을 의미한다. 이것은 또한, DRAM 어레이에 대한 각각의 액세스가 사전 충전으로 인한 액세스 충돌을 초래할 것이므로, 기록 버퍼와 어레이내의 캐시 라인의 폭이 데이터 버스(285)의 폭과 동일한 경우에 발생할 수 있음을 유의하라. DRAM 어레이가 결합성이 아니면 이것은 특별히 참(true)이고, 결합성 어레이를 구비함으로써 다소간 개선된다.
기록과 관련한 프로세서의 요구 이후(혹은 동시)에, 흐름도(400)가 시작된다. 요구된 기억 어드레스가 기록 버퍼(240)에 대응하는 어드레스 범위에 의해 표시되는 것이 아닌 다른 캐시 라인 어드레스상에 있다고 캐시 인터페이스 부분(201)이 판정하면, 흐름도(400)가 단계(410)에서 시작된다. 예를 들어, 만약 각각의 캐시 라인이 128바이트를 보유하고, 버스(285)가 16바이트 폭이면, 각각의 캐시 라인은 8개 어드레스로부터 데이터를 보유할 수 있다. 따라서, 각각의 캐시 라인은 바람직하게 어드레스의 범위에 대응한다. 만약 기억 어드레스가 캐시 라인의 어드레스 범위내에 있다면, 제어 로직(115)(제어 로직(230)과 제휴하여)은 입력 레지스터(241, 242)를 인에이블시켜 데이터를 기록 버퍼(240)내에서 현재 어드레스에 대응하는 적절한 위치에 둔다(단계 415).
만약 기억 어드레스가 기록 버퍼내의 캐시 라인의 어드레스 범위내에 있지 않다면(단계 410=예), 제어 로직(115)은 사전 충전 혹은 재충전 혹은 어떤 다른 조건으로 인해 액세스 충돌이 존재하는지 결정한다(단계 420). 예를 들어, DRAM 어레이가 4방식 결합을 지원하는 체계(도 3에 도시됨)에서, 4개중 2개의 뱅크가 막 기록되었다면, 동일한 뱅크에 대한 즉각적 액세스는 사전 충전으로 인해 액세스 충돌을 초래할 것이다. 만약 액세스 충돌이 있다면(단계 420=예), 제어 로직(115)은 사용중 신호를 인에이블시킨다(단계 425).
만약 제어 로직(115)이 액세스 충돌이 없다고 판정하면(단계 420=아니오), 제어 로직(115)(제어 로직(230)과 제휴하여)은 데이터가 기록 버퍼(240)로부터 어레이(220 내지 223)로 기록되도록 하고, 입력 레지스터(241, 242)로부터 새로운 데이터가 기록 버퍼(240)로 기록되도록 한다.
이전의 논의는 주로 DRAM 어레이(도 3에 도시된 것같은)에 대해 언급한다. SRAM 어레이의 경우, 프로세서상의 캐시 인터페이스 부분(도 2에 도시된 것같은 부분(905))은 바람직하게 DRAM 어레이와 관련한 캐시 인터페이스 부분과 정확하게 똑같이 유지된다. 그러나, 사용중 신호(292)(도 3에 도시됨)는 프로세서에 의해 간단히 무시된다. 따라서, 신호를 위한 프로세서에 대한 입력은, 신호가 디스에이블되는 것을 보장하기 위해, 하이(high)로 묶여질 수 있다(만약 사용중 표시가 액티브 로우이라면). 그러나, 신호가 특정 로직값으로 묶이지 않더라도, 캐시가 SRAM 어레이로 구현되면 사용중이 필요치 않으므로, 프로세서는 사용중 표시를 여전히 무시할 것이다.
이제 도 6으로 돌아가서, 이 도면은 SRAM이 캐시 어레이로서 이용되는 본 발명의 하나의 가능한 실시예를 도시한다. SRAM 캐시(500)는 SRAM 어레이(520)와 캐시 인터페이스 부분(501)을 포함한다. 캐시 인터페이스 부분(501)은 바람직하게 도 3의 캐시 인터페이스 부분(301)에 도시된 부강 부분중 많은 부분이 없다. SRAM에 필수적이지 않으면서 DRAM에는 이용되었던 보강 부분은 사용중 표시(SRAM은 결코 리프레시, 사전 충전 혹은 다른 상태로 인한 사용중이 되지 않으므로)와, 판독 버퍼와, 판독 버퍼 어드레스 레지스터를 포함한다. SRAM 어레이는 액세스 충돌의 위험없이 매우 고속의 판독을 지원하므로, 판독 버퍼(및 판독 버퍼 어드레스 레지스터)는 이용되지 않는다. 기록은 저속의 기록을 인에이블시킨다.
프로세서 및 프로세서 인터페이스 부분의 관점에서 캐시 인터페이스 부분(501)과의 인터페이스는 캐시 인터페이스 부분(301)(도 3의)과의 인터페이스와 동일하다. 여전히 어드레스 비트, 클록 CK와 CK', 제어 비트 B1 내지 B3, 에코 클록 CQ와 CQ'(비록 이 예에서는, 더 적은 클록이 존재하더라도) 및 데이터 버스가 존재한다. 이 예에서는, 캐시 인터페이스 부분(301)과 비교해 하나 이상의 어드레스 비트가 존재한다. 또한, 데이터 버스(585)는 단지 72비트 폭이다. 따라서, 캐시 인터페이스 부분(301)의 144 비트 데이터 버스를 취하기 위해서는, 4개의 SRAM 캐시(500)가 이용되어야 한다.
캐시 인터페이스 부분(501)은 여전히 캐시 인터페이스(301)(도 3 참조)와 매우 유사하다. 에코 클록(590)은 출력 레지스터(560, 561)으로부터 발생되고, 제어 로직(530)은 전술한 것과 같은 상태와 타이밍의 조합으로 캐시를 제어하며, 판독 어드레스 레지스터(505), 기록 어드레스 레지스터(510), 출력 레지스터(562, 563), 비교 블록(535) 및 기록 버퍼(550, 551)(제공되지만 도시 안됨. 이것은 기록 버퍼를 위한 레지스터임)가 존재한다. 이 예에서 버스트 로직(burst logic)(525)은 제어 로직을 통해 어드레스 비트 A0 내지 A1을 라우트하는데, 이들이 클래스 비트이기 때문이다. 유사한 구현이 캐시 인터페이스 부분(301)(제어 로직(115)에 의해 수행되는)에 이용될 수 있다. 만약 프로세서가 기록 버퍼에 현재 기억된 어드레스로부터의 판독을 요구하면, 캐시 인터페이스 부분(501)은 기록 버퍼(550, 551)로부터의 데이터를 데이터 버스(585)로 보낼 것이다.
SRAM 캐시(500)는 파이프라이닝, SDR 및 DDR 인터페이스, 클래스 및 결합, 그리고 타이밍 요구처럼 도 3의 캐시(300)에 의해 지원되었던 이전에 논의된 모든 다른 기능들을 지원한다. 프로세서의 관점에서는, 캐시로서 DRAM이 이용되고 있다거나 혹은 SRAM이 이용되고 있다고 말할 수 없다. 그러나, 두 실시예에 대한 사용중 표시는 다를 것임을 유의하라. DRAM의 경우, 사용중 표시는 액세스 충돌을 표시하는데 이용되고, SRAM에서는, 프로세서와 프로세서 캐시 인터페이스 부분이 사용중 신호를 무시할 것이다.
이전의 도면이 예시하듯이, 본 발명은 SRAM과 DRAM 모두를 지원하는 캐시 인터페이스를 개시한다. 이 인터페이스는 시스템 설계자가 RAM 종류 표시를 변경함으로써 RAM의 종류를 선정하도록 만든다. DRAM이 캐시로서 이용되면, 프로세서와 DRAM 캐시에 의해 발생된 액세스간에 액세스 충돌이 발생할 때, 이것을 프로세서가 알 수 있도록 사용중 표시가 어서트된다는 점에서, 캐시 인터페이스는 단순하게 유지된다. 액세스 충돌은 사전 충전, 초기화, 리프레시 혹은 대기 상태로 인해 DRAM 캐시가 데이터를 판독하거나 기록하는 것이 불가능할 때 발생한다. 캐시 인터페이스가 SRAM 캐시와 이용될 때에는, 사용중 표시가 바람직하게 무시된다. 더 나아가, 개시된 캐시 인터페이스는 캐시에 대한 속도 및 사이즈 요구가 인터페이스에 프로그램되는 것을 허용한다. 이런 방식으로, 캐시 인터페이스의 프로세서 부분은 상이한 사이즈 혹은 속도를 갖는 캐시와 이용되기 위해 재설계될 필요가 없어진다.
비록 본 발명이 L2 캐시를 참조하여 설명되었을지라도, 본 발명은 L3, L4 등의 다른 레벨의 캐시나 혹은 주 메모리에도 똑같이 적용 가능하다.
본 발명이 바람직한 실시예를 참조하여 도시 및 설명되었지만, 당업자라면, 본 발명의 사상과 범주를 벗어나지 않으면서 그 형태나 세부 내용에 대해 다양한 변경이 가해질 수 있음을 이해할 것이다.

Claims (26)

  1. 프로세서와 메모리 사이에 인터페이스를 제공하는 메모리 인터페이스를 구비하는 프로세서에 있어서,
    상기 메모리 인터페이스는 제 1 메모리와 인터페이스하도록 구성되거나, 혹은 선택적으로 사용중 표시(busy indication)를 갖는 제 2 메모리와 인터페이스하도록 구성되고,
    만약 상기 메모리가 상기 제 1 메모리를 포함하면, 상기 메모리 인터페이스는 상기 사용중 표시를 무시하고, 만약 상기 메모리가 상기 제 2 메모리를 포함하고 상기 사용중 표시가 어서트(assert)되면, 상기 메모리 인터페이스는 상기 프로세서가 액세스를 재시도하도록 지시하는
    프로세서.
  2. 제 1 항에 있어서,
    상기 메모리는 정적 랜덤 액세스 메모리(SRAM;static Random Access Memory) 캐시를 포함하고, 상기 메모리 인터페이스는 상기 사용중 표시를 무시하는 프로세서.
  3. 제 1 항에 있어서,
    상기 메모리는 상기 사용중 표시를 갖는 동적 랜덤 액세스 메모리(DRAM;dynamic Random Access Memory) 캐시를 포함하고,
    상기 사용중 표시는 상기 메모리 인터페이스에 접속되며,
    상기 프로세서 및 상기 DRAM 캐시에 의해 발생된 액세스 사이에 액세스 충돌이 존재할 때, 상기 DRAM 캐시는 상기 사용중 표시를 어서트하되, 상기 사용중 표시는 상기 프로세서가 자신의 액세스를 재시도할 필요가 있음을 상기 프로세서에게 통지하는 프로세서.
  4. 제 3 항에 있어서,
    상기 DRAM 캐시는 클록에 접속되며, 상기 사용중 표시가 상기 클록의 상승 에지(rising edge)나 혹은 하강 에지(falling edge)에서 어서트되도록 해주는 사용중 타이밍 표시를 더 포함하는 프로세서.
  5. 제 3 항에 있어서,
    상기 DRAM 캐시는 다수의 상태로 존재할 수 있고, 상기 액세스 충돌은, 상기 DRAM 캐시가 사전 충전(precharge), 초기화(initialization), 리프레시(refresh)혹은 대기 상태(standby state)이기 때문에 초래되는 프로세서.
  6. 제 1 항에 있어서,
    상기 메모리는 다수의 뱅크(bank)로 나뉘어지는 캐시 메모리를 포함하되, 각각의 상기 뱅크는 클래스(class)에 대응하며 다수의 캐시 라인(cache lines)을 포함하는 프로세서.
  7. 제 6 항에 있어서,
    상기 캐시 메모리는 상기 사용중 표시를 포함하는 캐시 인터페이스를 구비하는 DRAM 캐시 메모리를 포함하고,
    상기 프로세서가 상기 클래스들 중 하나의 클래스의 상기 캐시 라인들중 하나로부터 데이터를 요구할 때마다, 상기 DRAM 캐시 메모리의 상기 뱅크들의 각각의 뱅크내의 캐시 라인으로부터 데이터가 상기 캐시 인터페이스에 의해 페치(fetched)되는 프로세서.
  8. 제 3 항에 있어서,
    상기 DRAM 캐시는 데이터를 함유할 수 있는 다수의 라인들을 포함하는 DRAM캐시 메모리를 포함하고,
    상기 DRAM 캐시는 상기 DRAM 캐시 메모리로부터의 데이터의 사본(copy)을 포함하는 판독 버퍼를 더 포함하고,
    상기 프로세서가 상기 DRAM 캐시 메모리로부터 데이터의 일부를 요구할 때, 상기 데이터의 사본의 적어도 일부는 페치되어, 상기 프로세서로 출력되는 프로세서.
  9. 제 1 항에 있어서,
    상기 메모리는 다수의 캐시 라인을 포함하는 캐시를 포함하되, 각각의 캐시 라인은 어드레스의 범위에 대응하고,
    상기 캐시는 상기 캐시 라인들 중 하나에 대응하는 데이터를 포함하는 기록 버퍼를 더 포함하고,
    상기 프로세서가 상기 기록 버퍼 내의 데이터에 대응하는 상기 어드레스의 범위내에 있는 어드레스로부터 데이터를 요구할 때, 상기 데이터의 적어도 일부는 상기 프로세서로 출력되는 프로세서.
  10. 제 1 항에 있어서,
    상기 메모리는 다수의 캐시 라인을 포함하는 캐시 메모리를 구비하는 캐시를 포함하되, 각각의 캐시 라인은 어드레스의 범위에 대응하고,
    상기 캐시는 상기 캐시 라인들 중 하나에 대응하는 데이터를 포함하는 기록 버퍼를 더 포함하고,
    만약 상기 프로세서가 특정 어드레스 범위내에 있지 않은 어드레스로의 기록을 요구하면, 상기 데이터의 적어도 일부는 상기 특정 어드레스 범위에 대응하는 상기 캐시 메모리내의 캐시 라인에 기록되는 프로세서.
  11. 제 1 항에 있어서,
    상기 메모리는 캐시를 포함하고,
    상기 메모리 인터페이스는 RAM 사이즈 표시를 더 포함하는 캐시 인터페이스를 포함하되, 상기 RAM 사이즈 표시는 상기 캐시 인터페이스가 다양한 사이즈의 캐시와 인터페이스할 수 있게 해주는 프로세서.
  12. 제 1 항에 있어서,
    상기 메모리 인터페이스는 캐시 인터페이스를 포함하고, 상기 메모리는 캐시를 포함하며, 상기 제 1 메모리는 SRAM 캐시를 포함하고, 상기 제 2 메모리는 DRAM 캐시를 포함하며,
    상기 캐시 인터페이스는 RAM 종류 표시를 포함하되, 상기 RAM 종류 표시는만약 상기 캐시가 SRAM 캐시를 포함하는 것으로 상기 RAM 종류 표시가 표시하면, 상기 캐시 인터페이스가 상기 사용중 표시를 무시하도록 지시하고, 만약 상기 캐시가 DRAM 캐시를 포함하는 것으로 상기 RAM 종류 표시가 표시하고 상기 사용중 표시가 어서트되면, 상기 캐시 인터페이스가 상기 프로세서에게 액세스를 재시도하도록 지시하는 프로세서.
  13. 제 1 항에 있어서,
    상기 프로세서는 소정 속도로 동작하고,
    상기 메모리 인터페이스는 인터페이스 속도 표시와 클록 분주기(clock divider)를 포함하는 캐시 인터페이스를 포함하며,
    상기 메모리는 캐시를 포함하고,
    상기 클록 분주기는 상기 인터페이스 속도 표시를 이용해, 상기 프로세서의 속도를 분주하여, 상기 캐시에 접속되어 상기 캐시에 의해 이용되는 적어도 하나의 클록을 생성하는 프로세서.
  14. 메모리에 접속된 프로세서상에서 수행되는 방법에 있어서,
    제 1 메모리와 인터페이스하거나, 혹은 선택적으로 사용중 표시를 갖는 제 2 메모리와 인터페이스하도록 구성되는 메모리 인터페이스를 제공하는 단계와,
    만약 상기 메모리가 상기 제 1 메모리를 포함하면, 상기 사용중 표시를 무시하는 단계와,
    만약 상기 메모리가 상기 제 2 메모리를 포함하고 상기 사용중 표시가 어서트되면, 상기 프로세서에게 상기 메모리로의 액세스를 재시도할 것을 지시하는 단계와,
    만약 메모리가 상기 제 2 메모리를 포함하고 상기 사용중 표시가 어서트되었다면, 상기 프로세서가 상기 사용중 표시의 어서트에 응답하여 자신의 액세스를 재시도하는 단계를 포함하는
    프로세서상에서 수행되는 방법.
  15. 제 14 항에 있어서,
    상기 메모리는 SRAM 캐시를 포함하고, 상기 사용중 표시를 무시하는 상기 단계는 수행되고, 상기 프로세서에게 상기 캐시로의 액세스를 재시도할 것을 지시하는 상기 단계와, 상기 프로세서가 자신의 액세스를 재시도하는 상기 단계는 수행되지 않는
    프로세서상에서 수행되는 방법.
  16. 제 14 항에 있어서,
    상기 메모리는 상기 사용중 표시를 갖는 DRAM 캐시를 포함하고,
    상기 메모리 인터페이스는 캐시 인터페이스를 포함하며,
    상기 사용중 표시는 상기 캐시 인터페이스에 접속되고,
    상기 방법은,
    상기 프로세서 및 상기 DRAM 캐시에 의해 발생된 액세스 사이에 액세스 충돌이 존재하면, 상기 프로세서가 자신의 액세스를 재시도하는 것이 필요하다고 상기 프로세서에게 통지하는 상기 사용중 표시를 어서트하는 단계를 더 포함하는
    프로세서상에서 수행되는 방법.
  17. 제 16 항에 있어서,
    상기 DRAM은 클록에 접속되고,
    상기 방법은,
    상기 사용중 표시가 상기 클록의 상승 에지나 상기 클록의 하강 에지에서 어서트되도록 하는 사용중 타이밍 표시를 제공하는 단계를 더 포함하는
    프로세서상에서 수행되는 방법.
  18. 제 16 항에 있어서,
    상기 DRAM 캐시는 다수의 상태일 수 있고,
    상기 액세스 충돌은 상기 DRAM 캐시가 사전 충전, 초기화, 리프레시 혹은 대기 상태이기 때문에 초래되는
    프로세서상에서 수행되는 방법.
  19. 제 16 항에 있어서,
    상기 DRAM 캐시는 다수의 뱅크로 나뉘어지는 DRAM 캐시 메모리를 포함하되, 각각의 뱅크는 클래스에 대응하며 다수의 캐시 라인을 포함하고, 각각의 상기 캐시 라인과 상기 클래스는 어드레스의 범위에 대응하며,
    상기 방법은,
    상기 프로세서가 요구된 클래스와 요구된 어드레스를 상기 DRAM 캐시로 출력하는 단계와,
    상기 DRAM 캐시가 상기 요구에 응답하여 상기 DRAM 캐시 메모리의 상기 뱅크의 각 뱅크내의 상기 캐시 라인중 하나로부터 데이터를 페치하는 단계와,
    상기 프로세서가 상기 요구된 어드레스에서 상기 데이터를 다음에 요구할 때, 상기 DRAM 캐시는, 상기 요구된 클래스에 대응하면서 상기 요구된 어드레스에 대응하는 상기 데이터를 출력하는 단계를 더 포함하는
    프로세서상에서 수행되는 방법.
  20. 제 16 항에 있어서,
    상기 DRAM 캐시는 데이터를 포함할 수 있는 다수의 라인을 포함하는 DRAM 캐시 메모리를 포함하고,
    상기 방법은,
    상기 DRAM 캐시내에, 상기 DRAM 캐시 메모리로부터의 데이터의 사본을 포함하는 판독 버퍼를 제공하는 단계와,
    상기 프로세서가 상기 DRAM 캐시로부터의 데이터의 일부를 요구할 때, 상기 판독 버퍼로부터 상기 데이터의 사본의 적어도 일부를 페치하는 단계와,
    상기 프로세서에 상기 데이터의 사본의 상기 일부를 출력하는 단계를 더 포함하는 프로세서상에서 수행되는 방법.
  21. 제 14 항에 있어서,
    상기 메모리는 다수의 캐시 라인을 포함하는 캐시 메모리를 구비하는 캐시를 포함하되, 각각의 상기 캐시 라인은 어드레스의 범위에 대응하고,
    상기 캐시는 상기 캐시 라인중 하나에 대응하는 데이터를 포함하는 기록 버퍼를 더 포함하고,
    상기 방법은,
    상기 프로세서가 특정 어드레스로부터 데이터를 요구하는 단계와,
    만약 상기 특정 어드레스가 상기 기록 버퍼내의 상기 데이터에 대응하는 상기 어드레스의 범위내에 있다면, 상기 기록 버퍼내의 상기 데이터의 적어도 일부를 상기 프로세서에 출력하는 단계와,
    만약 상기 특정 어드레스가 상기 기록 버퍼내의 데이터에 대응하는 상기 어드레스의 범위내에 있지 않다면, 상기 캐시 메모리로부터 상기 어드레스에 대응하는 캐시 라인을 판독하는 단계를 더 포함하는
    프로세서상에서 수행되는 방법.
  22. 제 14 항에 있어서,
    상기 메모리는 다수의 캐시 라인을 포함하는 캐시 메모리를 구비하는 캐시를 포함하되, 상기 캐시 라인의 각각은 어드레스의 범위에 대응하고,
    상기 캐시는, 하나의 캐시 라인으로부터의 데이터를 포함하며 특정 어드레스 범위에 대응하는 기록 버퍼를 더 포함하며,
    상기 방법은,
    상기 프로세서가 특정 어드레스에 데이터의 기록을 요구하는 단계와,
    만약 상기 특정 어드레스가 상기 특정 어드레스 범위내에 있지 않다면, 상기 기록 버퍼내의 상기 데이터의 적어도 일부를 상기 캐시 메모리내의 캐시 라인에 기록하는 단계를 더 포함하는
    프로세서상에서 수행되는 방법.
  23. 제 14 항에 있어서,
    상기 메모리 인터페이스는 캐시 인터페이스를 포함하고,
    상기 메모리는 캐시를 포함하며,
    상기 방법은,
    RAM 사이즈 표시를 제공하는 단계와,
    상기 RAM 사이즈 표시를 특정값으로 설정하는 단계와,
    상기 캐시 인터페이스가 상기 특정값과 등가인 사이즈를 갖는 캐시와 인터페이스하도록 하는 단계를 더 포함하는
    프로세서상에서 수행되는 방법.
  24. 제 14 항에 있어서,
    상기 메모리 인터페이스는 캐시 인터페이스를 포함하고,
    상기 메모리는 캐시를 포함하고,
    상기 제 1 메모리는 SRAM 캐시이고,
    상기 제 2 메모리는 DRAM 캐시이며,
    상기 방법은,
    만약 상기 캐시가 SRAM이라고 RAM 종류 표시가 표시하면, 상기 캐시 인터페이스가 상기 사용중 표시를 무시하는 상기 단계를 수행하도록 지시하고, 만약 상기캐시가 DRAM를 포함하고 상기 사용중 표시가 어서트되면, 상기 프로세서가 상기 캐시에 대한 액세스를 재시도할 것을 지시하는 상기 단계를 상기 캐시 인터페이스가 수행하도록 지시하는 RAM 종류 표시를 제공하는 단계를 더 포함하는
    프로세서상에서 수행되는 방법.
  25. 제 14 항에 있어서,
    상기 메모리 인터페이스는 캐시 인터페이스를 포함하고,
    상기 메모리는 캐시를 포함하며,
    상기 프로세서는 소정 속도로 동작하고,
    상기 방법은,
    인터페이스 속도 표시와 클록 분주기를 제공하는 단계와,
    상기 프로세서의 상기 속도를 분주하는 단계와,
    상기 캐시에 접속되어 상기 캐시에 의해 이용되는 적어도 하나의 클록을 생성하는 단계를 더 포함하는
    프로세서상에서 수행되는 방법.
  26. 컴퓨터 시스템에 있어서,
    ㉠ 적어도 하나의 프로세서 캐시 인터페이스 부분을 갖는 적어도 하나의 프로세서━상기 적어도 하나의 프로세서 캐시 인터페이스 부분의 각각은 상기 프로세서와 캐시 사이에 캐시 인터페이스를 제공하고, 상기 각각의 프로세서 캐시 인터페이스 부분은 SRAM을 포함하는 캐시와 인터페이스하도록 구성되거나, 혹은 선택적으로 사용중 표시를 갖는 DRAM을 포함하는 캐시와 인터페이스하도록 구성되며, 상기 각각의 프로세서 캐시 인터페이스 부분은 사용중 표시를 수신하기 위한 수신기를 구비함━와,
    ㉡ 적어도 하나의 캐시― 상기 적어도 하나의 캐시의 각각은 상기 적어도 하나의 프로세서중 하나의 상기 프로세서 캐시 인터페이스 부분에 접속되고, DRAM을 포함하는 상기 적어도 하나의 캐시중 임의의 캐시는 자신의 사용중 표시를 상기 DRAM 캐시에 대응하는 상기 프로세서 캐시 인터페이스 부분의 상기 수신기에 접속하고, 만약 상기 사용중 표시가 어서트되었다면, SRAM 캐시에 접속된 상기 각각의 프로세서 캐시 인터페이스 부분은 사용중 표시를 무시하고, DRAM 캐시에 접속된 상기 각각의 프로세서 캐시 인터페이스 부분은 각자의 프로세서에게 액세스를 재시도할 것을 지시함―를 포함하는
    컴퓨터 시스템.
KR10-2001-7015756A 1999-06-09 1999-08-27 메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서 수행되는 방법 및 컴퓨터 시스템 KR100445927B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/329,134 1999-06-09
US09/329,134 US6151664A (en) 1999-06-09 1999-06-09 Programmable SRAM and DRAM cache interface with preset access priorities

Publications (2)

Publication Number Publication Date
KR20020064143A KR20020064143A (ko) 2002-08-07
KR100445927B1 true KR100445927B1 (ko) 2004-08-25

Family

ID=23283999

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7015756A KR100445927B1 (ko) 1999-06-09 1999-08-27 메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서 수행되는 방법 및 컴퓨터 시스템

Country Status (4)

Country Link
US (1) US6151664A (ko)
JP (1) JP3629519B2 (ko)
KR (1) KR100445927B1 (ko)
WO (1) WO2000075793A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3948141B2 (ja) * 1998-09-24 2007-07-25 富士通株式会社 半導体記憶装置及びその制御方法
US6449690B1 (en) * 1999-06-25 2002-09-10 Hewlett-Packard Company Caching method using cache data stored in dynamic RAM embedded in logic chip and cache tag stored in static RAM external to logic chip
WO2001088720A2 (en) 2000-05-15 2001-11-22 Superspeed Software, Inc. System and method for high-speed substitute cache
US6862654B1 (en) * 2000-08-17 2005-03-01 Micron Technology, Inc. Method and system for using dynamic random access memory as cache memory
US6779076B1 (en) 2000-10-05 2004-08-17 Micron Technology, Inc. Method and system for using dynamic random access memory as cache memory
US6691272B2 (en) * 2000-12-12 2004-02-10 Lsi Logic Corporation Testing of high speed DDR interface using single clock edge triggered tester data
CA2340804A1 (en) 2001-03-14 2002-09-14 Atmos Corporation Sram emulator
US6674673B1 (en) 2002-08-26 2004-01-06 International Business Machines Corporation Column redundancy system and method for a micro-cell embedded DRAM (e-DRAM) architecture
CN100417077C (zh) * 2002-10-11 2008-09-03 中兴通讯股份有限公司 一种静态动态结合的存储区管理的方法
US20040225830A1 (en) * 2003-05-06 2004-11-11 Eric Delano Apparatus and methods for linking a processor and cache
US7155562B2 (en) * 2003-05-08 2006-12-26 Micron Technology, Inc. Method for reading while writing to a single partition flash memory
US7870342B2 (en) * 2003-07-24 2011-01-11 Marvell International Ltd. Line cache controller with lookahead
US7360023B2 (en) * 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US7243254B1 (en) * 2003-11-05 2007-07-10 Lsi Corporation Low power memory controller that is adaptable to either double data rate DRAM or single data rate synchronous DRAM circuits
US20060005053A1 (en) * 2004-06-30 2006-01-05 Jones Oscar F Jr Cache and tag power-down function during low-power data retention standby mode technique for cached integrated circuit memory devices
US7650515B2 (en) * 2006-02-06 2010-01-19 Panasonic Corporation Secure processing device, method and program
US8095762B1 (en) * 2007-02-27 2012-01-10 Nvidia Corporation Low latency synchronous memory performance switching with drift refresh
US8103833B2 (en) * 2007-09-04 2012-01-24 Freescale Semiconductor, Inc. Cache memory and a method for servicing access requests
CN102792289B (zh) 2010-03-08 2015-11-25 惠普发展公司,有限责任合伙企业 数据存储装置
US8359438B2 (en) 2010-05-18 2013-01-22 Avago Technologies Enterprise IP (Singapore) Pte. Ltd. Memory banking system and method to increase memory bandwidth via parallel read and write operations
CN102693373B (zh) * 2011-03-25 2016-11-16 株式会社野村综合研究所 业务信息防护装置
KR102017828B1 (ko) * 2012-10-19 2019-09-03 삼성전자 주식회사 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들
US10394719B2 (en) * 2017-01-25 2019-08-27 Samsung Electronics Co., Ltd. Refresh aware replacement policy for volatile memory cache
US20210375873A1 (en) * 2020-06-01 2021-12-02 Intel Corporation Monolithic memory stack
US11455262B2 (en) * 2020-10-20 2022-09-27 Micron Technology, Inc. Reducing latency for memory operations in a memory controller

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5895487A (en) * 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2567922B2 (ja) * 1988-08-30 1996-12-25 株式会社日立製作所 パス制御方式
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5293496A (en) * 1993-01-12 1994-03-08 Unisys Corporation Inhibit write apparatus and method for preventing bus lockout
US5511224A (en) * 1993-02-18 1996-04-23 Unisys Corporation Configurable network using dual system busses with common protocol compatible for store-through and non-store-through cache memories
TW358907B (en) * 1994-11-22 1999-05-21 Monolithic System Tech Inc A computer system and a method of using a DRAM array as a next level cache memory
JPH0916470A (ja) * 1995-07-03 1997-01-17 Mitsubishi Electric Corp 半導体記憶装置
JP2885162B2 (ja) * 1996-01-17 1999-04-19 日本電気株式会社 キャッシュメモリ
US5790838A (en) * 1996-08-20 1998-08-04 International Business Machines Corporation Pipelined memory interface and method for using the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5895487A (en) * 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache

Also Published As

Publication number Publication date
JP3629519B2 (ja) 2005-03-16
US6151664A (en) 2000-11-21
WO2000075793A1 (en) 2000-12-14
JP2003501747A (ja) 2003-01-14
KR20020064143A (ko) 2002-08-07

Similar Documents

Publication Publication Date Title
KR100445927B1 (ko) 메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서 수행되는 방법 및 컴퓨터 시스템
US5752260A (en) High-speed, multiple-port, interleaved cache with arbitration of multiple access addresses
US7573753B2 (en) Semiconductor device
US6389514B1 (en) Method and computer system for speculatively closing pages in memory
KR100260683B1 (ko) 캐쉬 내장 동기적 동적 랜덤 액세스 메모리 소자 및 프로그래밍가능한 캐쉬 저장 정책 구현 방법
US7203794B2 (en) Destructive-read random access memory system buffered with destructive-read memory cache
US20020078294A1 (en) High-speed random access semiconductor memory device
US9021176B2 (en) Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
KR20000011417A (ko) 반도체집적회로및데이터처리시스템
JPH05314779A (ja) 連想メモリセルおよび連想メモリ回路
JP2001516118A (ja) 短待ち時間dramセルおよびその方法
CN109219850B (zh) 存储器中的延迟回写
KR100564633B1 (ko) 향상된 동작 성능을 가지는 반도체 메모리 장치 및 이에대한 액세스 제어 방법
KR20230010675A (ko) Dram을 위한 리프레시 관리
US20010029572A1 (en) Semiconductor memory device having cache function
US6091667A (en) Semiconductor memory device and a data reading method and a data writing method therefor
US7328311B2 (en) Memory controller controlling cashed DRAM
JP3789998B2 (ja) メモリ内蔵プロセサ
US6542969B1 (en) Memory controller and a cache for accessing a main memory, and a system and a method for controlling the main memory
KR100398954B1 (ko) 멀티웨이 세트 연관 구조의 캐쉬 메모리 및 데이터 판독방법
KR100417548B1 (ko) 집적된캐쉬메모리와,디지탈메모리에서메모리소자에데이타를제공하는방법
US20040030835A1 (en) Efficient cache organization for way-associativity and high refill and copy-back bandwidth
JP3930195B2 (ja) データ処理システム
US20240112722A1 (en) Directed refresh management for dram
JPH04324187A (ja) ダイナミックram

Legal Events

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

Payment date: 20070727

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee