KR20220100030A - 패턴 기반 캐시 블록 압축 - Google Patents

패턴 기반 캐시 블록 압축 Download PDF

Info

Publication number
KR20220100030A
KR20220100030A KR1020227019995A KR20227019995A KR20220100030A KR 20220100030 A KR20220100030 A KR 20220100030A KR 1020227019995 A KR1020227019995 A KR 1020227019995A KR 20227019995 A KR20227019995 A KR 20227019995A KR 20220100030 A KR20220100030 A KR 20220100030A
Authority
KR
South Korea
Prior art keywords
cache block
patterns
pattern
cache
byte
Prior art date
Application number
KR1020227019995A
Other languages
English (en)
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 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority claimed from US17/029,158 external-priority patent/US12001237B2/en
Publication of KR20220100030A publication Critical patent/KR20220100030A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage 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
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • 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)
  • Human Computer Interaction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System (AREA)

Abstract

패턴 기반 캐시 블록 압축 및 압축해제를 수행하기 위한 시스템, 방법 및 디바이스. 압축되지 않은 캐시 블록이 압축기에 입력된다. 바이트 값들은 압축되지 않은 캐시 블록 내에서 식별된다. 캐시 블록 패턴은 바이트 값들을 기초로 캐시 블록 패턴들의 세트에서 검색된다. 압축된 캐시 블록은 바이트 값들과 캐시 블록 패턴을 기초로 출력된다. 압축된 캐시 블록은 압축해제기에 입력된다. 캐시 블록의 메타데이터를 기반으로 캐시 블록 패턴이 식별된다. 캐시 블록 패턴은 캐시 블록의 바이트 사전에 적용된다. 압축되지 않은 캐시 블록은 캐시 블록 패턴과 바이트 사전을 기초로 출력된다. 캐시 블록 패턴들의 서브세트는 압축된 크기들의 세트와 각 크기에 대한 패턴들의 타겟 수를 기초로 트레이닝 캐시 트레이스로부터 결정된다.

Description

패턴 기반 캐시 블록 압축
관련 출원에 대한 상호 참조
본 출원은 2019년 11월 25일에 출원된 "패턴 기반 캐시 블록 압축"이라는 명칭의 미국 가출원 번호 제62/939,990호 및 2020년 9월 23일에 출원된 "패턴 기반 캐시 블록 압축"이라는 명칭의 미국 정규 출원 번호 제17/029,158호의 이익을 주장하며, 그 내용은 본 명세서에 참조로 포함된다.
정부 라이선스 권리
본 발명은 미국 에너지부(DOE)가 수여한 로렌스 리버모어 국가 안보(기본 계약 번호 DE-AC52-07NA27344, 하도급 번호 B620717)와 함께 하는 패쓰포워드(PathForward) 프로젝트에 따라 정부 지원으로 이루어졌다. 정부는 본 발명에 대해 특정 권리를 갖는다.
캐시 메모리 또는 캐시는 일반적으로 캐시에 액세스하는 프로세서와 동일한 다이에서 구현되고 메인 메모리, 백업 저장소, 낮은 수준의 캐시 메모리 등과 같은 프로세서에서 더 느리거나 더 멀리 떨어진 저장 위치에서 정보를 검색하는 것과 비교하여 프로세서에서 자주 사용하는 정보에 액세스하는 데 필요한 시간 및/또는 에너지를 줄이도록 구성된 하드웨어 메모리이다.
정보는 일반적으로 캐시 블록 또는 캐시 라인이라고 하는 고정된 크기 단위로 캐시에 저장된다. 고정된 크기 캐시 블록의 정보를 더 작은 표현으로 압축하면(예를 들어, 64 바이트 블록을 32바이트로 압축), 캐시, 링크 대역폭 및/또는 메모리의 용량이 증가될 수 있다. 이러한 방식으로 캐시 블록을 압축하는 것을 일반적으로 캐시 블록 압축이라고 한다.
캐시 블록을 압축하는 다양한 기술은 일반적으로 다른 종류의 데이터 및/또는 저장 디바이스에도 적용 가능하다. 이러한 콘텍스트에서, 이러한 기술은 일반적으로 데이터 블록 압축이라고 한다.
첨부 도면과 함께 예로서 주어진 다음의 설명으로부터 보다 상세한 이해를 얻을 수 있으며 여기서:
도 1은 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 디바이스의 블록도이고;
도 2는 추가적인 세부사항을 예시하는 도 1의 디바이스의 블록도이고;
도 3은 압축되지 않은 캐시 블록을 압축하기 위한 예시적인 프로세스를 도시하는 흐름도이고;
도 4는 예시적인 압축 회로를 도시하는 개략도이고;
도 5는 압축된 캐시 블록을 압축해제하기 위한 예시적인 프로세스를 나타내는 흐름도이고;
도 6은 예시적인 압축해제 회로를 도시하는 개략도이고;
도 7은 예시적인 캐시 블록 패턴들의 세트를 예시하는 블록도이고;
도 8은 특정 캐시 블록 패턴들에 의해 표현되는 예시적인 캐시 블록 값들을 나타내는 블록도이고;
도 9는 압축기 및/또는 압축해제기를 생성하기 위한 예시적인 프로세스를 예시하는 흐름도이고;
도 10은 트레이닝 트레이스로부터 패턴 트레이스를 결정하기 위한 예시적인 프로세스를 예시하는 흐름도이고;
도 11은 캐시 블록 패턴들의 예시적인 세트에서 캐시 블록 패턴들 간의 예시적인 관계를 도시하는 격자도이고;
도 12는 캐시 블록 패턴들의 세트를 감소시키기 위한 예시적인 프로세스를 예시하는 흐름도이고; 및
도 13은 다양한 압축 알고리즘의 예시적인 성능을 나타내는 막대 그래프이다.
일부 구현예는 패턴 기반 캐시 블록 압축을 수행하기 위해 압축기 및/또는 압축기에서 구현되는 방법을 제공한다. 압축되지 않은 캐시 블록이 압축기에 입력된다. 바이트 값들은 압축되지 않은 캐시 블록 내에서 식별된다. 캐시 블록 패턴은 바이트 값들을 기초로 캐시 블록 패턴들의 세트에서 검색된다. 압축된 캐시 블록은 바이트 값들과 캐시 블록 패턴을 기초로 출력된다.
일부 구현예에서, 바이트 값들은 기호들로 변환되고 압축되지 않은 캐시 블록은 기호로 표현되며, 각 기호는 특정 캐시 블록을 나타낸다. 일부 구현예에서, 캐시 블록 패턴은 기호들에 기초하여 캐시 블록 패턴들의 세트를 검색함으로써 바이트 값들에 기초하여 캐시 블록 패턴들의 세트에서 검색된다. 일부 구현예에서, 압축된 캐시 블록은 바이트 값들 및 캐시 블록 패턴들의 세트에 대한 인덱스를 포함한다. 일부 구현예에서, 압축된 캐시 블록은 바이트 사전 및 메타데이터를 포함한다. 일부 구현예에서, 메타데이터는 캐시 블록 패턴들의 세트에 대한 인덱스를 포함한다. 일부 구현예에서, 바이트 사전은 바이트 값들 각각을 포함하고, 바이트 값들 각각에 대해 바이트 사전은 단 하나의 사본만을 포함한다.
일부 구현예는 패턴 기반 캐시 블록 압축해제를 수행하기 위해 압축해제기 및/또는 압축해제기에서 구현되는 방법을 제공한다. 압축된 캐시 블록은 압축 해제기에 입력된다. 캐시 블록의 메타데이터를 기초로 캐시 블록 패턴이 식별된다. 캐시 블록 패턴은 캐시 블록의 바이트 사전에 적용된다. 압축되지 않은 캐시 블록은 캐시 블록 패턴과 바이트 사전을 기초로 출력된다.
일부 구현예에서, 압축된 블록은 바이트 값들 및 캐시 블록 패턴들의 세트에 대한 인덱스를 포함한다. 일부 구현예에서, 바이트 사전은 압축되지 않은 캐시 블록의 바이트 값들을 포함한다. 일부 구현예에서, 바이트 사전은 바이트 값들 각각을 포함하고, 바이트 값들 각각에 대해 바이트 사전은 하나의 사본만을 포함한다. 일부 구현예에서, 메타데이터는 캐시 블록 패턴들의 세트에 대한 인덱스를 포함한다. 일부 구현예에서, 캐시 블록의 메타데이터에 기초하여 캐시 블록 패턴을 식별하는 것은 메타데이터에 기초하여 캐시 블록 패턴들의 세트에서 캐시 블록 패턴을 검색하는 것을 포함한다. 일부 구현예에서, 캐시 블록 패턴은 바이트 사전의 적어도 하나의 바이트에 대응하는 적어도 하나의 기호를 포함한다. 일부 구현예에서, 압축된 캐시 블록은 바이트 값들을 포함한다. 일부 구현예에서, 캐시 블록의 바이트 사전은 압축되지 않은 캐시 블록의 특정 바이트 값들을 포함한다.
일부 구현예는 패턴 기반 캐시 블록 압축을 위해 구성된 하드웨어를 생성하기 위한 방법, 시스템 및 디바이스를 제공한다. 캐시 트레이스가 입력되고 캐시 트레이스를 기초로 캐시 블록 패턴들의 세트가 결정된다. 캐시 블록 패턴들의 서브세트는 압축된 크기들의 세트 및 각 크기에 대한 패턴들의 타겟 수를 기초로 캐시 블록 패턴들의 세트로부터 결정된다. 결정된 캐시 블록 패턴의 서브세트를 기초로 하드웨어 기술이 출력된다.
일부 구현예에서, 캐시 블록 패턴들의 세트는 랭크된 캐시 블록 패턴들의 세트를 생성하기 위해 캐시 트레이스에서의 발생 빈도에 기초하여 랭크화된다. 일부 구현예에서, 랭크된 캐시 블록 패턴들은 임계 캐시 블록 패턴들의 세트를 생성하기 위해 임계 빈도 미만으로 캐시 트레이스에서 발생하는 패턴들을 제거함으로써 감소된다. 일부 구현예에서, 최대로 포괄적이지 않는 캐시 블록 패턴은 임계 캐시 블록 패턴들로부터 제거되어 국부적으로 최대 캐시 블록 패턴들의 세트를 생성한다. 일부 구현예에서, 국부적으로 최대 캐시 블록 패턴들의 세트의 상대적으로 최대 패턴은 절대 최대 캐시 블록 패턴 세트를 생성하기 위해 결합된다. 일부 구현예에서, 절대 최대 캐시 블록 패턴들의 세트의 서브세트는 절대 최대 캐시 블록 패턴들의 세트 중 어느 것이 캐시 블록 패턴들의 서브세트를 결정하기 위해 더 많은 캐시 블록들을 기술하는지에 기초하여 반복적으로 정렬된다.
도 1은 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는, 예를 들어, 컴퓨터, 게임 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(100)는 프로세서(102), 메모리(104), 스토리지(106), 하나 이상의 입력 디바이스들(108), 및 하나 이상의 출력 디바이스들(110)을 포함한다. 디바이스(100)는 또한 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함할 수 있다. 디바이스(100)는 도 1에 도시되지 않은 추가 컴포넌트들을 포함할 수 있다는 것이 이해된다.
다양한 대안에서, 프로세서(102)는 중앙 처리 디바이스(CPU), 그래픽 처리 디바이스(GPU), 동일한 다이 상에 위치한 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들을 포함하고, 여기서 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안에서, 메모리(104)는 프로세서(102)와 동일한 다이(die)에 위치하거나 프로세서(102)와 별도로 위치한다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어 랜덤 액세스 메모리(RAM), 동적 RAM 또는 캐시를 포함한다. 일부 구현예에서, 프로세서(102)는 가속기로서 구현된 GPU, 및 GPU에 대한 입력/출력 작업을 관리하도록 구성된 CPU를 포함한다.
스토리지(106)는 고정 또는 착탈식(removable) 스토리지, 예를 들어, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광 디스크 또는 플래시 드라이브를 포함한다. 입력 디바이스(108)는, 제한 없이, 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 인식 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함한다. 출력 디바이스(110)는, 제한 없이, 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 조명, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함한다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스들(108)과 통신하고, 프로세서(102)가 입력 디바이스들(108)로부터 입력을 수신하도록 한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스들(110)과 통신하고, 프로세서(102)가 출력을 출력 디바이스들(110)로 발송하도록 허용한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적 컴포넌트들이고, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우 디바이스(100)는 동일한 방식으로 동작할 것이라는 점에 유의한다. 출력 드라이버(116)는 디스플레이 디바이스(118)에 결합된 가속 처리 디바이스("APD")(116)를 포함한다. APD는 프로세서(102)로부터 컴퓨팅 커맨드(compute command) 및 그래픽 렌더링 커맨드(graphics rendering command)을 수용하고, 이러한 계산 및 그래픽 렌더링 커맨드들을 처리하고, 표시를 위해 디스플레이 디바이스(118)에 픽셀 출력을 제공한다. 아래에서 더 상세히 설명되는 바와 같이, APD(116)는 단일 명령어 다중 데이터("SIMD") 패러다임에 따라 계산을 수행하기 위한 하나 이상의 병렬 처리 유닛들을 포함한다. 따라서, 다양한 기능들이 APD(116)에 의해 또는 그와 함께 수행되는 것으로 본 명세서에서 설명되지만, 다양한 대안에서, APD(116)에 의해 수행되는 것으로 설명된 기능은 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않고 디스플레이 디바이스(118)에 그래픽 출력을 제공하는 유사한 능력을 갖는 다른 컴퓨팅 디바이스에 의해 추가로 또는 대안적으로 수행된다. 예를 들어, SIMD 패러다임에 따라 처리 작업을 수행하는 임의의 처리 시스템이 본 명세서에 설명된 기능을 수행할 수 있음이 고려된다. 대안적으로, SIMD 패러다임에 따라 처리 작업을 수행하지 않는 컴퓨팅 시스템이 본 명세서에 설명된 기능을 수행하는 것으로 고려된다.
도 2는 디바이스(100)의 블록도로서, APD(116)에서 처리 작업의 실행과 관련된 추가 세부사항을 도시한다. 프로세서(102)는, 시스템 메모리(104)에서, 프로세서(102)에 의한 실행을 위해 하나 이상의 제어 로직 모듈들을 유지한다. 제어 로직 모듈들은 운영 체제(120), 커널 모드 드라이버(122), 및 어플리케이션들(126)을 포함한다. 이들 제어 로직 모듈들은 프로세서(102) 및 APD(116)의 동작들의 다양한 특징들을 제어한다. 예를 들어, 운영 체제(120)는 하드웨어와 직접 통신하고 프로세서(102) 상에서 실행되는 다른 소프트웨어를 위해 하드웨어에 대한 인터페이스를 제공한다. 커널 모드 드라이버(122)는 예를 들어 APD(116)의 다양한 기능에 액세스하기 위해 프로세서(102) 상에서 실행되는 소프트웨어(예를 들어, 어플리케이션(126))에 어플리케이션 프로그래밍 인터페이스("API")를 제공함으로써 APD(116)의 동작을 제어한다. 커널 모드 드라이버(122)는 또한 APD(116)의 처리 컴포넌트(아래에서 더 자세히 논의되는 SIMD 유닛(138)과 같은)에 의해 실행을 위해 프로그램을 컴파일링하는 저스트-인-타임(Just-in-Time) 컴파일러(compiler)를 포함한다.
APD(116)는 병렬 처리에 적합할 수 있는 그래픽 동작 및 비그래픽 동작과 같은 선택된 기능에 대한 커맨드 및 프로그램을 실행한다. APD(116)는 픽셀 동작, 기하학적 계산과 같은 그래픽 파이프라인 동작을 실행하고 프로세서(102)로부터 수신된 커맨드에 기초하여 디스플레이 디바이스(118)에 이미지를 렌더링하는 데 사용될 수 있다. APD(116)는 또한 프로세서(102)로부터 수신된 커맨드에 기초하여 비디오, 물리적 시뮬레이션, 전산 유체 역학, 또는 다른 작업과 관련된 동작과 같은 그래픽 동작과 직접 관련되지 않은 컴퓨팅 처리 동작을 실행한다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청에 따라 동작을 수행하는 하나 이상의 SIMD 유닛들(138)을 포함하는 컴퓨팅 유닛(132)을 포함한다. SIMD 패러다임은 여러 처리 요소들이 단일 프로그램 제어 흐름 유닛과 프로그램 카운터를 공유하여 동일한 프로그램을 실행하지만 다른 데이터로 해당 프로그램을 실행할 수 있는 것이다. 일 예에서, 각각의 SIMD 유닛(138)은 16개의 레인(lane)들을 포함하고, 여기서 각각의 레인은 SIMD 유닛(138)의 다른 레인들과 동시에 동일한 명령어를 실행하지만 상이한 데이터로 해당 명령어를 실행할 수 있다. 모든 레인들이 주어진 명령어를 실행할 필요가 없는 경우 레인은 예측(predication)으로 스위칭될 수 있다(switched off). 예측은 발산 제어 흐름(divergent control flow)으로 프로그램을 실행하는 데에도 사용될 수 있다. 보다 구체적으로, 제어 흐름이 개별 레인에 의해 수행된 계산을 기초로 하는 조건부 분기 또는 기타 명령어의 프로그램의 경우, 현재 실행되지 않는 제어 흐름 경로에 대응하는 레인들을 예측하고 서로 다른 제어 흐름 경로들을 직렬로 실행하여 임의의 제어 흐름을 허용한다.
컴퓨팅 유닛(132)의 기본 실행 유닛은 작업-항목(work-item)이다. 각 작업 항목은 특정 레인에서 병렬로 실행될 프로그램의 단일 인스턴시에이션 (instantiation)을 나타낸다. 작업 항목들은 단일 SIMD 처리 유닛(138)에서 "파면(wavefront)"으로 동시에 실행될 수 있다. 하나 이상의 파면들은 동일한 프로그램을 실행하도록 지정된 작업 항목들의 모음을 포함하는 "작업 그룹"에 포함된다. 작업 그룹을 구성하는 파면들 각각을 실행함으로써 작업 그룹이 실행될 수 있다. 대안적으로, 파면들은 단일 SIMD 유닛(138)에서 순차적으로 실행되거나 상이한 SIMD 유닛들(138)에서 부분적으로 또는 완전히 병렬로 실행된다. 파면들은 단일 SIMD 유닛(138)에서 동시에 실행될 수 있는 작업 항목들의 가장 큰 모음으로 생각될 수 있다. 따라서, 프로세서(102)로부터 수신된 커맨드가 특정 프로그램이 단일 SIMD 유닛(138)에서 동시에 실행될 수 없는 정도로 병렬화되어야 함을 나타내는 경우, 해당 프로그램은 2개 이상의 SIMD 유닛들(138) 상에서 병렬화되거나 동일한 SIMD 유닛(138) 상에서 직렬화되는(또는 필요에 따라 병렬화 및 직렬화 둘 다) 파면들로 분할된다. 스케줄러(136)는 상이한 컴퓨팅 유닛(132) 및 SIMD 유닛들(138)에서 다양한 파면들을 스케줄링하는 것과 관련된 동작을 수행한다.
컴퓨팅 유닛(132)에 의해 제공되는 병렬성은 픽셀 값 계산, 정점 변환, 및 기타 그래픽 동작과 같은 그래픽 관련 동작에 적합하다. 따라서, 일부 경우에, 프로세서(102)로부터 그래픽 처리 커맨드를 수용하는 그래픽 파이프라인(134)은 병렬로 실행하기 위해 컴퓨팅 유닛(132)에 계산 작업(computation task)들을 제공한다.
컴퓨팅 유닛들(132)은 또한 그래픽과 관련되지 않거나 그래픽 파이프라인(134)의 "정상" 동작의 일부로서 수행되지 않는(예를 들어, 그래픽 파이프라인(134)의 동작을 위해 수행된 처리를 보완하기 위해 수행된 커스텀 동작(custom operation)) 계산 작업들을 수행하는 데 사용된다. 프로세서(102) 상에서 실행되는 어플리케이션(126) 또는 다른 소프트웨어는 그러한 계산 작업들을 정의하는 프로그램을 실행을 위해 APD(116)에 송신한다.
캐시 블록 압축(또는 보다 일반적으로 데이터 블록 압축)은 캐시, 메모리 및 링크 압축 체계의 기초가 된다. 고정된 크기 캐시 블록의 정보를 더 작은 표현으로 압축함으로써(예를 들어, 64 바이트 블록을 32 바이트로 압축), 캐시 블록 압축은 구현예에 따라 링크 대역폭과 캐시 및 메모리 용량을 효과적으로 증가시킨다. 일부 구현예에서는, 캐시 블록 압축을 통해 시스템 성능과 에너지 효율성을 크게 개선할 수 있다. 캐시 블록 압축에 대한 기술은 일반적으로 캐시가 아닌 다른 데이터 블록의 압축에 적용 가능하다. 따라서, 캐시가 아닌 사용 케이스에 적용되는 캐시 블록 압축을 데이터 블록 압축이라고 한다. 기술 및 예시는 캐시 블록 및 캐시 블록 압축과 관련하여 본 명세서에서 논의되지만, 이러한 기술 및 예시는 일반적으로 데이터 블록 압축에도 적용 가능함을 유의한다.
바이트 선택(byte selection)을 포함하는 캐시 블록 압축 기술은 본 명세서에서 "바이트 선택 압축"(BSC)이라고 한다. 예시적인 BSC 기술은 Das 등의 미국 특허 출원 US 2020/0133866 A1에 논의되어 있으며, 그 내용은 본 명세서에 완전히 설명된 것처럼 그 전체가 참조로 본 명세서에 포함된다. 압축 동안, 바이트 선택은 저장할 캐시 블록의 바이트와 선택된 바이트를 저장할 위치를 선택하는 것을 나타낸다. 이러한 콘텍스트에서, 압축은 바이트 중복제거(byte deduplication)로 설명될 수 있다. 압축해제 동안, 바이트 선택은 압축된 캐시 블록에서 압축되지 않은(즉, 압축해제된) 캐시 블록 내로 원래 순서로 저장된 바이트들의 이동을 나타낸다.
본 명세서의 예는 패턴들의 세트에 기초하여 캐시 블록을 압축 및 압축해제하기 위한 기술, 및 캐시 블록을 압축 및 압축해제하는데 사용하기 위한 패턴들의 세트를 생성하기 위한 기술을 예시한다. 이러한 기술에 따라 압축 및 압축해제를 수행하기 위한 하드웨어는 패턴들의 세트를 기초로 도출 가능하다.
캐시 블록 압축 알고리즘이 제안되었지만, 이전 설계는 일반적으로 설계자에 의해 데이터에서 관찰된 공통 패턴들의 임시(ad hoc) 선택의 적용을 기반으로 한다. 따라서, 일부 구현예는 현재 압축 방식보다 하드웨어 오버헤드(hardware overhead)가 또한 낮으면서 현재의 압축 접근 방식보다 이상적인 성능(예를 들어, 압축된 출력 크기의 범위 내에서 설명될 수 있는 모든 패턴들을 찾아 압축하는 알고리즘에 가까운 성능)을 나타내는 압축 알고리즘을 생성하는 캐시 블록 패턴들을 식별하기 위한 검색 전략을 제공한다.
패턴들을 기반으로 캐시 블록을 압축 및 압축해제하는 기술은 주로 도 3, 4, 5 및 6과 관련하여 논의되며, 압축 및 압축해제를 수행하기 위한 패턴들의 세트를 생성하기 위한 기술 및 대응하는 하드웨어는 주로 도 7, 8, 9, 10, 11 및 12와 관련하여 논의된다. BSC 압축의 상대적 성능은 주로 도 13과 관련하여 논의된다.
도 3은, BSC를 사용하여, 패턴들에 기초하여 압축되지 않은 캐시 블록을 압축하기 위한 예시적인 프로세스(300)를 예시하는 흐름도이다.
단계(310)에서, 압축되지 않은 캐시 블록이 적절한 압축기에 입력된다. 압축기는 임의의 적절한 압축 회로를 사용하여 완전히 하드웨어로, 또는 하드웨어와 소프트웨어 또는 펌웨어의 조합과 같은 임의의 적절한 방식으로 구현되다. 일부 구현예에서, 압축되지 않은 캐시 블록은 압축기의 입력 버퍼들에 입력된다. 압축되지 않은 12 바이트 캐시 블록의 예는 표 1에 16진수(hexadecimal) 형식으로 표현된 12 바이트의 정보를 포함한다.
FF FF FF 14 FF FF FF 18 FF FF FF 1C
단계(320)에서, 압축되지 않은 캐시 블록 내의 특정 바이트 값들이, 예를 들어 압축 회로의 적절한 비교기 로직을 사용하여 식별된다. 예를 들어, 일부 구현예에서 비교기들은 압축되지 않은 캐시 블록 내에서 중복 바이트들을 검출하는 데 사용된다. 표 1의 압축되지 않은 캐시 블록의 예시 내의 특정 바이트 값들은 표 2에 도시되어 있다.
FF 14 18 1C
이 콘텍스트에서 "특정 바이트 값들"이라는 용어는 압축되지 않은 캐시 블록에서 한 번 이상 나타나는 바이트 값들을 나타낸다. 예를 들어, 특정 바이트 값 "FF"는 표 1에 도시된 예시 12 바이트 캐시 블록에서 9번 나타나는 반면 특정 바이트 값 "1C"는 한 번 나타난다. 바이트 값 "00"은 표 1에 도시된 압축되지 않은 12 바이트 캐시 블록의 예에 나타나지 않고 따라서 이는 압축되지 않은 캐시 블록의 특정 바이트 값이 아니며 표 2에 포함되지 않는다. 표 1의 압축되지 않은 캐시 블록은 표 2의 특정 바이트 값들로 표현될 수 있으므로, 이러한 특정 바이트 값들을 이 콘텍스트에서 "바이트 사전(byte dictionary)"이라고 한다.
단계(330)에서, 압축되지 않은 캐시 블록 내의 특정 바이트 값들의 패턴은 캐시 블록 패턴들의 세트에서 조회된다(looked up). 캐시 블록 패턴들의 세트는 레지스터 파일과 같은 메모리 내의 테이블, 매트릭스 또는 벡터와 같은 임의의 적절한 방식으로 저장 가능하다. 일부 구현예에서, 패턴은 예를 들어 비교기들의 출력들에 기초하여 "조회"되거나 인덱싱된다. 예를 들어 패턴을 찾기 위해 전체 바이트가 아닌 기호(symbol)를 사용하여 특정 바이트 값들이 표현되고 참조될 수 있다. 바이트 사전의 각각의 특정 바이트 값에 대한 기호들의 예는 표 3에 십진수로(decimal) 표시된다. 이 예시의 바이트 사전에는 4개의 특정 바이트 값들이 있기 때문에 각 기호는 최소 2비트를 사용하여 표현될 수 있다. 이러한 특정 기호들은 예시적이며 임의의 적절한 기호가 다른 구현예에서 사용 가능하다는 점에 유의한다. 기호들을 사용하여 바이트 사전에서 특정 바이트 값을 표현하기 위한 프로세스는 본 명세서에서 더 논의된다.
0 1 2 3
표 3의 기호들에 기초하여, 표 1에 도시된 예시적인 캐시 블록에서 바이트들의 패턴은 표 4에 도시된 바와 같이 표현될 수 있다.
0 0 0 1 0 0 0 2 0 0 0 3
이러한 방식으로 기호의 관점에서 캐시 블록 패턴을 생성하는 것은 일부 구현예에서 캐시 블록 패턴을 조회하는 중간 단계이다. 표 1에 나타낸 예시적인 압축되지 않은 캐시 블록에 존재하는 특정 바이트 값들의 패턴은 다른 방식으로 표현될 수 있다는 점에 유의한다. 이러한 패턴 표현의 결정, 및 캐시 블록 패턴들의 세트의 결정은 본 명세서에서 더 논의된다.
표 4에 도시된 바와 같은 캐시 블록 패턴이 캐시 블록 패턴들의 세트에서 발견되지 않는 조건(340)에서, 프로세스(300)가 종료되고, 표 1에 도시된 예시적인 압축되지 않은 캐시 블록은 압축되지 않거나 다른 기술을 사용하여 압축된다. 조건(340)에서 표 4에 도시된 바와 같은 패턴이 캐시 블록 패턴들의 세트에서 발견되면, 압축된 캐시 블록은 바이트 사전 및 캐시 블록 패턴들의 세트의 캐시 블록 패턴에 대한 인덱스에 기초하여 단계(350)에서 출력된다. 일부 구현예에서, 압축된 캐시 블록은, 예를 들어, 표 2에 도시된 바와 같은 바이트 사전, 및 세트 내의 캐시 블록 패턴에 대한 인덱스를 포함하는 메타데이터를 포함한다. 압축된 캐시 블록은 예를 들어 캐시에 저장 가능하거나 링크를 통해 송신 가능하다. 표 5는 압축된 캐시 블록의 예를 보여준다.
메타데이터 FF 14 18 1C
일부 구현에서 메타데이터는 캐시 라인이 압축되었는지 여부를 나타내는 비트도 포함한다.
도 4는, BSC를 사용하여, 패턴들에 기초하여 압축되지 않은 캐시 블록을 압축하기 위한 예시적인 압축 회로(400)를 도시하는 개략도이다. 예시적인 압축 회로(400)는 예를 들어 도 3과 관련하여 도시되고 설명된 프로세스를 구현하기 위해 사용 가능하다. 예시적인 압축 회로(400)는 단지 예시적이며, 하드웨어 및/또는 소프트웨어의 임의의 적절한 구성은 BSC를 사용하여 패턴에 기초하여 압축된 캐시 블록을 생성할 수 있고, 다른 구현예에서 사용 가능하다는 점에 유의한다.
압축 회로(400)는 비교기 회로(410) 및 저장된 캐시 블록 패턴들(460)을 포함하는 로직(450), 멀티플렉서 회로(420), 압축되지 않은 캐시 블록을 홀딩하는 메모리 셀들(430), 및 바이트 사전 및 메타데이터를 포함하는 압축된 캐시 블록을 홀딩하기 위한 메모리 셀들(440)을 포함한다.
동작시, 압축되지 않은 캐시 블록은 압축 회로(400)의 메모리 셀들(430)에 저장된다. 이것은 도 3과 관련하여 도시되고 설명된 단계(310)에 대응한다. 메모리 셀들(430)은 캐시 내의 캐시 블록 스토리지, 또는 임의의 다른 적절한 버퍼 또는 다른 스토리지 회로를 포함한다. 이 예에서 압축되지 않은 캐시 블록은 표 1과 관련하여 표시되고 설명된 예시적인 12 바이트 캐시 블록에 대응한다.
압축되지 않은 캐시 블록의 바이트들은 캐시 블록 내의 특정 바이트 값들의 패턴을 식별하기 위해 비교기 회로(410)에 의해 서로 비교된다. 이것은 도 3과 관련하여 도시되고 설명된 단계(320)에 대응한다. 비교기 회로(410)는 일부 구현예에서 논리 회로(450)의 일부이거나 그와 통신한다. 이 예에서, 예시적인 캐시 블록 내의 특정 바이트 값들은 표 2와 관련하여 표시되고 설명된 예시적인 바이트들에 대응한다. 패턴은 예를 들어 표 4와 관련하여 도시되고 설명된 바와 같이 기호적으로(symbolically) 식별 가능하다.
압축되지 않은 캐시 블록 내의 특정 바이트 값들의 패턴은 캐시 블록 패턴들의 세트(460)에서 조회된다. 이것은 도 3과 관련하여 도시되고 설명된 단계(330)에 대응한다. 캐시 블록 패턴은 임의의 적절한 로직을 사용하여, 예를 들어 논리 회로(450) 및/또는 비교기 회로(410) 내에서, 캐시 블록 패턴 세트(460)와 비교된다. 일부 구현에서, 캐시 패턴 세트(460)는 기호들로 표현되고, 캐시 블록 패턴은 예를 들어 도 3과 관련하여 단계(330)에 대해 논의된 바와 같이 중간 단계로서 기호로 변환된다.
캐시 블록 패턴이 캐시 블록 패턴 세트(460)의 대응하는 패턴과 매칭되지 않는 경우, 압축되지 않은 캐시 블록은 압축되지 않거나, 다른 기술을 사용하여 압축된다. 캐시 블록 패턴이 캐시 블록 패턴 세트(460)의 대응하는 패턴과 매칭되면, 논리 회로(450)는 특정 바이트 값들을 압축되지 않은 캐시 블록에 대응하는 압축된 캐시 블록의 바이트 사전으로서 메모리 셀(440)에 저장하도록 멀티플렉서 회로(420)를 설정하고(예를 들어, 선택 라인을 설정하여), 압축된 캐시 블록의 메타데이터로서 메모리 셀들(440)에 캐시 블록 패턴 세트(460) 내의 캐시 블록 패턴에 대한 인덱스를 인코딩하고 저장한다. 이것은 도 3과 관련하여 도시되고 설명된 바와 같은 조건(340) 및 단계(350)에 대응한다. 이 예에서 압축된 캐시 블록은 바이트 사전과 메타데이터를 포함하고, 여기서 메타데이터는 캐시 블록 패턴 세트(460)에 대한 인덱스를 포함한다. 일부 구현에서, 메타데이터는 본 명세서에서 더 논의되는 바와 같이 다른 정보를 포함한다.
도 5는, BSC를 사용하여, 패턴에 기초하여 압축된 캐시 블록을 압축해제하기 위한 예시적인 프로세스(500)를 도시하는 흐름도이다.
단계(510)에서, 압축된 캐시 블록이 적절한 압축해제기(decompressor)에 입력된다. 압축해제기는 임의의 적절한 압축해제 회로를 사용하고 임의의 적절한 방식으로, 예를 들어 전체적으로 하드웨어로, 또는 하드웨어와 소프트웨어 또는 펌웨어의 조합으로 구현된다. 일부 구현에서, 압축된 캐시 블록은 압축해제기의 버퍼들에 입력된다. 압축된 캐시 블록의 예는 위의 표 5에 예시되어 있다. 일부 구현예에서, 압축된 캐시 블록은 각각 도 3 및/또는 도 4와 관련하여 도시되고 설명된 프로세스 및/또는 회로에 기초하여 생성된다.
압축된 캐시 블록의 메타데이터가 캐시 블록 패턴들의 세트에 대한 인덱스를 포함하지 않는다는 조건(520)에서, 캐시 블록은 프로세스(500)를 사용하여 압축해제되지 않고 프로세스가 종료된다. 메타데이터가 캐시 블록 패턴들의 세트에 대한 인덱스를 포함하는 경우, 캐시 블록 패턴은 단계(530)에서 인덱스에 기초하여 세트에서 조회된다. 캐시 블록 패턴은 이 예의 표 4에 대응한다. 이 예에서는 메타데이터에 인덱스가 존재하는 경우 캐시 블록 패턴 세트에 캐시 블록 패턴이 포함되어 있다고 가정된다.
단계(540)에서, 이 예에서 표 2에 대응하는 압축된 블록으부터의 바이트 사전이 캐시 블록 패턴에 적용되어(예를 들어, 표 3의 심볼 매핑에 기초하여) 압축되지 않은 캐시 블록(이 예에서 표 1에 도시됨)을 생성하고 압축되지 않은 캐시 블록이 단계(550)에서 출력된다. 압축되지 않은 캐시 블록은 CPU의 레지스터 또는 기타 적절한 스토리지 위치에 저장 가능하다.
도 6은, BSC를 사용하여, 패턴에 기초하여 압축된 캐시 블록을 압축해제하기 위한 압축해제 회로(600)의 예를 나타내는 개략도이다. 예시적인 압축해제 회로(600)는 예를 들어 도 5와 관련하여 도시되고 설명된 프로세스를 구현하는 데 사용 가능하다. 예시적인 압축해제 회로(600)는 단지 예시적이며, 하드웨어 및/또는 소프트웨어의 임의의 적절한 구성은 BSC를 사용하여 패턴에 기초하여 압축해제된 캐시 블록을 생성할 수 있고, 다른 구현에서 사용 가능하다는 점에 유의한다.
압축해제 회로(600)는 압축된 캐시 블록의 바이트 사전으로부터 특정 바이트 값들을 입력하도록 구성된 메모리 셀들(610)을 포함한다. 이것은 도 5와 관련하여 도시되고 설명된 단계(510)에 대응한다. 메모리 셀들(610)은 캐시 내의 캐시 블록 스토리지, 또는 임의의 다른 적절한 버퍼들 또는 다른 스토리지 회로를 포함한다. 이 예에서 압축된 캐시 블록은 위의 표 5에 예시된 압축된 캐시 블록의 예에 대응한다.
압축해제 회로(600)는 또한 메모리 셀들(610)의 압축된 캐시 블록으로부터 메타데이터를 입력하고 메타데이터에 포함된 인덱스에 기초하여 저장된 캐시 블록 패턴들의 세트 내에서 캐시 블록 패턴을 식별하도록 구성된 논리 회로(620)를 포함한다. 이것은 도 5와 관련하여 도시되고 설명된 바와 같은 조건(520) 및 단계(530)에 대응한다. 메타데이터가 캐시 블록 패턴들의 세트에 대한 인덱스를 포함하지 않는 경우, 압축된 캐시 블록은 압축해제 회로(600)를 사용하여 압축해제되지 않는다.
그렇지 않고, 메타데이터가 캐시 블록 패턴들의 세트에 대한 인덱스를 포함한다면, 캐시 블록 패턴은 논리 회로(620)에 의해 캐시 블록 패턴 세트 내에서 식별된다. 논리 회로(620)는 식별된 캐시 블록 패턴에 기초하여 멀티플렉서들(630)의 선택 라인들을 설정하여, 멀티플렉서들(630)이 압축된 캐시 블록의 바이트 사전을 압축되지 않은 캐시 블록에 대응하는 메모리 셀들(640)에 매핑할 수 있다. 이것은 도 5와 관련하여 도시되고 설명된 단계들(540 및 550)에 대응한다. 압축되지 않은 캐시 블록은 CPU의 레지스터 또는 기타 적절한 스토리지 위치에 저장 가능하다.
도 5와 관련하여 도시되고 설명된 것과 같은 일부 구현예에서, BSC 압축기(캐시 블록 패턴 세트들을 포함하는)는 비교기들(예를 들어, 중복 바이트들 검출을 위한), 멀티플렉서(예를 들어, 바이트 사전으로 및 그로부터 바이트 라우팅을 위한) 및 로직(예를 들어, 메타데이터 인코딩 및 디코딩을 위한)로 구현된다. 도 6과 관련하여 도시되고 설명된 것과 같은 일부 구현에서, BSC 압축해제기(캐시 블록 패턴 세트들을 포함하는)는 압축된 캐시 블록의 바이트 사전이 멀티플렉서들의 입력들에 입력되고 멀티플렉서 선택기 값들이 압축된 캐시 블록의 메타데이터로부터 파생되는 멀티플렉서들로 구현된다. 일부 구현예에서, 압축기 및/또는 압축해제기의 구현을 주로 비교기들 및 멀티플렉서들로 제한하는 것은 알고리즘의 복잡성을 제한하고 해당 하드웨어의 영역 및/또는 레이턴시를 제한하는 이점을 갖는다.
일부 구현에서, BSC 압축 및 압축해제 하드웨어의 영역 복잡성은 바이트 멀티플렉서들에 대한 입력 수, 및 메타데이터를 생성 및 처리하기 위한 로직의 복잡성에 의해 결정된다. 일부 구현예에서, 레이턴시는 멀티플렉서에 대한 최대 입력 수와 메타데이터 로직의 깊이에 의해 결정된다. 일부 구현에서, 캐시 블록 패턴 세트의 크기 및 콘텐츠는 속도 및 다이 영역의 관점에서 BSC 압축 및/또는 압축해제의 성능에 영향을 미친다.
따라서, 일부 구현예 압축 및 압축해제를 수행하기 위한 대응하는 하드웨어 및 패턴들의 세트를 생성하기 위한 기술을 제공한다. 도 3, 4, 5 및 6과 관련하여 설명된 예시적인 프로세스 및 회로에 의해 설명된 바와 같이, 캐시 블록 패턴은 캐시 블록의 바이트당 하나씩 기호들의 스트링으로 표현 가능하며, 이는 캐시 블록의 바이트 값들의 패턴을 나타낸다. 동일한 값을 갖는 캐시 블록의 바이트들이 캐시 블록 패턴의 동일한 기호로 표시되면 캐시 블록은 특정 캐시 블록 패턴으로 기술될 수 있다. 예를 들어, 표 1에 나열된 예시적인 캐시 블록은 표 4에 나열된 캐시 블록 패턴으로 기술될 수 있는데, 이는 표 1에서 동일한 값을 바이트들 각각이 표 4에서 동일한 기호로 나타내기 때문이다.
캐시 블록 패턴은 바이트 사전에 대한 인덱스들의 스트링으로 기능한다. 특정 캐시 블록 패턴의 인덱스들이 바이트 사전을 압축되지 않은 캐시 블록으로 압축해제하는 데 이용 가능한 압축되지 않은 캐시 블록으로부터 바이트 사전을 생성할 수 있는 경우 압축되지 않은 캐시 블록은 특정 캐시 블록 패턴으로 기술 가능하다.
도 3, 4, 5 및 6과 관련하여 예시된 바와 같이, 캐시 블록 패턴은 바이트 사전 및 메타데이터를 포함하는 압축된 캐시 블록을 생성하기 위해 압축되지 않은 캐시 블록의 바이트 중복을 제거하는 데 사용된다. 메타데이터는 압축되지 않은 캐시 블록이 재구성될 수 있는 캐시 블록 패턴들의 세트에 대한 인덱스를 포함한다.
도 7은 예시적인 4 바이트 캐시 블록에 대한 예시적인 캐시 블록 패턴들의 세트를 나타내는 블록도이다. 도 7에 도시된 바와 같이, 캐시 블록의 4개의 바이트들 각각에서 반복되는 하나의 특정 바이트 값을 갖는 4 바이트 캐시 블록은 하나의 심볼(0, 이 예시에서는 캐시 블록 패턴들의 세트)을 사용하여 표현될 수 있다. 도시된 세트는 그러한 캐시 블록들에 대해 완전하지 않다는 점에 유의한다. 예를 들어, 다른 예에서 하나의 특정 바이트 값을 나타내는 데 사용 가능한 임의의 기호가 사용될 수 있다.
또한 도 7에 도시된 바와 같이, 2개의 특정 바이트 값들을 포함하는 4 바이트 캐시 블록은 두 개의 기호들을 사용하여, 캐시 블록 내에서 그들의 위치에 따라, 순서대로 표시 가능하다. 2개의 특정 캐시 바이트 값들을 포함하는 캐시 블록들에 대한 여러 캐시 블록 패턴들이 도 7에 도시되어 있다. 도시된 세트는 그러한 캐시 블록에 대해 완전하지 않다는 점에 유의한다. 2개의 기호들을 갖는 캐시 블록 패턴은 또한 도 8과 관련하여 추가로 논의되는 바와 같이 하나의 특정 바이트 값을 포함하는 캐시 블록을 나타낼 수 있다.
도 7에 추가로 도시된 바와 같이, 3개의 특정 바이트 값들을 포함하는 4 바이트 캐시 블록은, 캐시 블록 내에서 그들의 위치에 따라 순서대로, 3개의 기호들을 사용하여 표시 가능하다. 3개의 특정 캐시 바이트 값들을 포함하는 캐시 블록들에 대한 여러 캐시 블록 패턴들이 도 7에 도시되어 있다. 도시된 세트는 그러한 캐시 블록에 대해 완전하지 않다는 점에 유의한다. 3개의 기호들을 갖는 캐시 블록 패턴은 또한 도 8과 관련하여 추가로 논의되는 바와 같이 하나의 특정 바이트 값 또는 두 개의 특정 바이트 값들을 포함하는 캐시 블록을 나타낼 수 있다.
도 7에 추가로 도시된 바와 같이, 4개의 특정 바이트 값들을 포함하는 4 바이트 캐시 블록은 4개의 기호들을 사용하여 표시 가능하다. 이 예에서 캐시 블록의 각 바이트는 상이한 특정 바이트 값을 포함하므로, 기호들의 순서는 중요하지 않다. 따라서, 4개의 특정 캐시 바이트 값들을 포함하는 캐시 블록에 대한 캐시 블록 패턴의 예가 도 7에 도시되어 있다. 도시된 예시적인 캐시 블록 패턴은 그러한 캐시 블록에 대해 완전하지 않다는 점에 유의한다. 그러나 이러한 캐시 블록을 나타내는 데 사용될 수 있는 다른 캐시 블록 패턴들은 동일하므로, 따라서 중복된다. 캐시 블록의 각 바이트가 상이한 특정 바이트 값을 포함한다는 것을 나타내는 기호들의 대체 순열(permutation)은 단순히 예를 위해 도 7에 제공된다. 4개의 기호들을 갖는 캐시 블록 패턴은 또한 도 8과 관련하여 추가로 논의되는 바와 같이 1개의 특정 바이트 값, 2개의 특정 바이트 값들 또는 3개의 특정 바이트 값들을 포함하는 캐시 블록을 나타낼 수 있다.
도 7에 도시된 예시적인 캐시 블록 패턴 세트에 포함된 예시적인 캐시 블록 패턴들은 완전하지 않다. 예를 들어, 4 바이트 캐시 블록이 4개의 특정 바이트 값들을 포함하는 경우, 기호들 0, 1, 2, 3은 바이트들을 나타내기 위해 임의의 순서로 사용 가능하거나 다른 기호를 사용할 수 있다. 이는 도 7에 예시된 1개, 2개, 3개의 특정 바이트 값 케이스에도 마찬가지이다.
도 8은 이러한 예시적인 캐시 블록 패턴을 사용하여 기술 가능한 예시적인 캐시 블록 값들과 함께 예시적인 4 바이트 캐시 블록에 대한 예시적인 캐시 블록 패턴들을 나타내는 블록도이다. 도 8의 예시들은 몇 가지 패턴들을 사용하여 많은 캐시 블록들을 기술하는 방법을 예시한다.
도 8에 도시된 바와 같이, 캐시 블록 패턴 0 1 0 1은 기호 "0"이 값 "FF"에 매핑되고 기호 "1"이 값 "01"에 매핑되는 경우 FF 01 FF 01의 바이트 값들을 갖는 캐시 블록을 기술한다. 유사하게, 이 캐시 블록 패턴은 기호 "0"이 값 "00"에 매핑되고 기호 "1"이 값 "01"에 매핑되는 경우 00 01 00 01의 바이트 값들을 갖는 캐시 블록을 기술하는 데에도 사용 가능하다. 이 캐시 블록 패턴은 또한 기호 "0"이 값 "00"에 매핑되고 기호 "1"이 값 "00"에 매핑되는 경우 00 00 00 00의 바이트 값들을 갖는 캐시 블록을 기술한다. 이러한 케이스들 각각에서, 예시적인 캐시 블록은 캐시 블록 패턴 0 1 0 1로 기술되는데, 그 이유는 동일한 값을 갖는 예시적인 캐시 블록의 특정 바이트 값들의 각각이 캐시 블록 패턴에서 동일한 기호로 표시되기 때문이다.
도 8에 유사하게 도시된 바와 같이, 캐시 블록 패턴 0 1 0 2는 기호 "0"이 값 "00"에 매핑되면 기호 "1"이 값 "01"에 매핑되고 기호 "2"가 값 "02"에 매핑되는 경우 00 01 00 02의 바이트 값들을 갖는 캐시 블록을 기술한다. 이 예시는 3개의 특정 바이트 값들을 갖는 캐시 블록을 나타내는 캐시 블록 패턴 0 1 0 2를 예시한다. 유사하게, 캐시 블록 패턴 0 1 0 2는 기호 "0"이 값 "00"에 매핑되고 기호 "1"이 값 "01"에 매핑되고 기호 "2"가 또한 값 "01"에 매핑되는 경우 00 01 00 01의 바이트 값들을 갖는 캐시 블록을 기술한다. 이 예는 2개의 특정 바이트 값들을 갖는 캐시 블록을 나타내는 캐시 블록 패턴 0 1 0 2를 예시한다. 캐시 블록 패턴 0 1 0 2는 기호 "0"이 값 "00"에 매핑되고 기호 "1"이 값 "00"에 매핑되고 기호 "2"도 값 "02"에 매핑되는 경우 00 00 00 02의 바이트 값들을 갖는 캐시 블록을 또한 기술한다. 이 예는 2개의 특정 바이트 값들을 갖는 캐시 블록을 나타내는 캐시 블록 패턴 0 1 0 2의 두 번째 예를 예시하며, 여기서 특정 캐시 블록들은 서로 다른 배열에 있다.
캐시 블록 패턴 0 1 0 2는 기호 "0"이 값 "00"에 매핑되고 기호 "1"도 값 "00"에 매핑되고 기호 "2"도 값 "00"에 매핑되는 경우 00 00 00 00의 바이트 값들을 갖는 캐시 블록을 또한 기술한다. 이 예시는 하나의 특정 바이트 값을 갖는 캐시 블록을 나타내는 캐시 블록 패턴 0 1 0 2를 예시한다. 이러한 케이스들 각각에서, 예시적인 캐시 블록은 캐시 블록 패턴 0 1 0 2로 기술되며, 이는 캐시 블록 패턴의 기호가 발생하는 각 위치의 특정 바이트 값을 나타내기 때문이며, 경우에 따라 동일한 특정 바이트 값을 나타내는 데 상이한 기호들이 사용 가능하다.
도 8의 예에서 알 수 있듯이, 몇 가지 패턴들을 사용하여 많은 캐시 블록들을 기술할 수 있다. 예를 들어, '모두 0' 캐시 블록을 포함하여 매칭되는 모든 바이트들이 있는 임의의 캐시 블록은 임의의 패턴으로 기술될 수 있다.
각 패턴을 사용하여 다수의 상이한 캐시 블록들의 값들을 기술할 수 있으므로, 가능한 모든 패턴들의 서브세트를 사용하여 가능한 모든 캐시 블록들을 기술할 수 있다. 패턴들이 서브세트에서 제거되면 캐시 블록들의 수도 더 감소될 수 있다.
이상적인 BSC 압축 및/또는 압축해제 알고리즘은 캐시 블록 패턴들의 세트의 가능한 모든 동등하지 않은 패턴을 포함한다(즉, 압축되지 않은 캐시 블록에 있는 바이트들의 가능한 기호 표현의 완전한 리스트). 그러나 가능한 모든 패턴을 포함하는 캐시 블록 패턴 세트를 인덱싱하기 위한 메타데이터는 잠재적으로 너무 커서 압축되지 않은 캐시 블록보다 작은(또는 충분히 작은) 압축 블록을 생성하기 어렵다.
따라서, 일부 구현예는 여전히 원하는 수준의 성능을 산출하는 모든 가능한 캐시 블록 패턴들의 서브세트를 선택하기 위한(예를 들어, BSC 압축 및 압축해제에 필요한 메타데이터 및/또는 하드웨어 복잡성을 제한하기 위해) 방법, 디바이스 및 시스템을 포함한다.
일부 구현예에서, 모든 가능한 캐시 블록 패턴들의 서브세트는 캐시 블록들을 원하는 임계값 비용(예를 들어, 레이턴시 및/또는 에너지 소비 측면에서) 이하에 대해 원하는 타겟 크기 세트로 압축(즉, 양자화된 압축 비율)하도록 선택된 제약을 가장 잘 달성하도록 개발된다.
모든 캐시 블록 패턴들의 세트는 0부터 n-1까지의 숫자로 구성된 모든 n 바이트 스트링들의 세트와 동일하지 않다는 것에 유의한다. 이는 많은 패턴들이 기술할 수 있는 캐시 블록들의 세트와 관련하여 동일하기 때문이다. 사용하는 기호들의 이름만 상이한 모든 패턴들은 동일하다.
예를 들어 0101, 1010 및 1313과 같은 4 바이트 패턴들을 고려한다. 패턴들(및 기타 많은 패턴들)은 모두 첫 번째 및 세 번째 바이트들이 일치하고 두 번째 및 네 번째 바이트들이 일치하는 동일한 캐시 블록들의 세트를 기술한다. 따라서, 모든 가능한 패턴 길이 스트링들의 서브세트를 선택하는 것보다, 일부 구현예에서 서브세트는 각 세트에 대해 하나의 패턴인 기술 가능한 캐시 블록들의 모든 고유 세트들의 서브세트로부터 선택된다.
일부 구현예에서, 고려되는 패턴들의 수는 예를 들어, 비교적 큰 바이트 사전 크기를 사용할 때 구현 하드웨어 영역 및 레이턴시 비용을 임계값 이하로 유지하기 위해(즉, 영역 및/또는 레이턴시를 제한하기 위해) 제한된다. 예를 들어, 일부 구현예에서, 고려되는 패턴들의 수를 제한하는 것은 압축기 및 압축해제기 모두에서 선택기 계산 로직의 복잡성 및 압축기의 비교기들의 수를 제한한다.
따라서 패턴 검색에 대한 제약은 압축된 크기들 d 및 각 크기에 대한 패턴들의 타겟 수 n의 세트이다. 일부 구현예에서 압축된 캐시 블록을 압축해제하는 데 필요한 유일한 메타데이터는 패턴 인덱스이다. 이러한 경우, 메타데이터의
Figure pct00001
비트가 필요하며 여기서 n은 패턴들의 타겟 수이다. 일부 구현예에서, 각 타겟 압축된 크기에 필요한 메타데이터는 바이트 사전 크기 제약들의 세트를 생성하기 위해 차감된다. 일부 구현예에서, 타겟 크기는 상이한 타겟 크기들에 대한 패턴들 사이의 상호작용과 무관하다. 일부 구현예에서, 패턴 검색 제약은 p보다 크지 않은 바이트 사전 크기에 대해 가능한 모든 패턴들의 세트에서 최상의 n으로 패턴들의 세트의 선택을 제한한다.
위에서 논의된 패턴 기반 압축 및 압축해제 기술이 주어지면, 일부 구현예에서는, 일부 경우에 충돌하는 특정 목표를 충족하는 패턴들의 세트를 선택하는 것이 바람직하다. 이 작업을 패턴 검색 문제라고 한다. 하나의 예시적인 목표는 원하는(즉, 적절하게 높은) 양자화된 압축 비율을 달성하기에 충분히 큰 패턴들의 세트를 개발하는 것이다. 달리 말하면, 일부 구현예에서, 패턴들의 세트가 예를 들어 원하는 워크로드들의 세트에 대해(예를 들어, 일반 워크로드들의 세트에서, 워크로드들의 트레이닝 세트에 대해, 대부분의 워크로드들에 대해 등) 원하는(예를 들어, 적절하게 큰) 블록들의 부분(fraction)을 설명하도록 개발된다. 또 다른 예시적인 목표는 원하는(즉, 적절하게 제한되고 및/또는 적절하게 낮은) 메타데이터 크기를 달성하기에 충분히 작은 패턴들의 세트를 개발하는 것이다.
일부 구현예에서, 압축된 표현은 p 패턴을 충분히 기술하기 위해 메타데이터의
Figure pct00002
비트를 필요로 한다. 따라서, 일부 구현예에서, 메타데이터가 압축된 표현에서 공간을 점점 더 많이 차지함에 따라 더 많은 수의 패턴들이 바이트 사전에 사용할 수 있는 바이트 수를 줄이는 경향이 있다. 또한, 패턴들의 수가 많을수록 압축 및 압축해제 논리 회로에 대한 영역 및 대기 시간 오버헤드가 증가한다. 다른 한편으로, 일부 구현예에서, 더 적은 패턴들은 더 적은 비교기들, 압축기의 더 작은 우선순위 인코더, 압축기 및 압축해제기에서 멀티플렉서들에 대한 더 적은 입력들을 필요로 한다.
또 다른 예시 목표는 사용 가능한 압축된 출력 크기를 기초로 패턴을 선택하는 것이다. 위에서 언급된 바와 같이, 양자화된 출력 크기보다 더 적은 바이트로 압축하는 것은 훨씬 더 작은 양자화된 크기의 출력 크기로 압축하지 않는 한 아무런 이점도 제공하지 않는다. 따라서, 일부 구현예에서, 압축된 출력 크기들의 세트가 입력되고, 패턴들의 세트가 각각의 크기에 대해 식별된다.
일부 구현예에서, 캐시 블록 패턴 세트의 개발은 서로 다른 타겟 크기들에 대한 패턴들 간의 상호작용을 고려하지 않는다. 일부 구현예에서 (예를 들어, 단순성을 위해) 다중 타겟 크기 문제는 각각의 양자화된 출력 크기에 대한 별도의 검색 문제로 분해된다. 일부 구현예에서, 인코딩 기술은 예를 들어 고유한 기호로 각각의 타겟 출력 크기를 인코딩함으로써 메타데이터에서 상이한 크기들을 구별하는 데 사용된다. 따라서, 일부 구현예에서, 핵심 검색 문제는 다음과 같이 명시된다: 가능한 모든 패턴들의 세트로부터, 바이트 사전 크기가 n보다 크지 않은 최상의 p 패턴을 선택하는 것.
도 9는 BSC 압축기 및/또는 압축해제기를 생성하기 위한 예시적인 프로세스(900)를 도시하는 흐름도이다. 프로세스(900)는 모든 가능한 캐시 블록 패턴들의 서브세트를 선택하기 위한 프로세스를 포함한다. 모든 가능한 캐시 블록 패턴들의 적절한 서브세트를 선택하는 프로세스는 위에서 논의된 패턴 검색 문제를 해결한다. 프로세스(900)는 또한 서브세트에 기초하여 적절한 압축기 및/또는 압축해제기에 대한 하드웨어 기술(hardware description)을 생성한다. 일반적으로, 예를 들어 연관된 카운터들을 사용하여 캐시 블록 패턴들의 랭크된 세트(ranked set)가 결정된 후, 캐시 블록 패턴들의 랭크된 세트는 이러한 패턴들의 서브세트를 생성하도록 감소된다. 예를 들어, 일부 구현예에서, 압축해제를 위해 n 바이트 이상을 필요로 하지 않는 최상의 p 패턴이다(예를 들어, 여기서 p는 앞서 논의한 바와 같이 타겟 압축 캐시 블록 크기에서 파생된 패턴들의 타겟 수이다).
보다 구체적으로, 단계(910)에서, 트레이닝 프로그램은 캐시 또는 캐시의 모델(예를 들어, 하드웨어 또는 시뮬레이션의)을 사용하여 실행되고 트레이닝 프로그램의 실행 중에 발생하는 캐시 블록들의 트레이스들(예를 들어, 로그)이 캡처된다. 일부 구현예에서, 트레이닝 프로그램은 트레이닝 후에 실행될 프로그램을 나타낸다. 일부 구현예에서, 트레이닝 프로그램은 패턴들이 트레이닝 프로그램 및 타겟 미래 프로그램에서 동일하거나 유사한 비율로 나타나는 경우(예를 들어, 임계값 정도 또는 백분율 유사성 내) 트레이닝 후에 실행될 프로그램을 나타낸다. 트레이스들에 나타나는 캐시 블록 패턴들은 모든 캐시 블록 패턴들의 랭크된 리스트를 생성하기 위해 트레이닝 트레이스들을 기초로 식별되고 랭크된다. 일부 구현예에서, 캐시 블록 패턴들은 트레이닝 트레이스들에 나타나는 캐시 블록들 중 얼마나 많은 캐시 블록이 각 패턴에 의해 표현되는지에 기초하여 랭크된다.
단계(920)에서, 캐시 블록 패턴들의 랭크된 세트는 상이한 특성에 기초하여, 예를 들어, 아래에서 논의되는 바와 같이 4개의 단계들에서, 감소되어 캐시 블록 패턴들의 감소된 세트를 생성한다. 단계(930)에서, 레지스터 전송 언어(RTL) 또는 압축 및 압축해제 하드웨어의 다른 적절한 표현이 캐시 블록 패턴들의 감소된 세트에 기초하여 생성된다.
단계들(910, 920 및 930)의 예시적인 구현예는 다음과 같이 더 자세히 논의된다. 단계(910)에서, 캐시 블록 패턴들의 랭크된 세트를 생성하기 위해 사용된 패턴 카운트들은 트레이닝 트레이스들로부터 유도된다. 이 프로세스를 트레이스 처리라고 한다. 일부 구현예에서, 패턴 카운트들을 도출하기 위해, 트레이스에서 발생하는 패턴들이 식별된다. 주어진 캐시 블록 크기에 대해 가능한 모든 캐시 블록 패턴들의 리스트의 각 캐시 블록 패턴에 대해, 패턴 카운트들을 유도하는 간단한 접근 방식은 트레이스에서 발생한 캐시 블록들 중 해당 패턴이 기술할 수 있는 캐시 블록의 수(즉, 트레이닝 프로그램 실행 중 캐시를 통해 패스됨)를 결정하는 것이다. 그러나 일부 구현예에서는 가능한 모든 패턴들의 수가 엄청나게 많으며 캐시 블록은 여러 패턴들로 기술 가능하다. 따라서, 이러한 방식으로 패턴을 직접 카운팅하는 것은 계산 비용이 많이 들고 일부 구현예에서 어떤 패턴이 어떤 블록을 공유하는지에 대한 유용한 정보를 잃게 된다. 예를 들어, 두 패턴들이 트레이닝 트레이스에서 동일한 캐시 블록의 일부(전부는 아님)를 기술할 수 있는 경우 두 패턴들을 모두 카운팅하여 두 패턴들에 의해 몇 개의 캐시 블록들이 카운팅되었는지 대 패턴들 중 하나에 의해 몇 개의 블록들이 카운팅되었는지 알 수 없게 된다. 이것은 두 패턴들 중 어느 것이 더 많은 패턴들을 나타내는지를 결정해야 하는 구현예에서 불리할 수 있습니다(예를 들어, 효율성을 위해 다른 패턴을 제거하기 위해).
따라서, 일부 구현예에서, 트레이스에 나타나는 각각의 패턴에 대해, 패턴이 캐시 블록을 기술할 수 있는 가장 단순한(즉, 가장 적은 수의 기호들을 포함) 패턴인 캐시 블록들의 수가 결정된다. 일부 구현예에서, 트레이스에 나타나는 각 캐시 블록에 대한 가장 단순한 패턴이 결정되고, 이러한 패턴들 각각이 나타나는 횟수가 카운팅된다. 일부 구현예에서, 캐시 블록에 대한 가장 단순한 패턴을 결정하기 위해, 캐시 블록의 특정 바이트 값들이 캐시 블록에 나타나는 순서대로 어레이에 배치된다(또는 그렇지 않으면 인덱싱됨). 그런 다음, 원래 캐시 블록의 각 바이트 값이 어레이의 인덱스로 대체된다.
단계(910)의 양태의 예시적인 예로서, 도 10은 트레이닝 트레이스로부터 패턴 트레이스를 결정하기 위한 예시적인 프로세스(1000)를 도시하는 흐름도이다. 패턴 트레이스는 트레이닝 트레이스에 나타나는 캐시 블록들을 기술하는 패턴들의 리스트이다. 이 패턴 트레이스는 트레이닝 트레이스에 대한 패턴 카운트를 유도하는 데 사용 가능하다.
단계(1010)에서, 5개의 압축되지 않은 4 바이트 캐시 블록들을 포함하는 예시적인 캐시 트레이스가 예시적인 트레이닝 실행에 기초하여 캡처된다. 단계(1020)에서, 5개의 압축되지 않은 4 바이트 캐시 블록들 각각의 특정 바이트 값들은 그들이 압축되지 않은 캐시 블록에 나타나는 순서대로 어레이에 배치(또는 동등하게 인덱싱)된다. 단계(1030)에서, 각각의 특정 바이트 값을 어레이의 그의 인덱스로 대체함으로써 5개의 압축되지 않은 4 바이트 캐시 블록들 각각에 대해 패턴이 기록된다.
예를 들어, 4 바이트 블록 FF FF 00 00은 단계(1010)에서 캡처된 원본 트레이스에 나타나며, 특정 바이트 값들 FF 및 00을 포함한다. 단계(1020)에서, 이러한 특정 바이트 값들은 FF 00으로 캐시 블록에 그들이 나타나는 순서대로 어레이에 배치(또는 동등하게 인덱싱됨)되며, 여기서 FF는 인덱스 0에 있고 00은 인덱스 1에 있다. 단계(1030)에서, 기록된 패턴 트레이스에서, 원본 트레이스의 바이트 값 FF가 발생할 때마다 인덱스 0으로 교체되고, 원래 트레이스의 바이트 값 00이 발생할 때마다 인덱스 1로 교체된다. 도 10에 도시된 바와 같이, 예시적인 프로세스(1000)는 대응하는 기록된 패턴 트레이스를 산출하기 위해 원본 트레이스의 몇몇 4 바이트 블록들 각각에 대해 수행된다.
예를 들어, 예시적인 프로세스(1000)와 일치하는 프로세스를 사용하여 트레이닝 트레이스로부터 패턴 트레이스가 결정된 후, 패턴 카운트가 결정된다. 예를 들어 원본 트레이스의 예시적인 4 바이트 캐시 블록들 각각이 다른 값을 가지고 있지만, 기록된 패턴 추적의 패턴들 중 하나(이 예에서 패턴 0 0 1 1)는 세 개의 캐시 블록들에 대한 가장 단순한 바이트 패턴 표현이다. 따라서, 이 패턴의 카운트는 3이고 기록된 패턴 트레이스의 다른 두 예시적인 패턴들은 각각 1의 카운트를 갖는다.
패턴 카운트가 결정된 후, 도 9로 돌아가면, 단계(920)에서 캐시 블록 패턴 세트가 감소된다. 일부 구현에서, 캐시 블록 패턴 세트는 각 단계에서 더 많은 패턴들을 연속적으로 절단하는 다중 단계 프로세스에서 감소된다. 예시적인 프로세스(900) 내에서, 단계(920)는 4 단계 프로세스이다. 일부 구현예에서, 각 단계는 이전 단계와 같거나 더 큰 알고리즘 복잡성을 갖는다. 제1 단계는 단계(910)에서 생성된 패턴들 및 카운터들(예를 들어, 캐시 블록 패턴들의 랭크된 세트)를 입력으로 사용한다. 최종(예를 들어, 제4) 단계는 상위 p가 단계(930)에서 RTL을 생성하는 데 사용될 수 있는 패턴들이 정렬된 세트를 출력한다.
단계 1에서, 빈도가 낮은 패턴들이 제거된다. 일부 구현에서, 캐시 블록의 임계값 수 미만에 대한 가장 단순한 기술 패턴인 임의의 패턴이 단계 1에서 제거된다. 일부 구현예에서, 임계값은 이후 단계가 허용 가능한 양의 시간 내에 완료되도록 설정된다. 임계값이 높을수록 나중에 처리할 더 복잡한 단계에 대해 더 적은 패턴이 생성된다. 일부 구현에서 임계값은 프로세스에 정규화(regularization)를 제공하도록 설정된다. 예를 들어, 임계값이 높으면 이후 단계의 압축 결과가 향상되거나, 이 단계의 입력이 이후 단계에 부정적인 영향을 미치는 시나리오를 방지하거나 피할 수 있다. 일부 구현예에서 패턴들이 덜 자주 나타나는 패턴이 덜 유용해야 한다는 경험적 방법을 기초로(예를 들어, 타겟 어플리케이션에서 트레이닝 후 보이는 캐시 블록을 설명할 가능성이 적음) 이 단계에서만 절단된다. 일부 구현예에서 단계 1의 출력은 단계 1의 입력과 동일한 형식이고; 예를 들어, 단계 1에서 절단되지 않은 캐시 블록 패턴들의 리스트이며, 이는 해당 패턴이 가장 간단한 기술 패턴인 트레이스의 캐시 블록 수의 대응하는 카운트를 포함한다.
단계 1에 입력되는 패턴들의 수가 n1인 경우, 단계 1은 O(n 1) 복잡도로 설명 가능하며, 여기서 복잡도는 이 단계에서 수행되는 동작들의 수를 나타낸다. 후속 단계들은 이 기능의 관점에서 이 단계와 관련하여 설명된다.
단계 2에서 트레이닝 트레이스와 관련하여 최대로 포함되지 않는 캐시 블록 패턴들(즉, "최대가 아닌" 캐시 블록 패턴들)은 단계 1에서 출력된 패턴들의 리스트에서 제거된다.
캐시 블록 패턴은 기술하는 기록된 패턴 추적의 캐시 블록들이 기록된 패턴 추적의 다른 캐시 블록 패턴들로 기술할 수 있는 캐시 블록들의 서브세트가 아닌 경우 트레이닝 트레이스에 대해 최대로 포함한다(즉, "최대"이다). 즉, 기록된 패턴 트레이스의 다른 캐시 블록 패턴이 동일한 캐시 블록과 추가 캐시 블록을 기술하지 않는 경우 캐시 블록 패턴이 최대이다. 캐시 블록 패턴은 캐시 블록 패턴에 의해 기술 가능한 캐시 블록들이 기록된 패턴 트레이스의 다른 캐시 블록 패턴에 의해 기술될 수 있는 캐시 블록의 서브세트인 경우 트레이닝 트레이스에 대해 최대가 아니다. 다시 말해서, 캐시 블록 패턴은 기록된 패턴 트레이스의 다른 캐시 블록 패턴이 모든 동일한 캐시 블록들과 트레이스의 추가 캐시 블록을 기술하는 경우 트레이닝 트레이스에 대해 최대가 아니다.
기술하는 캐시 블록들의 세트가 기록된 패턴 트레이스의 다른 패턴에 의해 기술된 캐시 블록들의 서브세트인 경우 패턴이 다른 패턴보다 작다고 말할 수 있기 때문에 기록된 패턴 트레이스에서 캐시 블록 패턴들의 부분적 순서는 그들이 기술하는 트레이스의 캐시 블록들의 세트를 기초로 생성될 수 있다. 캐시 블록 패턴들의 이러한 부분적 순서는 캐시 블록 크기에 대해 가능한 모든 캐시 블록 패턴들의 격자(lattice)를 사용하여 표현될 수 있다. 이 콘텍스트에서, 기록된 패턴 트레이스에서 캐시 블록 패턴들의 부분적 순서는 부분적으로 정렬된 세트를 의미하고; 즉, 모든 패턴들에 대해 서브세트 동작은 반사적(reflexive), 비대칭적(antisymmetric), 전이적(transitive)이다. 부분 순서에서는, 캐시 블록 패턴들의 일부 쌍에 대해, 어느 쪽도 다른 쌍의 서브세트가 아니지만 전체 순서 지정에서는 캐시 블록 패턴 쌍에 대해 다른 하나가 압축한 블록의 서브세트를 압축한다.
도 11은 4 바이트 캐시 블록들에 대한 캐시 블록 패턴들의 예시적인 세트에서 캐시 블록 패턴들 사이의 예시적인 관계를 나타내는 격자 다이어그램이다.
도 11의 격자에서, 서로 다른 패턴들을 연결하는 화살표들은 소스 패턴(화살표의 루트)이 타겟 패턴(화살표의 머리 부분)보다 작다는 것을 나타낸다. 격자의 "바텀(bottom)"은 하나의 특정 바이트 값만을 포함하는 캐시 블록을 기술하는 패턴을 포함한다. 이 예에서, 격자의 바텀은 기호들 "0 0 0 0"을 사용하여 하나의 특정 바이트 값만을 포함하는 캐시 블록을 기술한다. 격자의 "탑(top)"은 캐시 블록 크기에 대한 특정 바이트 값들의 최대 수를 기술하는 패턴을 포함한다(즉, 이 예에서 4 바이트 캐시 블록에 대한 4개의 특정 바이트 값들). 이 예에서, 격자의 탑은 기호들 "0 1 2 3"을 사용하여 4개의 특정 바이트 값들을 포함하는 캐시 블록을 기술한다. 격자의 탑에 더 가까운 패턴들은 바텀에 더 가까운 패턴보다 더 많은 수-즉, 더 최대-의 캐시 블록들을 기술한다. 화살표 헤드에서의 캐시 블록 패턴은 화살표 루트에서의 패턴으로 기술 가능한 모든 캐시 블록들을 기술하고 다른 캐시 블록도 기술한다.
위에서 논의된 바와 같이, 바이트 사전 크기에 대한 제약 n은 일부 구현예에서 타겟 압축된 크기로부터 도출된다. 따라서 양자화된 압축의 경우, n을 도출하는 데 사용된 크기보다 작은 크기로 압축하는 것은 일부 구현예에서 이점을 제공하지 않는다.
따라서 도 9로 돌아가서 단계 2에서, 바이트 사전 크기 제약 조건 n을 여전히 충족하면서, 가능한 한 이 세트를 기술하는 격자의 탑에 가까운, 단계 1로부터 출력되는 캐시 블록 패턴들의 세트의 패턴들은 유지되고 단계 1의 출력과 관련하여 최대로 간주된다.
이 포인트를 설명하기 위해, 1, 2, 3 및 4 바이트 사전들에 대한 모든 캐시 블록 패턴들을 포함하는 도 11의 예시적인 격자 가정한다(즉, 길이가 4 바이트인 모든 캐시 블록들에 대해). 예를 들어, n=3의 제약을 가정할 때, 제약을 준수하는 전체 격자에 대해 최대인 패턴들은 3 바이트 사전이 필요한 패턴들이다. 단계 1에서 입력된 격자 내에 예시적인 기록된 패턴 트레이스들은 도 11의 범례에서 지시된다(즉, 캐시 블록 패턴들 0000, 0010 및 0011). 이 입력을 기초로 3 바이트가 필요한 격자의 패턴들은 단계 1로부터의 입력에 나타나지 않는다. 따라서 이 예에서는 트레이닝 트레이스에 대해 최대인 단계 1로부터 입력된 패턴들은 트레이닝 트레이스에 더 이상 최대 패턴이 나타나지 않기 때문에 0010 및 0011이다. 패턴 0000은 이러한 패턴들 중 하나를 가리키는 화살표의 루트에 있기 때문에 최대가 아니다(즉, 트레이닝 트레이스에 더 많은 최대 패턴들이 나타남).
따라서 단계 2의 출력은 최대 패턴들을 포함하고 최대가 아닌 패턴들을 제외한다. 검색으로부터 최대가 아닌 패턴을 제거하는 것 외에도, 최대 패턴들 각각에 의해 기술된 캐시 블록들의 수의 카운트가 추적된다. 각 최대 패턴에 대해, 카운트는 자신보다 최대가 작거나 동일하게 최대인 모든 패턴들의 카운트를 포함한다. 그러나 최대가 아닌 패턴은 여러 최대 패턴들보다 최대가 적을 수 있으므로 이후 단계들에서 패턴이 이중으로 카운팅되는 것을 방지하기 위해 최대가 아닌 패턴들 및 카운트들의 세트가 유지된다. 일부 구현예에서 이는 캐시 블록들의 동일한 세트가 이후 단계들에서 기술되는 것을 보장한다. 그러나 최대가 아닌 패턴들은 검색 자체에서 제외된다. 달리 말하면, 일부 구현예에서는 단계 2에서 식별된 최대가 아닌 패턴들이 최종 압축 알고리즘 출력에 사용되지 않지만, 최종 압축 알고리즘에 잠재적으로 포함되는 최대 패턴들 중에서 선택하기 위해 나중 단계들에서 잠재적으로 사용된다.
단계 1의 출력과 관련하여 최대인 패턴들의 세트(즉, 단계 2의 출력)는 캐시 블록의 n 또는 그보다 작은 특정 바이트 값들을 나타낼 수 있다(즉, n 또는 그보다 작은 바이트 사전과 함께 사용될 수 있음). 그러나 캐시 블록의 n개의 특정 바이트 값들을 나타내기 위해서는 격자에 대해 최대인 패턴이 필요하다(즉, n 바이트 사전과 함께 사용될 수 있음). 전체 격자에 대해 최대인 패턴은 트레이닝 트레이스와 무관하게 최대로 포괄적이기 때문에 절대 최대 또는 일반적으로 최대라고 한다.
단계 2에 입력되는 패턴들의 수가 n2개라면, 단계 2는 O(n 2 2 ) 복잡도로 기술될 수 있다.
단계 3에서는, 세트 내의 패턴들의 수를 줄이기 위해 상대적으로 최대의 패턴들(즉, 트레이닝 세트에 대해 최대이지만 격자에 관해서는 일반적으로 최대가 아닌 패턴)이 결합된다.
단계 2와 관련하여 논의된 바와 같이, 일부 패턴들은 고려 중인 패턴들의 세트(예를 들어, 트레이닝 트레이스에 존재하는 패턴들)와 관련하여 최대이지만 모든 가능한 패턴들의 세트에 대해서는 그렇지 않다. 다시 말해, 그들은 상대적으로 최대(예를 들어, 트레이닝 트레이스에 대해 최대)이지만 절대적으로 최대가 아니다(즉, 격자에 대해). 상대적으로만 최대인 패턴들은 사용 가능한 바이트 사전 공간을 완전히 활용하지 않는다. 이러한 과소활용(underutilization)은 n 바이트를 초과하는 압축된 블록의 크기를 추가로 줄이는 것이 타겟 하드웨어 어플리케이션에서 유용하지 않기 때문에 이점을 제공하지 않는다. 따라서, 일부 구현예에서, 상대적으로만 최대인 세트의 패턴들은 여전히 제약 조건을 만족하면서 대체되는 패턴들보다 더 최대이고(즉, 격자와 관련하여) 더 큰 격자의 패턴으로, 그러한 패턴이 존재한다면, 대체된다. 더 큰 캐시 블록 패턴은 더 작은 캐시 블록 패턴으로 기술되는 모든 캐시 블록들을 기술하므로, 트레이닝 트레이스에 나타나지 않은 단계 3에서 식별된 더 큰 패턴은 적어도 동일한 캐시 블록들을 기술하도록 보장된다(즉, 단계 3 이후에 기술된 캐시 블록들에서 감소가 없음).
도 11로 돌아가면, 트레이스의 어떤 패턴도 절대적으로 최대가 아니었다. 두 개의 상대적으로 최대인 패턴들 0010 및 0011은 모두 n=3의 제약 조건을 만족하는 패턴 0012보다 덜 최대이다. 따라서, 패턴 0012는 캐시 블록 패턴 세트에서 0010과 0011 모두에 대해 대체될 수 있으므로 동일한 캐시 블록들이 (적어도) 더 적은 수의 패턴들을 사용하여 기술될 수 있다.
도 9로 돌아가서 단계 3의 일부 구현예에서는 고려 중인 모든 패턴 쌍을 결합하려고 시도한다. 예를 들어, 쌍을 결합하기 위해, 쌍의 두 패턴들에 의해 기술되는 캐시 블록들의 세트들의 유니언(union)을 기술할 수 있는 가장 간단한 패턴이 결정된다. 새로운 패턴이 주어진 바이트 사전 크기 제약을 만족하면 쌍의 두 패턴들이 새로운 패턴으로 대체된다. 새로운 패턴보다 덜 최대인 다른 상대적으로 최대인 패턴이 또한 제거된다. 새로운 패턴에 대한 카운터 값을 계산하기 위해 제1 단계에서 해체된(disjoint) 캐시 블록 세트들에 대한 카운터들이 사용된다. 일부 구현예에서, 단계 3은 캐시 블록 패턴들의 쌍이 결합될 수 없을 때까지 절대적으로 최대가 아닌 세트의 캐시 블록 패턴들의 쌍들을 계속 결합한다.
단계 3에 입력되는 패턴들의 수가 n3개라면, 단계 3은 O(n 3 3 ) 복잡도로 기술될 수 있다.
단계 4에서는 단계 3에서 출력된 캐시 블록 패턴들의 서브세트가 선택되며 이는 가장 많은 캐시 블록들의 수를 나타낸다. 일부 구현예에서, 이 서브세트는 먼저 나머지 캐시 블록 패턴들을 반복적으로 정렬하는 프로세스를 통해 선택된다. 반복 정렬에서는, 패턴들의 두 세트가 유지된다. 제1 세트는 첫 번째 반복에서 비어 있고, 제2 세트는 단계 3 이후에 남아 있는 모든 패턴들을 포함한다. 각 반복에서 제1 세트에 의해 압축된(트레이닝 트레이스로부터) 캐시 블록들의 수를 증가시키는 제2 세트로부터의 패턴이 제2 세트에서 제1 세트로 이동된다. 그런 다음 정렬된 리스트로부터 가장 좋은 p 패턴이 선택된다.
도 12는 도 9의 단계 3으로부터 출력된 캐시 블록 패턴들의 세트를 감소시키기 위한 예시적인 프로세스(1200)를 도시하는 흐름도이다. 단계(1210)에서 프로세스는 패턴 없이 시작되고 반복 카운트 i = 0이다. 이 예시적인 반복 카운터는 도 12의 흐름도에서 설명의 편의와 용이함을 위해 단순히 사용되었으며, 반복은 적절한 방식으로 추적 가능함에 유의한다. 단계(1220)에서, 가장 많은 수의 캐시 블록들을 기술하는 패턴이 단계 3으로부터 출력된 패턴들의 리스트로부터 선택된다. 일부 구현예에서, 이것은 단계(1010)과 관련하여 위에서 논의된 캐시 블록 패턴들의 랭크된 세트와 연관된 카운터(즉, 각 패턴에 의해 표현되는 캐시 블록들의 카운트)에 기초하여 결정된다.
타겟 패턴 수가 세트에 아직 추가되지 않았다는 조건(1230)에서, 반복 카운터는 단계(1240)에서 증가하고(또는 반복이 그렇지 않으면 추적됨), 단계(1220)가 반복된다. 타겟 패턴 수는 p를 기준으로 한다. 적어도 하나의 패턴이 세트에 추가된 후, 다음 패턴은 세트의 패턴에 의해 이미 기술된 것보다 많은 추가 캐시 블록을 기술하는 단계(1220)의 이후 반복에서 선택된다. 일부 구현예에서 이러한 방식으로 반복적으로 선택된 패턴들의 정렬된 리스트를 작성하면 각 반복에서 현재 정렬된 리스트가 주어지면 최상의 패턴이 선택된다. 일부 구현예에서 이 보장은 모든 반복에서 현재 패턴들의 세트에 각 나머지 패턴을 추가하는 이점을, 기술 가능한 라인 측면에서, 업데이트해야 한다. 이 검색을 실용적으로 만들기 위해 A* 검색이 사용될 수 있다. 일부 구현예에서, 현재 정렬된 리스트에서 가장 좋은 패턴이 선택된다는 "보장"은 전체 패턴들의 최상의 세트가 선택된다는 보장보다 약하다. 일부 구현에서, "최상의" 패턴은 현재 세트에 추가될 때 현재 세트에 의해 트레이닝 트레이스로부터 압축된 캐시 블록의 수를 가장 많이 증가시키는 패턴이다. A* 검색은 인공 지능 분야에서 알려진 검색 알고리즘의 예이다.
타겟 패턴 수가 세트에 추가되었다는 조건(1230)에서, 캐시 블록 패턴들의 리스트가 완료되고 단계 4에서는 하드웨어 및/또는 소프트웨어에서 나중에 구현하기 위해 HDL 또는 기타 적합한 형식과 같은 패턴들의 리스트를 출력한다.
일부 구현예에서, 단계 4의 반복적인 정렬은 p의 다른 값들에 재사용될 수 있는 단일 정렬된 패턴들의 리스트를 생성한다. 충분히 큰 크기의 정렬된 리스트가 생성되면 리스트의 크기보다 작거나 같은 p의 임의의 값에 대한 탑 p가 선택될 수 있다.
단계 4의 출력은 바이트 사전 크기 제약 n을 존중하는 p 패턴들의 세트이며 단계 3으로부터 입력된 p개의 최상의 캐시 블록 패턴들의 정렬된 리스트이다.
도 9로 돌아가서, 단계(920)에서 캐시 블록 패턴들의 랭크된 세트가 감소된 후, 회로 및/또는 소프트웨어는 이러한 패턴들을 기반으로 BSC 압축기 및/또는 압축해제기를 구현하기 위해 생성될 수 있다. 단계(930)에서, RTL 또는 다른 적절한 하드웨어 기술 코드 또는 구현 회로의 다른 기술이 단계 4로부터 출력된 패턴에 기초하여 압축 및 압축해제 프로세스를 위해 생성된다. 도 3, 4, 5 및 6은 압축 프로세스, 압축 회로, 압축해제 프로세스 및 압축해제 회로의 예이며, 이들은 단계 4의 출력을 기반으로 단계(930)에서 생성 가능하다.
예를 들어, 도 3의 단계(330), 도 4의 논리 회로(450), 도 5의 단계(530), 및 도 6의 논리 회로(620)와 관련하여 도시되고 설명된 캐시 블록 패턴 세트는 일부 구현예서 단계 4의 출력을 기반으로 생성된다.
일부 구현에서, RTL 또는 다른 표현은 단계 4의 캐시 블록 패턴들을 "하드 코딩"하며; 즉, 하드웨어의 캐시 블록 패턴 값들을 명시적으로 정의한다. 일부 구현예에서, 이 하드 코딩은 비-하드 코딩 접근 방식과 비교하여 결과적인 하드웨어의 성능 및 영역 특성을 크게 개선하기 위해 RTL 또는 기타 표현을 입력하는 로직 합성을 용이하게 하는 이점이 있다.
도 13은 기존 알고리즘((BDI(Base-Delta-Immediate), BPC(Bit-Plane Compression), CPack(Cache-Packer), FPC(빈번한 패턴 압축), ZCA(Zero-Content Augmented))의 예시적인 성능과 1 바이트의 메타데이터(UB-M1)를 사용한 바이트 선택 압축의 예시적인 성능의 비교를 나타내는 막대 그래프이며, 기존 알고리즘이 예시적인 바이트 선택 알고리즘의 이상적인 성능의 절반을 수행함을 보여준다. 예를 들어 이상적인 바이트 선택 성능을 위한 압축률은 도면에서 알 수 있듯이 UB-M1은 기존 1 비트 양자화 알고리즘의 2배 이상이다.
표 6은 다양한 압축 알고리즘의 성능 및 오버헤드 특성의 예를 보여준다:
영역 (게이트들) 레이턴시 (사이클)
압축
레이턴시 (사이클)
압축해제
데이터
감소율
바이트 선택 256 64k 1 1 0.19
바이트 선택 4096 440k 2 1 0.21
CPack 26k 13 8 0.15
BPC 68k 7 7 0.15
BDI - 1 1 0.12
FPC - 3 5 0.11
일부 구현예에서 BSC의 데이터 압축은 다른 알고리즘보다 크지만 단일 사이클 압축 및 압축해제는 대응하는 레이턴시를 초래한다. 일부 구현예에서 다이 영역 및 압축 레이턴시(예를 들어, 레이턴시의 한 사이클)은 더 높은 데이터 감소를 위해 교환될 수 있다.
본 명세서에 개시된 교시는 데이터 스토리지 용량 및/또는 데이터 송신 대역폭이 문제인 임의의 하드웨어에서 유용할 수 있다. 이는 모든 CPU, GPU 및 SoC를 포함한다. 본 명세서에 개시된 교시는 가장 많은 수의 압축된 블록들을 알고리즘에 제공하기 위해 캐시 블록 압축 알고리즘의 설계를 자동화한다. 본 명세서의 개시에 기초하여 많은 변형이 가능하다는 것을 이해해야 한다. 피처들과 요소들이 특정 조합으로 위에서 설명되었지만, 각 피처 또는 요소는 다른 피처 및 요소 없이 단독으로 또는 다른 피처 및 요소와 함께 또는 없이 다양한 조합으로 사용될 수 있다.
도면에 예시되고 및/또는 본 명세서에 설명된 다양한 기능 유닛들(이에 제한되는 것은 아니지만, 프로세서(102), 입력 드라이버(112), 입력 디바이스(108), 출력 드라이버(114), 출력 디바이스(110), 가속 처리 디바이스(116), 스케줄러(136), 그래픽 처리 파이프라인(134), 컴퓨팅 유닛(132), SIMD 유닛(138)을 포함하는)은 범용 컴퓨터, 프로세서, 또는 프로세서 코어로서, 또는 비일시적 컴퓨터 판독 가능 매체 또는 범용 컴퓨터, 프로세서 또는 프로세서 코어에 의해 실행 가능한 다른 매체에 저장된 프로그램, 소프트웨어, 또는 펌웨어로서 구현될 수 있다. 제공된 방법은 범용 컴퓨터, 프로세서 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서는 예를 들어 범용 프로세서, 특수 목적 프로세서, 기존 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로 프로세서들, DSP 코어와 관련된 하나 이상의 마이크로프로세서들, 제어기, 마이크로제어기, 주문형 집적 회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA) 회로, 다른 유형의 집적 회로(IC) 및/또는 상태 머신을 포함한다. 이러한 프로세서는 처리된 하드웨어 설명 언어(HDL) 커맨드 및 넷리스트(컴퓨터 판독 가능 매체에 저장할 수 있는 명령어)를 포함하는 기타 중간 데이터의 결과를 사용하여 제조 프로세스를 구성하여 제조될 수 있다. 이러한 처리의 결과는 마스크워크(maskwork)일 수 있으며, 이는 이후 반도체 제조 프로세스에서 사용되어 본 개시의 특징을 구현하는 프로세서를 제조할 수 있다.
본 명세서에 제공된 방법 또는 순서도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독 가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체의 예는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 자기 매체, 예를 들어 내부 하드 디스크 및 이동식 디스크, 자기 광학 매체, 및 CD-ROM 디스크 및 디지털 다목적 디스크(DVD)와 같은 광 미디어를 포함한다.

Claims (20)

  1. 패턴 기반(pattern-based) 캐시 블록(cache block) 압축을 수행하기 위해 압축기에서 구현되는 방법으로서, 상기 방법은:
    압축되지 않은 캐시 블록을 입력하는 단계;
    상기 압축되지 않은 캐시 블록 내에서 바이트 값(byte value)들을 식별하는 단계;
    상기 바이트 값들에 기초하여 캐시 블록 패턴들의 세트에서 캐시 블록 패턴을 검색하는 단계; 및
    상기 바이트 값들 및 상기 캐시 블록 패턴을 기초로 압축된 캐시 블록을 출력하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 바이트 값들을 기호(symbol)들로 변환하고 상기 압축되지 않은 캐시 블록을 상기 기호들로 표현하는 단계를 더 포함하고, 각각의 기호는 특정 캐시 블록을 나타내는, 방법.
  3. 제2항에 있어서, 상기 기호들에 기초하여 상기 캐시 블록 패턴들의 세트를 검색함으로써 상기 바이트 값들에 기초하여 상기 캐시 블록 패턴들의 세트에서 캐시 블록 패턴을 검색하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서, 상기 압축된 캐시 블록은 상기 바이트 값들 및 상기 캐시 블록 패턴들의 세트에 대한 인덱스(index)를 포함하는, 방법.
  5. 제1항에 있어서, 상기 압축된 캐시 블록은 바이트 사전(byte dictionary) 및 메타데이터(metadata)를 포함하는, 방법.
  6. 제5항에 있어서, 상기 메타데이터는 상기 캐시 블록 패턴들의 세트에 대한 인덱스를 포함하는, 방법.
  7. 제5항에 있어서, 상기 바이트 사전은 상기 바이트 값들 각각을 포함하고, 상기 바이트 값들 각각에 대해 상기 바이트 사전은 단 하나의 사본(copy)만을 포함하는, 방법.
  8. 패턴 기반 캐시 블록 압축해제(decompression)를 수행하기 위해 압축해제기에서 구현되는 방법으로서, 상기 방법은:
    압축된 캐시 블록을 입력하는 단계;
    상기 캐시 블록의 메타데이터에 기초하여 캐시 블록 패턴을 식별하는 단계;
    상기 캐시 블록 패턴을 상기 캐시 블록의 바이트 사전에 적용하는 단계; 및
    상기 캐시 블록 패턴 및 상기 바이트 사전을 기초로 압축되지 않은 캐시 블록을 출력하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 압축된 블록은 바이트 값들 및 캐시 블록 패턴들의 세트에 대한 인덱스를 포함하는, 방법.
  10. 제8항에 있어서, 상기 바이트 사전은 상기 압축되지 않은 캐시 블록의 바이트 값들을 포함하는, 방법.
  11. 제10항에 있어서, 상기 바이트 사전은 상기 바이트 값들 각각을 포함하고, 상기 바이트 값들 각각에 대해, 상기 바이트 사전은 하나의 사본만을 포함하는, 방법.
  12. 제8항에 있어서, 상기 메타데이터는 캐시 블록 패턴들의 세트에 대한 인덱스를 포함하는, 방법.
  13. 제8항에 있어서, 상기 캐시 블록의 상기 메타데이터에 기초하여 상기 캐시 블록 패턴을 식별하는 단계는 상기 메타데이터에 기초하여 캐시 블록 패턴들의 세트에서 상기 캐시 블록 패턴을 검색하는 단계를 포함하는, 방법.
  14. 제8항에 있어서, 상기 캐시 블록 패턴은 상기 바이트 사전의 적어도 하나의 바이트에 대응하는 적어도 하나의 기호를 포함하는, 방법.
  15. 제8항에 있어서, 상기 압축된 캐시 블록은 바이트 값들을 포함하는, 방법.
  16. 제8항에 있어서, 상기 캐시 블록의 상기 바이트 사전은 상기 압축되지 않은 캐시 블록의 특정 바이트 값들을 포함하는, 방법.
  17. 패턴 기반 캐시 블록 압축을 위해 구성된 하드웨어를 생성하는 방법으로서, 상기 방법은:
    캐시 트레이스(cache trace)를 입력하는 단계;
    상기 캐시 트레이스에 기초하여 캐시 블록 패턴들의 세트를 결정하는 단계;
    상기 캐시 블록 패턴들의 세트로부터 캐시 블록 패턴들의 서브세트(subset)를 결정하는 단계-여기서, 상기 캐시 블록 패턴들의 서브세트는 압축된 크기들의 세트 및 각 크기에 대한 패턴들의 타겟 수에 기초하여 결정됨-; 및
    상기 캐시 블록 패턴들의 결정된 서브세트에 기초하여 기술(description)을 출력하는 단계를 포함하는, 방법.
  18. 제17항에 있어서, 상기 패턴들의 서브세트를 결정하는 단계는:
    랭크된(ranked) 캐시 블록 패턴들의 세트를 생성하기 위해 상기 캐시 트레이스에서의 발생 빈도에 기초하여 상기 캐시 블록 패턴들의 세트를 랭크화하는 단계를 더 포함하는, 방법.
  19. 제18항에 있어서, 상기 패턴들의 서브세트를 결정하는 단계는:
    임계(thresholded) 캐시 블록 패턴들의 세트를 생성하기 위해 임계 빈도(threshold frequency) 미만으로 캐시 트레이스에서 발생하는 패턴들을 제거함으로써 상기 랭크된 캐시 블록 패턴들을 감소시키는 단계; 및
    국부적으로(locally) 최대 캐시 블록 패턴들의 세트를 생성하기 위해 상기 임계 캐시 블록 패턴들로부터 최대로 포괄적이지 않는 캐시 블록 패턴들을 제거하는 단계를 더 포함하는, 방법.
  20. 제19항에 있어서, 상기 패턴들의 서브세트를 결정하는 단계는:
    절대 최대 캐시 블록 패턴들의 세트를 생성하기 위해 상기 국부적으로 최대 캐시 블록 패턴들의 세트의 상대적으로 최대 패턴들을 결합하는 단계; 및
    상기 절대 최대 캐시 블록 패턴들의 세트 중 어느 것이 더 많은 캐시 블록들을 기술하여 상기 캐시 블록 패턴들의 서브세트를 결정하는지에 기초하여 상기 절대 최대 캐시 블록 패턴들의 세트의 서브세트를 반복적으로 정렬하는 단계를 더 포함하는, 방법.
KR1020227019995A 2019-11-25 2020-09-23 패턴 기반 캐시 블록 압축 KR20220100030A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962939990P 2019-11-25 2019-11-25
US62/939,990 2019-11-25
PCT/US2020/052323 WO2021108021A1 (en) 2019-11-25 2020-09-23 Pattern-based cache block compression
US17/029,158 US12001237B2 (en) 2020-09-23 Pattern-based cache block compression
US17/029,158 2020-09-23

Publications (1)

Publication Number Publication Date
KR20220100030A true KR20220100030A (ko) 2022-07-14

Family

ID=75974136

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227019995A KR20220100030A (ko) 2019-11-25 2020-09-23 패턴 기반 캐시 블록 압축

Country Status (5)

Country Link
EP (1) EP4066121A4 (ko)
JP (1) JP2023503034A (ko)
KR (1) KR20220100030A (ko)
CN (1) CN114730295A (ko)
WO (1) WO2021108021A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001134575A (ja) * 1999-10-29 2001-05-18 Internatl Business Mach Corp <Ibm> 頻出パターン検出方法およびシステム
US6640283B2 (en) * 2002-01-16 2003-10-28 Hewlett-Packard Development Company, L.P. Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US9292449B2 (en) * 2013-12-20 2016-03-22 Intel Corporation Cache memory data compression and decompression
US9780805B2 (en) * 2014-10-22 2017-10-03 International Business Machines Corporation Predicate application through partial compression dictionary match
US10542457B2 (en) * 2015-04-20 2020-01-21 Qualcomm Incorporated Enhanced compression formats for data compression

Also Published As

Publication number Publication date
EP4066121A1 (en) 2022-10-05
WO2021108021A1 (en) 2021-06-03
JP2023503034A (ja) 2023-01-26
CN114730295A (zh) 2022-07-08
US20210157485A1 (en) 2021-05-27
EP4066121A4 (en) 2023-12-20

Similar Documents

Publication Publication Date Title
US11127167B2 (en) Efficient matrix format suitable for neural networks
CN111652368B (zh) 一种数据处理方法及相关产品
CN112292816B (zh) 处理核心数据压缩和存储系统
US10332008B2 (en) Parallel decision tree processor architecture
US10884744B2 (en) System and method of loop vectorization by compressing indices and data elements from iterations based on a control mask
CN110895715A (zh) 存储高效的神经网络
US20140025905A1 (en) Methods and systems for handling data received by a state machine engine
Andrzejewski et al. GPU-WAH: Applying GPUs to compressing bitmap indexes with word aligned hybrid
US20150262062A1 (en) Decision tree threshold coding
US20170214930A1 (en) Gpu-assisted lossless data compression
US20160285473A1 (en) Scalable High-Bandwidth Architecture for Lossless Compression
US20150262063A1 (en) Decision tree processors
US8515882B2 (en) Efficient storage of individuals for optimization simulation
US9137336B1 (en) Data compression techniques
WO2021198809A1 (en) Feature reordering based on sparsity for improved memory compression transfers during machine learning jobs
Ozsoy et al. Optimizing LZSS compression on GPGPUs
Knorr et al. ndzip-gpu: efficient lossless compression of scientific floating-point data on GPUs
US9570125B1 (en) Apparatuses and methods for shifting data during a masked write to a buffer
CN117435855A (zh) 用于进行卷积运算的方法、电子设备和存储介质
CN111753824A (zh) 使用神经网络翻译模型改进图像分割
US12001237B2 (en) Pattern-based cache block compression
KR20220100030A (ko) 패턴 기반 캐시 블록 압축
CN118043821A (zh) 混合稀疏压缩
US20210174259A1 (en) Deep learning numeric data and sparse matrix compression
CN112085154A (zh) 用于神经网络的压缩和推断加速的非对称量化