KR100591218B1 - 메모리의 리프레시 은닉 및 리프레시 은닉 메모리 - Google Patents

메모리의 리프레시 은닉 및 리프레시 은닉 메모리 Download PDF

Info

Publication number
KR100591218B1
KR100591218B1 KR1020047004570A KR20047004570A KR100591218B1 KR 100591218 B1 KR100591218 B1 KR 100591218B1 KR 1020047004570 A KR1020047004570 A KR 1020047004570A KR 20047004570 A KR20047004570 A KR 20047004570A KR 100591218 B1 KR100591218 B1 KR 100591218B1
Authority
KR
South Korea
Prior art keywords
cache
memory bank
memory
bank
access
Prior art date
Application number
KR1020047004570A
Other languages
English (en)
Other versions
KR20040037183A (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 KR20040037183A publication Critical patent/KR20040037183A/ko
Application granted granted Critical
Publication of KR100591218B1 publication Critical patent/KR100591218B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/0893Caches characterised by their organisation or structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

본 발명은 메모리 아키텍처 및 관리 분야에 속한다. 보다 구체적으로, 본 발명은 동적 랜덤 액세스 메모리(DRAM)와 같은 메모리 어레이의 리프레시 사이클을 은닉하기 위한 방법, 장치, 시스템, 및 기계 판독 가능 매체를 제공한다.
메모리 아키텍처, 리프레시 사이클, 글로벌 버스, 캐시, 태그 버퍼, 더티 비트 버퍼

Description

메모리의 리프레시 은닉 및 리프레시 은닉 메모리{HIDING REFRESH OF MEMORY AND REFRESH-HIDDEN MEMORY}
본 발명은 메모리 아키텍처 및 관리 분야에 속한다. 보다 구체적으로, 본 발명은 메모리 어레이의 리프레시 사이클을 은닉하기 위한 방법, 장치, 시스템, 및 기계 판독 가능 매체를 제공한다.
현재의 프로세서 동향은 평균 지연 시간(average latency)을 줄이고 대역폭 요건을 만족시키기 위해 칩 상에(on-chip) 보다 많은 메모리 계층 구성(hierarchy)을 포함하도록 하고 있다. 종래에 온칩 캐시들은 동적 액세스 메모리(DRAM)보다는 정적 랜덤 액세스 메모리(SRAM)로 구현된다. 그러나, 각각의 SRAM 셀은 6개의 트랜지스터로 이루어져 있어, 상당한 양의 반도체 영역을 소비하는 데 대하여, 각각의 DRAM 셀은 전하를 축적하기 위한 커패시터에 접속된 단 하나의 액세스 트랜지스터로 이루어질 수 있다. 따라서, DRAM은 동일한 용량의 데이터 저장을 위해 보다 작은 영역을 소비할 것이다.
논리 DRAM 또는 내장(embedded) DRAM을 이용하여, 예컨대, 온칩 캐시를 구현하는 것은 메모리 밀도의 관점에서 좋은 대안일 수 있지만, DRAM 셀들은 주기적으로 리프레시될 필요가 있어, DRAM에의 액세스를 연기시키게 된다. 리프레시 사이 클 중에 액세스가 연기됨으로 인해 지연 시간이 가변적이 되어, 메모리 또는 캐시 인터페이스의 복잡성이 증가할 수 있다. 예를 들면, 프로세서는 액세스가 행해질 수 있는 때에 대한 표시를 수신하거나 또는 DRAM 디바이스의 액세스 요청을 재시도하기 위한 부가적인 인터페이스 회로를 필요로 할 수 있다. 그러므로, 메모리 밀도에 대해 절충하면서 메모리 인터페이싱의 복잡성의 일부를 완화시키기 위해 DRAM과 함께 SRAM이 이용된다.
첨부 도면들에서, 같은 참조 부호는 유사한 구성 요소들을 표시한다.
도 1은 버스를 경유하여 에이전트 및 리프레시 은닉 메모리에 결합된 내장 리프레시 은닉 메모리를 포함하는 프로세서를 도시하는 도면.
도 2는 리프레시 은닉 메모리의 일 실시예를 도시하는 도면.
도 3은 리프레시 사이클을 은닉하기 위한 글로벌 버싱(global bussing)의 일 실시예를 도시하는 도면.
도 4는 리프레시 사이클을 은닉하기 위한 글로벌 버싱의 다른 실시예를 도시하는 도면.
도 5는 리프레시 사이클을 은닉하기 위한 실시예들의 흐름도.
도 6a 내지 도 6f는 리프레시 사이클을 은닉하기 위한 실시예들의 상세 흐름도.
도 7a 내지 도 7f는 리프레시 사이클을 은닉하기 위한 의사 코드 실시예들을 도시하는 도면.
도 8은 리프레시 사이클을 은닉하기 위한 명령들을 포함하는 기계 판독 가능 매체를 도시하는 도면.
다음은 첨부 도면들에 도시된 본 발명의 실시예들에 대한 상세한 설명이다. 실시예들은 본 발명을 명확하게 전달할 정도로 상세히 기재되어 있다. 그러나, 제시된 상세 설명의 양은 예상되는 실시예들의 변화들을 제한하기 위해 의도된 것은 아니다. 본 발명에 대해 예상되는 실시예들의 변화들은 하나하나 논하기에는 너무 많으므로 이하의 상세한 설명은 당 기술 분야의 통상의 지식을 가진 자라면 그러한 실시예들을 명백히 알 수 있도록 고안되었다.
특히, 도 1은 버스(160)를 경유하여 에이전트(170)에 결합되고 이 에이전트(170)를 경유하여 리프레시 은닉 메모리(190)에 결합된 내장 리프레시 은닉 메모리(120)를 포함하는 프로세서(100)를 도시한다. 프로세서(100)는 예를 들어 퍼스널 컴퓨터 또는 개인 휴대 정보 단말기(PDA : personal digital assistant)에 이용되는 범용 중앙 처리 장치일 수 있다. 프로세서(100)는 캐시 제어기와 같은 메모리 제어기(140)를 경유하여 리프레시 은닉 메모리에 결합된 코어(110)를 포함할 수 있다. 코어(110)는 이 코어(110)에 의해 빈번히 액세스되는 데이터 또는 명령들을 유지하기 위한 리프레시 은닉 메모리(120)에 결합될 수 있다. 어떤 실시예들에서, 프로세서(100)는 다중 처리기(MP : multiple-processor) 시스템의 부분이거나 또는 다중 처리기 시스템을 포함할 수 있다. 이를테면, MP 시스템에서는, 하나 이상의 프로세서가 리프레시 은닉 메모리(120)와 같은 리프레시 은닉 메모리 를 포함할 수 있고, 리프레시 은닉 메모리(190)가 하나 이상의 프로세서에 서비스를 제공할 수 있다.
에이전트(170)는, 북측 브리지(north bridge) 및 남측 브리지(south bridge)와 같은 회로 또는 메모리 제어기 허브 및 입출력(I/O) 제어기 허브를 포함할 수 있고, 버스(160)를 경유하여 프로세서(100)에 결합되어 프로세서(100)에게 부동 소수점 산술 및 논리 연산과 같은 태스크를 수행하거나 또는 명령들을 해독하여 실행할 것을 요청할 수 있다. 예를 들면, 에이전트(170)는 버스(160)를 경유하여 프로세서(100)가 실행할 명령을 전송할 수 있다. 명령들은 프로세서(100)로 하여금 리프레시 은닉 메모리(190)에 액세스하여 에이전트(170)로부터의 명령을 실행할 데이터 또는 코드를 얻게 할 수 있다. 어떤 실시예들에서는, 리프레시 은닉 메모리(120)는 리프레시 은닉 메모리(190)에 기록될 변경 데이터를 포함할 수 있고, 따라서 프로세서(100)가 그 변경 데이터에 액세스할 수 있고, 여러 실시예들에서, 에이전트(170)가 리프레시 은닉 메모리(190)에 직접 액세스할 수 있다. 코어(110)는 시스템 메모리로부터 검색된 데이터 또는 코드를 리프레시 은닉 메모리(120)에 저장하여 에이전트(170)가 유사하거나 또는 동일한 요청을 할 때 그 데이터 또는 코드에의 보다 빠른 액세스를 용이하게 한다.
리프레시 은닉 메모리(120)는 메모리 셀들을 포함할 수 있고, 이들 메모리 셀은 메모리 셀의 메모리 소자에 저장된 데이터를 유지하기 위하여 주기적으로 리프레시되어야 한다. 리프레시 사이클은 메모리에 액세스하는 디바이스에 대해 은닉될 수 있는데, 그 이유는 리프레시 은닉 메모리(120)가 리프레시 사이클보다 적 은 액세스에 대해 실질적으로 일관된 지연 시간을 가질 수 있기 때문이다. 리프레시 은닉 메모리(120)는 2개 이상의 글로벌 버스를 경유하여 메모리 뱅크에 결합된 캐시 메모리 뱅크를 포함하고 상기 2개 이상의 글로벌 버스에 결합된 메모리 제어기를 포함할 수 있다. 어떤 실시예들에서는, 리프레시 은닉 메모리(120)는 또한 캐시 내의 메모리 라인(a line of memory)과 메모리 뱅크 내의 메모리 라인 사이의 관련을 유지하기 위하여 행 디코더에 결합된 태그 버퍼를 포함할 수 있다. 또 다른 실시예들에서, 리프레시 은닉 메모리(120)는 캐시 내의 메모리 라인이 메모리 뱅크 내의 대응하는 메모리 라인보다 새로운 때를 표시하기 위한 더티 비트 버퍼(dirty bit buffer)를 포함할 수 있다. 다른 실시예들에서, 태그 버퍼 및/또는 더티 비트 버퍼는 캐시 내에 통합될 수도 있다.
캐시는 제2 메모리 뱅크가 액세스 무효할 때(unavailable for access) 제2 메모리 뱅크의 컨텐츠에의 액세스를 유지하기 위하여 2개 이상의 글로벌 버스를 경유하여 제2 메모리 뱅크에 결합된 메모리 뱅크(어떤 실시예들에서는 캐시 전용)일 수 있다. 제2 메모리 뱅크는 리프레시가 계류 중(pending)이거나 또는 리프레시 사이클 중에 액세스 무효할 수 있다. 예를 들면, 메모리 뱅크가 리프레시되는 중이고 리프레시 은닉 메모리(120)가 해당 메모리 뱅크에 대한 액세스 요구를 수신할 때, 그 액세스 요구는 캐시에 액세스함으로써 충족된다. 액세스가 기록 요구일 때, 데이터는 캐시에 기록되어 소스인 메모리 뱅크 및 행과 관련될 수 있다. 메모리 뱅크가 유효(available)하게 된 후에, 캐시에 기록된 데이터는 상기 2개 이상의 글로벌 버스를 경유하여 메모리 뱅크에 기록될 수 있다. 어떤 상황에서는, 메모리 뱅크에 대해 리프레시가 계류 중이고 그 메모리 뱅크에 대해 기록 요구가 행해졌을 때, 리프레시가 차단되고(blocked) 데이터가 메모리 뱅크에 기록될 수 있다.
한편, 액세스가 리프레시 중인 메모리 내의 데이터에 대한 판독 요구일 때, 데이터는 캐시로부터 판독되어 그 판독 요구가 만족될 수 있다. 예를 들면, 메모리 뱅크의 한 라인을 판독한 후에, 그 라인의 카피가 캐시에 저장될 수 있다. 다음 번에 메모리 뱅크의 리프레시 중 또는 리프레시 계류 중에 액세스가 해당 라인을 판독을 요구할 때, 데이터는 해당 뱅크의 메모리 라인의 캐시 버전으로부터 검색될 수 있다. 어떤 상황에서는, 그 요구에 응답하여 메모리 뱅크의 리프레시가 차단되어 메모리의 라인이 판독되고 또한 그 라인이 캐시에 기록될 수 있다.
리프레시 은닉 메모리(120)의 2개 이상의 글로벌 버스는 캐시를 이용하여 일관된 액세스 지연 시간을 유지하는 것을 용이하게 하도록 설계될 수 있다. 2개 이상의 글로벌 버스는 하나 이상의 캐시를 하나 이상의 메모리 뱅크에 결합시키기 위한 글로벌 버스를 포함할 수 있다. 2개 이상의 글로벌 버스는 또한 캐시와 메모리 뱅크 사이의 스왑(swaps)을 조정(coordinate)하기 위해 메모리 제어기(140)에 결합될 수 있다.
어떤 실시예들에서는, 2개 이상의 글로벌 버스는 캐시에서의 동작과 메모리 뱅크에서의 동작을 실질적으로 동시에 유지하기 위해 2개의 글로벌 버스 쌍을 포함할 수 있다. 예를 들면, 메모리 제어기(140)는 하나의 메모리 뱅크로부터의 데이터를 제1 글로벌 버스 쌍 위에 판독하는 한편으로 제2 글로벌 버스 쌍으로부터 캐시 뱅크에 데이터를 기록하는 것을 조정할 수 있다. 다른 실시예들에서는, 글로벌 버스들 중 2개의 글로벌 버스 상의 데이터의 2진 품질을 이용함으로써 2개의 글로벌 버스 쌍 대신에 3개의 글로벌 버스가 이용될 수 있다. 이를테면, 메모리 뱅크에 기록될 데이터가 한 쌍의 글로벌 버스 상에 있을 수 있고 제2 메모리 뱅크로부터의 1 또는 0의 표시가 캐시에 기록되도록 제3 글로벌 버스 상에 있을 수 있다. 캐시에 결합되고 제3 글로벌 버스에 결합된 회로가 캐시에 기록될 2진 정보가 제1 글로벌 버스 쌍 상의 데이터와 같은지 그래서 캐시가 제1 글로벌 버스 쌍으로부터 데이터를 기록할 수 있는지를 결정할 수 있다. 한편, 그 회로는 캐시에 기록될 2진 정보가 제1 글로벌 버스 쌍 상의 정보의 컴플리먼트(compliment)지를 결정할 수 있고 제1 글로벌 버스 쌍으로부터 캐시 뱅크로 데이터의 컴플리먼트를 기록하기 위해 XOR 논리 회로가 이용될 수 있다.
메모리 제어기(140)는 메모리 뱅크에의 액세스를 지연시키는 것을 피하기 위해 캐시에 데이터를 기록하는 것을 조정하기 위한 논리 회로를 포함할 수 있다. 예를 들면, 메모리 제어기(140)는 동일 메모리 뱅크에의 다수의 연속적인 기록을 핸들링할 수 있고 다수의 연속적인 기록은 해당 메모리 뱅크의 리프레시와 충돌할 수 있다. 메모리 제어기(140)는 메모리 뱅크의 리프레시 중에 상기 연속적인 기록들의 각각을 캐시에 기록하고 해당 메모리 뱅크에 대한 캐시 라인이 그 메모리 뱅크에 저장된 데이터보다 새로운 것이라는 것을 표시하기 위해 캐시에 기록된 각각의 라인에 대해 더티 비트를 세트한다. 메모리 제어기(140)는 다른 메모리 뱅크의 액세스와 실질적으로 동시에 캐시 내의 메모리를 제1 메모리 뱅크와 스왑할 수 있다. 예를 들면, 메모리 제어기(140)는 제2 메모리 뱅크로의 기록과 실질적으로 동 시에 캐시로부터 제1 메모리 뱅크로 데이터를 채울 수 있다.
메모리 제어기(140)는 또한 연속적인 판독들이 동일 메모리 뱅크에 대해 행해질 때 발생하는 리프레시 충돌을 핸들링할 수 있다. 예를 들면, 제1 메모리 뱅크로부터 다수의 연속적인 판독이 요구되고, 제1 메모리 뱅크에 대해 리프레시가 계류 중이고, 캐시가 제2 메모리 뱅크를 업데이트할 데이터로 가득 차 있을 때, 메모리 제어기(140)는 제1 메모리 뱅크에 대한 리프레시를 차단하여 액세스 요구를 충족시키고 데이터를 캐시 뱅크에 기록할 수 있다. 실질적으로 동시에, 메모리 제어기(140)는 제2 메모리 뱅크의 행 또는 라인을 캐시에 의해 업데이트할 수 있다. 특히, 제1 뱅크가 10개 행 또는 라인의 메모리를 포함할 때, 제1 메모리 뱅크의 리프레시는 10 사이클 동안 차단될 수 있고 그 동안 캐시는 플러시되고(flushed) 제1 메모리 뱅크의 컨텐츠로 채워진다(populated).
어떤 실시예들에서는, 캐시는 하나 이상의 메모리 뱅크들의 일부를 포함할 수 있다. 이들 실시예의 몇몇은 다수의 캐시 부분들이 실질적으로 단일 뱅크의 메모리처럼 기능하게 하기 위하여 다수의 캐시 부분들과 관련된 태그 버퍼 및 논리 회로를 포함한다. 대안적인 실시예들에서는, 캐시(들)는 하나의 뱅크로서 동작하거나 또는 코드, 데이터, 서비스를 받는 논리 뱅크(들), 및/또는 서비스를 받는 에이전트(들)와 같은 카테고리들로 분할된, 하나 이상의 메모리 뱅크를 포함할 수 있다. 예를 들면, 캐시, 또는 그 일부가 1 내지 5의 메모리 뱅크들에 대해 캐시로서 기능할 수 있고, 제2 캐시가 캐시 요건의 높은 비율을 나타내는 2개의 에이전트에 대한 캐시를 저장할 수 있고, 제3 캐시가 나머지 캐시 요건을 핸들링할 수 있다. 이들 실시예의 몇몇에서는, 메모리 제어기(140)는 실제 사용에 기초하여 이용 가능한 캐시를 분배할 수 있다.
많은 실시예들이 리프레시 은닉 메모리 내의 캐시에 대해 직접 매핑(direct mapping)을 구현한다. 캐시에 대해 직접 매핑할 때, 각각의 메모리 위치는 그 메모리 위치가 다른 많은 메모리 위치들과 공유하는 단일 캐시 라인으로 매핑된다. 메모리 위치들은 그 캐시 라인 때문에 경쟁할 수 있고 그래서 그 캐시 라인을 공유하는 많은 어드레스들 중 하나가 주어진 시간에 그 캐시 라인을 사용할 수 있다. 따라서, 캐시의 직접 매핑은 메모리 제어기(140)의 회로가 복잡하지 않은 설계로 적중(hits)을 신속히 체크하게 할 수 있다. 예를 들면, 캐시가 각각의 메모리 뱅크와 동일 개수의 라인을 포함할 때, 캐시의 N번째 라인은 모든 메모리 뱅크마다의 N번째 라인에 대해 서비스할 수 있다. 그러므로, 액세스 요구가 수신될 때, 메모리 제어기(140)는 액세스의 라인 번호와 관련된 태그를 액세스의 뱅크 어드레스와 대비함으로써 액세스 어드레스에 대응하는 라인이 캐시에 저장되어 있는지를 결정할 수 있다.
다른 실시예들은 리프레시 은닉 메모리(120 및 190) 내의 캐시에 대해 완전 관련 캐시 매핑(fully associative cache mapping)을 구현한다. 완전 관련 캐시 매핑은 임의의 메모리 위치가 임의의 캐시 라인에 저장되게 할 수 있다. 그러나, 완전 관련 캐시 매핑은 적중을 체크하기 위하여 복잡한 탐색 알고리즘을 포함할 수 있다. 비록 그렇다 하더라도, 완전 관련 캐시 매핑은 동일 사이즈 캐시에 대해 보다 나은 적중률(hit ratio)을 제공할 수 있다.
또 다른 실시예들은 리프레시 은닉 메모리(120 및 190) 내의 캐시에 대해 N-방향 세트 관련 캐시 매핑(N-way set associative cache mapping)을 구현함으로써 적중 및 적중률에 대해 직접 매핑과 완전 관련 매핑 사이에 절충할 수 있다. N-방향 세트 관련 캐시 매핑은 캐시를 "N"개의 캐시 라인들의 세트들로 분할할 수 있고, 여기서 각각의 세트는 임의의 메모리 어드레스에 의해 공유될 수 있다.
어떤 실시예들은 차단 캐시(blocking cache)를 포함하고 어떤 실시예들은 비차단 캐시(non-blocking cache)를 포함할 수 있다. 차단 캐시들은 한 번에 하나의 미해결 요구(outstanding request)를 핸들링할 수 있다. 캐시 부적중(cache miss) 후에, 캐시는 시스템 메모리 또는 리프레시 은닉 메모리(190)가 데이터를 공급하는 것을 기다릴 수 있다. 한편, 비차단 캐시는 시스템 메모리가 부적중 데이터를 공급하는 것을 기다리는 동안 다른 요구들에 대해 작용할 수 있는 능력을 가질 수 있다.
많은 실시예들이 데이터와 프로세서 명령 모두를 구별 없이 캐싱할 수 있다. 그러나, 어떤 실시예들은 캐시를 분할하여, 코드에 대한 캐시와 데이터에 대한 별도의 캐시를 가질 수 있다. 응용에 따라 하나의 방법이 다른 방법보다 더 효율적일 수 있다.
도 2를 참조하면, 리프레시 은닉 메모리의 실시예가 도시되어 있다. 리프레시 은닉 메모리는 메모리부(291)와 논리 회로부(292)를 포함한다. 메모리부(291)는 메모리 뱅크(200), 메모리 뱅크(210), 및 캐시 뱅크(230)를 포함한다. 메모리 뱅크들(200 및 210)은 동적 메모리를 포함할 수 있다. 메모리 뱅크들(200 및 210) 은 액세스 요구에 응답하여 데이터를 저장하고 검색할 수 있다. 캐시 뱅크(230)는 메모리 뱅크들(200 및 210)에 결합되어 2개 이상의 글로벌 버스(237)를 경유하여 메모리의 라인들을 스왑할 수 있다. 태그 버퍼(225)는 캐시 라인의 소스(예를 들면, 메모리 뱅크 및 행)를 추적하기 위해 태그를 캐시 뱅크(230) 내의 라인들과 관련시킬 수 있다. 또한, 태그 버퍼(225)는 캐시 뱅크(230) 내의 캐시 라인이 소스에 기록할 데이터를 포함할 수 있는 때를 표시하기 위해 더티 비트 버퍼(220)에 대한 메모리를 포함할 수 있다. 예를 들면, 메모리 뱅크의 라인에 데이터를 기록하기 위한 액세스가 메모리 뱅크의 리프레시와 충돌할 때, 메모리 제어기(280)는 데이터를 캐시 메모리(230)에 기록하고 그 캐시 라인에 대한 더티 비트를 세트할 수 있다. 다음 이용 가능한 사이클에서, 메모리 제어기(280)는 캐시 라인으로부터의 데이터를 메모리 뱅크에 기록할 수 있다.
리프레시 은닉 메모리의 논리 회로부(292)는 메모리 제어기(280); 뱅크 디코더(240); 리프레시 포인터, 논리 회로 및 디코더(250); 행 디코더(260) 및 로컬 어드레스 디코더(205, 215, 및 235)를 포함할 수 있다. 뱅크 디코더(240)는 메모리 뱅크(200)의 어드레스를 메모리 뱅크(210)의 어드레스와 구별하기 위하여 이를테면 어드레스의 뱅크 부분을 디코드하기 위한 논리 회로를 포함할 수 있다. 행 디코더(260)는 로우 어드레스(row address)를 포함하는, 액세스 요구로부터의 어드레스의 제2 부분을 디코드할 수 있고, 논리 회로(205, 215, 또는 235)는 그 어드레스와 관련된 메모리 뱅크에 따라서, 로컬 뱅크 어드레스들을 디코드할 수 있다. 또한, 태그 버퍼 및 메모리 뱅크 내의 행을 선택하는 것은 그 메모리 뱅크와 관련 된 캐시 라인에의 액세스를 제공할 수 있다. 다른 실시예들에서는, 행 디코더(260)는 캐시 뱅크(230) 내의 라인과 메모리 뱅크(200) 또는 메모리 뱅크(210) 사이의 관련을 결정하기 위하여 태그 버퍼(225) 내의 태그들을 디코드하기 위한 논리 회로를 포함할 수 있다.
논리 회로(205, 215 또는 235)는 어느 메모리 뱅크가 액세스될 수 있는지를 결정할 수 있다. 본 실시예에서, 논리 회로(205, 215 또는 235)는 리프레시 포인터, 논리 회로, 및 디코더(250) 또는 행 디코더(260) 중 어느 하나로부터 인에이블된 신호를 선택함으로써, 뱅크 디코더(240); 리프레시 포인터, 논리 회로, 및 디코더(250); 및 태그 버퍼(225)로부터 정보를 수신하여 액세스할 메모리 뱅크를 결정할 수 있다. 메모리 제어기(280)는 2개 이상이 글로벌 버스(237)를 통하여 뱅크들간의 데이터의 전송을 조정하기 위한 논리 회로를 더 포함할 수 있다.
리프레시 포인터, 논리 회로 및 디코더(250)는 메모리 뱅크(200), 메모리 뱅크(210), 및 캐시 뱅크(230) 내의 행이 리프레시될 수 있는 때를 결정하기 위한 논리 회로를 포함할 수 있다. 메모리 뱅크들은 순차적으로 리프레시될 수 있고 그래서 포인터는 리프레시될 다음 메모리 뱅크 및 행을 나타내는 번호를 포함할 수 있다. 리프레시 포인터, 논리 회로 및 디코더(250)의 논리 회로는 메모리 뱅크에 대한 리프레시를 언제 개시하고 그 메모리 뱅크를 리프레시할지를 결정할 수 있다. 어떤 실시예들에서는, 그 논리 회로는 또한 메모리 뱅크 및 행에 대한 계류 중인 리프레시가 차단될 수 있는 때를 결정할 수 있다. 마지막으로, 리프레시 포인터, 논리 회로 및 디코더(250)의 디코더는 리프레시 사이클을 개시하고 포인터 어드레 스를 액세스의 어드레스 또는 캐시의 라인과 관련된 태그와 비교하기 위해 포인터에 의해 지시된 메모리 뱅크 및 행을 디코드할 수 있다.
메모리 제어기(280)는, 메모리 뱅크에의 액세스 요구를 수신하는 것에 응답하여, 태그 버퍼(225) 내의 태그의 값과, 액세스 요구의 어드레스의 뱅크 필드와, 그리고, 리프레시가 계류 중일 때는, 리프레시 포인터의 뱅크 필드에 따라 동작을 결정할 수 있다. 메모리 제어기(280)는 태그 버퍼에 액세스하여, 태그 버퍼를 뱅크 어드레스와 비교하고, 태그 버퍼(225)를 리프레시 포인터, 논리 회로 및 디코더(250)로부터의 리프레시 포인터와 비교할 수 있다. 메모리 제어기(280)는 메모리 뱅크에의 액세스와 리프레시 포인터, 논리 회로 및 디코더(250)에 의해 결정된 리프레시 사이의 충돌을 실질적으로 피할 수 있다. 어떤 실시예들에서는, 메모리 제어기(280)는 다수의 사이클 동안 리프레시를 차단함으로써 리프레시와 액세스 사이의 어떤 충돌들을 해결하도록 설계될 수 있다.
메모리 제어기(280)는 2개 이상의 글로벌 버스(237)를 경유하여 메모리 뱅크들(200 및 210)과 같은 메모리 뱅크의 메모리를 캐시 뱅크(230)와 스왑할 수 있다. 예를 들면, 스왑 동작은 2개의 동작: (1) 메모리 뱅크(200)로부터 판독하고 실질적으로 동시에 캐시 뱅크(230)에 기록하는 동작과; (2) 캐시 뱅크(230)로부터 판독하고 실질적으로 동시에 메모리 뱅크(210)에 기록하는 동작을 포함할 수 있다. 어떤 실시예들에서는, 예를 들면, 상기 2개의 동작이 단일 사이클 내에서 완료될 수 있다. 2개 이상의 글로벌 버스(237)는 이들 동작을 수행하는 수단을 제공할 수 있고 응용에 따라 상이하게 설계될 수 있다. 도 3 및 4는 2개 이상의 글로벌 버스(237) 에 대한 한 쌍의 실시예를 도시한다.
어떤 실시예들에서는, 메모리 제어기(280)는 메모리 뱅크(들)을 캐시의 컨텐츠로 업데이트하라고 하는, 예를 들면, 캐시를 플러시하는(flushing the cache) 명령을 수신할 수 있다. 캐시를 플러시하는 것은 캐시와 메모리 뱅크(들)를 동기화하도록 그래서 진부한 데이터가 없도록 하기 위해 행해질 수 있다.
도 3을 참조하면 2쌍의 글로벌 버스를 포함하는 2개 이상의 글로벌 버스의 예가 도시되어 있다. 이 실시예는 제1 글로벌 버스 쌍(360, B1 및
Figure 112004012688294-pct00001
), 및 제2 글로벌 버스 쌍(365, B2 및
Figure 112004012688294-pct00002
)을 포함한다. 이 2쌍의 글로벌 버스들(360 및 365)은 메모리 뱅크(300), 메모리 뱅크(330) 및 메모리 뱅크(350)를, 각각, 액세스 트랜지스터들(310 및 315; 340 및 345; 및 370 및 375)을 경유하여, 각각의 로컬 버스들(305, 335, 및 355)에 결합시킨다.
메모리 어레이는 메모리 뱅크들(300 및 320)과 같은 서브어레이들로 분할될 수 있다. 각각의 서브어레이는 메모리 셀에 액세스하기 위한 로컬 버스들을 갖는다. 메모리 셀의 판독이 DRAM에 대해서와 같이 파괴 판독(destructive read)일 수 있을 때 메모리 셀의 전하를 증폭시키고 데이터를 후기록하거나(writing back data) 또는 메모리 셀을 리프레시하는 것을 용이하게 하기 위해 감지 증폭기가 각각의 로컬 버스 쌍과 결합될 수 있다. 메모리 셀의 값은 자기 리프레시(self refresh)인 리프레시 중에 또는 판독 중에 복원될 수 있다. 자기 리프레시는 컨텐츠를 글로벌 버스에 전달하지 않고서 로컬 버스에 판독하는 것을 포함할 수 있고 그래서 로컬 액세스 트랜지스터들은 자기 리프레시 중에 오프된다. 한편, 판독 동작 중에, 메모리 셀의 컨텐츠를 글로벌 버스에 전달하는 것과 함께 리프레시가 발생할 수 있다. 또한, 기록 동작이 글로벌 버스의 컨텐츠를 로컬 버스에 전달하여 글로벌 버스의 컨텐츠를 메모리 셀에 기록할 수 있다.
본 실시예에서, 상기 두 개 이상의 글로벌 버스들은, 메모리 제어기로부터의 명령들에 따라 메모리를 스왑하는 것을 용이하게 하도록 설계될 수도 있다. 예를 들면, 메모리 뱅크(330)에 대해 기록 액세스가 요구되고 리프레시가 계류중이면, 메모리 제어기는, 캐시 뱅크(350)로부터 메모리 뱅크(300)로 플러시하고, 캐시 라인에 액세스의 데이터를 기록하고, 메모리 뱅크(330)를 리프레시하는 동작을 실질적으로 동시에 행할 수도 있다. 액세스 트랜지스터(340, 345)는 메모리 뱅크(330)의 리프레시 동안 오프(off)될 수도 있다. 글로벌 버스 쌍(360)은, 캐시 뱅크(350)로부터 데이터를 판독하기 위한 사이클의 초기 부분 동안 액세스 트랜지스터들(370)을 통해 로컬 버스 쌍(355)에 결합될 수도 있다. 이 사이클의 판독 국면에서 글로벌 버스 쌍(360) 상에 데이터가 놓여진 후, 액세스 트랜지스터들(370)은 글로벌 버스 쌍(360)에 대한 판독 액세스를 턴 오프하고 액세스 트랜지스터들(375)을 통해 글로벌 버스 쌍(365)에 대한 기록 액세스를 턴 온한다. 글로벌 버스 쌍(365)에 대한 기록 액세스를 턴 온하면, 요구된 기록 액세스에 응답하여 동일 사이클의 다른 국면에서 캐시 라인에 데이터를 기록하는 것이 용이하게 되어서, 요구된 기록 액세스의 지연 시간(latency)을 증가시키지 않고 메모리 뱅크(330)가 리프레시될 수도 있다.
몇몇 실시예에서, 상기 두 개 이상의 글로벌 버스는 또한, 하나의 뱅크로부터의 판독과, 캐시로의 기록과, 캐시로부터의 판독과, 다른 뱅크로의 기록 동작을 실질적으로 동시에 행하는 것을 용이하게 해줄 수도 있다. 예를 들면, 데이터는 메모리 뱅크(300)로부터 판독되고 버스(365) B2 및
Figure 112004012688294-pct00003
상에 놓여질 수도 있다. 실질적으로 이와 동시에, 캐시로부터의 판독이 글로벌 버스 쌍(360) B1 및
Figure 112004012688294-pct00004
상에 놓여질 수도 있다. 동일 사이클의 후반 국면에서, 캐시 뱅크(350)는 글로벌 버스 쌍(360)에 대한 판독 액세스를 해제하고 글로벌 버스 쌍(365)으로부터의 데이터를 캐시 라인에 기록한다. 글로벌 버스 쌍(360) 상의 데이터는 동일 사이클 동안 실질적으로 동시에 메모리 뱅크(330)에 기록될 수도 있다.
상기 두 개 이상의 글로벌 버스에 대한 많은 실시예들에서는, 두 개 이상의 메모리 뱅크(300, 330)를 캐시 뱅크(350)와 같은 하나 이상의 캐시에 결합시키는 두 쌍 이상의 글로벌 버스를 포함한다. 또다른 실시예들에서는, 도 4에 도시된 바와 같이, 두 개의 글로벌 버스 쌍 중에 하나의 글로벌 버스가 XOR 로직에 결합된 조합이 사용될 수도 있다.
이제 도 4를 참조하면, 두 개 이상의 글로벌 버스의 다른예가 도시되어 있다. 도 4에서의 두 개 이상의 글로벌 버스는, 각 메모리 뱅크 내의 로컬 비트선(410, 430, 470)을 통해 메모리 뱅크(400), 메모리 뱅크(420), 및 캐시 뱅크(450)를 결합시킬 수도 있다. 상기 두 개 이상의 글로벌 버스는, 하나의 글로벌 버스 쌍 B1 및
Figure 112004012688294-pct00005
과, XOR 로직을 포함하는 회로(440)를 통해 상기 글로벌 버스 쌍 중의 글로벌 버스
Figure 112004012688294-pct00006
에 결합되는 제3 글로벌 버스(480)를 포함할 수 있다.
도 3의 두 개 이상의 글로벌 버스와 마찬가지로, 도 4의 두 개 이상의 글로벌 버스는 하나의 사이클 동안 두 번의 판독과 두 번의 기록을 수행할 수 있다. 상기 두 개 이상의 글로벌 버스는, 캐시 뱅크(450)가 한 번의 판독 및 한 번의 기록, 또는 두 번의 판독, 또는 두 번의 기록과 관련될 때, 하나의 사이클 동안 두 번의 판독과 두 번의 기록을 수용할 수 있다. 예를 들면, 메모리 뱅크(400)와 캐시 뱅크(450) 간의 메모리 스왑과, 캐시 뱅크(450)와 메모리 뱅크(400) 간의 메모리 스왑이 요구될 때, 캐시(450)는 데이터를 판독하여 그 데이터를 로컬 버스 쌍(470)에 올려 놓고 메모리 뱅크(400)는 액세스 트랜지스터(417)를 통해 글로벌 버스 쌍(465) 상에 판독의 표시를 올려 놓을 수도 있다. 실질적으로 이와 동시에, 회로(440)는 로컬 버스 쌍(470)의 컨텐츠를 글로벌 버스 쌍(465)과 비교할 수도 있다. 동일 사이클의 다른 국면 동안, 글로벌 버스 쌍(465)이 로컬 버스 쌍(470)과 동일한 데이터를 포함하면, 캐시 뱅크(450)로부터의 데이터는 액세스 트랜지스터(417)를 통해 글로벌 버스 쌍(465)으로부터 메모리 뱅크(400)로 기록될 수 있다.
이와 다른 경우, 회로(440)의 XOR 로직은, 제3 글로벌 버스(480) 상에, 로컬 버스(470),
Figure 112004012688294-pct00007
의 글로벌 비트의 컴플리먼트(compliment)를 기록할 수도 있으며, 메모리 뱅크(400)는 제3 글로벌 버스(480) 및 액세스 트랜지스터(415)를 통해 글로벌 버스 쌍(465) 상에 상기 글로벌 비트의 컴플리먼트를 기록할 수도 있다. 다른 상 황에서는, 캐시 뱅크(450)가 로컬 버스 쌍(470)에 기록하고 메모리 뱅크(400)가 글로벌 버스 쌍(465)에 기록한 후, 메모리 뱅크(420)는, 제3 글로벌 버스(480) 및 회로(440)의 XOR 로직을 통해 글로벌 버스 쌍(465)의 컨텐츠 또는 글로벌 버스 쌍(465)의 컨텐츠의 컴플리먼트를 기록할 수도 있다.
몇몇 실시예에서, 하나 이상의 글로벌 버스 쌍이 사용되거나/사용되고 하나 이상의 캐시가 데이터를 저장하기에 이용될 수 있을 때, 실질적으로 동시에 수행될 수 있는 액세스의 수를 증가시키는 데에, 글로벌 버스(480)와 같은 하나 이상의 글로벌 버스와, XOR 로직을 포함하는 회로와 같은 회로(440)가 사용될 수도 있다.
이제 도 5를 참조하면, 리프레시 사이클을 은닉하기 위한 실시예의 흐름도가 도시되어 있다. 이 흐름도는, 메모리 뱅크의 컨텐츠에 대한 액세스의 요구를 수신하는 단계(500)와, 캐시 내에 메모리 뱅크의 컨텐츠를 유지하는 단계(510)와, 상기 유지 단계에 응답하여 메모리 뱅크를 리프레시하기 위한 지연 시간과는 실질적으로 무관하게 요구에 응답하기 위해 메모리 뱅크 및 캐시의 컨텐츠를 실질적으로 병렬로 액세스하는 단계(530)를 포함한다. 메모리 뱅크의 컨텐츠에 대한 액세스의 요구를 수신하는 단계(500)에서는, 메모리 뱅크로부터 데이터를 판독하거나 혹은 메모리 뱅크에 데이터를 기록하도록 하는 요구를 수신할 수도 있다. 예를 들어, 메모리 제어기를 통해 코어 혹은 프로세서가 이 요구를 개시할 수도 있다.
많은 실시예들에서, 메모리 뱅크의 컨텐츠에 대한 액세스의 요구를 수신하는 단계(500)는, 뱅크 어드레스 및 로우 어드레스를 포함하는 어드레스를 수신하는 단계를 포함할 수도 있다. 몇몇 실시예들에서는, 중앙 처리 장치(CPU)에 의해 빈번 하게 액세스되는 데이터 또는 명령들의 소정의 유형들을 인식하여 그 데이터를 캐시를 위한 캐시 제어기와 같은 메모리 뱅크 내에 저장하는 스마트 캐싱 시스템(smart-cashing system)으로부터 메모리 뱅크의 컨텐츠에 대한 액세스의 요구를 수신하는 단계(500)를 포함한다.
메모리 뱅크의 컨텐츠에 대한 액세스의 요구를 수신하는 단계(500)는, 리프레시가 계류중일 때 액세스에 대한 요구를 수신하는 단계(505)를 포함할 수도 있다. 리프레시가 계류중 때 액세스에 대한 요구를 수신하는 단계(505)는, 리프레시가 계류중인 메모리 뱅크에 존재하는 메모리 어드레스의 액세스에 대한 요구를 수신하는 단계를 포함할 수도 있다. 또한, 리프레시가 계류중인 액세스에 대한 요구를 수신하는 단계(505)는, 리프레시가 계류중인 캐시 버전을 갖는 메모리 어드레스의 데이터에 대한 요구를 수신하는 단계를 포함할 수도 있다.
캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계(510)는, 리프레시가 액세스와 충돌하는 것을 판정하는 단계(515)를 포함할 수도 있다. 리프레시가 액세스와 충돌하는 것을 판정하는 단계(515)에서는, 그 충돌을 판정하고, 메모리 뱅크 및 캐시의 상태를 판정하고, 액세스를 용이하게 하기 위한 일련의 동작들을 판정할 수도 있다. 리프레시가 액세스와 충돌하는 것을 판정하는 단계(515)는, 리프레시가 판독 또는 기록 요구와 충돌하는 것을 판정하는 단계를 포함할 수도 있다. 리프레시가 판독 또는 기록 요구와 충돌하는 것을 판정하는 단계는, 액세스에 대응하는 메모리 뱅크가 리프레시를 위해 표시되어 있는 것을 판정하는 단계를 포함할 수도 있다.
계속해서 도 5를 참조하면, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계(510)는, 메모리 뱅크 및 캐시의 상태를 판정하는 단계를 더 포함할 수도 있다. 메모리 뱅크 및 캐시의 상태를 판정하는 단계는, 태그 버퍼 내의 태그와 액세스되는 뱅크 어드레스를 비교하여, 캐시가 액세스할 메모리 뱅크로부터의 데이터를 포함할 때를 판정하는 단계를 포함할 수도 있다. 몇몇 실시예에서, 메모리 뱅크 및 캐시의 상태를 판정하는 단계는, 더티 비트 버퍼 내의 더티 비트가 세트되어 있는지 여부를 판정하는 단계를 포함할 수도 있다. 리프레시가 계류중일 때, 메모리 뱅크 및 캐시의 상태를 판정하는 단계는, 태그 버퍼로부터의 태그를 리프레시 포인터와 비교하고/비교하거나 뱅크 어드레스를 리프레시 포인터와 비교하는 단계를 포함할 수도 있다.
또한, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계(510)는, 액세스를 용이하게 하기 위한 동작 세트를 판정하는 단계를 더 포함할 수 있고, 이 단계는, 판독 액세스가 캐시에 기록되어야 하는 것을 판정하는 단계와, 판독 액세스가 캐시로부터 판독되어야 하는 것을 판정하는 단계와, 판독 액세스 또는 기록 액세스가 메모리 뱅크에 대해 수행될 때까지 리프레시 동작이 차단되어야 하는 것을 판정하는 단계와, 메모리 뱅크로부터의 판독이 캐시로의 기록과 실질적으로 동시에 수행되어야 하는 것을 판정하는 단계와, 메모리 뱅크로의 기록이 캐시로부터의 판독과 실질적으로 동시에 수행되어야 하는 것을 판정하는 단계 등을 포함할 수 있다. 액세스를 용이하게 하기 위한 동작 세트를 판정하는 단계는, 동작 세트 및/또는 일련의 동작들의 제어를 달성하기 위한 명령 세트를 발행하는 단계를 더 포함할 수도 있다.
몇몇 실시예에서, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계(510)는, 메모리 뱅크의 라인을 캐시에 직접 맵핑하고 메모리 뱅크의 상기 라인과 관련된 태그를 저장하는 단계(520)를 포함할 수도 있다. 메모리 뱅크의 라인을 캐시에 직접 맵핑하고 메모리 뱅크의 상기 라인과 관련된 태그를 저장하는 단계(520)는, 전체 메모리 라인을 캐시 라인에 복제하거나 혹은 메모리의 행을 캐시 내의 행에 복제할 수도 있다. 또한, 메모리 뱅크의 라인을 캐시에 직접 맵핑하고 메모리 뱅크의 상기 라인과 관련된 태그를 저장하는 단계(520)는, 메모리 뱅크 어드레스와 같은 메모리 라인의 소스를 나타내기 위해 태그 버퍼 내에 태그를 저장하는 단계를 포함할 수도 있다. 이 태그는, 예를 들어 태그 버퍼 내의 위치에 의해 캐시 내의 메모리 라인과 관련될 수도 있다.
상기 유지 단계에 응답하여 메모리 뱅크를 리프레시하기 위한 지연 시간과 실질적으로 무관하게 요구에 응답하기 위해 메모리 뱅크 및 캐시의 컨텐츠를 실질적으로 병렬로 액세스하는 단계(530)는, 캐시로부터의 판독과 실질적으로 동시에 메모리 뱅크로부터의 판독을 행하는 단계(535)와, 하나의 사이클 동안 제1 글로벌 버스에 대한 캐시의 판독 액세스를 턴 오프하고, 판독 액세스의 턴 오프 후에 그 사이클 동안 제2 글로벌 버스에 대한 캐시의 기록 액세스를 턴 온하는 단계(540)와, 캐시로의 기록과 실질적으로 동시에 메모리 뱅크로의 기록을 행하는 단계(545)를 포함할 수도 있다. 캐시로부터의 판독과 실질적으로 동시에 메모리 뱅크로부터의 판독을 행하는 단계(535)에서는, 하나의 사이클 국면 동안 액세스 트랜지스터를 통해 두 개 이상의 글로벌 버스에 메모리 뱅크 내의 데이터를 결합시키고 동일 사이클의 다른 국면 동안 캐시 라인을 통해 버스에 결합된 데이터를 캐시 내에 기록할 수도 있다.
몇몇 실시예에서, 캐시로부터의 판독과 실질적으로 동시에 메모리 뱅크로부터의 판독을 행하는 단계(535)는, 리프레시 사이클에 속하는 메모리 어드레스로부터의 판독을 위한 액세스에 기인한 것일 수도 있다. 메모리 어드레스는 캐시를 통해 판독되어, 일관성있는 지연 시간을 가지고 그리고 리프레시 사이클에 대한 지연 시간에 의해 그 지연 시간에 거의 영향을 미치지 않고서 판독 요구에 응답하는 것을 용이하게 해줄 수도 있다. 캐시는, 판독될 메모리 라인의 복제와, 그 메모리 라인이 캐시 라인의 소스인 것을 나타내는 태그와, 캐시 라인이 더 새로운 데이터 또는 메모리 라인과 동일한 데이터일 때를 나타내는 더티 비트를 포함할 수도 있다. 몇몇 실시예에서, 캐시로부터의 판독과 실질적으로 동시에 메모리 뱅크로부터의 판독을 행하는 단계(535)는, 캐시 내에 메모리 라인의 복제를 저장하는 것을 용이하게 해줄 수도 있다. 많은 실시예에서, 캐시로부터의 판독과 실질적으로 동시에 메모리 뱅크로부터의 판독을 행하는 단계(535)는, 액세스에 응답하는 동안 캐시 라인을 플러싱하고 메모리 라인을 캐시에 복제하는 것을 용이하게 해줄 수도 있다.
하나의 사이클 동안 제1 글로벌 버스에 대한 캐시의 판독 액세스를 턴 오프하고, 판독 액세스의 턴 오프 후에 그 사이클 동안 제2 글로벌 버스에 대한 캐시의 기록 액세스를 턴 온하는 단계(540)는, 액세스에 대한 요구에 응답하여 리프레시의 지연 시간을 포함하는 것을 실질적으로 방지할 수 있다. 예를 들면, 메모리 뱅크 에 대해 리프레시가 계류중이고 캐시가 풀(full) 상태이며 각 라인이 세트된 더티 비트를 가질 때, 메모리 제어기는, 하나의 사이클 동안, 캐시 라인을 제1 메모리 뱅크 내의 대응 라인에 복제하고, 새로운 데이터를 캐시 뱅크에 기록하고, 새로운 데이터에 대한 더티 비트를 세트하고, 새로운 데이터에 대한 태그를 기록하고, 메모리 뱅크를 리프레시할 수도 있다. 몇몇 실시예에서, 상기와 동일한 동작의 실행에는 하나 이상의 사이클이 걸릴 수도 있다.
캐시 메모리로의 기록과 실질적으로 동시에 메모리 뱅크에 기록하는 단계(525)에서는, 하나의 사이클의 한 국면 동안 두 개 이상의 글로벌 버스에 캐시 내의 메모리 셀의 컨텐츠를 결합시키고, 동일 사이클의 다른 국면 동안 메모리 뱅크의 로컬 비트 라인에 그 데이터를 결합시킬 수도 있다. 예를 들면, 실질적으로 동일한 사이클 내에서, 캐시 라인이 플러시될 수도 있으며, 데이터가 메모리 뱅크에 기록될 수도 있으며, 리프레시 카운터가 업데이트될 수도 있다.
또한, 캐시로의 기록과 실질적으로 동시에 메모리 뱅크에 기록하는 단계(525)는, 리프레시 사이클에 있는 메모리 어드레스로의 기록을 위한 액세스에 기인한 것일 수도 있다. 이 액세스는, 캐시 라인을 태그 및 더티 비트로 표시하는 캐시에 대한 기록, 혹은 메모리 뱅크 내의 메모리 라인으로의 직접적인 기록일 수도 있다. 몇몇 실시예에서, 리프레시 사이클에 있는 메모리에 기록하는 단계는, 메모리로의 기록이 완료될 때까지 리프레시 사이클을 차단하는 단계를 포함할 수도 있다.
이제 도 6A 내지 도 6F를 참조하면, 실시예에 대한 흐름도의 상세한 예가 도 시되어 있다. 또한, 도 7A 내지 도 7F는 각각, 도 6A 내지 도 6F의 흐름도에 대한 의사 코드(pseudo code)의 상세한 실시예를 나타내고 있다. 도 7A는 또한, 도 6A의 흐름도에 대한 예시적인 의사 코드와 함께 입력, 버퍼, 및 기능들에 대한 예시적인 정의도 포함한다.
특히, 도 6A 내지 도 6F는, 액세스에 대한 요구를 수신하고, 캐시에 메모리 뱅크의 컨텐츠를 유지하고, 액세스하는 실시예들의 흐름도에 대한 상세한 예들을 제공한다. 본 실시예는, 캐시 뱅크가 메모리 뱅크와 동일한 수의 행들을 포함하며, 메모리 뱅크의 행들이 캐시에 직접 맵핑되는, 메모리 시스템 상에서 기능하도록 설계될 수도 있다. 이 직접적인 맵핑은, 행에 의해 캐시 라인들을 분할하여 메모리 뱅크의 n번째 행이 캐시의 n번째 행으로 맵핑되게 할 수도 있다. 예를 들면, 하나의 메모리 뱅크가 10개의 행을 포함하는 경우, 캐시 뱅크도 또한 10개의 행을 포함하며, 각 메모리 뱅크의 제1 행은 캐시 뱅크의 제1 행 내에 캐시되도록 경쟁할 수도 있다. 마찬가지로, 각 메모리 뱅크의 제2, 제3, ..., 제10 행은 캐시 뱅크 내에 캐시되도록 다른 메모리 뱅크의 제2, 제3, ..., 제10 행과 경쟁해야 한다.
도 6A에서, 판독 액세스가 수신되었으며, 리프레시가 액세스와 충돌하는지 여부에 대한 판정에서는 계류중인 리프레시가 없음이 판정되었다. 액세스 동안 계류중인 리프레시가 없으면, 메모리 제어기는 후속하는 액세스에서 충돌을 피하기 위해 취할 조치를 결정할 수도 있다. 예를 들면, 메모리 제어기는, 액세스를 수행하는 동안 캐시의 캐시 라인들이 플러싱되어야 하는 것으로 결정할 수도 있다. 또한, 메모리 제어기는 액세스와의 충돌을 피하면서 캐시 라인을 플러시하기 위한 일 련의 동작들을 개시할 수도 있다. 설명문 640A는 도 6A 내지 도 6C의 흐름도에서 구현되는 동작들을 나타낸다. 이 설명문은, 메모리 뱅크 내에 액세스되는 행을 판독하는 "판독"과, 액세스되는 행의 캐시 버전을 판독하는 "캐시 판독"과, 액세스되는 메모리 뱅크로부터의 행을 캐시에 기록하고 이와 실질적으로 동시에 엔트리에 대한 캐시 태그를 저장하는 "캐시 업데이트"와, 행에 대한 더티 비트를 클리어함과 실질적으로 동시에 액세스되는 대응 뱅크에 그 행의 캐시 버전을 복제하는 "플러시"와, 리프레시가 계류중인 것으로 표시된 행을 리프레시하는 "리프레시"와, 하나의 동작이 완료될 때까지 그 행의 리프레시를 방지하는 "리프레시 차단"을 포함한다.
메모리 제어기는, 액세스가 판독되고 계류중인 리프레시가 없는 것으로 판정한 후, 임의의 캐시 라인들이 더티로 표시되는지 여부를 판정할 수도 있다(610A). 더티 캐시 라인은, 메모리 뱅크가 아니라 캐시에 저장되었던 리프레시 사이클 동안 메모리 뱅크의 액세스에 기인한 것일 수도 있으며, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 현재의 액세스를 처리하면서 대응 메모리 뱅크를 업데이트할 수도 있다. 캐시 내에 더티 라인들이 존재하지 않으면, 메모리 제어기는 캐시의 판독 및 업데이트를 실질적으로 동시에 행할 수도 있다(612A). 마찬가지로, 캐시 내에 더티 라인들이 존재할 때, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는, 액세스되는 행이 더티 라인이 아닌지를 판정하고(620A), 액세스되는 행이 더티 라인이 아니면, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는 캐시의 판독 및 업데이트를 실질적으로 동시에 개시할 수도 있다(622A).
반면에, 액세스되는 행이 더티 라인이면, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는, 액세스되는 뱅크가 캐시 내에 있는지를 판정하는 단계(630A)를 포함하고, 액세스되는 뱅크가 캐시 내에 있으면, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는, 플러시와 실질적으로 동시에 캐시의 판독을 행하는 단계(632A)를 포함할 수도 있다. 캐시의 판독은 메모리 라인에 대한 업데이트된 컨텐츠로의 액세스에 응답할 수도 있으며 플러시는 캐시 라인에 대한 더티 비트를 클리어할 수도 있어서, 캐시는 후속 액세스 동안 세트된 더티 비트를 갖는 캐시 라인들로 채워지지 않게 된다. 그러나, 더티 라인이, 액세스되는 메모리 뱅크에 대한 것이 아니면, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는, 대응하는 메모리 뱅크에 캐시 내의 더티 라인을 플러시하는 것과 실질적으로 동시에 액세스되는 뱅크를 판독하는 단계(634A)를 포함할 수도 있다.
이제 도 6B를 참조하면, 리프레시가 계류중이지만 캐시 뱅크에 대해서는 리프레시가 계류중이지 않은 동안 액세스가 수신되는 상황(600B)에서의 상세한 실시예들의 흐름도가 도시되어 있다. 본 실시예는, 캐시가, 메모리 뱅크 내의 대응하는 메모리 라인보다 더 많은 현재 데이터를 갖는 캐시 라인을 포함하는지 여부를 판정하기 위해 더티 비트 버퍼를 검토하는 단계(610B)로 시작될 수도 있다. 캐시가 아무런 더티 라인들도 가지지 않으면, 메모리 제어기는 액세스의 어드레스 뱅크를 리프레시 포인터에 대한 뱅크 어드레스와 비교할 것을 결정할 수도 있다. 포인터가 다른 뱅크를 가리킬 때, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 다른 뱅크의 리프레시와 실질적으로 동시에 뱅크의 판독을 행할 수도 있다(612B).
이와 다른 경우, 액세스 어드레스가 리프레시 포인터의 뱅크 어드레스와 일치할 때, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 캐시 내에 액세스되는 메모리 라인의 복제가 존재할 때, 예를 들어 액세스의 어드레스가 캐시 라인과 관련된 태그의 어드레스와 일치할 때, 메모리 뱅크의 리프레시와 실질적으로 동시에 캐시의 판독을 행할 수도 있다(614B). 이와 다른 경우, 메모리 제어기는, 액세스되는 행이 리프레시가 계류중인 것으로 표시된 행인지를 판정할 수도 있다. 액세스되는 행이 리프레시가 계류중인 것으로 표시된 행이면, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는 캐시를 판독하고 업데이트할 수도 있다(616B). 이와 다른 경우, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 메모리 뱅크를 판독하고 캐시를 업데이트하는 동안 액세스되는 메모리 뱅크에 대한 리프레시를 차단할 수도 있다(618B).
캐시 내에 더티 라인이 존재할 때(610B), 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는, 리프레시로 표시된 뱅크가 액세스되는 뱅크인지 여부를 판정하는 단계(630B)를 포함할 수도 있다. 리프레시로 표시된 뱅크가 액세스되는 뱅크가 아니면, 4가지 가능성이 존재할 수 있으며, 각 가능성은, 하나 이상의 동작과 실질적으로 동시에 뱅크의 리프레시를 행하는 단계(632B)를 포함할 수도 있다. 첫 번째 가능성은, 캐시 내에 저장된 뱅크가 액세스되지 않고 액세스되는 행이 더티 라인인 경우일 수 있으며, 이 경우 두 개 이상의 글로벌 버스가, 캐시 내의 더티 라인의 플러시와 실질적으로 동시에 액세스되는 메모리 뱅크의 판독을 용이하게 할 수 있 다(634B). 두 번째 가능성은, 액세스되는 행이 더티 라인이 아닌 경우일 수 있으며, 따라서 두 개 이상의 글로벌 버스가 캐시의 판독 및 업데이트를 실질적으로 동시에 수행할 수도 있다(634B).
세 번째 가능성은, 캐시 내에 저장된 뱅크가 액세스되는 뱅크이고 액세스되는 행이 더티 라인인 경우일 수 있으며, 이 경우 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계가 두 개의 이상의 글로벌 버스로 하여금 캐시의 플러시와 실질적으로 동시에 캐시의 판독을 용이하게 할 수도 있다(636B). 네 번째 가능성은, 액세스되는 행이 더티 라인이 아닌 경우일 수 있으며, 이 경우 두 개 이상의 글로벌 버스가 메모리 뱅크의 판독을 행할 수도 있는 것이다(636B).
캐시가 적어도 하나의 더티 라인을 포함하고 액세스에 대한 뱅크 어드레스가 리프레시 포인터에 대한 뱅크 어드레스와 동일할 수도 있는 상황에서, 메모리 제어기는, 리프레시될 행이 액세스되는 행과 동일한지 여부를 판정할 수도 있다(640B). 액세스되는 행이 리프레시될 행이고 캐시 내에 저장된 뱅크가 액세스되는 뱅크가 아닐 때(642B), 두 개 이상의 글로벌 버스는, 액세스되는 행이 대응하는 더티 라인을 가질 때 뱅크에 대한 리프레시 카운터의 판독 및 업데이트와 실질적으로 동시에 캐시의 플러시를 수행하거나, 혹은 액세스되는 행이 대응하는 더티 라인을 가지지 않을 때 메모리 뱅크의 판독을 행하고 캐시를 업데이트하고 메모리 뱅크에 대한 리프레시 카운터를 업데이트할 수도 있다(644B).
반면에, 리프레시될 행이 액세스되는 행과 동일하고(642B), 캐시 내에 저장된 뱅크는 액세스되는 뱅크이며(646B), 액세스되는 행이 대응 더티 라인을 가질 때, 메모리 제어기는, 두 개 이상의 글로벌 버스가 캐시의 판독 및 리프레시 카운터의 업데이트와 실질적으로 동시에 캐시 내의 더티 라인을 플러시하도록 할 수도 있다(646B). 이와 다른 경우, 액세스되는 행이 캐시 내의 대응 더티 라인을 가지지 않으면, 두 개 이상의 글로벌 버스는 메모리 뱅크의 판독과, 캐시의 업데이트와, 리프레시 카운터의 업데이트를 용이하게 할 수도 있다(646B).
계속해서 도 6B를 참조하면, 리프레시로 표시된 뱅크가 액세스되는 뱅크와 동일하고, 리프레시될 행이 액세스되는 행과 동일하지 않으며, 액세스되는 뱅크가 캐시 내에 저장될 때, 뱅크의 리프레시는 캐시의 판독과 실질적으로 동시에 수행될 수도 있다(650B). 그러나, 액세스되는 뱅크가 캐시 내에 저장되지 않고, 액세스되는 행이 더티 라인일 때 캐시의 플러싱 및 액세스되는 뱅크의 판독과 실질적으로 동시에 리프레시가 차단될 수도 있다(652B). 반면에, 액세스되는 뱅크가 캐시 내에 저장되지 않고 액세스되는 행이 더티 라인이 아닐 때, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는, 액세스되는 메모리 뱅크를 판독하고, 캐시를 업데이트하고, 메모리 뱅크에 리프레시 카운터를 업데이트하는 단계(652B)를 포함할 수도 있다.
이제 도 6C를 참조하면, 액세스가 판독되고 캐시에 대해 리프레시가 계류중일 때(600C)의 실시예의 상세한 흐름도가 도시되어 있다. 액세스되는 행이 캐시 내에 대응 더티 라인을 가지지 않을 때, 메모리 제어기는 메모리 뱅크의 판독과 실질적으로 동시에 메모리 뱅크의 리프레시를 차단할 수도 있다(610C). 이와 다른 경우, 액세스되는 뱅크가 캐시에 저장된 대응 더티 라인을 갖는 경우, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는, 캐시의 플러싱과 실질적으로 동시에 리프레시를 차단하고 캐시를 판독하는 단계(620C)를 포함할 수도 있다. 이와 다른 경우, 액세스되는 행이 대응 더티 라인을 가지지 않고 액세스되는 뱅크가 캐시 내에 저장되지 않을 때, 메모리 제어기는, 캐시의 플러싱과 실질적으로 동시에 메모리 뱅크의 리프레시를 차단하고 메모리 뱅크를 판독할 수도 있다(630C).
이제 도 6D를 참조하면, 도 6D, 도 6E, 및 도 6F에 대한 설명문(640D)이 도시되는데, 이는 상세한 흐름도에서 언급되는 동작에 대한 예시적인 명령들을 포함한다. 설명문(640D)은, 메모리 뱅크에서 액세스되는 행에 기록하는 "기록"과, 액세스되는 행의 버전을 캐시에 기록하는 "캐시 기록"과, 액세스되는 메모리 뱅크로부터의 행을 캐시에 복제하고, 이와 동시에 엔트리에 대한 캐시 태그를 저장하는 "캐시 업데이트"와, 리프레시가 계류중인 것으로 표시된 행을 리프레시하는 "리프레시"와, 리프레시되는 메모리 라인에 대한 동작을 실행하는 동안 리프레시를 차단하는 "리프레시 차단"을 포함한다.
계속해서 도 6D를 참조하면, 계류중인 리프레시가 없을 때 기록 액세스를 처리(600D)하기 위한 실시예의 상세한 흐름도가 도시되어 있다. 제1 동작은, 캐시 뱅크와 관련된 더티 비트 버퍼 내에 더티 비트가 세트되어 있는지 여부를 판정하는 단계(610D)를 포함하며 더티 비트가 세트되어 있지 않을 때 캐시에 대한 기록을 행한다(612D). 반면에, 더티 비트가 캐시 내에 세트되어 있을 때(액세스되는 행에 대한 더티 비트이거나 심지어는 액세스되는 메모리 뱅크에 대한 더티 비트일 필요는 없음), 메모리 제어기는, 액세스되는 행이 더티 라인인지 여부를 판정할 수도 있다(620D). 액세스되는 행이 대응 더티 라인을 갖지 않을 때, 메모리 제어기는, 메모리 뱅크에 대해 기록이 행해져야 하는지 여부를 판정할 수도 있다(622D). 그러나, 액세스되는 행이 대응 더티 라인을 갖지 않을 때, 메모리 제어기는, 캐시 내에 저장된 뱅크가 액세스되는 뱅크인지 여부를 결정할 수도 있으며(630D), 캐시 내에 저장된 뱅크가 액세스되는 뱅크일 때 메모리 제어기는, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계가, 메모리 라인 및 캐시 내의 라인 양쪽에 기록하고 더티 비트를 클리어하는 단계를 포함하는 것으로 판정할 수도 있다(634D). 이와 다른 경우, 캐시 내에 저장된 뱅크가 액세스되는 뱅크가 아니면, 두 개 이상의 글로벌 버스가, 더티 비트에 의해 표시된 캐시의 플러시와 실질적으로 동시에 뱅크에 기록하는 것을 용이하게 해줄 수도 있다(632D).
이제 도 6E를 참조하면, 액세스가 기록 액세스이며 캐시가 아닌 메모리 뱅크들중 하나에 대해 리프레시가 계류중일 때(600E)의 실시예의 상세한 흐름도의 예가 도시되어 있다. 이 흐름도는, 캐시와 관련된 더티 비트 버퍼 내에 세트된 더티 비트가 존재하는지 여부의 판정으로 시작될 수도 있다(610E). 세트된 더티 비트가 존재할 때, 메모리 제어기는, 리프레시로 표시된 뱅크가 액세스되는 뱅크가 아닌지에 대해 판정할 수도 있다(620E). 리프레시로 표시된 뱅크가 액세스되는 뱅크와 동일할 때(630E), 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 액세스되는 행이 더티 라인일 때를 결정하고(640E), 두 개 이상의 글로벌 버스가 캐시 기록과 실질적으로 동시에 리프레시를 수행하도록 해줄 수도 있다(642E).
반면에, 리프레시로 표시된 뱅크가 액세스되는 뱅크와 동일하며 액세스되는 행이 더티 라인일 때, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 캐시 내에 액세스되는 뱅크의 복제가 존재하는지 여부를 판정할 수도 있다(644E). 캐시 내에 액세스되는 뱅크의 복제가 존재할 때, 두 개 이상의 글로벌 버스가 캐시로의 기록을 수행할 수도 있다(646E).
메모리 제어기가, 리프레시로 표시된 뱅크가 액세스되는 뱅크와 동일하며 액세스되는 행이 더티 라인이며 캐시 내에 액세스되는 뱅크의 복제가 존재하며 리프레시로 표시된 행이 액세스되는 행과 동일한 것으로 판정한 후에, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 액세스되는 뱅크에 대한 리프레시 카운터의 기록 및 업데이트와 실질적으로 동시에 플러시를 수행하는 단계를 포함하는 동작 세트를 결정할 수도 있다(648E). 리프레시로 표시된 행이, 액세스되는 행과 동일하지 않을 경우, 두 개 이상의 글로벌 버스는 리프레시와 실질적으로 동시에 캐시에 대해 플러시 및 기록 동작을 수행할 수도 있다(649E). 캐시에 대한 플러시, 기록 동작, 및 리프레시 동작은 동일한 사이클 동안 수행될 수도 있다. 예를 들면, 리프레시는 제1 메모리 뱅크에 대해 시작될 수도 있으며 캐시로부터의 판독은 사이클 내의 첫 번째 국면 동안 발생될 수도 있다. 두 번째 국면 동안, 판독된 데이터는 제2 메모리 뱅크에 기록되고 캐시 라인에 대한 더티 비트가 클리어될 수도 있다.
상기 상세한 흐름도에서는, 더티 비트 버퍼 내에 더티 비트가 존재하고 리프레시로 표시된 뱅크가 액세스되는 뱅크가 아닐 때, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계는, 캐시 내에 리프레시로 표시된 뱅크 내에 소스를 갖는 캐시 라인이 존재하지 않는 것으로 판정할 수도 있다(622E). 리프레시로 표시된 뱅크가 캐시 내의 캐시 라인의 소스이고 캐시 내에 액세스되는 행의 복제가 더티일 때, 두 개 이상의 글로벌 버스는 기록과 실질적으로 동시에 리프레시를 행할 수도 있다(623E). 이와 다른 경우, 두 개 이상의 글로벌 버스는 하나의 기록 또는 양쪽의 기록과 실질적으로 동시에 리프레시를 행할 수도 있다(623E).
리프레시로 표시된 뱅크가 캐시 라인의 소스일 때, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 이하의 네 가지 동작 또는 동작의 조합중 하나와 실질적으로 동시에 리프레시가 행해져야 하는지 여부를 판정할 수도 있다(624E). 첫 째로, 액세스되는 행이 대응 더티 라인을 가지며(626E), 액세스되는 뱅크의 복제가 캐시 내에 있지 않을 때, 두 개 이상의 글로벌 버스는 메모리 뱅크로의 기록과 실질적으로 동시에 더티 라인을 플러시할 수도 있다(630E). 둘 째로, 액세스되는 행이 대응 더티 라인을 가지고 액세스되는 뱅크의 복제가 캐시 내에 있을 때, 두 개 이상의 글로벌 버스가 양쪽의 기록을 수행할 수도 있다(630E). 세 째로, 액세스되는 행이 대응 더티 라인을 가지지 않으며 액세스되는 뱅크의 복제가 캐시 내에 있지 않을 때, 두 개 이상의 글로벌 버스는 한쪽 기록 또는 양쪽 기록을 행할 수도 있다(628E). 네 째로, 액세스되는 행이 대응 더티 라인을 가지지 않으며 액세스되는 뱅크의 복제가 캐시 내에 있을 때 두 개 이상의 글로벌 버스는 양쪽 기록을 행할 수도 있다(628E).
최종적으로, 상세한 흐름도는 또한, 더티 비트 버퍼의 컨텐츠를 검토하고(610E), 더티 비트 버퍼 내에 더티 비트를 발견하지 못한 후에는, 액세스 되는 뱅크가 리프레시로 표시된 뱅크가 아닐 때 리프레시와 실질적으로 동시에 기록이 수행될 수도 있다(650E). 이와 다른 경우, 캐시로의 기록과 더티 비트의 세트는 리프레시와 실질적으로 동시에 수행될 수도 있다(652E).
이제 도 6F를 참조하면, 메모리 뱅크의 기록 액세스가 요구되고 캐시의 리프레시가 계류중인(600F) 실시예의 상세한 흐름도가 도시되어 있다. 이 흐름도는, 네 가지 다른 동작 세트중 하나와 실질적으로 동시에 기록이 수행될 수도 있는지에 대한 판정 단계(610F)를 포함하는, 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계로 시작될 수도 있다. 캐시 내에 메모리 뱅크의 컨텐트를 유지하는 단계에서는, 액세스되는 행이 대응 더티 라인을 가지는지 여부를 판정할 수도 있으며(620F), 액세스되는 행이 대응 더티 라인을 갖지 않을 때, 메모리 제어기는 액세스되는 행의 리프레시를 행할 수도 있다. 또한, 액세스되는 뱅크가 캐시 내에 저장될 때, 메모리 제어기는 액세스되는 뱅크의 캐시 버전을 무효화할 수도 있다(622F). 액세스되는 행이 대응 더티 라인을 가지며, 액세스되는 뱅크가 캐시 내에 저장될 때, 메모리 제어기는, 두 개 이상의 글로벌 버스가 뱅크의 리프레시를 수행하고 캐시 내의 뱅크의 복제를 무효화하는 것으로 판정할 수도 있다(632F). 그러나, 액세스되는 뱅크가 캐시 내에 저장되지 않을 때(630F), 리프레시로 표시된 행이 액세스되는 행이 아닌 한, 두 개 이상의 글로벌 버스가 액세스되는 행의 리프레시를 행할 수도 있다. 이와 다른 경우, 리프레시로 표시된 행이 액세스되는 행일 때, 두 개 이상의 글로벌 버스가 캐시를 기록하고 액세스되는 행에 대한 더티 비트를 포함할 수도 있다(634F).
이제 도 8을 참조하면, 본 발명의 기계 판독 가능한 매체 실시예가 도시되어 있다. 기계 판독 가능한 매체는, 기계(예를 들면, 컴퓨터)에 의해 판독 가능한 형태로 정보를 제공(즉, 저장 및/또는 전송)하고, 기계에 의해 실행될 때 본 명세서에 기술한 기능들을 수행할 수 있는 임의의 메커니즘을 포함한다. 예를 들면, 기계 판독 가능한 매체는, ROM; RAM; 자기 디스크 저장 매체; 광 저장 매체; 플래시 메모리 장치; 전기적, 광학적, 어쿠스틱(acoustic) 또는 그 밖의 다른 형태의 전파된 신호들(예를 들면, 반송파, 적외선 신호, 디지털 신호 등) 등을 포함할 수도 있다. 본 발명의 몇몇 실시예에서는, 기계의 설계에 따라 하나 이상의 기계 판독 가능한 매체를 포함할 수도 있다.
기계 판독 가능한 매체(800)는, 메모리 뱅크의 컨텐츠에 대한 액세스의 요구를 수신하기 위한 명령(810)과, 캐시 내에 메모리 뱅크의 컨텐트를 유지하기 위한 명령(820)과, 상기 유지 명령들에 응답하여 메모리 뱅크를 리프레시하기 위한 지연 시간과 실질적으로 무관하게 요구에 응답하기 위해 메모리 뱅크 및 캐시의 컨텐츠에 실질적으로 병렬로 액세스하기 위한 명령(840)을 포함할 수도 있다. 메모리 뱅크의 컨텐츠에 대한 액세스의 요구를 수신하기 위한 명령(810)은, 판독 또는 기록에 대한 요구를 수신하기 위한 명령을 포함할 수도 있는데, 여기서 이 요구에는, 리프레시 대상일 수도 있고 혹은 대상이 아닐 수도 있는 메모리 뱅크를 나타내는 뱅크 어드레스가 수반될 수도 있다.
캐시 내에 메모리 뱅크의 컨텐트를 유지하기 위한 명령(820)은, 메모리 뱅크의 컨텐츠를 캐시에 직접 맵핑하기 위한 명령을 포함할 수도 있다. 캐시 내에 메 모리 뱅크의 컨텐츠를 직접 맵핑하기 위한 명령은, 전체 메모리 라인을 캐시 내의 동등 사이즈의 메모리 라인에 복제하고 캐시 라인의 소스를 나타내기 위해 태그를 캐시 라인과 연관시키는 명령을 포함할 수도 있다.
몇몇 실시예에서, 캐시 내에 메모리 뱅크의 컨텐트를 유지하기 위한 명령(820)은 기준 원리의 집약성(locality of reference principle)의 구현을 포함할 수도 있다. 기준 원리의 집약성은, 프로세서 또는 프로세서 코어가 최근에 메모리 내의 한 위치를 조회했을 때 그 프로세서 또는 코어가 장래에 그 위치를 조회할 수도 있음을 나타낸다. 이에 따라, 메모리 뱅크의 메모리 라인으로부터의 판독과 실질적으로 동시에 메모리 뱅크로부터 그 메모리 라인을 복제하면, 리프레시의 완료와 메모리 뱅크의 메모리 컨텐츠의 액세스가 용이하게 될 수도 있다. 판독과 실질적으로 동시에 복제하면, 메모리 뱅크가 리프레시 대상이 될 때, 메모리 뱅크를 리프레시하는 데에 충분한 시간이 유지되는 한, 특히 유용할 수도 있다.
또한, 캐시 내에 메모리 뱅크의 컨텐트를 유지하기 위한 명령(820)은 리프레시가 액세스와 충돌하는 것을 판정하는 명령을 포함할 수도 있다. 리프레시가 액세스와 충돌하는 것을 판정하기 위한 명령은, 뱅크 어드레스와 관련된 메모리 뱅크, 캐시와 관련된 태그 버퍼의 컨텐츠, 및 메모리 뱅크 또는 캐시가 리프레시 대상인지 여부를 판정함으로써 동작을 시작할 수도 있다. 몇몇 실시예에서, 리프레시가 액세스와 충돌하는 것을 판정하는 명령은, 제2 메모리 뱅크로부터의 제2 라인의 판독과 캐시로의 제2 라인의 기록과 동일한 사이클 동안, 두 개 이상의 글로벌 버스가 캐시 라인으로부터 판독하고 메모리 뱅크에 라인을 기록하도록 하는 명령을 발행하는 명령을 포함할 수도 있다. 이 명령으로 인해, 두 개 이상의 글로벌 버스는, 두 개 이상의 글로벌 버스와 캐시의 로컬 비트 라인들 간에 결합된 액세스 트랜지스터들의 상태를 변경하기 위한 명령에 의해 판독 및 기록하는 것을 용이하게 할 수 있다.
많은 실시예에서, 리프레시가 액세스와 충돌하는 것을 판정하는 명령은, 로컬 비트 라인 쌍에 대한 액세스 트랜지스터들이 한 쌍의 글로벌 버스로부터 로컬 비트 라인 쌍을 분리시키고(decouple) 로컬 비트 라인 쌍을 제2 글로벌 버스 쌍에 결합시키도록 하는 단계를 포함할 수도 있다. 또한, 리프레시가 액세스와 충돌하는 것을 판정하는 단계는, 액세스되는 메모리 뱅크의 메모리 라인의 소스를 갖는 캐시 라인으로부터의 판독에 의해 메모리 라인에의 판독 액세스를 용이하게 해주는 단계를 포함할 수도 있다.
계속해서 도 8을 참조하면, 상기 유지 명령에 응답하여 메모리 뱅크를 리프레시하기 위한 지연 시간과 실질적으로 무관하게 요구에 응답하기 위해 메모리 뱅크 및 캐시의 컨텐츠를 실질적으로 병렬로 액세스하기 위한 명령(840)은, 캐시를 통해 리프레시 사이클 대상인 메모리 뱅크에 기록하고 리프레시 사이클 대상인 메모리 뱅크로부터 판독하기 위한 명령을 포함할 수도 있다. 리프레시 사이클 대상인 메모리에 기록하는 명령은, 메모리를 리프레시하는 대신에 리프레시 대상인 메모리에 기록하는 명령을 포함할 수도 있다. 다른 상황에서, 리프레시 사이클 대상인 메모리에 기록하기 위한 명령은, 캐시 내에 라인을 기록하고 메모리 라인 또는 어드레스의 캐시 버전이 메모리 라인보다 더 새로운 것일 수 있음을 나타내기 위해 더티 비트를 세팅함과 실질적으로 동시에 태그를 태그 버퍼에 기록하기 위한 명령을 포함할 수도 있다. 캐시를 통해 리프레시 사이클 대상인 메모리 어드레스로부터 판독하는 명령은, 캐시 라인과 연관된 태그가, 캐시가 메모리 어드레스의 컨텐츠를 포함하고 있음을 나타낼 때 캐시 라인을 판독하는 명령을 포함할 수도 있다.
또한, 상기 유지 명령에 응답하여 메모리 뱅크를 리프레시하기 위한 지연 시간과 실질적으로 무관하게 요구에 응답하기 위해 메모리 뱅크 및 캐시의 컨텐츠에 실질적으로 병렬로 액세스하기 위한 명령(840)은, 캐시로의 기록과 실질적으로 동시에 메모리 뱅크로부터 판독하는 명령과, 캐시로부터의 판독과 실질적으로 동시에 메모리 뱅크에 기록하는 명령을 포함할 수도 있다. 캐시로의 기록과 실질적으로 동시에 메모리 뱅크로부터 판독하는 명령은, 액세스될 메모리 뱅크의 행이 캐시 내에 대응 복제를 가지지 않을 때 메모리 뱅크에 대한 판독 액세스를 수행하기 위해 리프레시를 차단하기 위한 명령을 포함할 수도 있다. 판독 액세스를 수행하기 위해 리프레시를 차단하기 위한 명령은, 캐시 내에 메모리 뱅크의 컨텐트를 유지하기 위한 명령(820)에 의해 제어될 수도 있다. 상기 유지 명령에 응답하여 메모리 뱅크를 리프레시하기 위한 지연 시간과 실질적으로 무관하게 요구에 응답하기 위해 메모리 뱅크 및 캐시의 컨텐츠에 실질적으로 병렬로 액세스하기 위한 명령(840)은, 두 개 이상의 글로벌 버스를 통해 메모리 뱅크로부터의 판독과 캐시로부터의 판독을 실질적으로 동시에 행하고, 동일한 메모리 뱅크 및 캐시로의 기록을 실질적으로 동시에 행하기 위한 명령을 포함할 수도 있다.

Claims (28)

  1. 메모리 뱅크의 컨텐츠(contents)에의 액세스를 제공하기 위한 캐시;
    상기 캐시 및 상기 메모리 뱅크로의 병렬 액세스(parallel access)를 제공하기 위한 2개 이상의 글로벌 버스 - 상기 2개 이상의 글로벌 버스는 비트를 전송하도록 상기 캐시에 결합된 한 쌍의 글로벌 버스, 제2 비트를 나타내는 신호를 전송하도록 상기 캐시에 결합된 제3 글로벌 버스 및 상기 신호와 상기 비트의 비교에 응답하여 상기 한 쌍의 글로벌 버스 중의 적어도 하나의 버스를 통해 상기 캐시에 상기 제2 비트를 기록하기 위한 회로를 포함함 - 및
    상기 메모리 뱅크를 리프레시하기 위한 지연 시간(latency)과는 실질적으로 무관하게 상기 메모리 뱅크의 액세스에 대한 요구에 응답하기 위하여 상기 캐시 및 상기 메모리 뱅크의 병렬 액세스를 통하여 상기 캐시 내에 상기 메모리 뱅크의 컨텐트(content)를 유지하기 위한 캐시 제어기
    를 포함하는 장치.
  2. 제1항에 있어서,
    캐시 라인을 상기 메모리 뱅크의 라인과 관련시키기 위해 상기 캐시에 결합된 태그 버퍼(tag buffer)와;
    상기 태그 버퍼에 저장된 태그를 디코드하기 위해 상기 태그 버퍼에 결합된 행 디코더(row decoder)
    를 더 포함하는 장치.
  3. 제1항에 있어서, 상기 캐시의 라인과 상기 메모리 뱅크의 라인 사이의 관계를 표시하기 위해 상기 캐시에 결합된 더티 비트 버퍼(dirty bit buffer)를 더 포 함하는 장치.
  4. 제1항에 있어서, 상기 메모리 뱅크는 동적 랜덤 액세스 메모리(DRAM : dynamic random access memory)를 포함하는 장치.
  5. 제1항에 있어서, 상기 캐시는 적어도 제2 메모리 뱅크의 일부를 포함하는 장치.
  6. 삭제
  7. 제1항에 있어서, 상기 기록하기 위한 회로는 상기 제3 글로벌 버스 및 상기 캐시에 결합된 XOR 논리를 구현하는 회로를 포함하는 장치.
  8. 제1항에 있어서, 상기 2개 이상의 글로벌 버스는 상기 메모리 뱅크 및 상기 캐시에 결합된 2쌍의 글로벌 버스를 포함하는 장치.
  9. 메모리 뱅크의 컨텐츠(contents)에의 액세스를 제공하기 위한 캐시;
    상기 캐시 및 상기 메모리 뱅크로의 병렬 액세스(parallel access)를 제공하기 위한 2개 이상의 글로벌 버스 및
    상기 메모리 뱅크를 리프레시하기 위한 지연 시간(latency)과는 실질적으로 무관하게 상기 메모리 뱅크의 액세스에 대한 요구에 응답하기 위하여 상기 캐시 및 상기 메모리 뱅크의 병렬 액세스를 통하여 상기 캐시 내에 상기 메모리 뱅크의 컨텐트(content)를 유지하기 위한 캐시 제어기 - 상기 캐시 제어기는 한 사이클의 판독 국면 후에 상기 2개 이상의 글로벌 버스 중 제2 글로벌 버스를 통해 상기 캐시로의 판독 액세스를 턴 오프하는 것에 응답하여 상기 사이클의 후기록 국면(write-back phase) 중에 상기 2개 이상의 글로벌 버스 중 제1 글로벌 버스를 통해 상기 캐시로의 기록 액세스를 턴 온하기 위한 회로를 포함함 -
    를 포함하는 장치.
  10. 제1항에 있어서, 상기 캐시 제어기는 상기 메모리 뱅크로부터의 판독과 상기 캐시로부터의 판독을 실질적으로 동시에 수행하기 위한 회로를 포함하는 장치.
  11. 제1항에 있어서, 상기 캐시 제어기는 상기 메모리 뱅크로의 기록과 상기 캐시로의 기록을 실질적으로 동시에 수행하기 위한 회로를 포함하는 장치.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 코어와;
    상기 코어에 결합된 제1 캐시를 포함하는 시스템으로서,
    상기 제1 캐시는,
    메모리 뱅크의 컨텐츠로의 액세스를 제공하기 위한 제2 캐시;
    상기 제2 캐시 및 상기 메모리 뱅크에의 병렬 액세스를 제공하기 위한 2개 이상의 글로벌 버스 - 상기 2개 이상의 글로벌 버스는 제1 비트를 전송하기 위해 상기 제2 캐시에 결합된 한 쌍의 글로벌 버스, 제2 비트를 나타내는 신호를 전송하기 위해 상기 제2 캐시에 결합된 제3 글로벌 버스 및 상기 신호와 상기 제1 비트의 비교에 응답하여 상기 한 쌍의 글로벌 버스 중 적어도 하나의 버스를 통하여 상기 제2 캐시에 상기 제2 비트를 기록하기 위한 회로를 포함함 - 및
    상기 메모리 뱅크를 리프레시하기 위한 지연 시간과는 실질적으로 무관하게 상기 메모리 뱅크의 액세스에 대한 요구에 응답하기 위하여 상기 제2 캐시 및 상기 메모리 뱅크의 병렬 액세스를 통하여 상기 제2 캐시 내에 상기 메모리 뱅크의 컨텐트를 유지하기 위한 캐시 제어기
    를 포함하는 시스템.
  20. 제19항에 있어서, 상기 2개 이상의 글로벌 버스는 상기 메모리 뱅크 및 상기 캐시에 결합된 2쌍의 글로벌 버스를 포함하는 시스템.
  21. 삭제
  22. 제19항에 있어서, 상기 캐시 제어기는,
    상기 메모리 뱅크로부터의 판독과 상기 제2 캐시로부터의 판독을 실질적으로 동시에 수행하기 위한 회로와;
    상기 메모리 뱅크로의 기록과 상기 제2 캐시로의 기록을 실질적으로 동시에 수행하기 위한 회로
    를 포함하는 시스템.
  23. 프로세서와;
    상기 프로세서에 결합된 메모리 장치를 포함하는 시스템으로서,
    상기 메모리 장치는,
    메모리 뱅크의 컨텐츠로의 액세스를 제공하기 위한 캐시;
    상기 캐시 및 상기 메모리 뱅크로의 병렬 액세스를 제공하기 위한 2개 이상의 글로벌 버스 - 상기 2개 이상의 글로벌 버스는 비트를 전송하기 위해 상기 캐시에 결합된 한 쌍의 글로벌 버스, 제2 비트를 나타내는 신호를 전송하기 위해 상기 캐시에 결합된 제3 글로벌 버스 및 상기 신호와 상기 비트의 비교에 응답하여 상기 한 쌍의 글로벌 버스 중 적어도 하나의 버스를 통하여 상기 캐시에 상기 제2 비트를 기록하기 위한 회로를 포함함 - 및
    상기 메모리 뱅크를 리프레시하기 위한 지연 시간과는 실질적으로 무관하게 상기 메모리 뱅크의 액세스에 대한 요구에 응답하기 위하여 상기 캐시 및 상기 메모리 뱅크의 병렬 액세스를 통하여 상기 캐시 내에 상기 메모리 뱅크의 컨텐트를 유지하기 위한 캐시 제어기
    를 포함하는 시스템.
  24. 제23항에 있어서, 상기 캐시 제어기는,
    상기 메모리 뱅크로부터의 판독과 상기 캐시로부터의 판독을 실질적으로 동시에 수행하기 위한 회로와;
    상기 메모리 뱅크로의 기록과 상기 캐시로의 기록을 실질적으로 동시에 수행하기 위한 회로
    를 포함하는 시스템.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020047004570A 2001-09-28 2002-09-27 메모리의 리프레시 은닉 및 리프레시 은닉 메모리 KR100591218B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/966,586 US6757784B2 (en) 2001-09-28 2001-09-28 Hiding refresh of memory and refresh-hidden memory
US09/966,586 2001-09-28
PCT/US2002/031158 WO2003027857A2 (en) 2001-09-28 2002-09-27 Hiding refresh of memory and refresh-hidden memory

Publications (2)

Publication Number Publication Date
KR20040037183A KR20040037183A (ko) 2004-05-04
KR100591218B1 true KR100591218B1 (ko) 2006-06-19

Family

ID=25511608

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047004570A KR100591218B1 (ko) 2001-09-28 2002-09-27 메모리의 리프레시 은닉 및 리프레시 은닉 메모리

Country Status (6)

Country Link
US (2) US6757784B2 (ko)
EP (1) EP1430402A2 (ko)
KR (1) KR100591218B1 (ko)
CN (1) CN100349140C (ko)
TW (1) TWI242712B (ko)
WO (1) WO2003027857A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10482033B2 (en) 2016-03-24 2019-11-19 Samsung Electronics Co., Ltd Method and device for controlling memory

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6791859B2 (en) 2001-11-20 2004-09-14 Micron Technology, Inc. Complementary bit PCRAM sense amplifier and method of operation
EP1518186A2 (de) * 2002-03-21 2005-03-30 PACT XPP Technologies AG Verfahren und vorrichtung zur datenverarbeitung
KR100482380B1 (ko) * 2002-11-11 2005-04-14 (주)실리콘세븐 메모리 뱅크별 기입 동작의 수행이 가능한 에스램 호환 메모리 및 그 구동방법
JP4439838B2 (ja) * 2003-05-26 2010-03-24 Necエレクトロニクス株式会社 半導体記憶装置及びその制御方法
US20050125614A1 (en) * 2003-12-09 2005-06-09 Royer Robert J.Jr. Adaptive layout cache organization to enable optimal cache hardware performance
US7123500B2 (en) * 2003-12-30 2006-10-17 Intel Corporation 1P1N 2T gain cell
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
DK1794979T3 (en) 2004-09-10 2017-07-24 Cavium Inc Selective copying of data structure
TWI267855B (en) * 2004-09-25 2006-12-01 Samsung Electronics Co Ltd System and method for controlling the access and refresh of a memory
KR100564633B1 (ko) * 2004-09-25 2006-03-28 삼성전자주식회사 향상된 동작 성능을 가지는 반도체 메모리 장치 및 이에대한 액세스 제어 방법
KR100652380B1 (ko) 2004-10-25 2006-12-01 삼성전자주식회사 버퍼를 이용하여 리프레쉬하는 메모리 장치 및 그 방법
US8279886B2 (en) 2004-12-30 2012-10-02 Intel Corporation Dataport and methods thereof
US20060190678A1 (en) * 2005-02-22 2006-08-24 Butler Douglas B Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a single DRAM cache and tag
US7506100B2 (en) * 2005-02-23 2009-03-17 United Memories, Inc. Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a data cache and separate read and write registers and tag blocks
JP2006294216A (ja) * 2005-03-15 2006-10-26 Renesas Technology Corp 半導体記憶装置
US20060248247A1 (en) * 2005-04-29 2006-11-02 Mtekvision Co., Ltd. Apparatus and method for controlling access to a memory
KR100672029B1 (ko) * 2005-05-27 2007-01-19 삼성전자주식회사 Dram히든 리프레쉬 동작 시 발생되는 동작 시간 지연을감소시킬 수 있는 장치와 방법
US7313047B2 (en) 2006-02-23 2007-12-25 Hynix Semiconductor Inc. Dynamic semiconductor memory with improved refresh mechanism
US7570523B2 (en) * 2006-07-31 2009-08-04 Sandisk 3D Llc Method for using two data busses for memory array block selection
US8279704B2 (en) * 2006-07-31 2012-10-02 Sandisk 3D Llc Decoder circuitry providing forward and reverse modes of memory array operation and method for biasing same
US7499366B2 (en) 2006-07-31 2009-03-03 Sandisk 3D Llc Method for using dual data-dependent busses for coupling read/write circuits to a memory array
US7463536B2 (en) * 2006-07-31 2008-12-09 Sandisk 3D Llc Memory array incorporating two data busses for memory array block selection
US7653846B2 (en) * 2006-12-28 2010-01-26 Intel Corporation Memory cell bit valve loss detection and restoration
US8819311B2 (en) * 2007-05-23 2014-08-26 Rpx Corporation Universal user input/output application layers
US7652910B2 (en) 2007-06-30 2010-01-26 Intel Corporation Floating body memory array
US8291174B2 (en) * 2007-08-15 2012-10-16 Micron Technology, Inc. Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
US7822911B2 (en) * 2007-08-15 2010-10-26 Micron Technology, Inc. Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
US8055852B2 (en) * 2007-08-15 2011-11-08 Micron Technology, Inc. Memory device and method having on-board processing logic for facilitating interface with multiple processors, and computer system using same
US20090193186A1 (en) * 2008-01-25 2009-07-30 Barth Jr John E Embedded dram having multi-use refresh cycles
US20090193187A1 (en) * 2008-01-25 2009-07-30 International Business Machines Corporation Design structure for an embedded dram having multi-use refresh cycles
US8190826B2 (en) * 2008-05-28 2012-05-29 Advanced Micro Devices, Inc. Write combining cache with pipelined synchronization
US20120030420A1 (en) * 2009-04-22 2012-02-02 Rambus Inc. Protocol for refresh between a memory controller and a memory device
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
US8458405B2 (en) * 2010-06-23 2013-06-04 International Business Machines Corporation Cache bank modeling with variable access and busy times
US10026458B2 (en) 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
US20120101731A1 (en) * 2010-10-21 2012-04-26 Baker Hughes Incorporated Extending Data Retention of a Data Storage Device Downhole
JP2012123893A (ja) * 2010-11-19 2012-06-28 Elpida Memory Inc 半導体装置
US9293187B2 (en) * 2011-09-26 2016-03-22 Cisco Technology, Inc. Methods and apparatus for refreshing digital memory circuits
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9058896B2 (en) * 2012-08-29 2015-06-16 International Business Machines Corporation DRAM refresh
KR102023487B1 (ko) 2012-09-17 2019-09-20 삼성전자주식회사 오토 리프레쉬 커맨드를 사용하지 않고 리프레쉬를 수행할 수 있는 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
CN103700393B (zh) 2012-09-28 2016-08-03 国际商业机器公司 用于dram的中间电路和方法
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
KR102061069B1 (ko) 2013-02-28 2020-01-02 삼성전자주식회사 텍스쳐 맵핑 파이프라인을 위한 논블로킹 방식의 텍스쳐 캐쉬 메모리 시스템 및 논블로킹 방식의 텍스쳐 캐쉬 메모리의 동작 방법
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9183155B2 (en) * 2013-09-26 2015-11-10 Andes Technology Corporation Microprocessor and method for using an instruction loop cache thereof
WO2015065426A1 (en) * 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Memory access for busy memory
CN105471955B (zh) * 2014-09-11 2019-01-18 北京金山云网络技术有限公司 分布式文件系统的写方法、客户端设备及分布式文件系统
GB2536205A (en) * 2015-03-03 2016-09-14 Advanced Risc Mach Ltd Cache maintenance instruction
US9921754B2 (en) * 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
US9760432B2 (en) 2015-07-28 2017-09-12 Futurewei Technologies, Inc. Intelligent code apparatus, method, and computer program for memory
US10180803B2 (en) * 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
US9824737B2 (en) * 2015-12-22 2017-11-21 Intel Corporation Memory circuit and method for operating a first and a second set of memory cells in direct memory access mode with refresh
US10394719B2 (en) 2017-01-25 2019-08-27 Samsung Electronics Co., Ltd. Refresh aware replacement policy for volatile memory cache
US10635327B2 (en) 2018-01-31 2020-04-28 Western Digital Technologies, Inc. Data availability during memory inaccessibility
CN110046105B (zh) * 2019-04-26 2021-10-22 中国科学院微电子研究所 一种3D NAND Flash
TWI729843B (zh) * 2020-06-08 2021-06-01 華邦電子股份有限公司 記憶體系統及其操作方法
US11164617B1 (en) 2020-07-01 2021-11-02 Winbond Electronics Corp. Memory system and operating method thereof

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0895162A3 (en) * 1992-01-22 1999-11-10 Enhanced Memory Systems, Inc. Enhanced dram with embedded registers
GB2286267A (en) * 1994-02-03 1995-08-09 Ibm Energy-saving cache control system
US6125425A (en) 1996-03-29 2000-09-26 Intel Corporation Memory controller performing a mid transaction refresh and handling a suspend signal
US6199142B1 (en) * 1996-07-01 2001-03-06 Sun Microsystems, Inc. Processor/memory device with integrated CPU, main memory, and full width cache and associated method
US6134624A (en) * 1998-06-08 2000-10-17 Storage Technology Corporation High bandwidth cache system
US5963481A (en) * 1998-06-30 1999-10-05 Enhanced Memory Systems, Inc. Embedded enhanced DRAM, and associated method
TW388831B (en) 1998-08-29 2000-05-01 Via Tech Inc Intelligent DRAM refresh method
US5999474A (en) * 1998-10-01 1999-12-07 Monolithic System Tech Inc Method and apparatus for complete hiding of the refresh of a semiconductor memory
US6222785B1 (en) 1999-01-20 2001-04-24 Monolithic System Technology, Inc. Method and apparatus for refreshing a semiconductor memory using idle memory cycles
US6330636B1 (en) * 1999-01-29 2001-12-11 Enhanced Memory Systems, Inc. Double data rate synchronous dynamic random access memory device incorporating a static RAM cache per memory bank
US6195303B1 (en) 1999-10-25 2001-02-27 Winbond Electronics Corporation Clock-based transparent refresh mechanisms for DRAMS

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10482033B2 (en) 2016-03-24 2019-11-19 Samsung Electronics Co., Ltd Method and device for controlling memory

Also Published As

Publication number Publication date
CN1620649A (zh) 2005-05-25
KR20040037183A (ko) 2004-05-04
CN100349140C (zh) 2007-11-14
WO2003027857A2 (en) 2003-04-03
WO2003027857A3 (en) 2003-05-01
TWI242712B (en) 2005-11-01
US20030065884A1 (en) 2003-04-03
US6757784B2 (en) 2004-06-29
EP1430402A2 (en) 2004-06-23
US20050097276A1 (en) 2005-05-05

Similar Documents

Publication Publication Date Title
KR100591218B1 (ko) 메모리의 리프레시 은닉 및 리프레시 은닉 메모리
US7698508B2 (en) System and method for reducing unnecessary cache operations
JP2540517B2 (ja) 階層キヤツシユメモリ装置および方法
US6304945B1 (en) Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses
US6282617B1 (en) Multiple variable cache replacement policy
US5895487A (en) Integrated processing and L2 DRAM cache
US5878268A (en) Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US6622219B2 (en) Shared write buffer for use by multiple processor units
US6704822B1 (en) Arbitration protocol for a shared data cache
USRE45078E1 (en) Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems
US7281092B2 (en) System and method of managing cache hierarchies with adaptive mechanisms
US7822911B2 (en) Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
US20080098178A1 (en) Data storage on a switching system coupling multiple processors of a computer system
US8209490B2 (en) Protocol for maintaining cache coherency in a CMP
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
JPH10254772A (ja) キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7325102B1 (en) Mechanism and method for cache snoop filtering
US5802567A (en) Mechanism for managing offset and aliasing conditions within a content-addressable memory-based cache memory
US6314500B1 (en) Selective routing of data in a multi-level memory architecture based on source identification information
US8250305B2 (en) Method, system and computer program product for data buffers partitioned from a cache array
US20080307169A1 (en) Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US7024520B2 (en) System and method enabling efficient cache line reuse in a computer system
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
JPH0574103B2 (ko)

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
LAPS Lapse due to unpaid annual fee