KR20190032527A - 어드레스를 압축하기 위한 방법 및 장치 - Google Patents

어드레스를 압축하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20190032527A
KR20190032527A KR1020197005418A KR20197005418A KR20190032527A KR 20190032527 A KR20190032527 A KR 20190032527A KR 1020197005418 A KR1020197005418 A KR 1020197005418A KR 20197005418 A KR20197005418 A KR 20197005418A KR 20190032527 A KR20190032527 A KR 20190032527A
Authority
KR
South Korea
Prior art keywords
memory address
stored
cache
tag
transaction
Prior art date
Application number
KR1020197005418A
Other languages
English (en)
Other versions
KR102219845B1 (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 KR20190032527A publication Critical patent/KR20190032527A/ko
Application granted granted Critical
Publication of KR102219845B1 publication Critical patent/KR102219845B1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0815Cache consistency protocols
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/061Improving I/O performance
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0683Plurality of storage devices
    • 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

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)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

전송을 위해 어드레스를 압축하는 방법과 장치는, 제2 디바이스 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 소스로부터 제1 디바이스에서 수신하는 것을 포함한다. 메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되는지 결정된다. 메모리 어드레스의 제1 파트가 캐시 내에 저장되지 않는다면, 메모리 어드레스의 제1 파트는 캐시 내에 저장되고, 전체 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보는 제2 디바이스로 전송된다. 메모리 어드레스의 제1 파트가 캐시 내에 저장되면, 오직 메모리 어드레스의 제2 파트 및 어드레스의 제1 파트가 캐시 내에 저장된 웨이를 나타내는 식별자가 제2 디바이스로 전송된다.

Description

어드레스를 압축하기 위한 방법 및 장치
관련된 출원에 대한 상호 참조
본 출원은 2016년 8월 17일에 출원된 미국 가출원 번호 62/376,096 및 2016년 11월 8일에 출원된 미국 출원 번호 15/345,639의 이익을 청구하고, 상기의 내용은 완전히 제시된 것과 같이 본원에 참조로서 포함된다.
칩들(가령, 프로세서들) 사이의 링크는 동일한 세트의 와이어를 통해 제어 정보와 데이터를 전송한다. 글로벌 메모리 상호접속(GMI) 링크 상에서, 가령, 전송된 각각의 링크 패킷은 128B 폭이다. 링크를 통한 전형적인 요청 전송은, 트랜잭션을 완료하기 위해, "요청" 커맨드, "응답" 커맨드 및 "수신확인"(ACK) 커맨드를 포함한다. 이들 3개의 커맨드는 제어 패킷이고, 오버헤드로 고려된다. 시스템 내의 전형적인 캐시 라인은 64B이다. 그러므로, 링크를 통해 데이터의 64B를 전송하기 위해, 커맨드 패킷을 전송하기 위해서는, 4개의 링크 패킷과 또 다른 3개의 링크 패킷이 소요된다.
좀 더 자세한 이해는 첨부 도면과 함께 예시에 의해 주어진 다음 설명으로부터 얻을 수 있다.
도 1은 하나 이상의 개시된 예시가 실행될 수 있는 예시적인 디바이스의 블록도이고;
도 2는 예시적인 복수의 다이 시스템의 블록도이고;
도 3은 어드레스를 압축하기 위한 예시적인 방법의 순서도이고; 및
도 4는 인덱스와 웨이의 예시적인 테이블이다.
프로세서 다이들 간의 링크 대역폭은, 더 낮은 사용가능한 대역폭과 오버헤드 때문에, 동일한 세트의 와이어를 통해 제어 정보와 데이터를 전송하기 위한 최상의 자원이다. 링크(가령, GMI/GOP/HT/PCIe) 대역폭을 보존하기 위해, 고도의 로컬리티를 제시하는 어드레스 스트림이 압축될 수 있다. 본 방법이 본원에서 좀 더 자세히 기술되더라도, 송신 링크 제어기(가령, 링크 인터페이스 모듈)는 요청 스트림 마다 전송되었던 마지막 최고 어드레스 비트를 유지하는데, 이는, 본원에서 기술된 맥락에서, 특정 프로세서(가령, 중앙 프로세싱 유닛(CPU)), 스레드 또는 입력/출력(I/O) 스트림을 말한다. 다음의 요청 어드레스의 상위 비트가 그 동일한 스트림으로부터의 마지막 요청의 저장된 상위 비트에 매칭될 때, 요청 패킷은 압축된 어드레스로 마킹되고, 상위 비트는 패킷된 GMI 패킷 내에 포함되지 않는다. 어드레스 압축 요청의 수신에 응답하여, 수신 링크 제어기는 그리고 나서, 동일한 스트림의 마지막 요청에 대한 상위 어드레스 비트의 지역적으로 유지된 복사본을 불러옴에 의해, 완전한 요청 어드레스를 재생성한다.
예를 들어, 어드레스를 압축하기 위한 방법이 본원에서 개시된다. 본 방법은 제2 디바이스 상의 메모리 로케이션에 대한 메모리 어드레스를 포함하는 트랜잭션을 소스로부터 제1 디바이스에서 수신하는 단계를 포함하되, 메모리 어드레스는 제1 파트 및 제2 파트를 포함한다. 메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되는지 결정된다. 메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되지 않는다면, 메모리 어드레스의 제1 파트는 제1 디바이스의 캐시 내에 저장되고, 전체의 압축되지 않은 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보는 제2 디바이스로 전송된다. 메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되면, 오직 메모리 어드레스의 제2 파트 및 어드레스의 제1 파트가 제1 디바이스의 캐시 내에 저장된 웨이를 나타내는 식별자를 포함하는 압축된 메모리 어드레스는 제2 디바이스로 전송된다.
도 1은 하나 이상의 개시된 실시예가 실행될 수 있는 예시적인 디바이스(100)의 블록도이다. 디ASIC바이스(100)는 가령, 컴퓨터, 게이밍 디바이스, 휴대용 디바이스, 셋-톱 박스, 텔레비젼, 모바일폰 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(100)는 프로세서(102), 메모리(104), 저장소(106), 하나 이상의 입력 디바이스(108) 및 하나 이상의 출력 디바이스(110)를 포함한다. 또한, 디바이스(100)는 입력 드라이버(112) 및 출력 드라이버(114)를 선택적으로 포함한다.
프로세서(102)는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 동일한 다이에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함할 수 있는데, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치될 수 있거나, 프로세서(102)와 별도로 위치될 수 있다. 메모리(104)는, 가령, 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM) 또는 캐시와 같은 휘발성 또는 비-휘발성 메모리를 포함할 수 있다.
저장소(106)는 가령, 하드 디스크 드라이브, 고체 상태 드라이브, 광학 디스크 또는 플래시 드라이브와 같은 고정되거나 삭제가능한 저장소를 포함할 수 있다. 입력 디바이스(108)는 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체인증 스캐너 또는 네트워크 연결부(가령, 무선 IEEE 802 신호의 전송 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)를 포함할 수 있다. 출력 디바이스(110)는 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 광, 안테나 또는 네트워크 연결부(가령, 무선 IEEE 802 신호의 전송 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)를 포함할 수 있다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스(108)와 통신하고, 프로세서(102)가 입력 디바이스(108)로부터의 입력을 수신하도록 허용한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스(110)와 통신하고, 프로세서(102)가 출력을 출력 디바이스(110)로 전송하도록 허용한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적인 구성요소라는 것과 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는다면, 디바이스(100)가 동일한 방식으로 작동할 것이라는 점에 유의한다.
도 2는 복수의 다이 장치(200)의 예시의 블록도이다. 다이 장치(200)는 하나 이상의 다이(210)(가령, 다이 1(2101), 다이 2(2102) 및 다이 3(2103)으로 지정됨)를 포함한다. 각각의 다이(210)는 링크 제어기(211), 링크 어드레스 캐시(212), I/O 디바이스(213) 및 프로세서(214)를 포함한다. 캐시(212)는 상기 기술된 도 1의 메모리(104)와 실질적으로 유사할 수 있다. I/O 디바이스는 상기 기술된 도 1의 요소(108, 110, 112 및 114)를 포함할 수 있고, 프로세서(214)는 상기 기술된 도 1의 프로세서(102)와 실질적으로 유사할 수 있다. 링크 제어기(211)는 다이들(210) 간의 통신을 제어한다. 예를 들어, 도 2에 도시된 바와 같이, 다이 2(2102)는 다이 1(2101)과 다이 3(2103)과 통신상태에 있다. 따라서, 각각의 다이(210)의 각각의 쌍에 대한 링크 제어기(211)는 이들 두 개의 다이들 간의 통신 링크를 제어한다. 각각의 다이(210) 내의 링크 제어기(211)는, 동일한 다이(210) 내의 캐시(212), I/O 디바이스(213) 및 프로세서(214)와 통신하여, 어드레스를 압축하기 위한 아래 기술된 방법을 수행하는데 도움을 준다.
도 3은 어드레스를 압축하기 위한 예시적인 방법(300)의 순서도이다. 단계(310)에서, 트랜잭션은 소스에 의해 생성되는데, 트랜잭션은, 트랜잭션을 생성한 소스와 상이한 다이(210) 상에 저장된 메모리 어드레스 로케이션을 포함한다. 예를 들어, 다시 도 2를 참조하면, 다이 1(2101)의 프로세서(214)에서 실행되는 스레드는 다이 2(2102) 상의 메모리에 위치된 메모리 어드레스를 포함하는 트랜잭션을 생성한다. 즉, 다이 1(2101)의 프로세서(214) 상에서 실행되는 스레드는, 다이 2(2102) 상에 위치된 DRAM으로 리드 또는 라이트를 생성하거나, 실행 동안에, 다이 2(2102) 상에 위치된 어드레스로의 코드 페치를 요한다. 대안적으로, 다이 1(2101)의 I/O 디바이스(213)는 다이 2(2102) 상에 위치된 입력/출력 트랜잭션(가령, 리드 또는 라이트)과 관련된 어드레스를 생성한다. 또한, 어드레스는 다이 3(2103) 상에, 또는, 존재하는 임의의 다른 추가적인 다이 상에 위치되는 경우일 수 있다.
트랜잭션이 생성되면(가령, 다이 1(2101) 상의 소스에 의해), 다이 1(2101)의 링크 제어기(211)는 인덱스를 형성하고, 로컬 캐시(212) 내의 매치에 대해 태그 부분을 비교한다(단계 320). 태그 부분은 생성된 트랜잭션 내의 메모리 어드레스의 상위 비트를 말하고, 압축되지 않은 128 비트 폭인 메모리 어드레스에서 가령, 28 비트 폭이다.
인덱스는 가령, 각각의 스트림을 고유하게 식별하는 정보에 기초하여 형성된다. 이는, 어드레스를 생성했던 CPU, 코어, 스레드 또는 I/O 디바이스를 식별하는 정보를 포함한다. 또한, 어드레스 비트, 가상 채널 지시자, 리드/라이트 지시자 또는 그 밖의 정보의 어떤 조합은 특정한 소스(가령, 스레드 또는 I/O 스트림)로부터의 트랜잭션을 캐시 내의 특정한 인덱스로 맵핑하는데 사용될 수 있다. 따라서, 각각의 스트림은 구체적인 인덱스로 맵핑되어서, 관련없는 스트림은 캐시 내의 어드레스를 지속적으로 대체하지 않고, 효율성을 낮추지 않는다.
때때로, CPU와 같은 동일한 디바이스 또는 가령, 스레드를 생성하는 디바이스는 복수의 어드레스 스트림을 생성한다. 생성된 트랜잭션은, 어드레스의 하나 이상의 스트림을 통해 메모리를 리딩하고, 어드레스의 상이한 스트림을 통해 메모리의 하나 이상의 상이한 영역에 라이팅하고, 어드레스의 또 다른 스트림을 사용하여 코드를 페칭하는 인터리브된 트랜잭션을 포함할 수 있다. 스트림을 생성하는 프로세스에 의해 사용되는 스트림의 수는 하드 리미트(hard limit)가 없다.
그러므로, 각각의 캐시 인덱스는, 캐시가 마지막 4개의 상이한 어드레스 스트림(즉, 상위 비트)을 포함하도록 하는 결합성의 복수의 웨이(가령, 이 경우 4)를 포함한다. I/O 디바이스는 심지어 더 많은 어드레스 스트림이 인터리브되도록 할 수 있다. 따라서, 복수의 인덱스는, 유용한 어드레스가 조급하게 오버라이트되는 것을 피하기 위해, 어드레스 스트림을 더 많은 인덱스에 걸쳐 분산하기 위해, I/O 소스 마다 할당된다. 이러한 경우, 몇몇의 어드레스 비트는 관련된 어드레스를 상이한 엔트리에 맵핑하는데 사용된다. 또한, 리드 및 라이트가 어드레스 스트림과 독립적이기 때문에, 리드 및 라이트는 상이한 엔트리에 맵핑된다. 수신 링크 제어기는 특정한 트랜잭션을 위한 캐시 인덱스를 생성하기 위해, 동일한 정보를 사용가능하고, 동일한 알고리즘을 사용하도록 할 필요가 있어서, 패킷을 압축해제할 때, 어드레스를 리드(read)하기 위해, 새로운 어드레스를 저장하기 위한 엔트리를 찾을 수 있다는 것에 유의한다. 단계(330)에서, 태그가 로컬 캐시 내에 저장된 태그와 매칭하는지 결정된다. 예를 들어, 다이 1(2101)의 링크 제어기(211)는, 태그가 다이 1(2101)의 캐시 메모리(212) 내에 저장된 태그와 매칭하는지 알기 위해 확인한다. 단계(330)에서 매칭이 없다면, 태그는 로컬 캐시 메모리의 구체적인 웨이에 저장되고, 전체 어드레스 및 어떤 웨이가 사용되어야 하는지에 관한 정보를 포함하는 압축해제된 패킷은 수신 링크 제어기로 전송된다(단계 340).
그러므로, 어드레스 정보는 송신자에 의해 표시된, 캐시의 특정한 웨이로 저장된다. 예를 들어, 어드레스를 포함하지 않는 임의의 웨이(가령, '유효한' 이라고 마킹되지 않음)가 선택된다. 모든 웨이가 유효하다면, 하나가 선택된다(가령, 랜덤하게). 대안적인 예시에서, 어떤 엔트리가 최근에 가장 적게 사용되었는지(할당되거나, 패킷을 압축하기 위해 사용됨) 추적되고, 교체된다. 예를 들어, 다이 1(2101)의 링크 제어기(211)가 어드레스를 포함하는 트랜잭션을 수신하되, 어드레스의 태그가 다이 1(2101)의 캐시 메모리(212)(즉, 다이 1(2101)의 로컬 캐시 메모리) 내에 저장된 것과 매칭되지 않는다면, 다이 1(2101)의 링크 제어기(211)는, 태그와 그것이 저장되는 웨이를 나타내는 인덱스를 다이 1(2101)의 캐시 메모리(212) 내의 테이블 내에 저장한다. 웨이는 방식("웨이")을 나타내는데, 여기서, 태그가 저장되고, 어드레스를 생성했던 소스로부터 트랜잭션의 타입을 나타낼 수 있다(가령, 프로세서, 리드 요청 또는 라이트 요청으로부터의 명령어 페치).
도 4는 캐시 메모리 내에 저장될 수 있는 인덱스 및 웨이의 예시적인 테이블(400)이다. 테이블(400)은 로우(0-40)에 대응되는 복수의 인덱스(410)(4100, 4101, 4102, ..., 41039, 및 41040 로 지정됨)를 포함한다. 40개의 인덱스가 도시되더라도, 테이블은 원하는대로 더 많거나 더 적게 포함할 수 있다. 추가적으로, 테이블(400) 내에 표시된 4개의 웨이(420)(4201, ..., 4204으로 지정됨)가 있다. 다시, 더 많거나 더 적은 웨이가 원하는대로 저장될 수 있다는 것에 유의해야 한다. 또한, 테이블(400)은 트랜잭션의 소스에 의존하여 더욱 분리될 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 로우(0-31)는 CPU 상에서 실행되는 스레드에 의해 생성된 CPU 트랜잭션에 대응된다. 로우(32-35)는 I/O 리드 트랜잭션에 대응되는 반면, 로우(36-40)는 I/O 라이트 트랜잭션에 대응된다. 태그는 인덱스 로우(즉, 410) 및 웨이 컬럼(즉, 420)에 대응되는 셀 내에 저장된다.
그러므로, 다시 단계(340)를 참조하면, 다이 1(2101)의 링크 제어기(211)가 단계(330)에서 로컬 메모리 내의 태그에 대한 매치를 찾지 못한다면, 인덱스를 형성하고, 태그를 테이블(400) 내의 웨이에 저장한다. 예를 들어, 트랜잭션이 프로세서(214) 상에서 실행되는 스레드로부터 수신되었다면, 태그는 인덱스 0, 웨이 0(즉, 로우 4100, 컬럼 4201) 내에 저장될 수 있다. 캐시 메모리가 가득차면, 인덱스는 새로운 인덱스를 저장하기 전에, 우선 삭제될 필요가 있다는 것에 유의해야 한다. 그러므로, 테이블(400)이 가득차는 경우가 있다면, 다이 1(2101)의 링크 제어기(211)는 인덱스를 선택하여 삭제하고, 새로이 생성되었던 어드레스 태그 및 웨이를 그 인덱스 로우에 저장한다. 예를 들어, 교체되어야 하는 인덱스 내의 임의의 웨이가 선택되지만, 각각의 인덱스는 인덱스 생성 알고리즘을 통해 구체적이 소스와 관련되어서, 특정한 트랜잭션은 하나의 인덱스로 맵핑되고, 오직 그 인덱스만, 그곳에 맵핑되었던 임의의 트랜잭션에 의해 액세스될 수 있다.
대안적으로, 샌딩 링크 제어기는, 트랜잭션의 특정한 소스와 관련된 인덱스를 추적하고, 그 소스를 위해 저장된 인덱스를 삭제한다. 예를 들어, 트랜잭션이 프로세서 스레드 "5"로부터 수신되면, 다이 1(2101) 상의 링크 제어기는 어떤 인덱스가 스레드 5와 관련되는지 검사하고, 이들 인덱스 중 하나를 삭제하며, 새로운 트랜잭션을 위해 형성된 새로운 인덱스를 저장한다. 또 다른 대안예로서, 최근에 가장 적게 사용된 어드레스가 식별되고, 그 인덱스가 삭제된다.
태그가 저장되면, 다이 1(2101)의 링크 제어기(211)는, 전체 어드레스 및 저장된 웨이와 관련된 정보를 포함하는 압축해제된 패킷을 다이 2(2102)의 링크 제어기로 전송한다. 저장된 태그와 웨이와 관련된 정보는 가령, 웨이를 식별하는 패킷의 헤더에 추가되는 2비트의 형태이다. 즉, 어드레스 캐시가 현재 어드레스를 할당해야 함을 나타내기 위해 1 비트가 전송되고, 현재 트랜잭션 맵핑이 작성되어야하는 단일 인덱스와 연관된 4 웨이 중 어느 것을 나타내는지 2 비트가 표시된다. 인덱스는 압축해제된 트랜잭션의 콘텐츠로부터 파생된다. 충돌을 피하기 위해, 다이 1(2101) 상의 송신 링크 제어기는 현재 트랜잭션 어드레스를 다이 2(2102)상의 링크 제어기에 송신하기 전에, 그 캐시 상에 업데이트/매칭되는 동일한 순서로 동일한 인덱스에 액세스하는 모든 트랜잭션을 송신한다. 그렇지 않으면, 동일한 인덱스가, 그 인덱스와 관련된 제1 트랜잭션이 프로세스되기 전에, 다음의 트랜잭션에 의해 수정된다면, 수신 링크 제어기는 전송된 제1 트랜잭션과 관련된 태그 및 웨이에 대한 정확한 로케이션에 저장 또는 찾지 않을 것이다.
단계(350)에서, 수신 링크 제어기(즉, 다이 2(2102) 상의 링크 제어기)는 프로세싱을 위한 전체 어드레스는 물론, 저장된 웨이와 관련된 정보를 수신하고, 태그를 다이 2(2102) 상에 위치된 캐시 메모리 내의 대응되는 테이블(400) 내에 저장한다.
이제 다시 단계(330)을 참조하면, 태그가 로컬 캐시 메모리 내의 태그 및 웨이와 매칭되면, 다이 1(2101)의 링크 제어기는 압축된 패킷 및 태그가 저장되는 웨이를 식별하는 포인터 비트를 다이 2(2102) 상의 수신 링크 제어기에 전송한다(단계 360). 예를 들어, 다이 1(2101)의 링크 제어기(211)는, 다이 1(2101)의 캐시 메모리(212)의 테이블(400) 내에 저장된 것과 매칭되는 태그를 가진 어드레스를 포함하는 트랜잭션을 수신한다.
이러한 예시에서, 다이 1(2101)의 링크 제어기(211)는 어드레스에서 상위 비트(즉, 태그)를 제거하고, 오직 어드레스의 하위 비트 부분은 물론, 태그가 테이블(400) 내에 저장된 웨이를 나타내는 2-비트 포인터를 다이 2(2102) 상의 수신 링크 제어기에 전송한다. 수신 링크 제어기(즉, 본 예시에서 다이 2(2102)의 링크 제어기)는 웨이 정보를 리드하고, 프로세싱을 위한 전체 압축해제된 패킷을 재생성하기 위해, 다이 2(2102)의 캐시 메모리 내의 그 테이블(400)로부터의 태그 비트에 액세스한다(단계 370).
제공된 본 방법은 일반적인 목적의 컴퓨터, 프로세서 또는 프로세서 코어에서 실행될 수 있다. 적절한 프로세서는 예를 들어, 일반적인 목적의 프로세서, 특수 목적의 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, 그래픽 프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 제어기, 마이크로제어기, 응용 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 회로, 임의의 다른 타입의 집적 회로(IC), 및/또는 상태 머신을 포함한다. 이러한 프로세서는 프로세스된 하드웨어 기술 언어(HDL) 명령어 및 네트리스트를 포함하는 다른 중개 데이터(이러한 명령어는 컴퓨터 판독가능한 매체 상에 저장될 수 있음)의 결과를 사용하여, 제조 프로세스를 구성함에 의재 제조될 수 있다. 이러한 프로세싱의 결과는 본 실시예의 양태를 실시하는 프로세서를 제조하기 위한 반도체 제조 프로세스에서 사용되는 마스크작업일 수 있다.
본원에서 제공된 방법이나 순서도는, 일반적인 목적의 컴퓨터나 프로세서에 의해 실행을 위한 비-일시적 컴퓨터-판독가능한 저장 매체 내에 통합된, 컴퓨터 프로그램, 소프트웨어 또는 펌웨어에서 실행될 수 있다. 비-일시적 컴퓨터-판독가능한 저장 매체의 예시는 리드 온리 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크와 삭제가능한 디스크와 같은 자기 매체, 자기-광학 매체 및 CD-ROM 디스크와 같은 광학 매체 및 디지털 범용 디스크(DVD)를 포함한다.
또한, 상기 기술된 방법이나 순서도가 두 개의 다이(가령, 다이 1(2101)과 다이 2(2102)) 사이의 통신에 관하여 기술되더라도, 통신은 임의의 다이들 사이에서 발생할 수 있다.
장치가 본원에서 개시된다. 장치는 제1 링크 제어기와, 및 상기 제1 링크 제어기에 작동적으로 연결된 제1 캐시를 포함한다. 제1 링크 제어기는, 제2 장치 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 소스로부터 수신하고, 메모리 어드레스는 제1 파트와 제2 파트를 포함한다. 제1 링크 제어기는, 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되는지를 결정한다. 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되지 않는다면, 제1 링크 제어기는, 메모리 어드레스의 제1 파트를 제1 캐시 내에 저장하고, 전체 압축해제된 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보를 제2 장치로 전송한다. 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된다면, 제1 링크 제어기는, 오직 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된 웨이(way)를 나타내는 식별자를 포함하는 압축된 메모리 어드레스를 제2 장치로 전송한다.
컴퓨팅 디바이스에 의해 실행될 때, 컴퓨팅 디바이스가 동작을 수행하도록 야기하고, 기록된 명령어를 가진 비-일시적 컴퓨터-판독가능한 매체가 본원에서 개시된다. 동작은 제2 디바이스 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 소스로부터 제1 디바이스에서 수신하는 단계를 포함하고, 메모리 어드레스는 제1 파트와 제2 파트를 포함한다. 메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되는지 결정된다. 메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되지 않는다면, 메모리 어드레스의 제1 파트는 제1 디바이스의 캐시 내에 저장되고, 전체 압축해제된 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보는 제2 디바이스로 전송된다. 메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장된다면, 오직 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제1 디바이스의 캐시 내에 저장된 웨이를 나타내는 식별자를 포함하는 압축된 메모리 어드레스가 제2 디바이스로 전송된다.
시스템이 본원에서 개시된다. 시스템은, 제1 링크 제어기, 제1 캐시, 제1 프로세서 및 제1 입력/출력(I/O) 디바이스를 포함하는 제1 디바이스와, 및 제2 링크 제어기, 제2 캐시, 제2 프로세서 및 제2 입력/출력(I/O) 디바이스를 포함하는 제2 디바이스를 포함한다. 제1 링크 제어기는, 제2 디바이스 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 제1 프로세서 또는 제1 I/O 디바이스부터 수신하고, 메모리 어드레스는 제1 파트와 제2 파트를 포함한다. 제1 링크 제어기는 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되는지를 결정한다. 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되지 않는다면, 제1 링크 제어기는 메모리 어드레스의 제1 파트를 제1 캐시 내에 저장하고, 전체 압축해제된 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보를 제2 디바이스로 전송한다. 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된다면, 제1 링크 제어기는, 오직 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된 웨이(way)를 나타내는 식별자를 포함하는 압축된 메모리 어드레스를 제2 디바이스로 전송한다. 제2 링크 제어기는, 제1 파트의 저장소와 관련된 정보를 수신하면, 제1 파트의 저장소와 관련된 정보를 제2 캐시 내에 저장한다. 압축된 메모리 어드레스 및 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된 웨이를 나타내는 식별자를 수신하면, 제2 링크 제어기는, 식별자에 기초하여, 제2 디바이스 상에 위치된 제2 캐시로부터 메모리 어드레스의 제1 파트를 불러오고, 및 전체 압축해제된 메모리 어드레스를 재조립한다.
일부 예시에서, 제2 디바이스는, 제1 파트의 저장소와 관련된 정보를 수신하면, 제1 파트의 저장소와 관련된 정보를 제2 디바이스 상에 위치된 캐시 내에 저장한다. 일부 예시에서, 제2 디바이스는, 압축된 메모리 어드레스 및 어드레스의 제1 파트가 제1 디바이스 내의 캐시 내에 저장된 웨이를 나타내는 식별자를 수신하면, 식별자에 기초하여, 메모리 어드레스의 제1 파트를 제2 디바이스 상에 위치된 캐시로부터 불러오고, 전체 압축해제된 메모리 어드레스를 재조립한다. 일부 예시에서, 재조립은 제1 파트를 제2 파트에 부착하는 것을 포함한다
일부 예시에서, 제1 파트는 압축해제된 메모리 어드레스의 상위 비트를 포함하는 태그이다. 일부 예시에서, 태그는 제1 디바이스 상에 위치된 캐시 내의 테이블 내의 로케이션에 저장되고, 상기 로케이션은 트랜잭션을 생성했던 소스와 관련된다. 일부 예시에서, 태그는, 태그가 저장된 웨이와 관련된 테이블 내에 저장된다. 일부 예시에서, 태그는, 태그가 저장된 테이블 인덱스로 식별된 테이블 내의 로우에 저장되고, 또한, 태그가 저장된 웨이와 관련된 로우에 대응되는 컬럼에 저장된다. 일부 예시에서, 하나 이상의 인덱스 로우는 특정한 소스와 관련된다.
일부 예시에서, 소스는 제1 디바이스의 프로세서 또는 입력/출력(I/O) 디바이스를 포함한다. 일부 예시에서, 인덱스 로우는 복수의 웨이 컬럼과 관련된다. 일부 예시에서, 트랜잭션 타입은 프로그램 실행 스레드, 리드 요청 또는 라이트 요청 중 하나 이상을 포함한다. 일부 예시에서, I/O 디바이스와 관련된 특정한 로우 인덱스는 리드 요청 또는 라이트 요청과 관련된다.
장치가 본원에서 개시된다. 장치는 제1 링크 제어기와, 및 상기 제1 링크 제어기에 작동적으로 연결된 제1 캐시를 포함한다. 제1 링크 제어기는, 제2 장치 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 소스로부터 수신하고, 메모리 어드레스는 제1 파트와 제2 파트를 포함한다. 제1 링크 제어기는, 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되는지를 결정한다. 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되지 않는다면, 제1 링크 제어기는, 메모리 어드레스의 제1 파트를 제1 캐시 내에 저장하고, 전체 압축해제된 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보를 제2 장치로 전송한다. 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된다면, 제1 링크 제어기는, 오직 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된 웨이(way)를 나타내는 식별자를 포함하는 압축된 메모리 어드레스를 제2 장치로 전송한다.

Claims (44)

  1. 링크를 통해 제1 디바이스에서 제2 디바이스로 전송을 위한 어드레스를 압축하는 방법에 있어서, 상기 방법은,
    제2 디바이스 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 소스로부터 제1 디바이스에서 수신하는 단계 - 메모리 어드레스는 제1 파트와 제2 파트를 포함함 - 와,
    메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되는지를 결정하는 단계와, 및
    메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되지 않는다면, 메모리 어드레스의 제1 파트를 제1 디바이스의 캐시 내에 저장하는 단계와 전체 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보를 제2 디바이스로 전송하는 단계와, 및
    메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장된다면, 오직 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제1 디바이스의 캐시 내에 저장된 웨이(way)를 나타내는 식별자를 제2 디바이스로 전송하는 단계를 포함하는, 어드레스를 압축하는 방법.
  2. 제 1 항에 있어서, 제2 디바이스가, 제1 파트의 저장소와 관련된 정보를 수신하면, 제2 디바이스 상에 위치된 캐시 내의 제1 파트의 저장소와 관련된 정보를 저장하는 단계를 더 포함하는, 어드레스를 압축하는 방법.
  3. 제 2 항에 있어서, 제2 디바이스가, 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제1 디바이스의 캐시 내에 저장된 웨이를 나타내는 식별자를 수신하면,
    식별자에 기초하여, 제2 디바이스 상에 위치된 캐시로부터 메모리 어드레스의 제1 파트를 불러오는 단계와, 및
    전체 메모리 어드레스를 재조립하는 단계를 더 포함하는, 어드레스를 압축하는 방법.
  4. 제 3 항에 있어서, 재조립하는 단계는 제1 파트를 제2 파트에 부착하는 단계를 포함하는, 어드레스를 압축하는 방법.
  5. 제 1 항에 있어서, 제1 파트는 전체 메모리 어드레스의 상위 비트를 포함하는 태그인, 어드레스를 압축하는 방법.
  6. 제 5 항에 있어서, 제1 디바이스 상에 위치된 캐시 내의 테이블 내의 로케이션에 태그를 저장하는 단계를 더 포함하되, 상기 로케이션은 트랜잭션을 생성했던 소스와 관련된, 어드레스를 압축하는 방법.
  7. 제 6 항에 있어서, 태그가 저장된 웨이와 관련된 테이블 내에 태그를 저장하는 단계를 더 포함하는, 어드레스를 압축하는 방법.
  8. 제 7 항에 있어서, 태그는 테이블 내의 로우에 저장되고, 상기 로우는, 태그가 테이블 내의 어디에 저장되는지를 나타내는 인덱스로 식별되며, 태그는 저장된 웨이와 관련된 컬럼에 태그가 저장되는, 어드레스를 압축하는 방법.
  9. 제 8 항에 있어서, 하나 이상의 인덱스 로우는 특정 소스와 관련되는, 어드레스를 압축하는 방법.
  10. 제 9 항에 있어서, 상기 소스는 프로세서 또는 제1 디바이스의 입력/출력(I/O) 디바이스 중 임의의 하나를 포함하는, 어드레스를 압축하는 방법.
  11. 제 10 항에 있어서, 인덱스는 복수의 웨이 컬럼과 관련되는, 어드레스를 압축하는 방법.
  12. 제 11 항에 있어서, 트랜잭션 타입은, 프로그램 실행 스레드, 리드 요청 또는 라이트 요청 중 하나 이상을 포함하는, 어드레스를 압축하는 방법.
  13. 제 10 항에 있어서, I/O 디바이스와 관련된 특정한 로우 인덱스는 리드 요청 또는 라이트 요청 중 하나 이상과 관련되는, 어드레스를 압축하는 방법.
  14. 장치에 있어서, 상기 장치는,
    제1 링크 제어기와, 및
    상기 제1 링크 제어기에 작동적으로 연결된 제1 캐시를 포함하되,
    상기 제1 링크 제어기는,
    제2 장치 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 소스로부터 수신 - 메모리 어드레스는 제1 파트와 제2 파트를 포함함 - 하고,
    메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되는지를 결정하고, 및
    메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되지 않는다면, 메모리 어드레스의 제1 파트를 제1 캐시 내에 저장하고, 전체 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보를 제2 장치로 전송하고, 및
    메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된다면, 오직 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된 웨이(way)를 나타내는 식별자를 제2 장치로 전송하는, 장치.
  15. 제 14 항에 있어서, 제1 파트는 전체 메모리 어드레스의 상위 비트를 포함하는 태그인, 장치.
  16. 제 15 항에 있어서, 제1 캐시 내의 테이블 내의 로케이션에 태그를 저장하는 것을 더 포함하되, 상기 로케이션은 트랜잭션을 생성했던 소스와 관련된, 장치.
  17. 제 16 항에 있어서, 태그가 저장된 웨이와 관련된 테이블 내에 태그를 저장하는 것을 더 포함하는, 장치.
  18. 제 17 항에 있어서, 태그는 테이블 내의 로우에 저장되고, 상기 로우는, 태그가 테이블 내의 어디에 저장되는지를 나타내는 인덱스로 식별되며, 태그는 저장된 웨이와 관련된 컬럼에 태그가 저장되는, 장치.
  19. 제 18 항에 있어서, 하나 이상의 인덱스 로우는 특정 소스와 관련되는, 장치.
  20. 제 19 항에 있어서, 인덱스 로우는 복수의 웨이 컬럼과 관련되는, 장치.
  21. 제 14 항에 있어서, 프로세서를 더 포함하는, 장치.
  22. 제 21 항에 있어서, 상기 프로세서는 트랜잭션을 생성했던 소스인, 장치.
  23. 제 22 항에 있어서, 트랜잭션 타입은, 프로그램 실행 스레드, 리드 요청 또는 라이트 요청 중 하나 이상을 포함하는, 장치.
  24. 제 14 항에 있어서, 입력/출력(I/O) 디바이스를 더 포함하는, 장치.
  25. 제 24 항에 있어서, I/O 디바이스는 트랜잭션을 생성했던 소스인, 장치.
  26. 제 25 항에 있어서, I/O 디바이스와 관련된 특정한 로우 인덱스는 리드 요청 또는 라이트 요청 중 하나 이상과 관련되는, 장치.
  27. 제 14 항에 있어서, 제2 장치로부터 제1 링크 제어기에 의해, 메모리 어드레스의 제1 파트의 저장소와 관련된 정보를 수신하면, 제1 링크 제어기는 제1 캐시 내의 제1 파트의 저장소와 관려된 정보를 저장하는, 장치.
  28. 제 27 항에 있어서, 제1 링크 제어기가, 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제2 장치의 캐시 내에 저장된 웨이를 나타내는 식별자를 수신하면,
    식별자에 기초하여, 제1 캐시로부터 메모리 어드레스의 제1 파트를 수신하고, 및
    전체 메모리 어드레스를 재조립하는, 장치.
  29. 제 28 항에 있어서, 조립하는 것은 제1 파트를 제2 파트에 부착하는 것을 포함하는, 장치.
  30. 컴퓨팅 디바이스에 의해 실행될 때, 컴퓨팅 디바이스가 동작을 수행하도록 야기하고, 기록된 명령어를 가진 비-일시적 컴퓨터-판독가능한 매체에 있어서, 상기 동작은,
    제2 디바이스 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 소스로부터 컴퓨팅 디바이스에서 수신하는 단계 - 메모리 어드레스는 제1 파트와 제2 파트를 포함함 - 와,
    메모리 어드레스의 제1 파트가 제1 디바이스 상에 위치된 캐시 내에 저장되는지를 결정하는 단계와, 및
    메모리 어드레스의 제1 파트가 컴퓨팅 디바이스 상에 위치된 캐시 내에 저장되지 않는다면, 메모리 어드레스의 제1 파트를 컴퓨팅 디바이스의 캐시 내에 저장하는 단계와 전체 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보를 제2 디바이스로 전송하는 단계와, 및
    메모리 어드레스의 제1 파트가 컴퓨팅 디바이스 상에 위치된 캐시 내에 저장된다면, 오직 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 컴퓨팅 디바이스의 캐시 내에 저장된 웨이를 나타내는 식별자를 제2 디바이스로 전송하는 단계를 포함하는, 비-일시적 컴퓨터-판독가능한 매체.
  31. 제 30 항에 있어서, 제2 디바이스가, 제1 파트의 저장소와 관련된 정보를 수신하면, 제2 디바이스 상에 위치된 캐시 내의 제1 파트의 저장소와 관련된 정보를 저장하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독가능한 매체.
  32. 제 31 항에 있어서, 제2 디바이스가, 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 컴퓨팅 디바이스의 캐시 내에 저장된 웨이를 나타내는 식별자를 수신하면,
    식별자에 기초하여, 제2 디바이스 상에 위치된 캐시로부터 메모리 어드레스의 제1 파트를 불러오는 단계와, 및
    전체 메모리 어드레스를 재조립하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독가능한 매체.
  33. 제 32 항에 있어서, 재조립하는 단계는 제1 파트를 제2 파트에 부착하는 단계를 포함하는, 비-일시적 컴퓨터-판독가능한 매체.
  34. 제 30 항에 있어서, 제1 파트는 전체 메모리 어드레스의 상위 비트를 포함하는 태그인, 비-일시적 컴퓨터-판독가능한 매체.
  35. 제 34 항에 있어서, 제1 디바이스 상에 위치된 캐시 내의 테이블 내의 로케이션에 태그를 저장하는 단계를 더 포함하되, 상기 로케이션은 트랜잭션을 생성했던 소스와 관련된, 비-일시적 컴퓨터-판독가능한 매체.
  36. 제 35 항에 있어서, 태그가 저장된 웨이와 관련된 테이블 내에 태그를 저장하는 단계를 더 포함하는, 비-일시적 컴퓨터-판독가능한 매체.
  37. 제 36 항에 있어서, 태그는 테이블 내의 로우에 저장되고, 상기 로우는, 태그가 테이블 내의 어디에 저장되는지를 나타내는 인덱스로 식별되며, 태그는 저장된 웨이와 관련된 컬럼에 태그가 저장되는, 비-일시적 컴퓨터-판독가능한 매체.
  38. 제 37 항에 있어서, 하나 이상의 인덱스 로우는 특정 소스와 관련되는, 비-일시적 컴퓨터-판독가능한 매체.
  39. 제 38 항에 있어서, 상기 소스는 프로세서 또는 제1 디바이스의 입력/출력(I/O) 디바이스 중 임의의 하나를 포함하는, 비-일시적 컴퓨터-판독가능한 매체.
  40. 제 39 항에 있어서, 인덱스는 복수의 웨이 컬럼과 관련되는, 비-일시적 컴퓨터-판독가능한 매체.
  41. 제 40 항에 있어서, 트랜잭션 타입은, 프로그램 실행 스레드, 리드 요청 또는 라이트 요청 중 하나 이상을 포함하는, 비-일시적 컴퓨터-판독가능한 매체.
  42. 제 39 항에 있어서, I/O 디바이스와 관련된 특정한 로우 인덱스는 리드 요청 또는 라이트 요청 중 하나 이상과 관련되는, 비-일시적 컴퓨터-판독가능한 매체.
  43. 시스템에 있어서, 상기 시스템은,
    제1 링크 제어기, 제1 캐시, 제1 프로세서 및 제1 입력/출력(I/O) 디바이스를 포함하는 제1 디바이스와, 및
    제2 링크 제어기, 제2 캐시, 제2 프로세서 및 제2 입력/출력(I/O) 디바이스를 포함하는 제2 디바이스를 포함하되,
    상기 제1 링크 제어기는,
    제2 디바이스 상의 메모리 로케이션에 대한 메모리 어드레스 요청을 포함하는 트랜잭션을 제1 프로세서 또는 제1 I/O 디바이스부터 수신 - 메모리 어드레스는 제1 파트와 제2 파트를 포함함 - 하고,
    메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되는지를 결정하고, 및
    메모리 어드레스의 제1 파트가 제1 캐시 내에 저장되지 않는다면, 메모리 어드레스의 제1 파트를 제1 캐시 내에 저장하고, 전체 메모리 어드레스 및 제1 파트의 저장소와 관련된 정보를 제2 디바이스로 전송하고, 및
    메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된다면, 오직 메모리 어드레스의 제2 파트 및 메모리 어드레스의 제1 파트가 제1 캐시 내에 저장된 웨이(way)를 나타내는 식별자를 제2 디바이스로 전송하고,
    상기 제2 링크 제어기는,
    제1 파트의 저장소와 관련된 정보를 수신하면, 제1 파트의 저장소와 관련된 정보를 제2 캐시 내에 저장하거나,
    메모리 어드레스의 제2 파트 및 어드레스의 제1 파트가 제1 캐시 내에 저장된 웨이를 나타내는 식별자를 수신하면,
    식별자에 기초하여, 제2 디바이스 상에 위치된 제2 캐시로부터 메모리 어드레스의 제1 파트를 불러오고, 및
    전체 메모리 어드레스를 재조립하는, 시스템.
  44. 제 43 항에 있어서, 재조립하는 것은 제1 파트를 제2 파트에 부착하는 것을 포함하는, 시스템.
KR1020197005418A 2016-08-17 2017-08-04 어드레스를 압축하기 위한 방법 및 장치 KR102219845B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662376096P 2016-08-17 2016-08-17
US62/376,096 2016-08-17
US15/345,639 2016-11-08
US15/345,639 US10042576B2 (en) 2016-08-17 2016-11-08 Method and apparatus for compressing addresses
PCT/US2017/045639 WO2018034875A1 (en) 2016-08-17 2017-08-04 Method and apparatus for compressing addresses

Publications (2)

Publication Number Publication Date
KR20190032527A true KR20190032527A (ko) 2019-03-27
KR102219845B1 KR102219845B1 (ko) 2021-02-24

Family

ID=61191652

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197005418A KR102219845B1 (ko) 2016-08-17 2017-08-04 어드레스를 압축하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US10042576B2 (ko)
EP (2) EP3500935A4 (ko)
JP (1) JP6768928B2 (ko)
KR (1) KR102219845B1 (ko)
CN (1) CN109564545B (ko)
WO (1) WO2018034875A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220067431A (ko) * 2020-11-17 2022-05-24 성균관대학교산학협력단 어드레스 압축 방법 및 장치

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10540250B2 (en) * 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
CN109240944B (zh) * 2018-08-16 2021-02-19 上海天数智芯半导体有限公司 一种基于可变长缓存行的数据读写方法
US11831565B2 (en) 2018-10-03 2023-11-28 Advanced Micro Devices, Inc. Method for maintaining cache consistency during reordering
CN111126589B (zh) * 2019-12-31 2022-05-20 昆仑芯(北京)科技有限公司 神经网络数据处理装置、方法和电子设备
JP2023079640A (ja) * 2021-11-29 2023-06-08 富士通株式会社 演算処理装置および演算処理方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644753A (en) * 1995-03-31 1997-07-01 Sun Microsystems, Inc. Fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US6449689B1 (en) * 1999-08-31 2002-09-10 International Business Machines Corporation System and method for efficiently storing compressed data on a hard disk drive
US6477613B1 (en) * 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
US20030217237A1 (en) * 2002-05-15 2003-11-20 Internation Business Machines Corporation Selective memory controller access path for directory caching
US20050144388A1 (en) * 2003-12-31 2005-06-30 Newburn Chris J. Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information
WO2009006113A2 (en) * 2007-06-29 2009-01-08 Intel Corporation Hierarchical cache tag architecture
US20130262538A1 (en) * 2012-03-30 2013-10-03 Samplify Systems, Inc. Data compression for direct memory access transfers
US20150278096A1 (en) * 2014-03-27 2015-10-01 Dyer Rolan Method, apparatus and system to cache sets of tags of an off-die cache memory
US20150363314A1 (en) * 2007-03-15 2015-12-17 Taiwan Semiconductor Manufacturing Company, Ltd. System and Method for Concurrently Checking Availability of Data in Extending Memories

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143238B2 (en) * 2003-09-30 2006-11-28 Intel Corporation Mechanism to compress data in a cache

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644753A (en) * 1995-03-31 1997-07-01 Sun Microsystems, Inc. Fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US6477613B1 (en) * 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
US6449689B1 (en) * 1999-08-31 2002-09-10 International Business Machines Corporation System and method for efficiently storing compressed data on a hard disk drive
US20030217237A1 (en) * 2002-05-15 2003-11-20 Internation Business Machines Corporation Selective memory controller access path for directory caching
US20050144388A1 (en) * 2003-12-31 2005-06-30 Newburn Chris J. Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information
US20150363314A1 (en) * 2007-03-15 2015-12-17 Taiwan Semiconductor Manufacturing Company, Ltd. System and Method for Concurrently Checking Availability of Data in Extending Memories
WO2009006113A2 (en) * 2007-06-29 2009-01-08 Intel Corporation Hierarchical cache tag architecture
US20130262538A1 (en) * 2012-03-30 2013-10-03 Samplify Systems, Inc. Data compression for direct memory access transfers
US20150278096A1 (en) * 2014-03-27 2015-10-01 Dyer Rolan Method, apparatus and system to cache sets of tags of an off-die cache memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220067431A (ko) * 2020-11-17 2022-05-24 성균관대학교산학협력단 어드레스 압축 방법 및 장치
US11650918B2 (en) 2020-11-17 2023-05-16 Research & Business Foundation Sungkyunkwan University Method and apparatus for compressing addresses

Also Published As

Publication number Publication date
EP3500935A1 (en) 2019-06-26
CN109564545B (zh) 2021-02-02
JP6768928B2 (ja) 2020-10-14
US10042576B2 (en) 2018-08-07
EP3500935A4 (en) 2020-04-08
WO2018034875A1 (en) 2018-02-22
US20180052631A1 (en) 2018-02-22
EP4220415A3 (en) 2023-09-06
EP4220415A2 (en) 2023-08-02
KR102219845B1 (ko) 2021-02-24
CN109564545A (zh) 2019-04-02
JP2019525354A (ja) 2019-09-05

Similar Documents

Publication Publication Date Title
KR102219845B1 (ko) 어드레스를 압축하기 위한 방법 및 장치
US10198215B2 (en) System and method for multi-stream data write
KR102147356B1 (ko) 캐시 메모리 시스템 및 그 동작방법
US20150261456A1 (en) Configurable read-modify-write engine and method for operating the same in a solid state drive
US8560778B2 (en) Accessing data blocks with pre-fetch information
US11467764B2 (en) NVMe-based data read method, apparatus, and system
US20190272099A1 (en) Data Operating Method, Device, and System
US20150143045A1 (en) Cache control apparatus and method
KR101730151B1 (ko) 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템
KR20190033284A (ko) PCIe P2P 접속된 스토리지 장치들 사이의 데이터 전송 방법 및 시스템
WO2015180598A1 (zh) 对存储设备的访问信息处理方法和装置、系统
CN109446147B (zh) 一种网络存储设备与pcie设备的数据交互方法
KR102617360B1 (ko) 바이트 어드레스 지정 가능한 메모리로서 비-휘발성 메모리에 액세스하는 방법 및 장치
WO2015196378A1 (zh) 读写闪存中数据的方法、装置及用户设备
CN112394874A (zh) 一种键值kv的存储方法、装置及存储设备
US10042774B2 (en) Method and apparatus for masking and transmitting data
TW202230140A (zh) 管理記憶體的方法及非暫時性電腦可讀媒體
KR102275706B1 (ko) 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US10719440B2 (en) Semiconductor device and memory access method
KR20120034889A (ko) 패킷 송수신 장치 및 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant