KR101533564B1 - 메모리 내 cpu 캐시 아키텍처 - Google Patents

메모리 내 cpu 캐시 아키텍처 Download PDF

Info

Publication number
KR101533564B1
KR101533564B1 KR1020137023388A KR20137023388A KR101533564B1 KR 101533564 B1 KR101533564 B1 KR 101533564B1 KR 1020137023388 A KR1020137023388 A KR 1020137023388A KR 20137023388 A KR20137023388 A KR 20137023388A KR 101533564 B1 KR101533564 B1 KR 101533564B1
Authority
KR
South Korea
Prior art keywords
cache
memory
cpu
cimm
address
Prior art date
Application number
KR1020137023388A
Other languages
English (en)
Other versions
KR20130103635A (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 KR20130103635A publication Critical patent/KR20130103635A/ko
Application granted granted Critical
Publication of KR101533564B1 publication Critical patent/KR101533564B1/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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

하나의 예시적 메모리 내 CPU 캐시 아키텍처 실시예는 각각의 프로세서에 대해, 디멀티플렉서, 및 복수의 파티셔닝된 캐시를 포함하며, 상기 캐시는 명령 주소 지정 레지스터 전용인 I-캐시와 소스 주소 지정 레지스터 전용인 X-캐시를 포함하며, 프로세서 각각은 연관된 캐시에 대해 하나의 RAM 행을 포함하는 온-칩 버스를 액세스하며, 모든 캐시는 한 번의 RAS 사이클에서 필(fill) 또는 플러시(flush)되도록 동작하며, RAM 행의 모든 센스 앰프는 디멀티플렉서에 의해 자신의 연관된 캐시의 대응하는 복제 비트로의 연결이 해제될 수 있다. 다양한 실시예에 따라 개선된 또는 개선을 보조하는 몇 가지 방법이 또한 개시된다. 이 요약서는 검색 시 본 발명의 기술적 내용을 빠르게 파악하도록 제공되며, 청구항의 범위나 사상을 의미하거나 한정하도록 사용되지 않을 것임을 강조한다 .

Description

메모리 내 CPU 캐시 아키텍처{CPU IN MEMORY CACHE ARCHITECTURE}
본 발명은 일반적으로 메모리 내 CPU 캐시 아키텍처에 관한 것이며, 더 구체적으로 메모리 내 CPU 맞물린(interdigitated) 캐시 아키텍처에 관한 것이다.
레거시(legacy) 컴퓨터 아키텍처는 금속 인터커넥트의 8개 이상의 층을 갖는 다이(본원에서 용어 "다이(die)"와 "칩(chip)"은 동등하게 사용된다) 상으로 함께 연결되는 상보적 금속-옥사이드 반도체(CMOS: complementary metal-oxide semiconductor) 트랜지스터를 이용하는 마이크로프로세서로 구현된다(용어 "마이크로프로세서"는 "프로세서", "코어" 및 중앙 처리 유닛 "CPU"이라고도 일컬어진다). 한편, 일반적으로 메모리는 3개 이상의 금속 인터커넥트 층을 갖는 다이 상에 제조된다. 캐시(cache)는 물리적으로 컴퓨터의 메인 메모리(main memory)와 중앙 처리 유닛(CPU) 사이에 위치하는 고속 메모리 구조체이다. 레거시 캐시 시스템(이하, "레거시 캐시(legacy cache)")은 이들을 구현하기 위해 필요한 방대한 수의 트랜지스터 때문에 상당한 양의 전력을 소비한다. 캐시의 목적은 데이터 액세스 및 명령 실행을 위한 유효 메모리 액세스 시간을 감소시키는 것이다. 경쟁적 업데이트 및 데이터 검색 및 명령 실행과 관련된 매우 높은 트랜잭션 볼륨 환경에서, 빈번하게 액세스되는 명령 및 데이터가 메모리 내 그 밖의 다른 빈번하게 액세스되는 명령 및 데이터에 물리적으로 가까이 위치하는 경향이 있고, 최근 액세스된 명령 및 데이터는 자주 반복적으로 액세스됨이 경험을 통해 밝혀졌다. 캐시는, 메모리에서 액세스될 가능성이 높은 명령과 데이터의 예비 복사본(redundant copy)을 CPU에 물리적으로 가까이에 유지함으로써 이러한 공간적 및 시간적 집약성(locality)을 이용한다.
레거시 캐시는 종종 "데이터 캐시(data cache)"를 "명령 캐시(instruction cache)"와 구별하여 규정한다. 이들 캐시는 CPU 메모리 요청을 인터셉트(intercept)하고, 타깃 데이터 또는 명령이 캐시 내에 존재하는지 여부를 결정하며, 캐시 읽기 또는 쓰기로 응답한다. 상기 캐시 읽기 또는 쓰기는, 외부 메모리(즉, 예를 들면, 외부 DRAM, SRAM, 플래시 메모리(FLASH MEMORY) 및/또는 테이프나 디스크 등의 저장장치, 이들을 본원에서는 총제적으로 "외부 메모리"라 칭함)로부터의 읽기 또는 쓰기보다 수 배 더 빠를 것이다. 요청된 데이터 또는 명령이 캐시 내에 존재하지 않은 경우, 캐시 "미스(miss)"가 발생하여, 필요한 데이터 또는 명령이 외부 메모리로부터 캐시로 전송되게 한다. 단일 레벨 캐시의 유효 메모리 액세스 시간은 "캐시 액세스 시간" × "캐시 히트율(cache hit rate)" + "캐시 미스 패널티(cache miss penalty)" × "캐시 미스율(cache miss rate)"이다. 이따금, 다중 레벨의 캐시가 사용되어, 유효 메모리 액세스 시간을 훨씬 감소시킨다. 상위 레벨 캐시일수록 크기가 점진적으로 더 크고, 점진적으로 증가하는 캐시 "미스" 패널티와 연관된다. 일반적인 레거시 마이크로프로세서는 1-3 CPU 클록 사이클의 레벨 1 캐시 액세스 시간, 8-20 클록 사이클의 레벨 2 액세스 시간, 및 80-200 클록 사이클의 오프-칩(off-chip) 액세스 시간을 가질 수 있다.
레거시 명령 캐시의 가속 메커니즘(acceleration mechanism)이 공간 및 시간 집약성의 이용(즉, 루프 및 반복 호출되는 함수, 가령, System Date, Login/Logout, 등의 저장을 캐싱)을 바탕으로 한다. 루프 내 명령이 외부 메모리로부터 한 번 인출(fetch)되고 명령 캐시에 저장된다. 루프 명령을 외부 메모리로부터 처음 인출(fetch)할 때의 패널티 때문에, 루프를 거치는 첫 번째 실행이 가장 느릴 것이다. 그러나 다음 번 루프 실행은 명령을 캐시로부터 직접 인출할 것이며, 이는 훨씬 더 빠를 것이다.
레거시 캐시 로직은 메모리 주소를 캐시 주소로 변환(translate)한다. 모든 외부 메모리 주소는 이미 캐시에 보유 중인 메모리 위치의 라인을 나열하는 테이블에 비교될 것이다. 이 비교 로직은 종종, 내용 주소화 메모리(CAM: Content Addressable Memory)로서 구현된다. 사용자가 메모리 주소를 제공하고 RAM이 상기 주소에 저장된 데이터 워드를 반환(return)하는 표준 컴퓨터 랜덤 액세스 메모리(즉, "RAM", "DRAM", SRAM, SDRAM, 등, 이들은 본원에서, "RAM" 또는 "DRAM" 또는 "외부 메모리" 또는 "메모리"와 동등하게 일컬어짐)와 달리, CAM은 사용자가 데이터 워드를 제공하고, 상기 CAM이 자신의 전체 메모리를 검색하여, 상기 데이터 워드가 자신의 메모리의 임의의 곳에 저장되어 있는지 여부를 알아 보도록 설계된다. 데이터 워드가 발견되면, CAM은 워드가 발견된 곳의 하나 이상의 저장 주소의 리스트를 반환한다(일부 아키텍처에서, 데이터 워드 자체 또는 그 밖의 다른 연관된 데이터도 반환한다). 따라서 CAM은 소프트웨어 용어로 "연상 어레이(associative array)"라고 불리는 것과 동등한 하드웨어이다. 상기 비교 로직은 복잡하고 느리며, 캐시의 크기가 증가할수록 복잡도는 증가하고 속도는 감소한다. 이들 "연상 캐시(associative cache)"는 개선된 캐시 히트율을 위해, 복잡도와 속도를 희생한다.
레거시 운영 체제(OS)는 작은 크기의 물리적 메모리가 프로그램/사용자에게 훨씬 더 큰 크기의 메모리로서 나타나도록 하기 위해 가상 메모리(VM: virtual memory) 관리를 구현한다. VM 로직은 매우 큰 크기의 메모리에 대한 VM 주소를 물리적 메모리 위치들의 훨신 더 작은 부분집합의 주소로 변환하기 위해 간접 주소 지정(indirect addressing)을 이용한다. 간접화는, 명령, 루틴, 및 객체의 물리적 위치가 계속 변하는 동안 이들을 액세스하는 방법을 제공한다. 초기 루틴이 일부 메모리 주소를 가리키고(point), 하드웨어 및/또는 소프트웨어를 이용해, 상기 메모리 주소가 그 밖의 다른 일부 메모리 주소를 가리킨다. 복수 레벨의 간접화가 존재할 수 있다. 예를 들어, A를 가리키고, 상기 A가 B를 가리키며, 상기 B가 C를 가리킨다. 물리적 메모리 위치는 "페이지 프레임(page frame)" 또는 단순히 "프레임"이라고 알려진 연속 메모리의 고정 크기 블록으로 구성된다. 프로그램이 실행되기 위해 선택될 때, VM 관리자는 프로그램을 가상 저장장치로 가져가고, 상기 프로그램을 고정 블록 크기(가령, 4킬로바이트, 즉 "4K")의 페이지로 분할하며, 그 후, 상기 페이지를 실행을 위해 메인 메모리로 전달한다. 프로그램/사용자에게, 전체 프로그램 및 데이터는 항상 메인 메모리에 연속 공간을 차지하는 것으로 나타난다. 그러나 실제로, 프로그램 또는 데이터의 모든 페이지가 반드시 동시에 메인 메모리에 있어야 하는 것은 아니며, 임의의 특정 시점에서 메인 메모리에 있는 페이지들이 반드시 연속적인 공간을 차지하는 것도 아니다. 따라서, 가상 저장장치 밖에서 실행/액세스되는 프로그램 및 데이터의 일부분이, 다음과 같이 필요에 따라, 실행/액세스 전, 동안, 및 후에, VM 관리자에 의해 실 보조 저장장치 간에 왕래하게 된다:
(a) 메인 메모리의 하나의 블록이 프레임이다.
(b) 가상 저장장치의 하나의 블록이 페이지이다.
(c) 보조 저장장치의 하나의 블록이 슬롯이다.
페이지, 프레임, 및 슬롯은 모두 동일한 크기이다. 활성인 가상 저장 페이지가 각자의 메인 메모리 프레임에 위치한다. 비활성이 되는 가상 저장 페이지가 (종종 페이징 데이터 세트(paging data set)라고 불리우는 것으로) 보조 저장 슬롯으로 이동된다. VM 페이지는 전체 VM 주소 공간 중 액세스될 가능성이 높은 페이지의 상위 레벨 캐시로서 기능한다. VM 관리자가 오래되고 덜 빈번하게 사용되는 페이지를 외부 보조 저장장치로 전송할 때 주소화 메모리 페이지 프레임이 페이지 슬롯을 채운다. 레거시 VM 관리는 메인 메모리 및 외부 저장장치를 관리하기 위한 책임 중 대부분을 가정함으로써 컴퓨터 프로그래밍을 단순화한다.
일반적으로 레거시 VM 관리는 변환 테이블(translation table)을 이용해 VM 주소를 물리적 주소와 비교할 것을 필요로 한다. 변환 테이블에서 각각의 메모리 액세스 및 물리적 주소로 변환된 가상 주소가 검색되어야 한다. 변환 색인 버퍼(TLB: Translation Lookaside Buffer)가 가장 최근 VM 액세스들의 작은 캐시이며, 가상 주소와 물리적 주소의 비교를 가속화할 수 있다. 상기 TLB는 종종 CAM으로서 구현되고, 따라서 페이지 테이블의 순차 검색(serial search)보다 수 천배 더 빨리 검색될 수 있다. 명령 실행 각각은 각각의 VM 주소를 조사(look up)하기 위한 오버헤드를 발생시킬 것이다.
캐시는 이렇게 레거시 컴퓨터의 트랜지스터 및 소비 전력의 많은 부분을 구성하기 때문에, 대부분의 구성(organization)의 경우 캐시를 튜닝(tuning)하는 것이 전체 정보 기술 예산에 매우 중요하다. 상기 "튜닝"은 개선된 하드웨어 또는 소프트웨어, 또는 둘 모두로부터 기인할 수 있다. 일반적으로 "소프트웨어 튜닝"은 데이터베이스 관리 시스템(DBMS) 소프트웨어, 가령, DB2, Oracle, Microsoft SQL 서버 및 MS/Access에 의해 규정된, 빈번하게 액세스되는 프로그램, 데이터 구조, 및 데이터를 캐시에 위치시키는 형태로부터 기인한다. DBMS에 의해 구현되는 캐시 객체는 중요한 데이터 구조, 가령, 인덱스 및 빈번하게 실행되는 명령, 가령, 공통 시스템 또는 데이터베이스 함수(즉, "DATE", 또는 "LOGIN/LOGOUT")를 구현하는 구조화된 질의 언어(SQL: Structured Query Language) 루틴을 저장함으로써 애플리케이션 프로그램 실행 성능 및 데이터베이스 처리율을 개선한다.
범용 프로세서의 경우, 멀티-코어 프로세서(multi-core processor)를 이용하기 위한 동기들 중 다수는 동작 주파수(즉, 초당 클록 사이클)의 증가로 인한 프로세서 성능의 크게 감소하는 잠재적 이득으로 인한 것이다. 이는 다음의 세 가지 주요한 요인들 때문이다:
1. 메모리 장벽( memory wall ); 프로세서 속도와 메모리 속도 간 차이의 증가. 이 효과로 인해, 메모리의 대기시간(latency)을 감추기 위해 캐시 크기가 더 커진다. 이는 메모리 대역폭이 성능에서 병목현상을 일으키지 않는 범위까지만 도움이 된다.
2. 명령-레벨 병렬성( ILP : instruction - level parallelism ); 고성능 싱글 코어 프로세서를 바쁘게 유지하기 위해 단일 명령 스트림에서 충분한 병렬성을 찾는 어려움의 증가.
3. 전력 장벽( power wall ); 증가하는 전력과 동작 주파수의 증가 간의 선형 관계. 이 증가는 동일한 로직에 대해 더 작은 트레이스(trace)를 이용하여 프로세서를 "축소(shrinking)"시킴으로써, 완화될 수 있다. 전력 장벽은 메모리 장벽 및 ILP 장벽으로 인한 성능에서 감소하는 이득에 직면하여 정당화될 수 없는 제조, 시스템, 설계, 및 배치 문제를 제기한다.
범용 프로세서에 대한 규칙적인 성능 개선을 계속 제공하기 위해, 제조사, 가령, Intel 및 AMD는 일부 애플리케이션 및 시스템에서 높은 성능, 낮은 제조 비용을 만족시키는 멀티-코어 설계로 선회했다. 멀티-코어 아키텍처는 개발 중이지만, 대안들도 그렇다. 예를 들어, 안정된 시장에 대한 특히 강력한 도전자는 주변 기능들을 칩으로 추가 집적하는 것이다.
동일한 다이 상의 복수의 CPU 코어들의 근접성에 의해, 신호가 칩을 떠나 이동해야 하는 경우에서 가능한 것보다 훨씬 더 높은 클록율로 캐시 일관성 회로(cache coherency circuitry)가 동작할 수 있다. 단일 다이 상에 동등한 CPU들을 조합하는 것은 캐시 및 버스 스눕(bus snoop) 동작의 성능을 상당히 개선한다. 서로 다른 CPU들 간의 신호가 더 짧은 거리를 이동하기 때문에, 이들 신호는 덜 열화(degrade)된다. 이러한 "더 고품질(higher-quality)"의 신호에 의해, 개별 신호가 더 짧아지고 자주 반복될 필요가 없기 때문에, 특정 시간 주기 내에 더 많은 데이터가 더 신뢰성 있게 전송될 수 있다. CPU-집약적 프로세스, 가령, 안티바이러스 스캔, 미디어의 리핑/버닝(ripping/burning)(파일 변환을 필요로 함), 또는 폴더 검색의 경우, 성능의 가장 큰 증가가 발생한다. 예를 들어, 영화를 시청하는 동안 자동 바이러스-스캔이 실행되는 경우, 안티바이러스 프로그램과 영화를 실행시키는 프로그램에 서로 다른 프로세서 코어가 할당될 것이기 때문에, 영화를 실행하는 애플리케이션은 프로세서 파워가 부족할 가능성이 꽤 낮다. 멀티-코어 프로세서는 DBMS 및 OS에 대해 이상적인데, 왜냐하면 이들은 많은 사용자가 하나의 사이트로 동시에 연결되게 하고 독립적인 프로세서 실행을 갖도록 하기 때문이다. 따라서 웹 서버 및 애플리케이션 서버는 훨씬 우수한 처리율을 얻을 수 있다.
레거시 컴퓨터는 온-칩 캐시(on-chip cache)와, 명령 및 데이터를 캐시에서 CPU로 왕래하도록 라우팅하는 버스를 가진다. 이들 버스는 종종 레일-투-레일 전압 스윙을 이용하는 싱글 엔드(single end)형이다. 일부 레거시 컴퓨터는 속도를 증가시키기 위해 차동 시그널링(DS: differential signaling)을 이용한다. 예를 들어, CPU와 메모리 칩 간 통신을 위해 완전 차동 고속 메모리 액세스를 도입한 캘리포니아 법인인 RAMBUS Incorporated와 같은 회사는 속도를 증가시키기 위해 저 전압 버스화를 사용했다. RAMBUS 장착된 메모리 칩은 매우 빠르지만, DDR(double data rate) 메모리, 가령, SRAM 또는 SDRAM에 비해 훨씬 많은 전력을 소비했다. 또 다른 예를 들면, ECL(Emitter Coupled Logic)은 싱글 엔드형의 저전압 시그널링을 이용함으로써 고속 버스화를 이뤘다. 나머지들이 5볼트 이상에서 동작할 때, ECL 버스는 0.8볼트에서 동작했다. 그러나 ECL, 가령, RAMBUS 및 그 밖의 다른 대부분의 저전압 시그널링 시스템의 단점은 이들이 스위칭되지 않을 때조차 너무 많은 전력을 소비한다는 것이다.
레거시 캐시 시스템의 또 다른 문제는 최소 면적의 다이에 최대 개수의 메모리 비트를 넣기 위해, 메모리 비트 라인 피치가 매우 좁게 유지된다는 것이다. "설계 규칙(Design Rule)"은 다이 상에 제조되는 장치의 다양한 요소들을 정의하는 물리적 파라미터이다. 메모리 제조사는 다이의 서로 다른 면적에 대해 서로 다른 규칙을 정의한다. 예를 들어, 메모리의 가장 크기 임계적인 영역은 메모리 셀이다. 메모리 셀에 대한 설계 규칙은 "코어 규칙(Core Rule)"이라고 지칭될 수 있다. 종종 다음으로 임계적인 영역은 요소, 가령, 비트 라인 센스 앰프(BLSA, 이하 "센스 앰프")를 포함한다. 이 영역에 대한 설계 규칙은 "어레이 규칙(Array Rule)"이라고 불릴 수 있다. 메모리 다이 상의 나머지 모든 것들, 가령, 디코더, 드라이버, 및 I/O는 "주변 규칙(Peripheral Rule)"이라고 불릴 수 있는 것에 의해 관리된다. 코어 규칙이 가장 치밀하고, 어레이 규칙이 그 다음으로 치밀하며, 주변 규칙이 가장 덜 치밀하다. 예를 들어, 코어 규칙을 구현하기 위해 필요한 최소한의 물리적 기하학적 공간은 110㎚일 수 있고, 주변 규칙을 위한 최소 지오메트리는 180㎚을 필요로 할 수 있다. 라인 피치는 코어 규칙에 의해 결정된다. 메모리 프로세서에서 CPU를 구현하기 위해 사용되는 대부분의 로직은 주변 규칙에 의해 결정된다. 결과적으로, 캐시 비트 및 로직에 대해 이용 가능한 매우 제한된 공간이 존재한다. 센스 앰프는 매우 작고 매우 빠르지만, 역시 그다지 많은 구동 능력(drive capability)을 갖지 않는다.
레거시 캐시 시스템과 관련된 또 다른 문제는, 리프레시 동작에 의해 센스 앰프 내용(content)이 변경되기 때문에, 센스 앰프를 직접 캐시로서 이용하는 것과 연관된 프로세싱 오버헤드가 발생한다는 것이다. 이는 일부 메모리에서 작동할 수 있지만, 동적 랜덤 액세스 메모리(DRAM: dynamic random access memories)의 경우 문제를 나타낸다. DRAM은 비트 저장 커패시터 상의 전하를 리프레시하기 위해 특정한 매 주기에서 자신의 메모리 어레이의 모든 비트가 읽히고 다시 써질 것을 필요로 한다. 센스 앰프가 캐시로서 직접 사용되면, 각각의 리프레시 시간 동안, 센스 앰프의 캐시 내용은 이들이 캐싱되는 DRAM 행(row)으로 다시 써져야 한다. 리프레시될 상기 DRAM 행이 읽히고 다시 써져야 한다. 마지막으로, 이전에 캐시에 유지되는 DRAM 행이 센스 앰프 캐시로 다시 읽힌다.
상기에서 언급된 종래 기술의 한계 및 단점을 극복하기 위해, 싱글-코어(이하, "CIM"이라 함) 및 멀티-코어(이하, "CIMM"이라 함) 메모리 내 CPU 프로세서 상에서 VM 관리를 구현하는 것과 관련된 문제들 중 다수를 해결하는 새로운 메모리 내 CPU 캐시 아키텍처가 필요하다. 더 구체적으로, 모놀리식 메모리 다이 상에 제조되는 적어도 하나의 프로세서 및 이와 복합된(merged) 메인 메모리를 갖는 컴퓨터 시스템용 캐시 아키텍처가 개시되며, 상기 캐시 아키텍처는 상기 프로세서 각각에 대해 멀티플렉서, 디멀티플렉서, 및 로컬 캐시를 포함하며, 상기 로컬 캐시는 적어도 하나의 DMA 채널 전용인 DMA-캐시, 명령 주소 지정 레지스터 전용인 I-캐시, 소스 주소 지정 레지스터 전용인 X-캐시, 및 도착지 주소 지정 레지스터 전용인 Y-캐시를 포함하고, 상기 프로세서 각각은 연관된 로컬 캐시와 동일한 크기일 수 있는 하나의 RAM 행(row)을 포함하는 적어도 하나의 온-칩(on-chip) 내부 버스를 액세스하고, 상기 로컬 캐시는 하나의 행 주소 스트로브(RAS: row address strobe) 사이클에서 필(fill) 또는 플러시(flush)되도록 동작하고, 상기 멀티플렉서에 의해 상기 RAM 행의 모든 센스 앰프(sense amp)가 RAM 리프레시(refresh)에 대해 사용될 수 있는 연관된 로컬 캐시의 대응하는 복제 비트(duplicate bit)로 선택되고, 상기 디멀티플렉서에 의해 선택해제될 수 있다. 이 새로운 캐시 아키텍처는 CIM 칩상에서 캐시 비트 로직을 위해 이용 가능한 매우 제한된 물리적 공간을 최적화하기 위한 새로운 방법을 채용한다. 하나의 캐시를, 동시에 액세스되고 업데이트될 수 있는 더 작긴하지만 복수의 개별적인 캐시들로 파티셔닝함으로써, 캐시 비트 로직을 위해 이용 가능한 메모리가 증가된다. 본 발명의 또 다른 양태가 캐시 페이지 "미스(miss)"를 통해 VM을 관리하기 위해 아날로그 최소 빈도 사용(LFU: Least Frequently Used) 검출기를 이용한다. 하나의 양태에서, VM 관리자는 캐시 페이지 "미스(miss)"를 병렬화할 수 있다. 또 다른 양태에서, 저전압 차동 시그널링은 긴 버스에 대해 소비 전력을 크게 감소시킨다. 또 다른 양태에서, OS의 "초기 프로그램 로드(Initial Program Load)" 동안 로컬 캐시의 초기화를 단순화하는 명령 캐시와 짝을 이루는 새로운 부트 리드 온리 메모리(ROM)가 제공된다. 또 다른 양태에서, 본 발명은 CIM 또는 CIMM VM 관리자에 의해 로컬 메모리, 가상 메모리, 및 오프-칩 외부 메모리를 디코딩하기 위한 방법을 포함한다.
또 다른 양태에서, 본 발명은 적어도 하나의 프로세서를 갖는 컴퓨터 시스템용 캐시 아키텍처를 포함하며, 상기 캐시 아키텍처는 상기 프로세서 각각에 대해 디멀티플렉서 및 적어도 2개의 로컬 캐시를 포함하고, 상기 로컬 캐시는 명령 주소 지정 레지스터 전용인 I-캐시, 소스 주소 지정 레지스터 전용인 X-캐시를 포함하고, 상기 프로세서 각각은 연관된 로컬 캐시에 대해 하나의 RAM 행을 포함하는 적어도 하나의 온-칩 내부 버스를 액세스하고, 상기 로컬 캐시는 한 번의 RAS 사이클에서 필(fill) 또는 플러시(flush)되도록 동작하고, 상기 RAM 행의 모든 센스 앰프는 상기 디멀티플렉서에 의해 연관된 로컬 캐시의 대응하는 복제 비트로의 선택이 해제될 수 있다.
또 하나의 양태에서, 본 발명의 로컬 캐시는 하나의 DMA 채널 전용인 DMA-캐시를 더 포함하고, 그 밖의 다른 다양한 실시예에서, 이들 로컬 캐시는 도착지 주소 지정 레지스터 전용인 가능한 Y-캐시와 스택 작업 레지스터 전용인 S-캐시의 모든 가능한 조합으로 스택 작업 레지스터 전용인 S-캐시를 더 포함할 수 있다.
또 다른 양태에서, 본 발명은 프로세서 각각에 대해, 온-칩 커패시터와 연산 증폭기를 포함하는 적어도 하나의 LFU 검출기를 더 포함하고, 상기 연산 증폭기는, 캐시 페이지와 연관된 LFU의 IO 주소를 읽음으로써, 최소 빈도 사용(least frequently use)된 캐시 페이지를 지속적으로 식별하기 위해 부울 로직(Boolean logic)을 수행하는 일련의 적분기 및 비교기로서 구성된다.
또 다른 양태에서, 본 발명은 리부트 동작 동안 CIM 캐시 초기화를 단순화하기 위해 로컬 캐시 각각과 짝을 이루는 부트 ROM을 더 포함할 수 있다.
또 다른 양태에서, 본 발명은 프로세서 각각에 대해 RAM 행의 센스 앰프를 선택하기 위해 멀티플렉서를 더 포함할 수 있다.
또 다른 양태에서, 본 발명은 각각의 프로세서가 저전압 차동 시그널링(differential signaling)을 이용해 적어도 하나의 온-칩 내부 버스로 액세스하는 것을 더 포함할 수 있다.
또 다른 양태에서, 본 발명은 모놀리식 메모리 칩의 RAM 내로 프로세서를 연결하는 방법을 포함하고, 상기 방법은 복수의 캐시에 유지되는 복제 비트로의 상기 RAM의 임의의 비트의 선택을 가능하게 하기 위해 필요한 단계들을 포함하며, 상기 단계들은 다음을 포함한다:
(a) 메모리 비트를 4개씩 그룹으로 논리적으로 그룹짓는 단계,
(b) 상기 RAM으로부터의 모든 4 비트 라인을 멀티플렉서 입력으로 전송하는 단계,
(c) 주소 라인의 4개의 가능한 상태에 의해 제어되는 4개의 스위치 중 하나를 스위칭함으로써, 4 비트 라인 중 하나를 멀티플렉서 출력으로 선택하는 단계,
(d) 명령 디코딩 로직에 의해 제공되는 디멀티플렉서 스위치를 이용함으로써, 상기 복수의 캐시 중 하나를 멀티플렉서 출력으로 연결하는 단계.
또 하나의 양태에서, 본 발명은 캐시 페이지 미스를 통해 CPU의 VM을 관리하기 위한 방법을 포함하고, 상기 방법은 다음의 단계를 포함한다:
(a) 상기 CPU가 적어도 하나의 전용 캐시 주소 지정 레지스터를 프로세싱하는 동안, 상기 CPU가 상기 레지스터의 상위 비트의 내용(content)을 조사하는 단계, 및
(b) 상기 비트의 내용이 변할 때, 상기 레지스터의 페이지 주소 내용이 상기 CPU와 연관된 CAM TLB에서 발견되지 않은 경우, 상기 CPU는 상기 캐시 페이지의 내용을 상기 레지스터의 페이지 주소 내용에 대응하는 VM의 새로운 페이지로 대체하기 위해 VM 관리자에게로 페이지 폴트 인터럽트(page fault interrupt)를 반환하는 단계, 그렇지 않은 경우,
(c) 상기 CPU는 상기 CAM TLB를 이용해 실제 주소를 결정하는 단계.
또 다른 양태에서, 본 발명의 VM을 관리하기 위한 방법은 다음의 단계를 더 포함한다:
(d) 상기 레지스터의 페이지 주소 내용이 상기 CPU와 연관된 CAM TLB에서 발견되지 않은 경우, VM의 상기 새로운 페이지의 내용을 수신하기 위해, 상기 CAM TLB 에서 현재 최소 빈도 캐싱된(the least frequently cached) 페이지를 결정하는 단계.
또 다른 양태에서, 본 발명의 VM을 관리하기 위한 방법은 다음의 단계를 더 포함한다:
(e) LFU 검출기에 페이지 액세스를 기록하는 단계; 상기 결정하는 단계는 상기 LFU 검출기를 이용해 CAM TLB 내 현재 최소 빈도 캐싱된 페이지를 결정하는 단계를 더 포함한다.
또 다른 양태에서, 본 발명은 캐시 미스를 그 밖의 다른 CPU 동작과 병렬화하기 위한 방법을 포함하고, 상기 방법은 다음의 단계들을 포함한다:
(a) 제 1 캐시에 대한 캐시 미스 프로세싱이 해결될 때까지, 제 2 캐시를 액세스하는 동안 어떠한 캐시 미스도 발생하지 않는다면 적어도 제 2 캐시의 내용을 프로세싱하는 단계, 및
(b) 상기 제 1 캐시의 내용을 프로세싱하는 단계.
또 다른 양태에서, 본 발명은 모놀리식 칩 상의 디지털 버스에서 소비 전력을 낮추는 방법을 포함하고, 상기 방법은 다음의 단계를 포함한다:
(a) 상기 디지털 버스의 적어도 하나의 버스 드라이버 상의 차동 비트의 세트를 등화(equalize) 및 선-충전(pre-charge)하는 단계,
(b) 수신기를 등화하는 단계,
(c) 적어도 상기 디지털 버스의 최저속 장치 전파 딜레이 시간 동안 적어도 하나의 버스 드라이버 상에 상기 비트를 유지하는 단계,
(d) 상기 적어도 하나의 버스 드라이버를 턴 오프(turn off)하는 단계,
(e) 수신기를 턴 온(turn on)하는 단계,
(f) 상기 수신기에 의해 상기 비트를 읽는 단계.
또 다른 양태에서, 본 발명은 캐시 버스에 의해 소비되는 전력을 낮추기 위한 방법을 포함하며, 상기 방법은 다음의 단계를 포함한다:
(a) 차동 신호의 쌍을 등화하고 상기 신호를 Vcc로 선-충전하는 단계,
(b) 차동 수신기를 선-충전 및 등화하는 단계,
(c) 송신기를 적어도 하나의 교차-결합된 인버터의 적어도 하나의 차동 신호 라인으로 연결하고, 상기 교차-결합된 인버터 장치 전파 딜레이 시간을 초과하는 시간 주기 동안 이를 방전하는 단계,
(d) 차동 수신기를 상기 적어도 하나의 차동 신호 라인으로 연결하는 단계, 및
(e) 차동 수신기를 활성화시켜, 상기 적어도 하나의 차동 라인에 의해 바이어스되는 동안, 상기 적어도 하나의 교차-결합된 인버터가 풀 Vcc 스윙(full Vcc swing)에 도달하게 하는 단계.
또 다른 양태에서, 본 발명은 부트로드 선형 ROM을 이용해 메모리 내 CPU 아키텍처(CPU in memory architecture)를 부팅하는 방법을 포함하고, 상기 방법은 다음의 단계들을 포함한다:
(a) 상기 부트로드 ROM에 의해 전력 유효(Power Valid) 상태를 검출하는 단계
(b) 모든 CPU를 실행이 멈추는 Reset 상태로 유지하는 단계,
(c) 상기 부트로드 ROM의 내용을 제 1 CPU의 적어도 하나의 캐시로 전송하는 단계,
(d) 상기 제 1 CPU의 적어도 하나의 캐시 전용 레지스터를 이진수 0들로 설정하는 단계, 및
(e) 상기 제 1 CPU의 시스템 클록을 활성화시켜 상기 적어도 하나의 캐시로부터의 실행을 시작하는 단계.
또 다른 양태에서, 본 발명은 CIM VM 관리자에 의해 로컬 메모리, 가상 메모리, 및 오프-칩 외부 메모리를 디코딩하기 위한 방법을 포함하고, 상기 방법은 다음의 단계들을 포함한다:
(a) CPU가 적어도 하나의 전용 캐시 주소 지정 레지스터를 프로세싱하는 동안, 상기 CPU가 상기 레지스터의 적어도 하나의 상위 비트가 변경됐다고 결정하면,
(b) 상기 적어도 하나의 상위 비트의 내용이 0이 아닐 때, 상기 VM 관리자는 외부 메모리 버스를 이용해 상기 레지스터에 의해 주소 지정되는 페이지를 상기 외부 메모리로부터 상기 캐시로 전송하는 단계, 그렇지 않은 경우,
(c) 상기 VM 관리자는 상기 페이지를 상기 로컬 메모리로부터 상기 캐시로 전송하는 단계.
또 다른 양태에서, 본 발명의 CIM VM 관리자에 의해 로컬 메모리를 디코딩하기 위한 방법은 다음의 단계를 더 포함한다:
상기 레지스터의 상기 적어도 하나의 상위 비트는 임의의 주소 지정 레지스터로의 STORACC 명령, 선-감분(pre-decrement) 명령, 및 후-증분(post-increment) 명령의 프로세싱 동안에만 변경되고, 상기 CPU의 결정은 명령 유형에 따른 결정을 더 포함한다.
또 다른 양태에서, 본 발명은 CIMM VM 관리자에 의해 로컬 메모리, 가상 메모리 및 오프-칩 외부 메모리를 디코딩하기 위한 방법을 포함하며, 상기 방법은 다음의 단계들을 포함한다:
(a) CPU가 하나의 전용 캐시 주소 지정 레지스터를 프로세싱하는 동안, 상기 CPU가 상기 레지스터의 적어도 하나의 상위 비트가 변경됐다고 결정하면,
(b) 상기 적어도 하나의 상위 비트의 내용이 0이 아닐 때, 상기 VM 관리자는 외부 메모리 버스와 인터프로세서 버스를 이용하여 상기 레지스터에 의해 주소 지정된 페이지를 상기 외부 메모리로부터 상기 캐시로 전송하는 단계, 그렇지 않은 경우,
(c) 상기 CPU가 상기 레지스터가 상기 캐시와 연관되지 않음을 검출하면, 상기 VM 관리자가 상기 인터프로세서 버스를 이용해 상기 페이지를 원격 메모리 뱅크로부터 상기 캐시로 전송하는 단계, 그렇지 않은 경우,
(d) 상기 VM 관리자는 상기 페이지를 상기 로컬 메모리로부터 상기 캐시로 전송하는 단계.
또 다른 양태에서, 본 발명의 CIMM VM 관리자에 의해 로컬 메모리를 디코딩하기 위한 방법은 다음의 단계를 더 포함한다:
상기 레지스터의 상기 적어도 하나의 상위 비트는 임의의 주소 지정 레지스터로의 STORACC 명령, 선-감분(pre-decrement) 명령, 및 후-증분(post-increment) 명령의 프로세싱 동안에만 변경되는 단계, 상기 CPU에 의한 결정은 명령 유형(instruction type)에 의한 결정을 더 포함한다.
도 1은 예시적 종래 기술의 레거시 캐시 아키텍처를 도시한다.
도 2는 2개의 CIMM CPU를 갖는 예시적 종래 기술 CIMM 다이를 도시한다.
도 3은 종래 기술 레거시 데이터 및 명령 캐시를 보여 준다.
도 4는 종래 기술에 따르는 주소 지정 레지스터와 캐시의 짝 짓기를 도시한다.
도 5A-D는 기본 CIM 캐시 아키텍처의 실시예를 도시한다.
도 5E-H는 개선된 CIM 캐시 아키텍처의 실시예를 도시한다.
도 6A-D는 기본 CIMM 캐시 아키텍처의 실시예를 도시한다.
도 6E-H는 개선된 CIMM 캐시 아키텍처의 실시예를 도시한다.
도 7A는 하나의 실시예에 따라 복수의 캐시가 선택되는 방식을 도시한다.
도 7B는 64Mbit DRAM으로 집적되는 4개의 CIMM CPU의 메모리 맵이다.
도 7C는 인터프로세서 버스에서 통신할 때 요청하는 CPU 및 응답하는 메모리 뱅크를 관리하기 위한 예시적 메모리 로직을 도시한다.
도 7D는 하나의 실시예에 따라 세 가지 유형의 메모리의 디코딩이 수행되는 방법을 도시한다.
도 8A는 CIMM 캐시의 하나의 실시예에서 LFU 검출기(100)가 물리적으로 위치하는 곳을 도시한다.
도 8B는 "LFU IO 포트"를 이용하는 캐시 페이지 "미스"에 의한 VM 관리를 도시한다.
도 8C는 LFU 검출기(100)의 물리적 구성을 도시한다.
도 8D는 예시적 LFU 결정 로직을 도시한다.
도 8E는 예시적 LFU 진리표를 도시한다.
도 9는 캐시 페이지 "미스"를 그 밖의 다른 CPU 동작과 병렬화하는 것을 도시한다.
도 10A는 차동 시그널링을 이용하는 CIMM 캐시 전력 절약을 보여 주는 전기도이다.
도 10B는 Vdiff를 생성함으로써 차동 시그널링을 이용하는 CIMM 캐시 전력 절약을 보여 주는 전기도이다.
도 10C는 하나의 실시예의 예시적 CIMM 캐시 저전압 차동 시그널링을 도시한다.
도 11A는 하나의 실시예의 예시적 CIMM 캐시 부트ROM 구성을 도시한다.
도 11B는 예시적 CIMM 캐시 부트 로더 동작을 도시한다.
도 1은 예시적 레거시 캐시 아키텍처를 도시하고, 도 3은 레거시 명령 캐시와 레거시 데이터 캐시를 구별한다. 공지 기술의 CIMM, 예를 들어 도 2에 도시된 CIMM은 CPU를 실리콘 다이 상의 메인 메모리에 물리적으로 인접하게 위치시킴으로써 레거시 컴퓨터 아키텍처의 메모리 버스 및 전력 손실 문제를 상당히 완화시킨다. CPU가 메인 메모리에 가까이 위치함으로써, CIMM 캐시가 메인 메모리 비트 라인(가령, DRAM, SRAM, 및 플래시 장치에서 발견되는 것들)과 밀접하게 연관될 기회를 제공한다. 캐시와 메모리 비트 라인 간의 이러한 맞물림(interdigitation)의 이점은 다음과 같다:
1. 액세스 시간과 소비 전력을 감소시키는, 캐시와 메모리 간의 라우팅을 위한 매우 좁은 물리적 공간(space),
2. 상당히 단순화된 캐시 아키텍처 및 이와 관련된 제어 로직, 및
3. 한 번의 RAS 사이클 동안 전체 캐시를 로딩할 수 있음.
CIMM 캐시가 직선형 코드(Straight-line Code)를 가속화시킨다
따라서 CIMM 캐시 아키텍처가 자신의 캐시 내에 들어 맞는 루프를 가속화시킬 수 있지만, 레거시 명령 캐시 시스템과 달리, 한 번의 RAS 사이클 동안 병렬 캐시 로딩에 의해, CIMM 캐시는 단일 사용 직선형 코드도 가속화시킬 것이다. 한 가지 고려되는 CIMM 캐시 실시예는 25 클록 사이클로 512 명령 캐시를 필(fill)할 수 있다. 직선형 코드를 실행할 때조차, 캐시로부터의 명령 인출 각각이 하나의 사이클씩 필요로 하기 때문에, 유효 캐시 읽기 시간은 다음과 같다: 1사이클+25사이클/512 = 1.05사이클.
CIMM 캐시의 한 가지 실시예는 메인 메모리 및 복수의 캐시를 메모리 다이 상에 서로 물리적으로 인접하게 배치하고, 매우 넓은 버스로 연결하는 것을 포함하며, 따라서 다음을 가능하게 한다:
1. 적어도 하나의 캐시를 CPU 주소 지정 레지스터 각각과 짝 짓기(pairing)
2. 캐시 페이지에 의해 VM을 관리하기
3. 캐시 "미스(miss)" 회복을 그 밖의 다른 CPU 동작과 병렬화하기
캐시를 주소 지정 레지스터와 짝 짓기
캐시를 주소 지정 레지스터와 짝 짓는 것은 새로운 것이 아니다. 도 4는 4개의 주소 지정 레지스터: X, Y, S(스택 작업 레지스터) 및 PC(명령 레지스터와 동일)를 포함하는 한 가지 종래 기술의 예를 도시한다. 도 4의 각각의 주소 레지스터는 512 바이트 캐시와 연관된다. 레거시 캐시 아키텍처에서처럼, CIMM 캐시는 복수의 전용 주소 레지스터(여기서, 각각의 주소 레지스터가 서로 다른 캐시와 연관됨)를 통해서만 메모리를 액세스한다. 메모리 액세스를 주소 레지스터와 연관시킴으로써, 캐시 관리, VM 관리, 및 CPU 메모리 액세스 로직이 상당히 단순화된다. 그러나 레거시 캐시 아키텍처와 달리, 각각의 CIMM 캐시의 비트는 RAM의 비트 라인, 가령, 동적 RAM 즉 DRAM에 따라 정렬되어, 맞물린 캐시(interdigitated cache)를 생성한다. 각각의 캐시의 내용에 대한 주소가 연관된 주소 레지스터의 최하위(the least significant)(즉, 자리 표시상 가장 오른쪽) 9비트이다. 캐시 비트 라인과 메모리 간의 이러한 맞물림의 한 가지 이점은 캐시 "미스"를 결정할 때의 속도와 단순성이다. 레거시 캐시 아키텍처와 달리, CIMM 캐시는 주소 레지스터의 최상위 비트(the most significant bit)가 변했을 때만 "미스"를 판단하고, 주소 레지스터는 다음 중 두 가지 방식 중 하나로만 변경될 수 있다:
1. 주소 레지스터로 STOREACC. 예를 들어: STOREACC, X
2. 주소 레지스터의 최하위 9비트로부터 올림(carry)/빌림(borrow). 예를 들어: STOREACC, (X+)
CIMM 캐시는 대부분의 명령 스트림에 대해 99% 초과의 히트율(hit rate)을 달성한다. 이는 100개 중 1개 미만의 명령이 "미스" 평가를 수행하는 동안 딜레이를 겪음을 의미한다.
CIMM 캐시는 캐시 로직을 상당히 단순화시킨다.
CIMM 캐시는 매우 긴 단일 라인 캐시라고 생각될 수 있다. 전체 캐시가 단일 DRAM RAS 사이클 동안 로딩될 수 있어서, 좁은 32 또는 64-비트 버스를 통한 캐시 로딩을 필요로 하는 레거시 캐시 시스템에 비교할 때 캐시 "미스" 패널티가 상당히 감소된다. 이러한 짧은 캐시 라인의 "미스" 율은 받아들일 수 없을 만큼 높다. 긴 단일 캐시 라인을 이용할 때, CIMM 캐시는 단지 단일 주소 비교만 필요로 한다. 레거시 캐시 시스템은 긴 단일 캐시 라인을 사용하지 않는데, 이는 그들의 캐시 아키텍처를 필요로 하는 종래의 짧은 캐시 라인을 이용할 때에 비교해서 캐시 "미스" 패널티를 몇 배 증배시킬 것이기 때문이다.
좁은 비트 라인 피치에 대한 CIMM 캐시 솔루션
한 가지 고려된 CIMM 캐시 실시예는 CPU와 캐시 사이의 CIMM 좁은 비트 라인 피치에 의해 제시되는 문제들 중 다수를 해결한다. 도 6H는 CIMM 캐시 실시예의 4 비트 및 앞서 기재된 설계 규칙의 3개의 레벨들의 상호대화를 도시한다. 도 6H의 왼쪽 부분은 메모리 셀로 부착되는 비트 라인을 포함한다. 이들은 코어 규칙(Core Rule)을 이용해 구현된다. 오른쪽 부분으로 이동하면, 다음 섹션이 DMA-캐시, X-캐시, Y-캐시, S-캐시, 및 I-캐시라고 지정된 5개의 캐시를 포함한다. 이들은 어레이 규칙을 이용해 구현된다. 도면의 오른쪽 부분은 래치(latch), 버스 드라이버(bus driver), 주소 디코드(address decode), 및 퓨즈(fuse)를 포함한다. 이들은 주변 규칙(Peripheral Rule)을 이용해 구현된다. CIMM 캐시는 다음과 같은 종래 기술의 캐시 아키텍처의 문제를 해결한다:
1. 리프레시에 의해 센스 앰프 내용이 변함
도 6H는 DMA-캐시, X-캐시, Y-캐시, S-캐시, 및 I-캐시에 의해 미러링(mirror)되는 DRAM 센스 앰프(sense amp)를 도시한다. 이러한 방식으로, 캐시는 DRAM 리프레시로부터 고립되고, CPU 성능이 향상된다.
2. 캐시 비트를 위한 제한된 공간
센스 앰프는 실제로 래칭 장치(latching device)이다. 도 6H에서, CIMM 캐시는 DMA-캐시, X-캐시, Y-캐시, S-캐시, 및 I-캐시를 위한 센스 앰프 로직 및 설계 규칙을 복제하는 것으로 나타난다. 따라서 1 캐시 비트가 메모리의 비트 라인 피치에 들어 맞을 수 있다. 5개 캐시 각각의 1 비트가 4개의 센스 앰프와 동일한 공간 내에 배치된다. 4개의 패스 트랜지스터(pass transistor)가 4개의 센스 앰프 비트 중 임의의 하나를 공통 버스로 선택한다. 4개의 추가 패스 트랜지스터는 버스 비트를 5개의 캐시 중 임의의 하나로 선택한다. 이러한 방식으로 도 6H에 도시된 것처럼 임의의 메모리 비트가 5개의 맞물린 캐시들 중 임의의 하나에 저장될 수 있다.
Mux/Demux를 이용하여 캐시를 DRAM으로 정합하기
종래 기술의 CIMM, 가령, 도 2에 도시된 CIMM은 DRAM 뱅크 비트를 연관된 CPU 내 캐시 비트로 정합시킨다. 이러한 배열의 이점은 서로 다른 칩 상의 CPU 및 메모리를 이용하는 그 밖의 다른 레거시 아키텍처에 비해 상당한 속도 증가 및 소비 전력 감소가 있다는 것이다. 그러나 이러한 배열의 단점은 CPU 캐시 비트가 들어 맞기 위해서는 DRAM 비트 라인의 물리적 공간이 증가해야 한다는 것이다. 설계 규칙 제약 때문에, 캐시 비트는 DRAM 비트보다 훨씬 더 크다. 따라서 CIM 캐시로 연결되는 DRAM의 물리적 크기는 본 발명의 CIM 맞물린 캐시를 이용하지 않는 DRAM에 비교할 때 4배만큼 증가해야 한다.
도 6H는 CPU를 CIMM 내 DRAM으로 연결하는 더 조밀한 방법을 나타낸다. 복수의 캐시 중 하나의 비트로의 DRAM의 임의의 비트를 선택하기 위해 필요한 단계들은 다음과 같다:
1. 주소 라인 A[10:9]에 의해 지시되는 것처럼 메모리 비트를 4의 그룹으로 논리적으로 그룹짓는 단계.
2. DRAM으로부터의 모든 4 비트 라인을 멀티플렉서 입력으로 전송하는 단계.
3. 주소 라인 A[10:9]의 4개의 가능한 상태에 의해 제어되는 4개의 스위치 중 하나를 스위칭함으로써 4개의 비트 라인 중 멀티플렉서 출력으로의 하나를 선택하는 단계.
4. 디멀티플렉서 스위치를 이용함으로써 복수의 캐시 중 하나를 멀티플렉서 출력으로 연결하는 단계. 이들 스위치는 도 6H에 KX, KY, KS, KI, 및 KDMA로 도시되어 있다. 이들 스위치와 제어 신호는 명령 디코딩 로직에 의해 제공된다.
종래 기술에 비교되는 CIMM 캐시의 맞물린 캐시 실시예의 주요 이점은 복수의 캐시가 어레이를 수정하지 않고, 그리고 DRAM 어레이의 물리적 크기를 증가시키지 않고, 거의 모든 기존의 상용화된 DRAM 어레이로 연결될 수 있다는 것이다.
3. 제한된 센스 앰프 드라이브
도 7A는 양방향성 래치 및 버스 드라이버의 물리적으로 더 크고 더 강력한 실시예를 도시한다. 이 로직은 주변 규칙(Peripheral Rule)에 따라 만들어진 더 큰 트랜지스터를 이용해 구현되고 4비트 라인의 피치를 덮는다. 이들 더 큰 트랜지스터는 메모리 어레이의 변부를 따라 뻗어 있는 긴 데이터 버스를 구동시킬 힘을 가진다. 양방향성 래치는, 명령 디코드(Instruction Decode)로 연결된 패스 트랜지스터들 중 하나에 의해 4개의 캐시 비트 중 하나로 연결되어 있다. 예를 들어, 명령이 X-캐시가 판독되도록 지시한 경우, X 라인 선택(Select X line)에 의해, 패스 트랜지스터는 X-캐시를 상기 양방향성 래치로 연결한다. 도 7A는 많은 메모리에서 발견되는 퓨즈 블록의 디코드 및 수리(Decode and Repair)가 본 발명과 함께 사용될 수 있는 방식을 도시한다.
멀티프로세서 캐시 및 메모리의 관리
도 7B는 CIMM 캐시의 한 가지 고려되는 실시예의 메모리 맵을 도시하며, 여기서, 4개의 CIMM CPU가 64Mbit DRAM으로 집적된다. 상기 64Mbit는 4개의 2Mbyte 뱅크로 추가로 분할된다. CIMM CPU 각각은 4개의 2Mbyte DRAM 뱅크 각각에 인접하게 물리적으로 배치된다. 데이터가 인터프로세서 버스 상의 CPU와 메모리 뱅크 사이에 전달된다. 하나의 요청하는 CPU와 하나의 응답하는 메모리 뱅크가 인터프로세서 버스 상에서 한 번에 통신하도록, 인터프로세서 버스 제어기는 요청/허가 로직(request/grant logic)을 중재한다.
도 7C는 CIMM 프로세서가 동일한 전역 메모리 맵을 볼 때의 예시적 메모리 로직을 도시한다. 메모리 계층구조는 다음으로 구성된다:
로컬 메모리 - 각각의 CIMM CPU에 물리적으로 인접한 2Mbyte,
원격 메모리 - (인터프로세서 버스를 통해 액세스되는) 로컬 메모리가 아닌 모든 모놀리식 메모리(monolithic memory), 및
외부 메모리 - (외부 메모리 버스를 통해 액세스되는) 모놀리식 메모리가 아닌 모든 메모리.
도 7B의 CIMM 프로세서 각각은 복수의 캐시 및 이와 연관된 주소 지정 레지스터를 통해 메모리를 액세스한다. 어느 유형의 메모리 액세스(로컬, 원격, 또는 외부)가 필요한지를 결정하기 위해, 주소 지정 레지스터 또는 VM 관리자로부터 직접 획득된 물리적 주소가 디코딩된다. 도 7B의 CPU0는 자신의 로컬 메모리를 0-2Mbyte로 주소 지정한다. 인터프로세서 버스를 통해 주소 2-8Mbyte가 액세스된다. 8Mbyte 초과의 주소가 외부 메모리 버스를 통해 액세스된다. CPU1은 자신의 로컬 메모리를 2-4Mbyte로 주소 지정한다. 주소 0-2Mbyte 및 4-8Mbyte가 인터프로세서 버스를 통해 액세스된다. 8Mbyte 초과의 주소가 외부 메모리 버스를 통해 액세스된다. CPU2는 자신의 로컬 메모리를 4-6Mbyte로 주소 지정한다. 주소 0-4Mbyte 및 6-8Mbyte는 인터프로세서 버스를 통해 액세스된다. 8Mbyte를 초과하는 주소는 외부 메모리 버스를 통해 액세스된다. CPU3은 자신의 로컬 메모리를 6-8Mbyte로 주소 지정한다. 주소 0-6Mbyte는 인터프로세서 버스를 통해 액세스된다. 8Mbyte 초과의 주소는 외부 메모리 버스를 통해 액세스된다.
레거시 멀티-코어 캐시와 달리, 주소 레지스터 로직이 필요성을 검출할 때 CIMM 캐시는 인터프로세서 버스 전송을 투명하게(transparently) 수행한다. 도 7D는 이 디코딩이 수행되는 방식을 도시한다. 이 예에서, CPU1의 X 레지스터가 STOREACC 명령에 의해 명시적으로 또는 선-감분(predecrement) 또는 후-증분(postincrement) 명령에 의해 묵시적으로 변경될 때, 다음의 단계들이 발생한다:
1. 비트 A[31-23]에 어떠한 변화도 없는 경우, 아무 것도 하지 않는다. 그외 경우는 다음과 같다:
2. 비트 A[31-23]가 0이 아닌 경우, 외부 메모리 버스 및 인터프로세서 버스를 이용해 외부 메모리로부터 512바이트를 X-캐시로 전송한다.
3. 비트 A[31:23]가 0인 경우, 비트 A[22:21]를 CPU1을 가리키는 숫자(도 7D에서 나타난 바에 따르면, 01)에 비교한다. 정합이 있는 경우, 512바이트가 로컬 메모리로부터 X-캐시로 전송된다. 정합이 없는 경우, 인터프로세서 버스를 이용해 A[22:21]에 의해 지시되는 원격 메모리 뱅크로부터 512바이트가 X-캐시로 전송된다.
설명된 방법은 프로그램되기 쉬운데, 왜냐하면, 임의의 CPU가 로컬, 원격, 또는 외부 메모리를 투명하게 액세스할 수 있기 때문이다.
캐시 페이지 "미스"에 의한 VM 관리
레거시 VM 관리와 달리, CIMM 캐시는 주소 레지스터의 최상위 비트가 변경될 때만 가상 주소를 조사(look up)할 필요가 있다. 따라서 CIMM 캐시에 의해 구현되는 VM 관리는 레거시 방법에 비교할 때 상당히 더 효과적이고 단순화될 것이다. 도 6A는 CIMM VM 관리자의 하나의 실시예를 상세히 도시한다. 32-엔트리 CAM은 TLB(변환 색인 버퍼, Translation Lookaside Buffer)로서 기능한다. 이 실시예에서, 20-비트 가상 주소가 CIMM DRAM 행의 11-비트 물리적 주소로 변환된다.
최소 빈도 사용(LFU: the Least Frequently Used) 검출기의 구조 및 동작
도 8A는 큰 가상의 "가상 주소 공간"으로부터의 주소의 4K-64K 페이지를 훨씬 더 작은 실재하는 "물리적 주소 공간"으로 변환하는 하나의 CIMM 캐시 실시예의 용어 "VM 제어기"에 의해 식별되는 VM 로직을 구현하는 VM 제어기를 도시한다. 가상 주소의 리스트를 물리적 주소로 변환하는 것은 종종, CAM으로서 구현되는 변환 테이블의 캐시에 의해 가속된다(도 6B 참조). CAM의 크기가 고정되기 때문에, VM 관리자 로직은 어느 가상 주소에서 물리적 주소로의 변환이 필요할 가능성이 가장 낮은지를 지속적으로 결정하여, 이를 새로운 주소 맵핑으로 대체할 수 있어야 한다. 때때로, 필요할 가능성이 가장 낮은 주소 맵핑은, 본 발명의 도 8A-E에서 도시되는 LFU 검출기 실시예에 의해 구현되는 "최소 빈도 사용" 주소 맵핑과 동일하다.
도 8C의 LFU 검출기 실시예는 카운팅될 몇 개의 "활동 이벤트 펄스(Activity Event Pulse)"를 도시한다. LFU 검출의 경우, 이벤트 입력이 메모리 읽기 및 메모리 쓰기 신호의 조합으로 연결되어, 특정 가상 메모리 페이지를 액세스한다. 페이지가 액세스될 때마다, 도 8C의 특정 적분기(integrator)로 부착된 연관된 "활동 이벤트 펄스"가 적분기 전압을 약간씩 증가시킨다. 때때로 모든 적분기는 적분기가 포화되는 것을 막는 "회귀 펄스(Regression Pulse)"를 수신한다.
도 8B의 CAM 내 엔트리 각각은 가상 페이지 읽기 및 쓰기를 카운팅하기 위해 적분기와 이벤트 로직을 가진다. 최저 누적 전압을 갖는 적분기가 가장 적은 이벤트 펄스를 수신한 것이며, 따라서 최소 빈도 사용 가상 메모리 페이지와 연관된 것이다. 최소 빈도 사용 페이지 LDB[4:0]의 숫자가 CPU에 의해 IO 주소로 읽힐 수 있다. 도 8B는 CPU 주소 버스 A[31:12]로 연결된 VM 관리자의 동작을 도시한다. 가상 주소는 CAM에 의해 물리적 주소 A[22:12]로 변환된다. CAM 내 엔트리는 CPU에 의해 IO 포트로서 주소 지정된다. CAM에서 가상 주소가 발견되지 않은 경우, 페이지 폴트 인터럽트(Page Fault Interrupt)가 생성된다. 인터럽트 루틴이 LFU 검출기의 IO 주소를 읽음으로써 최소 빈도 사용 페이지 LDB[4:0]를 보유하는 CAM 주소를 결정할 것이다. 그 후 루틴은, 보통 디스크 또는 플래시 저장장치에서, 원하는 가상 메모리 페이지의 위치를 찾고, 이를 물리적 메모리로 읽어 들인다. CPU는 새로운 페이지의 가상에서 물리로의 맵핑을 LFU 검출기로부터 이전에 읽힌 CAM IO 주소에 쓸 것이고, 그 후, CAM 주소와 연관된 적분기는 긴 회귀 펄스에 의해 0으로 방전될 것이다.
도 8B의 TLB는 최근 메모리 액세스를 기초로, 액세스될 가능성이 가장 높은 32개의 메모리 페이지를 포함한다. VM 로직이 TLB 내에 현재 있는 다른 32개 페이지보다 새로운 페이지가 액세스될 가능성이 높다고 판단할 때, TLB 엔트리 중 하나가 새로운 페이지에 의한 제거 및 대체에 대해 플래깅되어야 한다. 제거되어야 할 페이지를 결정하기 위한 두 가지 공통적인 전략이 있다: 최소 최근 사용(LRU: least recently used) 및 최소 빈도 사용(LFU: least frequently used). LRU는 LFU보다 구현하기에 더 간단하며, 일반적으로 훨신 더 빠르다. LRU는 레거시 컴퓨터에서 더 일반적이다. 그러나 LFU는 종종, LRU보다 더 우수한 예측자(predictor)이다. CIMM 캐시 LFU 방법은 도 8B의 32 엔트리 TLB 아래에 보인다. 이는 CIMM LFU 검출기의 아날로그 실시예의 부분집합을 가리킨다. 상기 부분집합은 4개의 적분기를 보여준다. 32-엔트리 TLB를 갖는 시스템은 32개의 적분기를 포함할 것이며, 하나의 적분기가 하나씩의 TLB 엔트리와 연관된다. 동작 중에, TLB 엔트리로의 메모리 액세스 이벤트 각각은 "업(up)" 펄스를 이의 연관된 적분기로 제공할 것이다. 고정 간격에서, 적분기가 시간의 흐름에 따라 그들의 최대 값에 고정되는 것을 막기 위해, 모든 적분기는 "다운(down)" 펄스를 수신한다. 최종 시스템은 그들의 대응하는 TLB 엔트리의 각자의 액세스의 횟수에 대응하는 출력 전압을 갖는 복수의 적분기로 구성된다. 이들 전압은 도 8C-E에 Out1, Out2, 및 Out3으로 나타난 복수의 출력을 계산하는 비교기(comparator)의 집합으로 전달된다. 도 8D는 ROM에서 또는 조합 로직을 통해 진리표를 구현한다. 4개의 TLB 엔트리의 부분집합 예시에서, LFU TLB 엔트리를 나타내기 위해 2비트가 필요하다. 32 엔트리 TLB에서, 5 비트가 필요하다. 도 8E는 대응하는 TLB 엔트리에 대한 3개의 출력 및 LFU 출력에 대한 부분집합 진리표를 나타낸다.
차동 시그널링
종래 기술 시스템과 달리, 하나의 CIMM 캐시 실시예는 저전압 차동 시그널링(DS: differential signaling) 데이터 버스를 이용함으로써, 이의 저전압 스윙을 활용함으로써 소비 전력을 감소시킬 수 있다. 컴퓨터 버스는 도 10A-B에서 도시된 것처럼 네트워크를 그라운딩하기 위한 분산 레지스터 및 커패시터의 전기적 균등물이다. 분산 커패시터의 충전 및 방전 시, 버스에 의해 전력이 소비된다. 소비 전력은 다음의 수학식에 의해 설명된다: 주파수 × 커패시턴스 × 거듭제곱된 전압. 주파수가 증가함에 따라, 더 많은 전력이 소비되고, 마찬가지로, 커패시턴스가 증가함에 따라, 소비 전력도 증가한다. 그러나 가장 중요한 것은 전압과의 관계이다. 소비 전력은 전압의 제곱에 비례하여 증가한다. 이는 버스에서의 전압 스윙이 10배 감소하면, 버스에 의해 소비되는 전력은 100배 감소함을 의미한다. CIMM 캐시 저전압 DS는 차동 모드의 고성능과 저전압 시그널링에 의해 얻어질 수 있는 저전력 소비를 모두 달성한다. 도 10C는 이러한 고성능 및 저전력 소비를 달성하는 방법을 도시한다. 동작은 3가지 단계로 구성된다:
1. 차동 버스가 알려진 레벨까지로 선-충전(pre-charge)되고 등화(equalize)된다.
2. 신호 발생기 회로가 차동 버스를 차동 수신기에 의해 신뢰할만하게 읽히기에 충분히 높은 전압까지로 충전하는 펄스를 생성한다. 신호 발생기 회로가 자신이 제어하는 버스와 동일한 기판 상에 구축되기 때문에, 펄스 지속시간이 이들이 구축되는 기판의 온도와 프로세스를 추적할 것이다. 온도가 증가하면, 수신기 트랜지스터가 느려질 것이지만, 신호 생성기 트랜지스터도 그럴 것이다. 따라서 온도 증가로 인해 펄스 길이가 증가될 것이다. 펄스가 턴 오프(turn off)될 때, 버스 커패시터가 데이터율(data rate)에 비해 긴 시간 주기 동안 차동 전하를 유지할 것이다.
3. 펄스가 턴 오프된 후 약간의 시간이 흐른 후, 클록이 교차 결합된 차동 수신기를 활성화시킬 것이다. 데이터를 신뢰할만하게 읽기 위해, 차동 전압이 차동 수신기 트랜지스터의 전압의 오정합분보다 높기만 하면 된다.
캐시 및 그 밖의 다른 CPU 동작의 병렬화
하나의 CIMM 캐시 실시예는 5개의 독립적인 캐시(X, Y, S, I (명령 또는 PC), 및 DMA)를 포함한다. 이들 캐시 각각은 서로 독립적으로 병렬로 동작한다. 예를 들어, 그 밖의 다른 캐시들이 사용되도록 이용 가능한 동안 X-캐시는 DRAM으로부터 로딩될 수 있다. 도 9에 도시된 것처럼, 스마트 컴파일러(smart compiler)가 Y-캐시에서 계속 피연산자(operand)를 사용하는 동안 DRAM으로부터의 X-캐시의 로딩을 개시함으로써, 이 병렬성(parallelism)을 이용할 수 있다. Y-캐시 데이터가 소비될 때, 컴파일러는 DRAM으로부터의 다음 Y-캐시 데이터 아이템의 로딩을 시작하고, 새롭게 로딩된 X-캐시에 현재 존재하는 데이터에 대한 연산을 계속할 수 있다. 이러한 방식으로 서로 겹치는 복수의 독립적인 CIMM 캐시들을 활용함으로써, 컴파일러는 캐시 "미스" 패널티를 피할 수 있다.
부트 로더
또 다른 하나의 고려되는 CIMM 캐시 실시예는 영구 저장장치(permanent storage), 가령, 플래시 메모리 또는 그 밖의 다른 외부 저장장치로부터 프로그램을 로딩하는 명령을 포함하기 위해 작은 부트 로더를 사용한다. 일부 종래 기술 설계는 부트 로더(Boot Loader)를 유지하기 위해 오프-칩 ROM(off-chip ROM)을 사용했다. 이는 시동(startup) 시에만 사용되고 나머지 시간 동안 유휴 상태(idle)인 데이터 및 주소 라인의 추가를 필요로 한다. 그 밖의 다른 종래 기술은 CPU가 있는 다이 상에 전통적인 ROM을 배치한다. ROM을 CPU 다이 상에 임베드하는 것의 단점은 ROM이 온-칩 CPU 또는 DRAM의 평면도와 그리 잘 호환되지는 않는다는 것이다. 도 11A는 고려되는 BootROM 구성을 도시하고, 도 11B는 연관된 CIMM 캐시 부트 로더 동작을 도시한다. CIMM 싱글 라인 명령 캐시의 피치 및 크기와 정합되는 ROM은 명령 캐시에 인접하게 배치된다(즉, 도 11B의 I-캐시). RESET 후, 단일 사이클로 이 FOM의 내용은 명령 캐시로 전송된다. 따라서 실행은 ROM 내용물을 이용해 시작된다. 이 방법은 기존 명령 캐시 디코딩 및 명령 인출 로직을 이용하고, 따라서 이전에 임베드된 ROM보다 훨씬 더 적은 공간을 필요로 한다.
앞서 기재된 본 발명의 실시예는 개시된 바와 같이 많은 이점을 가진다. 본 발명의 다양한 양태가 특정 선호되는 실시예를 참조하여 상당히 상세하게 기재되었지만, 많은 대안적 실시예도 가능하다. 따라서, 청구항의 사상과 범위가 본원에서 제공되는 바람직한 실시예와 대안적 실시예의 기재에 의해 한정되어서는 안 된다. 예를 들어, 출원인의 새로운 CIMM 캐시 아키텍처, 가령, LFU 검출기에 의해 고려되는 많은 양태가 레거시 OS 및 DBMS에 의해 레거시 캐시 또는 비-CIMM 칩에서 구현될 수 있으며, 따라서 사용자의 소프트웨어 튜닝 노력에 투명한 하드웨어만의 개선을 통해 OS 메모리 관리, 데이터베이스, 및 애플리케이션 프로그램 처리율, 전체 컴퓨터 실행 성능을 개선할 수 있다.

Claims (1)

  1. 모놀리식 메모리 칩(monolithic memory chip)의 RAM 내로 프로세서를 연결하는 방법으로서, 복수의 캐시에 유지되는 복제 비트(duplicate bit)로의 상기 RAM의 임의의 비트의 선택을 가능하게 하기 위해 필요한 단계들을 포함하며, 상기 단계들은
    (a) 메모리 비트를 4개씩 그룹으로 논리적으로 그룹화하는 단계,
    (b) 모든 4 비트 라인을 상기 RAM으로부터 멀티플렉서 입력으로 전송하는 단계,
    (c) 주소 라인의 4가지 가능한 상태에 의해 제어되는 4개의 스위치 중 하나를 스위칭함으로써 멀티플렉서 출력으로 4개의 비트 라인 중 하나를 선택하는 단계,
    (d) 명령 디코딩 로직에 의해 제공되는 디멀티플렉서 스위치를 이용함으로써 멀티플렉서 출력으로 상기 복수의 캐시 중 하나를 연결하는 단계
    를 포함하는, 프로세서를 연결하는 방법.
KR1020137023388A 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처 KR101533564B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/965,885 2010-12-12
US12/965,885 US20120151232A1 (en) 2010-12-12 2010-12-12 CPU in Memory Cache Architecture
PCT/US2011/063204 WO2012082416A2 (en) 2010-12-12 2011-12-04 Cpu in memory cache architecture

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137018190A Division KR101475171B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처

Publications (2)

Publication Number Publication Date
KR20130103635A KR20130103635A (ko) 2013-09-23
KR101533564B1 true KR101533564B1 (ko) 2015-07-03

Family

ID=46200646

Family Applications (7)

Application Number Title Priority Date Filing Date
KR1020137023393A KR101532289B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137023390A KR20130109247A (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137023389A KR101532290B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137023392A KR101532288B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137023388A KR101533564B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137023391A KR101532287B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137018190A KR101475171B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처

Family Applications Before (4)

Application Number Title Priority Date Filing Date
KR1020137023393A KR101532289B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137023390A KR20130109247A (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137023389A KR101532290B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137023392A KR101532288B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020137023391A KR101532287B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처
KR1020137018190A KR101475171B1 (ko) 2010-12-12 2011-12-04 메모리 내 cpu 캐시 아키텍처

Country Status (8)

Country Link
US (1) US20120151232A1 (ko)
EP (1) EP2649527A2 (ko)
KR (7) KR101532289B1 (ko)
CN (1) CN103221929A (ko)
AU (1) AU2011341507A1 (ko)
CA (1) CA2819362A1 (ko)
TW (1) TWI557640B (ko)
WO (1) WO2012082416A2 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8984256B2 (en) 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
JP5668573B2 (ja) * 2011-03-30 2015-02-12 日本電気株式会社 マイクロプロセッサ、メモリアクセス方法
WO2011103828A2 (zh) * 2011-04-18 2011-09-01 华为技术有限公司 ***缓存中数据替换方法及多核通信处理器
US9256502B2 (en) * 2012-06-19 2016-02-09 Oracle International Corporation Method and system for inter-processor communication
US8812489B2 (en) * 2012-10-08 2014-08-19 International Business Machines Corporation Swapping expected and candidate affinities in a query plan cache
US9431064B2 (en) 2012-11-02 2016-08-30 Taiwan Semiconductor Manufacturing Company, Ltd. Memory circuit and cache circuit configuration
US9569360B2 (en) 2013-09-27 2017-02-14 Facebook, Inc. Partitioning shared caches
CN105280215B (zh) 2014-06-09 2018-01-23 华为技术有限公司 动态随机存取存储器dram的刷新方法、设备以及***
KR102261591B1 (ko) * 2014-08-29 2021-06-04 삼성전자주식회사 반도체 장치, 반도체 시스템 및 시스템 온 칩
US11327779B2 (en) * 2015-03-25 2022-05-10 Vmware, Inc. Parallelized virtual machine configuration
US10387314B2 (en) * 2015-08-25 2019-08-20 Oracle International Corporation Reducing cache coherence directory bandwidth by aggregating victimization requests
KR101830136B1 (ko) 2016-04-20 2018-03-29 울산과학기술원 경량 아키텍쳐를 이용한 에일리어스 메모리 연산 방법
WO2017190266A1 (zh) * 2016-05-03 2017-11-09 华为技术有限公司 管理转址旁路缓存的方法和多核处理器
JP2018049387A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
KR20200049775A (ko) * 2017-08-03 2020-05-08 넥스트 실리콘 리미티드 재구성 가능한 캐시 아키텍처 및 캐시 일관성을 위한 방법
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
US10754578B2 (en) 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
KR20200025184A (ko) * 2018-08-29 2020-03-10 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
TWI714003B (zh) * 2018-10-11 2020-12-21 力晶積成電子製造股份有限公司 可執行人工智慧運算的記憶體晶片及其操作方法
US11360704B2 (en) * 2018-12-21 2022-06-14 Micron Technology, Inc. Multiplexed signal development in a memory device
US11169810B2 (en) 2018-12-28 2021-11-09 Samsung Electronics Co., Ltd. Micro-operation cache using predictive allocation
CN113467751B (zh) * 2021-07-16 2023-12-29 东南大学 一种基于磁性随机存储器的模拟域存内计算阵列结构
US20230045443A1 (en) * 2021-08-02 2023-02-09 Nvidia Corporation Performing load and store operations of 2d arrays in a single cycle in a system on a chip

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080027702A1 (en) * 2005-06-24 2008-01-31 Metaram, Inc. System and method for simulating a different number of memory circuits
US20080320277A1 (en) * 2006-02-03 2008-12-25 Russell H. Fish Thread Optimized Multiprocessor Architecture

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742544A (en) * 1994-04-11 1998-04-21 Mosaid Technologies Incorporated Wide databus architecture
JP3489967B2 (ja) * 1997-06-06 2004-01-26 松下電器産業株式会社 半導体記憶装置及びキャッシュメモリ装置
KR19990025009U (ko) * 1997-12-16 1999-07-05 윤종용 복합 캐쉬 메모리 구조를 갖는 컴퓨터
EP0999500A1 (en) * 1998-11-06 2000-05-10 Lucent Technologies Inc. Application-reconfigurable split cache memory
US20100146256A1 (en) * 2000-01-06 2010-06-10 Super Talent Electronics Inc. Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces
US6400631B1 (en) * 2000-09-15 2002-06-04 Intel Corporation Circuit, system and method for executing a refresh in an active memory bank
US7133971B2 (en) * 2003-11-21 2006-11-07 International Business Machines Corporation Cache with selective least frequently used or most frequently used cache line replacement
US7043599B1 (en) * 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7096323B1 (en) * 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
US7139877B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing speculative load operation from a stack memory cache
US7769950B2 (en) * 2004-03-24 2010-08-03 Qualcomm Incorporated Cached memory system and cache controller for embedded digital signal processor
US7500056B2 (en) * 2004-07-21 2009-03-03 Hewlett-Packard Development Company, L.P. System and method to facilitate reset in a computer system
US20060090105A1 (en) * 2004-10-27 2006-04-27 Woods Paul R Built-in self test for read-only memory including a diagnostic mode
KR100617875B1 (ko) * 2004-10-28 2006-09-13 장성태 다중 캐쉬 구조의 다중 프로세서 시스템 및 그 원격캐쉬의 교체 방법
EP1889178A2 (en) * 2005-05-13 2008-02-20 Provost, Fellows and Scholars of the College of the Holy and Undivided Trinity of Queen Elizabeth near Dublin A data processing system and method
JP4472617B2 (ja) * 2005-10-28 2010-06-02 富士通株式会社 Raidシステム、raidコントローラ及びそのリビルド/コピーバック処理方法
US8035650B2 (en) * 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US7830039B2 (en) * 2007-12-28 2010-11-09 Sandisk Corporation Systems and circuits with multirange and localized detection of valid power
US20090327535A1 (en) * 2008-06-30 2009-12-31 Liu Tz-Yi Adjustable read latency for memory device in page-mode access
US8627009B2 (en) * 2008-09-16 2014-01-07 Mosaid Technologies Incorporated Cache filtering method and apparatus
US20120096226A1 (en) * 2010-10-18 2012-04-19 Thompson Stephen P Two level replacement scheme optimizes for performance, power, and area

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080027702A1 (en) * 2005-06-24 2008-01-31 Metaram, Inc. System and method for simulating a different number of memory circuits
US20080320277A1 (en) * 2006-02-03 2008-12-25 Russell H. Fish Thread Optimized Multiprocessor Architecture

Also Published As

Publication number Publication date
WO2012082416A3 (en) 2012-11-15
KR20130087620A (ko) 2013-08-06
KR20130109248A (ko) 2013-10-07
KR101532288B1 (ko) 2015-06-29
WO2012082416A2 (en) 2012-06-21
CN103221929A (zh) 2013-07-24
TWI557640B (zh) 2016-11-11
KR20130103635A (ko) 2013-09-23
KR101532287B1 (ko) 2015-06-29
KR20130103637A (ko) 2013-09-23
KR20130103638A (ko) 2013-09-23
US20120151232A1 (en) 2012-06-14
CA2819362A1 (en) 2012-06-21
TW201234263A (en) 2012-08-16
KR101532290B1 (ko) 2015-06-29
EP2649527A2 (en) 2013-10-16
KR20130109247A (ko) 2013-10-07
AU2011341507A1 (en) 2013-08-01
KR101532289B1 (ko) 2015-06-29
KR101475171B1 (ko) 2014-12-22
KR20130103636A (ko) 2013-09-23

Similar Documents

Publication Publication Date Title
KR101533564B1 (ko) 메모리 내 cpu 캐시 아키텍처
Wang et al. Figaro: Improving system performance via fine-grained in-dram data relocation and caching
Drepper What every programmer should know about memory
US6668308B2 (en) Scalable architecture based on single-chip multiprocessing
US9075725B2 (en) Persistent memory for processor main memory
US7793038B2 (en) System and method for programmable bank selection for banked memory subsystems
US20100293420A1 (en) Cache coherent support for flash in a memory hierarchy
US8862829B2 (en) Cache unit, arithmetic processing unit, and information processing unit
US20210286755A1 (en) High performance processor
US9507534B2 (en) Home agent multi-level NVM memory architecture
US20050216672A1 (en) Method and apparatus for directory-based coherence with distributed directory management utilizing prefetch caches
US6587920B2 (en) Method and apparatus for reducing latency in a memory system
US5434990A (en) Method for serially or concurrently addressing n individually addressable memories each having an address latch and data latch
Olgun et al. Sectored DRAM: An energy-efficient high-throughput and practical fine-grained DRAM architecture
Prasad et al. Monarch: a durable polymorphic memory for data intensive applications
Olgun et al. Sectored DRAM: A Practical Energy-Efficient and High-Performance Fine-Grained DRAM Architecture
Luo et al. A VLSI design for an efficient multiprocessor cache memory
Lee et al. Asynchronous instruction cache memory for average-case performance
Rate EECS 252 Graduate Computer Architecture

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
LAPS Lapse due to unpaid annual fee