KR20120089842A - 리드 및 라이트 인식 캐시 - Google Patents

리드 및 라이트 인식 캐시 Download PDF

Info

Publication number
KR20120089842A
KR20120089842A KR1020127005206A KR20127005206A KR20120089842A KR 20120089842 A KR20120089842 A KR 20120089842A KR 1020127005206 A KR1020127005206 A KR 1020127005206A KR 20127005206 A KR20127005206 A KR 20127005206A KR 20120089842 A KR20120089842 A KR 20120089842A
Authority
KR
South Korea
Prior art keywords
cache
write
free area
access request
cache line
Prior art date
Application number
KR1020127005206A
Other languages
English (en)
Other versions
KR101419615B1 (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 KR20120089842A publication Critical patent/KR20120089842A/ko
Application granted granted Critical
Publication of KR101419615B1 publication Critical patent/KR101419615B1/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/271Non-uniform cache access [NUCA] architecture
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

리드 및 라이트 인식 캐시(read and write aware cache)를 제공하기 위한 메커니즘이 캐시에 제공된다. 이 메커니즘은 큰 캐시를 리드-빈번 영역(read-often region) 및 라이트-빈번 영역(write-often region)으로 분할한다. 이 메커니즘은 불균일 캐시 아키텍처 대체 폴리시에서 리드/라이트 빈도를 고려한다. 빈번하게 라이트되는 캐시 라인은 더 먼 뱅크들 중 하나에 배치된다. 빈번하게 리드되는 캐시 라인은 더 가까운 뱅크들 중 하나에 배치된다. 리드-빈번 영역과 라이트-빈번 영역 사이의 크기 비는 고정적(static)일 수도 있고 동적(dynamic)일 수도 있다. 리드-빈번 영역과 라이트-빈번 영역 사이의 경계는 명확(distinct)할 수도 있고 불명확(fuzzy)할 수도 있다.

Description

리드 및 라이트 인식 캐시{READ AND WRITE AWARE CACHE}
본 발명은 일반적으로는 향상된 데이터 처리 장치 및 방법과 관련되고, 더 구체적으로는 리드- 및 라이트-인식 캐시(read- and write-aware cache)와 관련된다.
캐시(cache)는 데이터 전송 속도를 높이고 또한 데이터 집결 장소(staging areas)로서의 역할을 하기 위해 사용된다. 메모리 캐시들은 명령 실행, 데이터 리트리브(data retrieval) 및 데이터 업데이트(data updating)의 속도를 높이고, 그 안의 정보들은 끊임없이 변하고 있다. 메모리 캐시, 또는 "CPU 캐시"는 메인 메모리와 중앙처리장치(CPU)를 브릿지하는 메모리 뱅크이다. 메모리 캐시는 메인 메모리보다 더 빠르고 명령들이 실행될 수 있도록 하고 또한 데이터가 더 빠르게 리드되고 라이트될 수 있도록 한다. 명령들 및 데이터는 메인 메모리로부터 캐시 "라인들(lines)"로 알려진 고정된 블록들 내의 캐시로 전송된다.
더 큰 캐시의 모든 부분들이 다 동일한 레이턴시(latency)로 주어진 지점(예를 들어, CPU)으로부터 억세스될 수 있는 것은 아니다. 불균일한 캐시 아키텍쳐들(Non-uniform cache architectures, NUCA)는 큰 캐시 디자인들을 위한 새로운 캐시 아키텍처로서 생겨났다. NUCA 디자인에서, 캐시는 그 뱅크들이 배치되는 장소로 인해 억세스 지점(예를 들어, CPU)으로부터 서로 다른 억세스 딜레이들을 갖는 다수의 뱅크들로 나눠지며, 그에 따라 와이어 딜레이들 및 레이턴시들이 다르다. NUCA에서 발견되는 다른 레이턴시 특성들을 메모리 시스템들의 성능을 향상시킨다.
동적(Dynamic) NUCA(D-NUCA) 디자인에서, 라인은 일반적으로 뱅크들 중 어느 하나 내에 배치된다. D-NUCA는, 더 가까운 뱅크들에 자주 억세스되는 데이터를 넣어두기 위해, 통상적이지 않은(non-traditional) 캐시 배치 및 데이터 이동 폴리시들(data movement policies)을 사용할 수 있다. 만약 제1 뱅크가 제2 뱅크보다 처리장치에 대해 더 짧은 레이턴시를 갖는다면, 상기 제1 뱅크는 상기 제2 뱅크보다 "더 가까운" 것으로 정의된다. 따라서, 데이터는 상기 더 가까운 뱅크로부터 더 빠르게 억세스될 수 있다.
본 발명의 일 실시예에서, 데이터 처리 시스템에 있어서 리드- 및 라이트- 인식 캐시(read- and write-aware cache)를 위한 방법이 제공된다. 상기 방법은 처리 유닛으로부터 캐시 억세스 요청을 캐시 컨트롤러에서 수신하는 단계를 포함한다. 만약 상기 캐시 억세스 요청이 로드(load)이고 그 결과 캐시 미스(cache miss)가 된다면, 상기 캐시 컨트롤러는 데이터의 캐시 라인을 상기 캐시의 리드-빈번 영역(read-often region) 내로 로드한다. 상기 캐시는 상기 처리 유닛에 대한 근접성(proximity)에 있어서 가까운 뱅크들을 포함하는 뱅크들의 어레이를 포함한다. 상기 방법은 상기 캐시의 라이트-빈번 영역(write-often region) 내에 캐시 저장 미스(cache store miss)의 결과들을 상기 캐시 컨트롤러가 저장하는 단계를 더 포함한다. 상기 라이트-빈번 영역은 상기 처리 유닛에 대한 근접성에 있어서 먼 뱅크들을 포함한다.
또 다른 실시예들에 있어서, 컴퓨터 판독가능 프로그램을 갖는 컴퓨터 사용가능 또는 판독가능 매체를 포함하는 컴퓨터 프로그램 제품이 제공된다. 상기 컴퓨터 판독가능 프로그램은 컴퓨팅 디바이스 상에서 실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 방법의 실시예에 관해 위해서 기술된 동작들의 조합들 또는 그 동작들 각각을 수행하도록 한다.
또 다른 실시예에 있어서, 리드- 및 라이트-인식 캐시를 위한 장치가 제공된다. 상기 장치는 처리 유닛, 캐시 어레이 - 이 캐시 어레이는 뱅크들의 어레이를 포함함 -, 및 캐시 컨트롤러 - 이 캐시 컨트롤러는 상기 캐시 어레이 및 상기 처리 유닛에 결합됨 - 를 포함한다. 상기 뱅크들의 어레이는 리드-빈번 영역 및 라이트-빈번 영역을 포함한다. 상기 리드-빈번 영역은 처리 유닛에 대한 근접성에 있어서 가까운 상기 뱅크들의 어레이 내의 뱅크들을 포함한다. 상기 라이트-빈번 영역은 상기 처리 유닛으로부터 더 먼 상기 뱅크들의 어레이 내의 뱅크들을 포함한다. 상기 캐시 컨트롤러는 상기 처리 유닛으로부터 캐시 억세스 요청을 수신하도록 구성된다. 만약 상기 억세스가 로드(load) - 상기 로드는 캐시 미스(cache miss)를 초래함 - 라면, 상기 캐시 컨트롤러는 데이터의 캐시 라인을 상기 리드-빈번 영역 내에 로드한다. 상기 캐시 컨트롤러는 캐시 미스를 저장하는 스토어(store) 상에 데이터의 캐시 라인이 상기 캐시의 라이트-빈번 영역 내에 배치되도록 더 구성된다.
본 발명의 여러 가지 특징들은 본 발명의 실시예들의 다음의 상세한 설명에서 기술될 것이고, 이 설명을 참고할 때 당해 기술 분야에서 숙련된 자들에게는 분명해질 것이다.
본 발명, 및 본 발명의 추가 목적들 및 이점들 및 바람직한 사용 예는 본 발명들의 바람직한 실시예를 참조하여 다음의 도면들과 함께 읽혀질 때 가장 잘 이해될 것이다.
도 1은 실시예들의 측면들이 구현될 수 있는 데이터 처리 시스템의 블록도이다.
도 2는 실시예들의 측면들이 구현될 수 있는 불균일 캐시 아키텍쳐(non-uniform cache architecture)를 도시하는 블록도이다.
도 3은 실시예에 따라 리드- 및 라이트- 인식 불균일 캐시 아키텍쳐를 도시하는 블록도이다.
도 4는 실시예에 따라 리드- 및 라이트- 인식 캐시를 위한 하드웨어 서포트를 도시하는 블록도이다.
도 5는 실시예에 따라 리드- 및 라이트- 인식 캐시를 위한 캐시 컨트롤러의 동작을 도시하는 흐름도이다.
실시예들은 리드 및 라이트 인식 캐시를 제공하기 위한 메커니즘을 제공한다. 상기 메커니즘은 큰 캐시를 리드-빈번 영역 및 라이트-빈번 영역으로 분할한다. 상기 메커니즘은 불균일 캐시 아키텍쳐 대체 폴리시에서 리드/라이트 빈도(frequency)를 고려한다. 라이트-빈번 캐시 라인은 더 먼 뱅크들 중 하나에 배치된다. 리드-빈번 캐시 라인은 더 가까운 뱅크들 중 하나에 배치된다. 리드-빈번 및 라이트-빈번 영역들 사이의 크기 비는 고정적(static)일 수도 있고 동적(dynamic)일 수도 있다. 상기 리드-빈번 영역과 라이트-빈번 영역 사이의 경계는 명확(distinct)할 수도 있고 불명확(fuzzy)할 수도 있다.
따라서, 상기 실시예들은 분산형 데이터 처리 환경, 단일 데이터 처리 디바이스 등을 포함하는 데이터 처리 환경들의 많은 서로 다른 유형들에서 이용될 수 있다. 실시예들의 특정 구성요소들 및 기능에 관한 설명을 위한 맥락을 제공하고자, 실시예들의 측면들이 구현될 수 있는 환경들의 예로서 이후 도 1 및 도 2가 제공된다. 도 1 및 2에 따른 설명은 주로 단일 데이터 처리 디바이스 구현에 관해 집중될 것이지만, 이는 단지 일 예일 뿐이고 본 발명의 측면들에 관한 한정을 설명하거나 암시하려는 의도는 아니다. 반대로, 실시예들은 분산형 데이터 처리 환경들을 포함하도록 의도된다.
이제 도면들 특히 도 1 및 2를 참조하면, 본 발명의 실시예들이 구현될 수 있는 데이터 처리 환경들의 예시적인 다이어그램들이 제공된다. 도 1 및 2는 단지 예들일 뿐이고 본 발명의 측면들 또는 실시예들이 구현될 수 있는 환경들에 관한 어떠한 한정을 단언 또는 암시하려는 의도는 아니다. 본 발명의 범위를 벗어나지 않고서 설명된 환경들에 대해 많은 변형 예들이 있을 수 있다.
이제 도면들을 참조하면, 도 1은 실시예들의 측면들이 구현될 수 있는 데이터 처리 시스템의 블록도이다. 데이터 처리 시스템(100)은 컴퓨터의 일 예인데, 여기서 그 프로세스들을 실행하는 명령들 또는 컴퓨터 사용가능 프로그램 코드는 상기 실시예들에 대해 배치될 수 있다. 이 실시예에서, 데이터 처리 시스템(100)은 통신 패브릭(communications fabric)(102)을 포함하는데, 이는 프로세서 유닛(104), 메모리(106), 영구 스토리지(108), 통신 유닛(110), 입력/출력(I/O) 유닛(112), 및 디스플레이(114) 사이의 통신을 제공한다.
프로세서 유닛(104)은 메모리(106) 내로 로드될 수 있는 소프트웨어를 위한 명령들을 실행하는 역할을 한다. 프로세서 유닛(104)은, 그 구체적인 구현에 따라서, 하나 또는 그 이상의 프로세서들의 세트일 수 있고 또는 멀티-프로세서 코어일 수 있다. 나아가, 프로세서 유닛(104)은 하나 또는 그 이상의 이종의(heterogeneous) 프로세서 시스템들을 사용하여 구현될 수 있으며, 여기서 메인 프로세서는 단일 칩 상의 부 프로세서들과 함께 존재한다. 또 다른 실시예로서, 프로세서 유닛(104)은 동일 유형의 멀티 프로세서들을 포함하는 대칭형 멀티-프로세서 시스템일 수 있다.
메모리(106) 및 영구 스토리지(108)는 스토리지 디바이스들(116)의 예들이다. 스토리지 디바이스는, 예를 들어, 임시 기반 및/또는 영구 기반으로 데이터, 기능적 형태의 프로그램 코드, 및/또는 기타 적절한 정보(이러한 예들로 한정되는 것은 아님)와 같은 정보를 저장할 수 있는 하드웨어의 일부이다. 이들 예들에서, 메모리(106)는, 예를 들어, 랜덤 억세스 메모리 또는 기타 적절한 휘발성 또는 비휘발성 스토리지 디바이스일 수 있다. 영구 스토리지(108)는 특정 구현에 의존하여 여러 가지 형태들을 취할 수 있다. 예를 들어, 영구 스토리지(108)는 하드 드라이브, 플래쉬 메모리, 리라이트가능 광 디스크(rewritable optical disk), 리라이트가능 자기 테이프, 또는 이것들의 어떤 조합일 수 있다. 영구 스토리지(108)에 의해 사용되는 매체는 착탈식일 수 있다. 예를 들어, 영구 스토리지(108) 용으로 착탈식 하드 드라이브가 사용될 수 있다.
처리 유닛(104)은 캐시(134)를 가질 수 있다. 캐시(134)는 레벨 0(L0) 및/또는 레벨 1(L1) 캐시일 수 있다. 메모리(106)는 캐시(136)를 가질 수 있는데, 이는 예를 들어 레벨 2(L2) 캐시일 수 있다. 메모리(106)는 복수의 스레드들(threads) 또는 복수의 처리 유닛들 사이에 공유되는 공유 메모리일 수 있다. 그러므로, 캐시(136)는 공유 캐시일 수 있다.
이들 예들에서, 통신 유닛(110)은 다른 데이터 처리 시스템들 또는 디바이스들과의 통신들을 제공한다. 이들 예들에서, 통신 유닛(110)은 네트워크 인터페이스 카드이다. 통신 유닛(110)은 물리적 통신 링크와 무선 통신 링크 둘 다 또는 둘 중 어느 하나의 사용을 통해 통신들을 제공할 수 있다.
입력/출력 유닛(112)은 데이터 처리 시스템(100)에 연결될 수 있는 기타 디바이스들을 갖는 데이터의 입력 및 출력을 감안한다, 예를 들어, 입력/출력 유닛(112)은 키보드, 마우스, 및/또는 어떤 다른 적절한 입력 디바이스를 통해 사용자 입력을 위한 연결을 제공할 수 있다. 나아가, 입력/출력 유닛(112)은 프린터로 출력을 송신할 수 있다. 디스플레이(114)는 사용자에게 정보를 디스플레이하는 메커니즘을 제공한다.
운영 체제를 위한 명령들, 어플리케이션들 및/또는 프로그램들은 스토리지 디바이스들(116)에 위치할 수 있는데, 이는 통신 패브릭(102)을 통해 프로세서 유닛(104)과 통신한다. 이들 실시예들에서, 상기 명령들은 영구 스토리지(108) 상에 기능적 형태로 되어 있을 수 있다. 이들 명령들은 프로세서 유닛(104)에 의한 실행을 위해 메모리(106) 내로 로드될 수 있다. 서로 다른 실시예들의 프로세스들은 컴퓨터로 구현되는 명령들을 사용하여 처리 유닛(104)에 의해 수행될 수 있는데, 이는 메모리(예를 들어, 메모리(106))에 위치할 수 있다.
이들 명령들은 프로그램 코드, 컴퓨터 사용가능 프로그램 코드, 프로세서 유닛(104) 내의 프로세서에 의해 리드되고 실행될 수 있는 컴퓨터 판독가능 프로그램 코드로 일컬어진다. 서로 다른 실시예들 내의 프로그램 코드는 서로 다른 물리적 또는 실체적인 컴퓨터 판독가능 매체(예를 들어, 메모리(106) 또는 영구 스토리지(108)) 상에 구현될 수 있다.
프로그램 코드(118)는 컴퓨터 판독가능 매체(120) 상에 기능적 형태로 위치할 수 있는데, 이는 선택적으로 착탈식이고 또한 프로세서 유닛(104)에 의한 실행을 위해 데이터 처리 시스템(100) 상에 로드 또는 전송될 수 있다. 프로그램 코드(118) 및 컴퓨터 판독가능 매체(120)는 이들 예들에서 컴퓨터 프로그램 제품(122)을 구성한다. 일 예에서, 컴퓨터 판독가능 매체(120)는, 예를 들어, 광 또는 자기 디스크 - 이는 드라이브 내에 삽입 또는 배치됨 -, 또는 영구 스토리지(108)의 일부인 하드 드라이브와 같은 스토리지 디바이스 상으로의 전송을 위한 영구 스토리지(108)의 일부인 기타 디바이스와 같은 실체적 형태일 수 있다. 실체적 형태에서, 컴퓨터 판독가능 매체(120)는 또한, 하드 드라이브, 썸 드라이브(thumb drive), 또는 데이터 처리 시스템(100)에 연결된 플래시 메모리와 같은 형태를 취할 수 있다. 컴퓨터 판독가능 매체(120)의 실체적 형태는 또한 컴퓨터 판독가능 스토리지 매체로 일컬어진다. 어떤 경우들에 있어서는, 컴퓨터 판독가능 매체(120)는 착탈식이 아닐 수 있다.
다르게는, 프로그램 코드(118)는 통신 유닛(110)에 대한 통신 링크를 통해 및/또는 입력/출력 유닛(112)에 대한 연결을 통해, 컴퓨터 판독가능 매체(120)로부터 데이터 처리 시스템(100)으로 전송될 수 있다. 도시된 예들에서, 상기 통신 링크 및/또는 상기 연결은 물리적일 수도 있고 무선일 수도 있다. 상기 컴퓨터 판독가능 매체는 또한 비실체적 매체(non-tangible media)(예를 들어, 통신 링크들 또는 프로그램 코드를 포함하는 무선 전송들)의 형태를 취할 수 있다.
몇몇 예시적인 실시예들에서, 프로그램 코드(118)는 데이터 처리 시스템(100) 내에서 사용하기 위한 데이터 처리 시스템 또는 또 다른 디바이스로부터 영구 스토리지(108)로 네트워크를 통해 다운로드될 수 있다. 예를 들어, 서버 데이터 처리 시스템에서 컴퓨터 판독가능 스토리지 매체에 저장된 프로그램 코드는 서버로부터 데이터 처리 시스템(100)으로 네트워크를 통해 다운로드될 수 있다. 프로그램 코드(118)를 제공하는 데이터 처리 시스템은 서버 컴퓨터, 클라이언트 컴퓨터, 또는 프로그램 코드(118)를 저장 및 전송할 수 있는 어떤 기타 디바이스일 수 있다.
데이터 처리 시스템(100)에 있어서 도시된 서로 다른 컴포넌트들은 서로 다른 실시예들이 구현될 수 있는 방법에 대한 구조적인 한정을 제공하려는 의도는 아닌다. 상기 서로 다른 실시예들은 데이터 처리 시스템(100)에 있어서 도시된 것들을 대신하여 또는 그것들에 추가하여 컴포넌트들을 포함하는 데이터 처리 시스템에서 구현될 수 있다. 도 1에 도시된 다른 컴포넌트들은 도시된 실시예들과 다르게 될 수 있다. 다른 실시예들은 프로그램 코드를 실행할 수 있는 어떤 하드웨어 디바이스 또는 시스템을 사용하여 구현될 수 있다.
또 다른 예로서, 데이터 처리 시스템(100) 내의 스토리지 디바이스는 데이터를 저장할 수 있는 어떤 하드웨어 장치이다. 메모리(106), 영구 스토리지(108) 및 컴퓨터 판독가능 매체(120)는 실체적 형태로 된 스토리지 디바이스들의 예들이다.
또 다른 예에서, 통신 패브릭(102)을 구현하기 위해 버스 시스템이 사용될 수 있고, 시스템 버스 또는 입력/출력 버스와 같은 하나 또는 그 이상의 버스들로 구성될 수 있다. 물론, 상기 버스 시스템은 상기 버스 시스템에 부착된 디바이스들 또는 서로 다른 컴포넌트들 간의 데이터 전송을 위해 제공되는 어떤 적절한 유형의 아키텍쳐를 사용하여 구현될 수 있다. 또한, 통신 유닛은 모뎀 또는 네트워크 어댑터와 같은, 데이터를 전송 및 수신하기 위해 사용되는 하나 또는 그 이상의 디바이스들을 포함할 수 있다. 나아가, 메모리는, 예를 들어, 메모리(106) 또는 인터페이스 및 메모리 컨트롤러 허브 - 이는 통신 패브릭(102)에 제공될 수 있음 - 에서 발견되는 것과 같은 캐시일 수 있다.
도 2는 실시예들의 측면들이 구현될 수 있는 불균일 캐시 아키텍쳐를 도시하는 블록도이다. 상기 불균일 캐시 아키텍쳐(NUCA)는 레벨 1(L1) 캐시들, 레벨 2(L2) 캐시 컨트롤러(212) 및 L2 캐시 어레이(220)를 갖는 코어(210)를 포함한다. 실시예에 따라, L2 캐시 컨트롤러(212)는 서로 다르게 리드들(reads) 및 라이트들(writes)을 처리한다. 왜냐하면 리드들은 라이트들보다 캐시 억세스 레이턴시에 더 민감하기 때문이다. 따라서, L2 캐시 컨트롤러(212)는 L2 캐시(220)에 새로운 캐시 라인을 할당할 때 또는 L2 캐시(220)에서 캐시 라인을 이동시킬 때 리드/라이트 빈도를 고려한다.
도 3은 일 실시예에 따른 리드- 및 라이트-인식 불균일 캐시 아키텍쳐를 도시하는 블록도이다. 불균일 캐시 아키텍쳐(NUCA)는 L1 캐시들, L2 캐시 컨트롤러(312), 및 L2 캐시 어레이 - 이는 리드-빈번 영역(322)과 라이트-빈번 영역(324)으로 분할됨 - 를 갖는 코어(310)를 포함한다. L2 캐시 컨트롤러(312)는 상기 NUCA에서 리드/라이트 빈도를 고려한다. L2 캐시 컨트롤러(312)는 라이트-빈번 영역(324) 내의 더 가까운 뱅크들 중 하나에 빈번하게 라이트되는 캐시 라인들을 배치하고, 리드-빈번 영역(322) 내의 더 가까운 뱅크들 중 하나에 빈번하게 리드되는 캐시 라인들을 배치한다. 더 나아가, NUCA 재배치를 위해, L2 캐시 컨트롤러(312)는 라이트-빈번 영역(324) 내의 더 먼 뱅크들로 빈번하게 라이트되는 캐시 라인들을 이동시키고, 리드-빈번 영역(322) 내의 더 가까운 뱅크들로 빈번하게 리드되는 라인들을 이동시킨다.
리드-빈번 영역(322)과 라이트-빈번 영역(324) 사이의 크기 비는 고정적일 수도 있고 동적일 수도 있다. 즉, 리드-빈번 영역(322)과 라이트-빈번 영역(324)은 일반적인 리드/라이트 빈도 비율 정보에 기초하여 고정적인 크기들로 세팅될 수 있다. 예를 들어, 상기 캐시 어레이의 더 가까운 2/3는 리드-빈번 영역(324)이 되도록 구성될 수 있는 반면, 상기 캐시 어레이의 더 먼 1/3은 라이트-오픈 영역(324)이 되도록 구성될 수 있다. 이와는 다르게, L2 캐시 컨트롤러(312)는 리드-빈번 및 라이트-빈번 캐시 라인들의 런타임 비율에 기초하여 리드-빈번 영역(322)과 라이트-빈번 영역(324)을 동적으로 재구성할 수 있다. 일 실시예에서, L2 캐시 컨트롤러(312)는 상기 캐시 어레이의 프론트(더 가까운 뱅크들)로부터 시작하는 리드-빈번 영역(322)을 위해 캐시 라인들을 할당하는 것을 시작할 수 있고, 상기 캐시 어레이의 백(더 먼 뱅크들)으로부터 라이트-빈번 영역(324)을 위해 캐시 라인들을 할당하는 것을 시작할 수 있다. 이 실시예에서, 리드-빈번 영역(322)과 라이트-빈번 영역(324) 사이의 경계는 불명확할 수도 있고, 반면에 다른 실시예들에서는, 리드-빈번 영역(322)과 라이트-빈번 영역(324) 사이의 경계는 고정적(fix or static)일 수 있다.
일 실시예에서, L2 캐시 컨트롤러(312)는 소프트웨어를 통해 리드/라이트 빈도 정보를 수신할 수 있다. 예를 들어, 소프트웨어는 로드(load)에 특정 비트들을 제공할 수 있고 또한 그 소프트웨어에 의해 유지되는 리드/라이트 빈도 정보를 나타내는 명령들을 저장할 수 있다. 소프트웨어는 또한 페이지 테이블 엔트리들 내에 리드/라이트 빈도 정보를 위한 특정 비트들을 저장할 수 있다. 또 다른 실시예에서, 소프트웨어는 리드/라이트 빈도 정보로써 리드를 위해 캐시 라인을 프리페치(prefetch)하는 것 또는 라이트를 위해 캐시 라인을 프리페치하는 것과 같이, 특정 캐시 명령들을 사용할 수 있다.
또 다르게는, L2 캐시 컨트롤러(312)는 하드웨어에서 리드/라이트 빈도를 검출할 수 있다. 예를 들어, 프리페치 엔진(미도시)은 리드 스트림들(read streams) 및 라이트 스트림들(write streams)을 검출할 수 있다. L2 캐시 컨트롤러(312)는 빈번하게 리드되고 빈번하게 라이트되는 캐시 라인들을 검출하기 위해 캐시 라인별(per cache line) 포화 카운터(saturation counter)를 보유할 수 있다.
일 실시예에 따라, L2 캐시 컨트롤러(312)는 상기 리드- 및 라이트-인식 캐시를 위한 알려진 대체 폴리시들을 확장할 수 있다. 예를 들어, 라이트 미스(write miss)에 대해서는, L2 캐시 컨트롤러(312)는 X LRU(least recently used) 캐시 라인들에서 가장 먼 캐시 라인을 대체할 수 있는데, 여기서 X는 캐시 연관성(cache associativity)에 대해 2에서부터의 값일 수 있다. 리드 미스(read miss)에 대해서는, L2 캐시 컨트롤러(312)는 X LRU 캐시 라인들에서 가장 가까운 라인을 대체할 수 있다. 또 다른 예로서, 빈번하게 리드되는 캐시 라인에 대해서는, L2 캐시 컨트롤러(312)는 리드-빈번 영역(322)에서의 LRU 라인을 대체할 수 있고, 빈번하게 라이트되는 캐시 라인에 대해서는, L2 캐시 컨트롤러(312)는 라이트-빈번 영역(324)에서의 LRU 라인을 대체할 수 있다.
일 실시예에 따라, L2 캐시 컨트롤러(312)는 상기 리드- 및 라이트-인식 캐시를 위해 알려진 데이터 이동 폴리시들을 확장할 수 있다. 예를 들어, 일반적 프로모션을 사용하여, L2 캐시 컨트롤러(312)는 라이트 히트(write hit) 이후에 더 가까운 뱅크 내로 캐시 라인을 간단히 스왑(swap)하지 않을 수 있다. 데이터 이동 폴리스들에 대한 이들 확장들은 결국 감소된 데이터 이동을 초래하는데, 이는 전력 소비를 감소시킨다. 데이터 이동 폴리시들의 더 프로액티브한 확장으로서, 빈번하게 라이트된 캐시 라인은 상기 빈번하게 리드된 캐시 라인을 더 먼 뱅크로 이동시키기 위해 스왑을 트리거할 수 있다.
도 4는 일 실시예에 따라 리드- 및 라이트-인식 캐시를 위한 하드웨어 서포트를 도시하는 블록도이다. 태그 및 상태 어레이(410)는 리드 영역(420)을 위한 태그 및 상태 어레이와 라이트 영역(430)을 위한 태그 및 상태 어레이를 포함한다. 리드 영역(420)을 위한 태그 및 상태 어레이는 포화 카운터(sat cnt), 유효 비트(valid bit), 및 상기 캐시의 리드-빈번 영역에서 각각의 캐시 라인을 위한 태그를 포함한다. 이와 유사하게, 라이트 영역(430)을 위한 태그 및 상태 어레이는 포화 카운터, 유효 비트, 및 상기 캐시의 라이트-빈번 영역에서 각각의 캐시 라인을 위한 태그를 포함한다. 데이터 어레이(450)는 리드 영역(460) 및 라이트 영역(470)을 포함한다.
디코더(440)는 상기 캐시를 리드하고 상기 캐시에 라이트하기 위해 어드레스들을 디코딩한다. 캐시 억세스를 위한 어드레스는 태그, 인덱스, 및 오프셋을 포함할 수 있다. 리드 영역(420)을 위한 태그 및 상태 어레이는 상기 태그를 포함한다. 만약 상기 태그들이 매치되고 상기 유효 비트가 리드 영역(420)을 위한 태그 및 상태 어레이에서의 캐시 라인에 대해 세팅된다면, 상기 캐시 억세스는 리드 영역(460)에서 캐시 히트(cache hit)를 초래한다. 이와 유사하게, 라이트 영역(430)을 위한 태그 및 상태 어레이는 상기 태그를 포함한다. 만약 태그들이 매치되고 상기 유효 비트가 라이트 영역(430)을 위한 태그 및 상태 어레이에서의 캐시 라인에 대해 세팅된다면, 상기 캐시 억세스는 라이트 영역(470)에서 히트(hit)를 초래한다.
리드 영역(420)을 위한 태그 및 상태 어레이에서의 히트를 위해, 디코더(440)는 상기 인덱스 및 오프셋을 사용하여 리드-빈번 영역(460)에서 캐시 라인들을 억세스한다. 라이트 영역(430)을 위한 태그 및 상태 어레이에서의 히트를 위해, 디코더(440)는 상기 인덱스 및 오프셋을 사용하여 라이트-오픈 영역(470)에서 캐시 라인들을 억세스한다. 빈번하게 라이트되는 빈번하게 리드되는 캐시 라인들은 리드-빈번 영역(460)으로부터 라이트-빈번 영역(470)으로 이동될 수 있다. 그런 다음 빈번하게 리드되는 빈번하게 라이트되는 캐시 라인들은 스왑 버퍼(480)를 통해 라이트-빈번 영역(470)으로부터 리드-빈번 영역(460)으로 이동될 수 있다.
당해 기술 분야에서 숙련된 자라면 알 수 있는 바와 같이, 본 발명은 시스템, 방법, 또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 따라서, 본 발명은 전적으로 하드웨어 실시예의 형태를 취할 수도 있고, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함)의 형태를 취할 수도 있고, 또는 소프트웨어와 하드웨어 측면들 - 이것들은 모두 여기서는 "회로", "모듈" 또는 "시스템"으로 일반적으로 일컬어지고 있음 - 의 형태를 취할 수도 있다. 더 나아가, 본 발명은 어떤 실체적 표현 매체 내에 구현되는 컴퓨터 프로그램의 형태를 취할 수도 있는데, 이 실체적 표현 매체는 그 매체 내에 구현되는 컴퓨터 사용가능 프로그램 코드를 갖는다.
하나 또는 그 이상의 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체(들)의 어떤 조합이든지 이용될 수 있다. 상기 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 디바이스, 또는 전파 매체일 수 있으나, 이러한 예들로 한정되는 것은 아니다. 상기 컴퓨터-판독가능 매체의 더 구체적인 예들(모든 예들을 총 망라하는 것은 아님)은 다음과 같은 것들을 포함할 것이다. 즉, 하나 또는 그 이상의 와이어들, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 억세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거가능 프로그램가능 읽기 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 CDROM, 광 스토리지 디바이스, 전송 매체(예를 들어, 인터넷 또는 인트라넷을 지원하는 것들, 자기 스토리지 디바이스 등)가 그 예이다. 상기 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는 심지어 종이 또는 또 다른 적절한 매체 - 이것들 상에 그 프로그램이 인쇄됨 - 일 수 있다. 왜냐하면 그 프로그램은 예를 들어 종이 또는 기타 매체의 광학 스캐닝을 통해 전기적으로 캡쳐될 수 있고, 그런 다음, 필요하다면, 컴파일, 인터프리트, 또는 그렇지 않으면 적절한 방법으로 처리되고, 그런 다음 컴퓨터 메모리에 저장될 수 있기 때문이다. 본 문서의 맥락에서, 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해 또는 명령 실행 시스템, 장치, 또는 디바이스와 함께 사용하기 위한 프로그램을 포함, 저장, 전달, 전파, 또는 전송할 수 있는 어떤 매체일 수 있다. 상기 컴퓨터-사용가능 매체는 기저대역 또는 반송파의 형태로 그 내부에 구현되는 컴퓨터-사용가능 프로그램 코드를 갖는 전파되는 데이터 신호를 포함할 수 있다. 상기 컴퓨터 사용가능 프로그램 코드는 무선, 유선, 광 섬유 케이블, 라디오 주파수(radio frequency, RF) 등(그러나, 이러한 예들로 한정되는 것은 아님)을 포함하는 어떤 적절한 매체를 사용하여 전송될 수 있다.
본 발명의 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 하나 또는 그 이상의 프로그래밍 언어들의 어떤 조합으로 작성될 수 있는데, 그러한 프로그래밍 언어들의 예들에는, JavaTM, SmalltalkTM, C++ 등과 같은 객체 지향 프로그래밍 언어, 및 "C" 프로그래밍 언어 또는 유사 프로그래밍 언어들과 같은 전통적인 절차형 프로그래밍 언어들이 포함된다. 상기 프로그램 코드는, 독립형 소프트웨어 패키지로서, 전적으로 사용자의 컴퓨터 상에서 실행될 수도 있고, 부분적으로 사용자의 컴퓨터 상에서 실행될 수도 있으며, 사용자의 컴퓨터 상에서 부분적으로 그리고 원격 컴퓨터 상에서 부분적으로 또는 원격 컴퓨터 또는 서버 상에서 부분적으로 실행될 수 있다. 후자의 경우, 상기 원격 컴퓨터는 LAN 또는 WAN을 포함하는 네트워크의 어떤 유형을 통해서 사용자의 컴퓨터에 연결될 수 있고, 또는 그 연결은 외부 컴퓨터에 대해 이뤄질 수 있다(예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해). 또한, 상기 프로그램 코드는 서버 또는 원격 컴퓨터 상의 컴퓨터 판독가능 스토리지 매체 상에 구현될 수도 있고 스토리지 및/또는 실행을 위한 사용자의 컴퓨터 또는 원격 컴퓨터의 컴퓨터 판독가능 스토리지 매체로 네트워크를 통해 다운로드될 수 있다. 더 나아가, 컴퓨팅 시스템들 또는 데이터 처리 시스템들 중 어떤 것이든지 원격 컴퓨팅 시스템 또는 데이터 처리 시스템으로부터 네트워크를 통해 상기 프로그램 코드를 다운로드한 후 컴퓨터 판독가능 스토리지 매체에 그 프로그램 코드를 저장할 수 있다.
실시예들은 이하에서 본 발명의 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 기술된다. 상기 흐름도들 및/또는 블록도들의 각각의 블록, 상기 흐름도들 및/또는 블록도들에서의 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다는 것이 이해될 수 있을 것이다. 이들 컴퓨터 프로그램 명령들은 일반적인 목적의 컴퓨터, 특정 목적의 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서로 제공되어 머신을 만들어낼 수 있으며, 그리하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해 실행될 때, 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/작용들을 구현하는 수단을 생성하도록 한다.
이들 컴퓨터 프로그램 명령들은 또한 컴퓨터-판독가능 매체에 저장될 수 있는데, 이 컴퓨터-판독가능 매체는 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치에게 특정 방식으로 기능하도록 명령할 수 있고, 그리하여 그 컴퓨터-판독가능 매체에 저장된 명령들이 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/작용을 구현하는 명령 수단을 포함하는 제주 물품을 만들어내도록 한다.
상기 컴퓨터 프로그램 명령들은 또한 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치 상에 로드되어 일련의 동작 단계들이 상기 컴퓨터 또는 기타 프로그램가능 장치 상에서 수행되도록 하여 컴퓨터로 구현된 프로세스를 생성해낸다. 그리하여 상기 컴퓨터 또는 기타 프로그램가능 장치 상에서 실행되는 명령들이 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/작용들을 구현하기 위한 프로세스들을 제공하도록 한다.
도면들 내의 흐름도 및 블록도들은 본 발명의 여러 가지 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍쳐, 기능 및 동작을 도시한다. 이 점에서, 상기 흐름도 또는 블록도들에서의 각각의 블록은, 모듈, 세그먼트, 또는 코드부를 포함하는데, 이는 상기 특정된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행가능한 명령들을 포함한다. 일부 다른 구현들에 있어서는, 상기 블록에 표시된 기능들은 도면들에 표시된 순서를 벗어나서 발생할 수도 있다는 것을 또한 주목하자. 예를 들어, 연속하게 도시된 두 개의 블록들은, 사실상, 실질적으로 동시에 실행될 수도 있고, 또는 그 블록들은 때로는 관련된 기능에 의존하여 역순으로 실행될 수도 있다. 상기 블록도들 및/또는 흐름도에서의 각각의 블록, 및 상기 블록도들 및/또는 흐름도에서의 블록들의 조합은 특정 목적의 하드웨어 기반 시스템들 - 이것들은 기능들 또는 작용들, 또는 특정 목적의 하드웨어 및 컴퓨터 명령들의 조합들을 수행함 - 에 의해 구현될 수 있다.
도 5는 일 실시예에 따라 리드- 및 라이트-인식 캐시를 위한 캐시 컨트롤러의 동작을 도시하는 흐름도이다. 동작이 시작되고, 상기 캐시 컨트롤러는 캐시 억세스 요청을 수신한다(블록 502). 상기 캐시 컨트롤러는 상기 캐시 억세스 요청이 캐시 히트를 초래하는지를 결정한다(블록 504). 만약 상기 캐시 억세스 요청이 캐시 히트를 초래하지 않는다면, 상기 캐시 컨트롤러는 상기 캐시 어레이에 새로운 캐시 라인을 할당한다(블록 506). 그런 다음, 상기 캐시 컨트롤러는 상기 캐시 억세스가 로드(load)인지 스토어(store)인지를 결정한다(블록 508). 만약 상기 캐시 억세스가 로드라면, 상기 캐시 컨트롤러는 상기 캐시 라인을 상기 캐시의 리드-빈번 영역 내에 로드하고(블록 510), 상기 캐시 라인을 위한 포화 카운터(saturation counter)를 초기화한다(블록 512). 그런 다음, 동작은 종료된다. 블록 508에서 만약 상기 캐시 억세스가 스토어라면, 상기 캐시 컨트롤러는 상기 캐시 라인을 캐시의 라이트-빈번 영역 내에 로드하고(블록 514), 상기 캐시 라인을 위한 포화 카운터를 초기화한다(블록 516). 그런 다음, 동작은 종료된다.
상기 실시예에 따라, 상기 포화 카운터는 상기 캐시 라인이 옳은 영역(correct region)에 있는지를 결정한다. 또 다른 실시예에서, 리드/라이트 빈도를 결정하기 위해 하나 또는 그 이상의 카운터들이 사용될 수 있다. 예를 들어, 하나의 카운터가 사용될 수도 있고 또한 리드를 위해 증가될 수 있고 라이트를 위해 증가될 수도 있다. 또 다른 예에서, 상기 캐시 컨트롤러는 분리된 리드 및 라이트 카운터들을 유지할 수 있다. 더 나아가, 또 다른 실시예들에서, 상기 캐시 컨트롤러는 예를 들어 리드 및 라이트 카운터들을 서로 다른 스레쉬홀드들과 비교함에 의해 또는 증가(increment)/감소(decrement) 가중치를 조정함에 의해 리드들 및 라이트들에 대해 서로 다르게 가중치를 둘 수 있다.
도 5로 돌아가서, 블록 504에서, 만약 상기 캐시 억세스 요청이 히트(hit)를 초래한다면, 상기 캐시 컨트롤러는 상기 캐시 억세스가 상기 리드-빈번 영역에서의 로드 또는 상기 라이트-빈번 영역에서의 스토어인지를 결정한다(블록 518). 바꿔 말하면, 블록 518에서, 상기 캐시 컨트롤러는 상기 캐시 억세스가 상기 캐시 라인이 할당된 그 영역과 부합하는지를 결정한다. 만약 상기 캐시 컨트롤러가 상기 캐시 억세스가 상기 리드-빈번 영역에서의 로드이거나 상기 라이트-빈번 영역에서의 스토어인지를 결정하면, 상기 캐시 컨트롤러는 상기 캐시 라인으로부터 그 데이터를 제공하고(블록 520), 상기 캐시 라인과 연관된 포화 카운터를 증가시킨다(블록 522). 그런 다음, 동작은 종료된다.
블록 518에서, 만약 상기 캐시 억세스가 상기 리드-빈번 영역에서의 로드가 아니고 또한 상기 라이트-빈번 영역에서의 스토어가 아니라면, 상기 캐시 억세스는 상기 리드-빈번 영역에서의 스토어 또는 상기 라이트-빈번 영역에서의 로드이고, 상기 캐시 억세스는 그 캐시 라인이 할당된 영역과 부합하지 않는다. 이 경우, 상기 캐시 컨트롤러는 상기 캐시 라인으로부터 그 데이터를 제공하고(블록 524), 상기 캐시 라인과 연관된 포화 카운터를 감소시킨다(블록 526). 그런 다음, 상기 캐시 컨트롤러는 상기 포화 카운터의 MSB(the most significant bit)가 0(zero)인지를 결정한다(블록 528).
도시된 예에서, 만약 상기 포화 카운터의 MSB가 0이 아니라면, 상기 캐시 라인은 옳은 영역 내에 있고, 동작은 종료된다. 블록 528에서, 만약 상기 포화 카운터의 MSB가 0이라면, 상기 캐시 라인은 옳은 영역에 있지 않다. 이 경우, 상기 캐시 컨트롤러는 그 반대의 영역에서 캐시 라인을 선택하고 현재의 캐시 라인을 그 선택된 캐시 라인과 스왑한다(블록 530). 그런 다음, 상기 캐시 컨트롤러는 그 스왑된 캐시 라인들과 연관된 포화 카운터들을 초기화하고(블록 532), 동작은 종료된다.
따라서, 상기 실시예들은 리드 및 라이트 인식 캐시를 제공하기 위한 메커니즘들을 제공한다. 상기 메커니즘은 큰 캐시를 리드-빈번 영역 및 라이트-빈번 영역으로 분할한다. 상기 메커니즘은 불균일 캐시 아키텍처 대체 폴리시에서 리드/라이트 빈도를 고려한다. 빈번하게 라이트되는 캐시 라인은 더 먼 뱅크들 중 하나에 배치된다. 빈번하게 리드되는 캐시 라인은 더 가까운 뱅크들 중 하나에 배치된다. 상기 리드-빈번 및 라이트-빈번 영역들 사이의 크기 비는 고정적일 수도 있고 동적일 수도 있다. 상기 리드-빈번 영역과 라이트-빈번 영역 사이의 경계는 명확할 수도 있고 불명확할 수도 있다.
위에서 나타낸 바와 같이, 상기 실시예들은 전적으로 하드웨어 실시예의 형태를 취할 수도 있고, 전적으로 소프트웨어 실시예 또는 하드웨어와 소프트웨어 구성요소들 둘 다를 포함하는 실시예의 형태를 취할 수도 있다. 일 실시예에서, 상기 실시예들의 메커니즘들은 소프트웨어 또는 프로그램 코드로 구현될 수 있는데, 이는 펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함하나, 이러한 예들로 한정되는 것은 아니다.
프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템은 시스템 버스를 통해 메모리 구성요소들에 직접적으로 또는 간접적으로 결합되는 적어도 하나의 프로세서를 포함할 것이다. 상기 메모리 구성요소들은 상기 프로그램 코드, 벌크 스토리지, 및 캐시 메모리들 - 이것들은 실행 동안 벌크 스토리지로부터 코드가 리트리브되어야 하는 횟수를 감소시키기 위해 적어도 일부 프로그램 코드의 임시 스토리지를 제공함 - 의 실제 실행 동안 채용되는 로컬 메모리를 포함할 수 있다.
입력/출력 또는 I/O 디바이스들(키보드들, 디스플레이들, 포인팅 디바이스들 등을 포함하나, 이러한 예들로 한정되는 것은 아님)은 직접적으로 또는 중간의 I/O 컨트롤러들을 통해 그 시스템에 결합될 수 있다. 데이터 처리 시스템이 중간의 사설 또는 공중 네트워크들을 통해 기타 데이터 처리 시스템들 또는 원격 프린터들 또는 스토리지 디바이스들에 결합될 수 있도록 하기 위해 네트워크 어뎁터들은 또한 그 시스템에 결합될 수 있다. 모뎀들, 케이블 모뎀들 및 이더넷 카드들은 현재로서 이용가능한 유형의 네트워크 어댑터들 중 단지 일부에 지나지 않는다.
본 발명에 관한 기술은 예시 및 설명의 목적으로 제시된 것이므로, 발명의 모든 실시예들을 총 망라한 것은 아니며 개시된 그 형태로 본 발명을 한정하여서는 아니된다. 당해 기술 분야에서 숙련된 자에게는 여러 가지 변형 및 변경 예들이 있을 수 있음은 분명할 것이다. 상기 실시예는 발명의 원리들, 그 실제 적용을 가장 잘 설명하고, 또한 고려된 그 특정 사용에 적합하게 여러 가지 변형 예들을 갖는 다양한 실시예들에 대해 당해 기술 분야에서 통상의 기술을 가진 자들이 발명을 이해할 수 있도록 하기 위해, 선택되고 기술되었다.

Claims (20)

  1. 데이터 처리 시스템에서의 리드- 및 라이트-인식 캐시(read- and write-aware cache)를 위한 방법에 있어서,
    처리 유닛으로부터 캐시 억세스 요청을 캐시 컨트롤러에서 수신하는 단계;
    만약 상기 캐시 억세스 요청이 로드(load) - 상기 로드는 캐시 미스(cache miss)를 초래함 - 라면, 상기 캐시 컨트롤러는 데이터의 캐시 라인(cache line)을 캐시의 리드-빈번 영역(read-often region) 내에 로드하는 단계 - 상기 캐시는 뱅크들의 어레이를 포함하고 상기 리드-빈번 영역은 상기 처리 유닛에 대한 근접성(proximity)에 있어서 가까운 뱅크들을 포함함 -; 및
    만약 상기 캐시 억세스 요청이 스토어(store) - 상기 스토어는 캐시 미스를 초래함 - 라면, 상기 캐시 컨트롤러는 상기 데이터의 캐시 라인을 상기 캐시의 라이트-빈번 영역(write-often region) 내에 배치하는 단계 - 상기 라이트-빈번 영역은 상기 처리 유닛에 대한 근접성에 있어서 먼 뱅크들을 포함함 - 를 포함하는,
    방법.
  2. 청구항 1에 있어서, 상기 방법은 상기 캐시 라인과 연관된 포화 카운터(saturation counter)를 초기화하는 단계를 더 포함하는,
    방법.
  3. 청구항 2에 있어서, 상기 방법은,
    상기 캐시 라인을 억세스하기 위해 상기 캐시 컨트롤러에서 그 다음의(subsequent) 캐시 억세스 요청을 수신하는 단계;
    상기 캐시 라인이 옳은 영역(correct region)에 있는지를 결정하는 단계; 및
    상기 캐시 라인이 옳은 영역에 있지 않다는 것에 응답하여, 상기 캐시 라인을 그 반대 영역에서의 캐시 라인과 스왑하는 단계를 더 포함하는,
    방법.
  4. 청구항 3에 있어서, 상기 캐시 억세스 요청에 의해 억세스되고 있는 캐시 라인이 옳은 영역에 있는지를 결정하는 단계는,
    상기 캐시 억세스 요청이 상기 리드-빈번 영역에서의 스토어이거나 상기 라이트-빈번 영역에서의 로드인 것에 응답하여, 상기 포화 카운터를 감소시키는 단계; 및
    상기 포화 카운터가 스레쉬홀드보다 더 작은 것에 응답하여, 상기 캐시 라인이 옳은 영역에 있지 않다고 결정하는 단계를 포함하는,
    방법.
  5. 청구항 2에 있어서, 상기 방법은,
    상기 캐시 라인을 억세스하기 위해 상기 캐시 컨트롤러에서 그 다음의 캐시 억세스를 수신하는 단계; 및
    상기 캐시 억세스 요청이 상기 리드-빈번 영역에서의 로드이거나 상기 라이트-빈번 영역에서의 스토어인 것에 응답하여, 상기 포화 카운터를 증가시키는 단계를 더 포함하는,
    방법.
  6. 청구항 1에 있어서, 상기 리드-빈번 영역과 상기 라이트-빈번 영역 사이의 크기 비는 고정적(static)인,
    방법.
  7. 청구항 1에 있어서, 상기 리드-빈번 영역과 상기 라이트-빈번 영역 사이의 경계는 명확한(distinct),
    방법.
  8. 데이터 처리 시스템에서의 리드- 및 라이트-인식 캐시를 위한 장치에 있어서,
    처리 유닛;
    뱅크들의 어레이를 포함하는 캐시 어레이 - 여기서 상기 뱅크들의 어레이는 리드-빈번 영역(read-often region) 및 라이트-빈번 영역(write-often region)을 포함하며, 상기 리드-빈번 영역은 처리 유닛에 대한 근접성(proximity)에 있어서 가까운 상기 뱅크들의 어레이 내의 뱅크들을 포함하고, 상기 라이트-빈번 영역은 상기 처리 유닛에 대한 근접성에 있어서 먼 상기 뱅크들의 어레이 내의 뱅크들을 포함함 -; 및
    상기 캐시 어레이와 상기 처리 유닛에 결합된 캐시 컨트롤러 - 상기 캐시 컨트롤러는 상기 처리 유닛으로부터 캐시 억세스 요청을 수신하도록 구성됨 -; 를 포함하되,
    상기 캐시 억세스 요청이 로드(load) - 상기 로드는 캐시 미스(cache miss)를 초래함 - 인 것에 응답하여, 데이터의 캐시 라인(cache line)을 상기 리드-빈번 영역 내에 로드하고,
    상기 캐시 억세스 요청이 스토어(store) - 상기 스토어는 캐시 미스를 초래함 - 인 것에 응답하여, 데이터의 캐시 라인을 상기 캐시의 라이트-빈번 영역 내에 배치하는,
    장치.
  9. 청구항 8에 있어서, 상기 캐시 컨트롤러는 상기 캐시 라인과 연관된 포화 카운터(saturation counter)를 초기화하도록 더 구성되는,
    장치.
  10. 청구항 9에 있어서, 상기 캐시 컨트롤러는,
    상기 캐시 라인을 억세스하기 위해 상기 캐시 컨트롤러에서 그 다음의(subsequent) 캐시 억세스 요청을 수신하고;
    상기 캐시 라인이 옳은 영역(correct region)에 있는지를 결정하고; 및
    상기 캐시 라인이 옳은 영역에 있지 않다는 것에 응답하여, 상기 캐시 라인을 그 반대 영역에서의 캐시 라인과 스왑하도록 더 구성되는,
    장치.
  11. 청구항 10에 있어서, 상기 캐시 억세스 요청에 의해 억세스되고 있는 캐시 라인이 옳은 영역에 있는지를 결정하는 것은,
    상기 캐시 억세스 요청이 상기 리드-빈번 영역에서의 스토어이거나 상기 라이트-빈번 영역에서의 로드인 것에 응답하여, 상기 포화 카운터를 감소시키고;
    상기 포화 카운터가 스레쉬홀드보다 더 작은 것에 응답하여, 상기 캐시 라인이 옳은 영역에 있지 않다고 결정하는 것을 포함하는,
    장치.
  12. 청구항 9에 있어서, 상기 캐시 컨트롤러는,
    상기 캐시 라인을 억세스하기 위해 상기 캐시 컨트롤러에서 그 다음의 캐시 억세스 요청을 수신하고;
    상기 캐시 억세스 요청이 상기 리드-빈번 영역에서의 로드이거나 상기 라이트-빈번 영역에서의 스토어인 것에 응답하여, 상기 포화 카운터를 증가시키도록 더 구성되는,
    장치.
  13. 청구항 8에 있어서, 상기 리드-빈번 영역과 상기 라이트-빈번 영역 사이의 크기 비는 고정적(static)인,
    장치.
  14. 청구항 8에 있어서, 상기 리드-빈번 영역과 상기 라이트-빈번 영역 사이의 경계는 명확한(distinct),
    장치.
  15. 컴퓨터 기록가능 매체 - 상기 컴퓨터 기록가능 매체는 상기 컴퓨터 기록가능 매체 상에 기록되는 컴퓨터 판독가능 프로그램을 가짐 - 를 포함하는 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 판독가능 프로그램은, 컴퓨팅 디바이스 상에서 실행될 경우, 상기 컴퓨팅 디바이스로 하여금,
    처리 유닛으로부터 캐시 억세스 요청을 캐시 컨트롤러에서 수신하고;
    상기 캐시 억세스 요청이 로드(load) - 상기 로드는 캐시 미스(cache miss)를 초래함 - 인 것에 응답하여, 상기 캐시 컨트롤러에 의해, 데이터의 캐시 라인을 캐시의 리드-빈번 영역(read-often region) 내에 로드하고 - 상기 캐시는 뱅크들의 어레이를 포함하고 상기 리드-빈번 영역은 상기 처리 유닛에 대한 근접성(proximity)에 있어서 가까운 뱅크들을 포함함 -; 및
    상기 캐시 억세스 요청이 스토어(store) - 상기 스토어는 캐시 미스를 초래함 - 인 것에 응답하여, 상기 캐시 컨트롤러에 의해, 데이터의 캐시 라인을 상기 캐시의 라이트-빈번 영역(write-often region) 내에 로드하도록 - 상기 라이트-빈번 영역은 상기 처리 유닛에 대한 근접성에 있어서 먼 뱅크들을 포함함 - 하는,
    컴퓨터 프로그램 제품.
  16. 청구항 15에 있어서, 상기 컴퓨터 판독가능 프로그램은 상기 컴퓨팅 디바이스로 하여금,
    상기 캐시 라인과 연관되는 포화 카운터(saturation counter)를 초기화하고;
    상기 캐시 라인을 억세스하기 위해 상기 캐시 컨트롤러에서 그 다음의 캐시 억세스 요청을 수신하고;
    상기 캐시 라인이 옳은 영역에 있는지를 결정하고;
    상기 캐시 라인이 옳은 영역에 있지 않다는 것에 응답하여, 상기 캐시 라인을 그 반대 영역에서의 캐시 라인과 스왑하도록 더 기능하는,
    컴퓨터 프로그램 제품.
  17. 청구항 16에 있어서, 상기 캐시 억세스 요청에 의해 억세스되고 있는 캐시 라인이 옳은 영역에 있는지를 결정하는 것은,
    상기 캐시 억세스 요청이 상기 리드-빈번 영역에서의 스토어(store)이거나 상기 라이트-빈번 영역에서의 로드(load)인지에 응답하여, 상기 포화 카운터를 감소시키고;
    상기 포화 카운터가 스레쉬홀드보다 더 작은 것에 응답하여, 상기 캐시 라인이 옳은 영역에 있지 않다고 결정하는 것을 포함하는,
    컴퓨터 프로그램 제품.
  18. 청구항 16에 있어서, 상기 컴퓨터 판독가능 프로그램은 상기 컴퓨팅 디바이스로 하여금,
    상기 캐시 라인을 억세스하기 위해 상기 캐시 컨트롤러에서 그 다음의 캐시 억세스 요청을 수신하고;
    상기 캐시 억세스 요청이 상기 리드-빈번 영역에서의 로드이거나 상기 라이트-빈번 영역에서의 스토어인 것에 응답하여, 상기 포화 카운터를 증가시키도록 더 기능하는,
    컴퓨터 프로그램 제품.
  19. 청구항 15에 있어서, 상기 컴퓨터 판독가능 프로그램은 데이터 처리 시스템 내의 컴퓨터 판독가능 스토리지 매체에 저장되고, 또한 상기 컴퓨터 판독가능 프로그램은 원격 데이터 처리 시스템으로부터 네트워크를 통해 다운로드된,
    컴퓨터 프로그램 제품.
  20. 청구항 15에 있어서, 상기 컴퓨터 판독가능 프로그램은 서버 데이터 처리 시스템 내의 컴퓨터 판독가능 스토리지 매체에 저장되고, 또한 상기 컴퓨터 판독가능 프로그램은 네트워크를 통해 상기 원격 시스템과 함께 컴퓨터 판독가능 스토리지 매체에서 사용하기 위한 원격 데이터 처리 시스템으로 다운로드되는,
    컴퓨터 프로그램 제품.
KR1020127005206A 2009-09-18 2010-08-31 리드 및 라이트 인식 캐시 KR101419615B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/562,242 2009-09-18
US12/562,242 US8271729B2 (en) 2009-09-18 2009-09-18 Read and write aware cache storing cache lines in a read-often portion and a write-often portion
PCT/EP2010/062735 WO2011032834A1 (en) 2009-09-18 2010-08-31 Read and write aware cache

Publications (2)

Publication Number Publication Date
KR20120089842A true KR20120089842A (ko) 2012-08-14
KR101419615B1 KR101419615B1 (ko) 2014-07-15

Family

ID=43216463

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127005206A KR101419615B1 (ko) 2009-09-18 2010-08-31 리드 및 라이트 인식 캐시

Country Status (6)

Country Link
US (2) US8271729B2 (ko)
EP (1) EP2478441B1 (ko)
JP (1) JP5511965B2 (ko)
KR (1) KR101419615B1 (ko)
CN (1) CN102483720A (ko)
WO (1) WO2011032834A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341353B2 (en) * 2010-01-14 2012-12-25 Qualcomm Incorporated System and method to access a portion of a level two memory and a level one memory
TWI417721B (zh) * 2010-11-26 2013-12-01 Etron Technology Inc 衰減熱資料之方法
US9747107B2 (en) 2012-11-05 2017-08-29 Nvidia Corporation System and method for compiling or runtime executing a fork-join data parallel program with function calls on a single-instruction-multiple-thread processor
US9058282B2 (en) 2012-12-31 2015-06-16 Intel Corporation Dynamic cache write policy
US20140258636A1 (en) * 2013-03-07 2014-09-11 Qualcomm Incorporated Critical-word-first ordering of cache memory fills to accelerate cache memory accesses, and related processor-based systems and methods
US9524164B2 (en) * 2013-08-30 2016-12-20 Advanced Micro Devices, Inc. Specialized memory disambiguation mechanisms for different memory read access types
CN103631972B (zh) * 2013-12-23 2016-09-21 济南大学 一种列访问感知的数据缓存方法及系统
JP2016170682A (ja) * 2015-03-13 2016-09-23 富士通株式会社 演算処理装置及び演算処理装置の制御方法
KR102528467B1 (ko) 2016-01-20 2023-05-04 삼성전자주식회사 나눗셈 연산을 처리하는 방법, 장치 및 기록매체
US10387329B2 (en) * 2016-02-10 2019-08-20 Google Llc Profiling cache replacement
US10853267B2 (en) * 2016-06-14 2020-12-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache
US10235299B2 (en) 2016-11-07 2019-03-19 Samsung Electronics Co., Ltd. Method and device for processing data
US10417134B2 (en) * 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
JP6799256B2 (ja) * 2016-11-28 2020-12-16 富士通株式会社 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US10649904B2 (en) * 2016-12-12 2020-05-12 Samsung Electronics Co., Ltd. System and method for store streaming detection and handling
CN111367831B (zh) * 2020-03-26 2022-11-11 超睿科技(长沙)有限公司 翻译页表的深度预取方法、部件、微处理器及计算机设备
KR20210121527A (ko) 2020-03-30 2021-10-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11899589B2 (en) 2021-06-22 2024-02-13 Samsung Electronics Co., Ltd. Systems, methods, and devices for bias mode management in memory systems
CN116028388B (zh) * 2023-01-17 2023-12-12 摩尔线程智能科技(北京)有限责任公司 高速缓存方法、装置、电子设备、存储介质和程序产品

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
JP2005522773A (ja) 2002-04-08 2005-07-28 ユニバーシティー・オブ・テキサス・システム 非均等型キャッシュ装置、システム及び方法
US7058764B2 (en) * 2003-04-14 2006-06-06 Hewlett-Packard Development Company, L.P. Method of adaptive cache partitioning to increase host I/O performance
US7287122B2 (en) * 2004-10-07 2007-10-23 International Business Machines Corporation Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing
US7457922B2 (en) * 2004-11-20 2008-11-25 International Business Machines Corporation Cache line placement prediction for multiprocessor non-uniform cache architecture systems
US7293141B1 (en) * 2005-02-01 2007-11-06 Advanced Micro Devices, Inc. Cache word of interest latency organization
JP2006252031A (ja) 2005-03-09 2006-09-21 Nec Corp ディスクアレイコントローラ
US8566560B2 (en) * 2008-02-01 2013-10-22 Dell Products L.P. System and method for configuring storage resources for database storage
US9152569B2 (en) * 2008-11-04 2015-10-06 International Business Machines Corporation Non-uniform cache architecture (NUCA)

Also Published As

Publication number Publication date
EP2478441A1 (en) 2012-07-25
US8843705B2 (en) 2014-09-23
US8271729B2 (en) 2012-09-18
EP2478441B1 (en) 2014-02-26
WO2011032834A1 (en) 2011-03-24
US20110072214A1 (en) 2011-03-24
JP2013505488A (ja) 2013-02-14
CN102483720A (zh) 2012-05-30
JP5511965B2 (ja) 2014-06-04
KR101419615B1 (ko) 2014-07-15
US20120311265A1 (en) 2012-12-06

Similar Documents

Publication Publication Date Title
KR101419615B1 (ko) 리드 및 라이트 인식 캐시
US20210141724A1 (en) Methods to utilize heterogeneous memories with variable properties
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
CN107479860B (zh) 一种处理器芯片以及指令缓存的预取方法
US8935478B2 (en) Variable cache line size management
KR101699673B1 (ko) 프로세서에 대한 액세스 맵-패턴 매치 기반 프리페치 유닛
US20130205089A1 (en) Cache Device and Methods Thereof
US8656142B2 (en) Managing multiple speculative assist threads at differing cache levels
US20180300258A1 (en) Access rank aware cache replacement policy
US8595443B2 (en) Varying a data prefetch size based upon data usage
US8352684B2 (en) Optimal cache replacement scheme using a training operation
US20140149678A1 (en) Using cache hit information to manage prefetches
US8856453B2 (en) Persistent prefetch data stream settings
KR20210058877A (ko) 외부 메모리 기반 변환 색인 버퍼
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
US9311251B2 (en) System cache with sticky allocation
US11074189B2 (en) FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy
JP2016157371A (ja) プロセッサおよび命令コード生成装置
US9262325B1 (en) Heterogeneous memory system
US10013352B2 (en) Partner-aware virtual microsectoring for sectored cache architectures
WO2018137257A1 (en) Dynamic code execution location in heterogeneous memory
US9043557B1 (en) Heterogeneous memory system
JP2011141754A (ja) キャッシュメモリ
US9552293B1 (en) Emulating eviction data paths for invalidated instruction cache
US20230133372A1 (en) Multi purpose server cache directory

Legal Events

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

Payment date: 20170628

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 5