KR20190112020A - 데이터 처리 - Google Patents

데이터 처리 Download PDF

Info

Publication number
KR20190112020A
KR20190112020A KR1020197024440A KR20197024440A KR20190112020A KR 20190112020 A KR20190112020 A KR 20190112020A KR 1020197024440 A KR1020197024440 A KR 1020197024440A KR 20197024440 A KR20197024440 A KR 20197024440A KR 20190112020 A KR20190112020 A KR 20190112020A
Authority
KR
South Korea
Prior art keywords
data
data access
memory
access request
response
Prior art date
Application number
KR1020197024440A
Other languages
English (en)
Other versions
KR102526431B1 (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 KR20190112020A publication Critical patent/KR20190112020A/ko
Application granted granted Critical
Publication of KR102526431B1 publication Critical patent/KR102526431B1/ko

Links

Images

Classifications

    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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
    • 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
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Photoreceptors In Electrophotography (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 제어기는, 메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하고; 메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구에 응답하여 메모리에 저장된 데이터에 액세스하고; 데이터 액세스 요구에 대한 데이터 액세스 응답으로서 액세스된 데이터를 제공하도록 구성된, 메모리 액세스 회로를 구비한다.

Description

데이터 처리
본 개시내용은 데이터 처리에 관한 것이다.
데이터 전송 프로토콜들은, 예를 들면, 시스템 온 칩(SoC)이나 네트워크 온 칩(NoC) 시스템이라는 맥락에서, 인터커넥트 회로를 거쳐 서로에 접속된 디바이스 또는 노드간에 데이터 전송들의 동작을 조정할 수 있다. 이러한 데이터 전송 프로토콜의 일례는, 소위 AMBA(Advanced Microcontroller Bus Architecture)CHI(Coherent Hub Interface) 프로토콜이다.
상기 CHI 프로토콜에서, 노드들은, 요구 노드들(RN), 홈(home) 노드들(HN) 또는 슬레이브 노드들(SN)으로서 분류될 수 있다. 노드들은, 완전 일관적이거나 입/출력(I/0) 일관적일 수 있다. 완전 일관적 HN이나 RN(각각, HN-F, RN-F)은, 일관적 캐시 스토리지를 구비하고; 완전 일관적 SN(SN-F)은, HN-F와 쌍으로 되어 있다. HN-F는, 메모리 영역용 일관성 및/또는 직렬화를 관리할 수 있고, 일관성의 포인트(POC) 및 직렬화의 포인트(POS)의 일례라고 하여도 된다.
여기서, "일관적(coherent)"이란, 하나의 노드에 의해 일관적 메모리 시스템들에서의 메모리 어드레스에 기록된 해당 데이터가 그 노드들의 다른 노드에 의해 일관적 메모리 시스템에서의 해당 메모리 어드레스로부터 판독된 데이터와 일관된다는 것을 암시한다. 액세스되는 데이터 항목의 버전이 (동일한 데이터 항목의 다른 사본에 대해 이루어진 수정 때문에) 오래된 버전일 경우, 먼저, 액세스되는 사본이 최신 사본으로 제공된다. 마찬가지로, 데이터 핸들링 트랜잭션이 데이터 항목을 수정하는 것을 수반하면, 일관성 로직은, 데이터 항목의 그 밖의 기존의 사본들과의 충돌을 회피시킨다.
직렬화는, 잠재적으로 다수의 요구 노드들로부터 메모리 액세스 요구들의 핸들링의 오더링과, 서비스 받는데 상이한 대기 기간들이 걸릴 가능성이 있는 것에 관한 것이어서, 그 요구들로부터의 결과들이 정확한 순서로 요구 노드들에 제시되고, 그 요구(예를 들면, 동일한 어드레스에 데이터 기록 이후의 데이터 판독)간의 임의의 종속성들이 정확히 핸들링된다.
판독 요구들 등의 데이터 액세스들은, 예를 들면, 필요로 한 데이터 항목이 메인 메모리나 보다 높은 레벨 캐시 메모리로부터 판독되어야 하는 경우, (예를 들면, 캐시 메모리를 액세스함으로써) 판독 요구 자체를 서비스하여도 되거나, SN-F에 대한 판독 요구를 참조하여 해결하여도 되는, HN-F를 거쳐 이루어져도 된다. 이러한 예들에서, 상기 SN-F는, 동적 랜덤 액세스 메모리(DRAM)와 같은 메모리와 관련된 동적 메모리 제어기(DMC)를 구비하여도 된다. HN-F는, HN-F가 판독 요구를 자체 서비스할 수 없는 인스턴스들에서 판독 요구를 SN-F에 발행하는 것을 핸들링 한다.
그 밖의 프로토콜들의 예는, AXI(Advanced Extensible Interface) 또는 ACE(AXI Coherency Extensions) 프로토콜들을 포함한다. 그 ACE 프로토콜은, HN 등을 이용하지 않지만, 예를 들면 인터커넥트에 의해 구현된 POC/POS를 제공할 수 있다.
일 구성 예에서 제공한 메모리 제어기는:
메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하고;
메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구에 응답하여 메모리에 저장된 데이터에 액세스하고;
데이터 액세스 요구에 대한 데이터 액세스 응답으로서 액세스된 데이터를 제공하도록 구성된, 메모리 액세스 회로를 구비한다.
다른 구성 예에서 제공한 메모리 제어방법은:
메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하는 단계;
메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구에 응답하여 메모리에 저장된 데이터에 액세스하는 단계; 및
데이터 액세스 요구에 대한 데이터 액세스 응답으로서 액세스된 데이터를 제공하는 단계를 포함한다.
다른 구성 예에서 제공한 데이터 처리회로는:
최근 데이터 액세스 요구들이 제1 데이터 소스나 제2 데이터 소스에 의해 이행되었는지를 가리키는 예측 데이터를 저장하고, 예측 데이터로부터, 다음 데이터 액세스 요구가 제1 데이터 소스나 제2 데이터 소스에 의해 이행될 것인지를 예측하는 예측회로-상기 제1 및 제2 데이터 소스는 데이터 액세스 요구가 제1 데이터 소스에 의해 이행되지 않은 경우 데이터 액세스 요구가 제2 데이터 소스에 의해 이행되도록 구성된다-; 및
데이터 액세스 요구들을 제1 데이터 소스에 발행하되, 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 것을 예측하는 예측회로에 응답하여 그 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 필요가 있을지도 모른다는 표시를, 제2 데이터 소스에 발행하도록 구성되는, 발행회로를 구비한다.
다른 구성 예에서 제공한 데이터 처리방법은:
최근 데이터 액세스 요구들이 제1 데이터 소스나 제2 데이터 소스에 의해 이행되었는지를 가리키는 예측 데이터를 저장하는 단계;
예측 데이터로부터, 다음 데이터 액세스 요구가 제1 데이터 소스나 제2 데이터 소스에 의해 이행될 것인지를 예측하는 단계-상기 제1 및 제2 데이터 소스는 데이터 액세스 요구가 제1 데이터 소스에 의해 이행되지 않은 경우 데이터 액세스 요구가 제2 데이터 소스에 의해 이행되도록 구성된다-; 및
주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 것을 예측하는 예측회로에 응답하여 그 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 필요가 있을지도 모른다는 표시를, 제2 데이터 소스에 발행하는 단계를 포함한다.
본 기술의 추가의 각각의 국면들 및 특징들은 첨부된 청구항들에 의해 기재되어 있다.
본 기술은, 아래의 첨부도면들에 도시된 것과 같은 실시예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 데이터 처리장치를 개략적으로 도시한 것이고;
도 2는 데이터 판독 액세스를 도시하는 개략적 타이밍이고;
도 3은 데이터 판독 액세스를 도시하는 개략적 타이밍이고;
도 4는 방법을 도시하는 개략적 흐름도이고;
도 5는 마스터 노드를 개략적으로 도시한 것이고;
도 6은 예측회로를 개략적으로 도시한 것이고;
도 7은 예측회로를 개략적으로 도시한 것이고;
도 8은 예측회로의 일부를 개략적으로 도시한 것이고;
도 9는 예측회로의 다른 예를 개략적으로 도시한 것이고;
도 10은 메모리 제어기를 개략적으로 도시한 것이고;
도 11 및 12는 방법들을 도시하는 개략적 흐름도다.
첨부도면들을 참조하여 실시예들을 논하기 전에, 이하에 실시예들에 대해 설명한다.
일 실시예에서 제공하는 메모리 제어기는:
메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하고;
메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구에 응답하여 메모리에 저장된 데이터에 액세스하고;
데이터 액세스 요구에 대한 데이터 액세스 응답으로서 액세스된 데이터를 제공하도록 구성된, 메모리 액세스 회로를 구비한다.
실시예들에서, 홈 노드와 같은 다른 노드를 거쳐 메모리 제어기에 라우팅되는 데이터 액세스 요구와 같은 데이터 액세스 요구와 관련된 대기시간은, 상기 메모리 제어기가 가능한 이후의 데이터 액세스 요구를 가리키는 데이터 액세스 힌트에 응답하게 제공함으로써 감소될 수 있을 가능성이 있다. 상기 이후의 데이터 액세스 요구가 수신될 때, 해당 데이터 액세스는 이미 시작되어 있을 수도 있다.
예들에서, 상기 데이터 액세스 힌트 메시지와 데이터 액세스 요구는 각각 다양한 하나 이상의 메모리 어드레스들에 의해 데이터 액세스를 지정한다. 예를 들면, 상기 메모리 액세스 회로가 데이터 액세스 힌트 메시지에 응답하여 주어진 다양한 하나 이상의 메모리 어드레스들에 대한 데이터 액세스를 시작하였을 때, 상기 메모리 액세스 회로는, 상기 메모리 제어기가 그 주어진 다양한 하나 이상의 메모리 어드레스들을 지정하는 이후의 데이터 액세스 요구를 수신할 때만 데이터 액세스 응답으로서 상기 액세스된 데이터를 제공하도록 구성된다. 이렇게 하여, 데이터 액세스 힌트 메시지는 데이터 액세스 시작할 수 있지만, 해당 데이터 액세스는 이후의 데이터 액세스 요구가 수신되지 않으면 완료되지 않는다.
응답의 라우팅을 위해, 예를 들면, 데이터 액세스 요구가 홈 모드와 같은 다른 노드를 거쳐 도달하는 경우들에 있어서, 데이터 액세스 요구는, 메모리 제어기와의 데이터 통신에서, 그 데이터 액세스 응답이 제공되어야 하는 다른 노드를 지정하여도 된다.
예들에서, 수신자 노드가 예를 들면, 현재의 로딩에 따라 데이터 액세스 힌트 메시지에 따라 작동하거나 작동하지 않는 것은 선택적일 수 있다. 이러한 예들에서, 상기 메모리 액세스 회로는, 수신된 데이터 액세스 힌트 메시지에 응답하여 데이터 액세스의 시작 여부를 판정하도록 구성된다.
또한, 구성들의 예는, 관련된 캐시 메모리를 각각 갖는 하나 이상의 마스터 노드들; 위에 기재된 것과 같은 메모리 제어기를 각각 구비하는 하나 이상의 슬레이브 노드들; 및 데이터 처리 시스템에 의해 저장된 데이터 중에서 일관성을 제어하는 홈 노드로 이루어진, 데이터 처리 시스템을 제공할 수 있다.
예들에서, 하나 이상의 마스터 노드들은 데이터 액세스 요구들을 홈 노드에 발행하도록 구성되고; 홈 노드는, 데이터 액세스 요구가 홈 노드에 의해 이행될 수 있거나 데이터 액세스가 하나 이상의 슬레이브 노드들에의 액세스를 필요로 하는지를 검출하고, 하나 이상의 슬레이브 노드들에 액세스를 필요로 할 때, 데이터 액세스 요구를 하나 이상의 슬레이브 노드들에 송신하도록, 구성된다. 예를 들면, 하나 이상의 마스터 노드들은, 데이터 액세스 요구를 홈 노드에; 또는 데이터 액세스 요구를 홈 노드에 및, 데이터 액세스 힌트 메시지를, 홈 노드가 해당 데이터 액세스를 이행 가능하지 않을 때 데이터 액세스 요구에 의해 지정된 데이터 액세스를 이행할 상기 하나 이상의 슬레이브 노드들 중 하나에, 송신하도록 구성되어도 된다.
예들에서, 마스터 노드가 무엇을 발행해야하는지의 선택은, 데이터 액세스 힌트 메시지를 송신할지를 판정하는 예측회로를 구비하는 하나 이상의 마스터 노드들에 의해 이루어질 수 있다.
예들에서, 상기 예측회로는, 홈 노드와 슬레이브 노드 중 한쪽이나 양쪽으로부터 수신된, 슬레이브 노드가 하나 이상의 이전의 데이터 액세스 요구들을 이행하였는지를 가리키는 표시들에 응답하여, 데이터 액세스 힌트 메시지를 슬레이브 노드에 송신할지를 판정하도록 구성된다.
다른 실시예에서 제공한 메모리 제어방법은,
메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하는 단계;
메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구에 응답하여 메모리에 저장된 데이터에 액세스하는 단계; 및
데이터 액세스 요구에 대한 데이터 액세스 응답으로서 액세스된 데이터를 제공하는 단계를 포함한다.
다른 실시예에서 제공한 데이터 처리회로는:
최근 데이터 액세스 요구들이 제1 데이터 소스나 제2 데이터 소스에 의해 이행되었는지를 가리키는 예측 데이터를 저장하고, 예측 데이터로부터, 다음 데이터 액세스 요구가 제1 데이터 소스나 제2 데이터 소스에 의해 이행될 것인지를 예측하는 예측회로-상기 제1 및 제2 데이터 소스는 데이터 액세스 요구가 제1 데이터 소스에 의해 이행되지 않은 경우 데이터 액세스 요구가 제2 데이터 소스에 의해 이행되도록 구성된다-; 및
데이터 액세스 요구들을 제1 데이터 소스에 발행하되, 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 것을 예측하는 예측회로에 응답하여 그 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 필요가 있을지도 모른다는 표시를, 제2 데이터 소스에 발행하도록 구성되는, 발행회로를 구비한다.
이 실시예들에서, 표시(이를테면 판독 힌트 메시지)는, 데이터 액세스가 제2 데이터 소스에 의해 이행될지에 관한 예측에 근거하여 제2 데이터 소스에 발행되거나 발행될 수 없다. 이렇게 하여, 송신 대역폭은, (데이터 액세스마다 판독 힌트 메시지를 송신하는 것과 비교하여) 보존될 수 있지만 제2 데이터 소스가 판독 힌트 메시지에 응답하여 데이터 액세스를 시작하게 함으로써 대기시간을 감소시킬 가능성이 있다.
일부 예들에서, 상기 예측회로는, 제1 및 제2 데이터 소스 중 한쪽이나 양쪽으로부터 수신된, 데이터 소스가 최근의 데이터 액세스 요구를 이행한 것을 가리키는 정보에 응답하여, 예측 데이터를 저장하도록 구성된다. 그 예측은 이렇게 저장된 데이터에 근거할 수 있다.
일부 예들에서, 예측 데이터는 카운트 값을 포함하고, 상기 예측회로는, 최근의 데이터 액세스 요구가 제1 또는 제2 데이터 소스에 의해 이행되었는지의 여부에 따라 카운트 값을 변경하도록 구성된다. 예를 들면, 상기 예측회로는, 카운트 값과 임계값을 비교하는 비교기를 구비하여도 된다.
일부 예들에서, 상기 예측회로는, 제1 데이터 소스에 의해 이행되는 최근의 데이터 액세스에 응답하여 제1 변경량만큼, 또한 제2 데이터 소스에 의해 이행되는 최근의 데이터 액세스에 응답하여, 제1 변경량에 대한 반대 극성을 갖는 제2 변경량만큼, 카운트 값을 변경하도록 구성된다. 이 변경량들은 고정되어도 되거나, 상기 예측회로는 제1 변경량과 제2 변경량 중 한쪽이나 양쪽을 가변하도록 구성되어도 된다.
판독 힌트 메시지를 이용할 잠재적으로 상이한 가능성을 고려하기 위해서, 일부 예들에서, 상기 예측회로는, 데이터 액세스 요구들의 2개 이상의 클래스들에 대한 각각의 예측들을 발생하도록 구성된다. 예를 들면, 데이터 액세스 요구들의 2개 이상의 클래스들은:
데이터 판독 요구들;
명령 페치(fetch) 요구들; 및
어드레스 변환 페치 요구들로 이루어진 리스트로부터 선택되어도 된다.
상이한 데이터 액세스 요구간의 차이들을 고려하기 위해서, 일부 예들에서, 상기 예측회로는:
데이터 액세스 요구를 시작하는 처리 명령에 대한 프로그램 카운터 값;
데이터 액세스 요구에 응답하여 액세스되는 데이터 항목의 어드레스의,
하나 이상에 따라 예측을 발생하도록 구성된다.
일부 예들에서, 상기 예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 인덱스를 발생하고, 인덱스에 의해 카운터 값들의 테이블에 액세스하도록, 구성된다. (동일한 인덱스에 의한 동일한 예측 데이터의 원하지 않는 액세싱이지만, 프로그램 카운터의 상이한 값 및/또는 어드레스에 따라) 에일리어싱을 경감하기 위해서, 일부 예들에서, 상기 예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 태그를 발생하고, 인덱스에 의해 액세스되는 카운터 값들의 테이블에 있는 엔트리와 관련지어 태그를 저장하도록 구성된다. 예를 들면, 상기 예측회로는, 저장된 태그를 검색하고, 검색된 태그를 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 발생된 태그와 비교하도록 구성되어도 된다.
일부 예들에서, 상기 예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽의 상이한 각각의 부분들로부터 발생된 각각의 인덱스들에 의해 카운터 값들의 2개 이상의 테이블들에 액세스하도록 구성된다. 예를 들면, 2개 이상의 테이블들이 발생된 태그와 일치하는 저장된 태그를 가질 때, 상기 예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽의 비트들의 보다 큰 수만큼 인덱스를 발생하였던 2개 이상의 테이블들 중 해당 테이블에 의해 저장된 카운터 값에 따라 예측을 발생하도록 구성된다.
또한, 구성 예들에서 제공한 데이터 처리장치는:
위에 기재된 것과 같은 회로를 각각 구비하고 관련된 캐시 메모리를 각각 갖는, 하나 이상의 마스터 노드들;
제1 데이터 소스를 제공하되, 요구된 데이터를 캐시 메모리들의 하나 이상으로부터 취득하여서 주어진 데이터 액세스 요구를 이행할 수 있는지를 검출하도록 구성되고, 또 주어진 데이터 액세스 요구를 이행할 수 없을 때 제2 데이터 소스로부터 상기 요구된 데이터를 요구하도록 구성되는, 홈 노드; 및
보다 높은 레벨의 메모리를 각각 갖되, 제2 데이터 소스를 제공하는 하나 이상의 슬레이브 노드들을 구비한다.
일부 예들에서, 마스터 노드는, 데이터 송신을 하나 이상의 슬레이브 노드들 중 하나에 요구하는 송신 요구를, 홈 노드에 발행하도록 구성되고; 홈 노드는, 슬레이브 노드에서의 메모리 어드레스에 기록된 데이터가 이후의 액세스 요구에 응답하여 해당 메모리 어드레스로부터 판독된 데이터와 일관적이도록 하나 이상의 슬레이브 노드들에 대한 송신 요구들과 액세스 요구들을 직렬화하도록 구성된다.
일부 예들에서, 홈 노드는, 하나의 노드에 의해 일관적 메모리 시스템에서의 메모리 어드레스에 기록된 데이터가 상기 노드들의 다른 노드에 의해 일관적 메모리 시스템에서의 해당 메모리 어드레스로부터 판독된 데이터와 일관적이도록 일관적 메모리 시스템으로서, 하나 이상의 마스터 노드들의 캐시 메모리들과, 하나 이상의 슬레이브 노드들의 보다 높은 레벨의 메모리들에 걸쳐, 일관성을 제어하도록 구성된다.
다른 실시예에서 제공한 데이터 처리방법은:
최근 데이터 액세스 요구들이 제1 데이터 소스나 제2 데이터 소스에 의해 이행되었는지를 가리키는 예측 데이터를 저장하는 단계;
예측 데이터로부터, 다음 데이터 액세스 요구가 제1 데이터 소스나 제2 데이터 소스에 의해 이행될 것인지를 예측하는 단계-상기 제1 및 제2 데이터 소스는 데이터 액세스 요구가 제1 데이터 소스에 의해 이행되지 않은 경우 데이터 액세스 요구가 제2 데이터 소스에 의해 이행되도록 구성된다-; 및
주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 것을 예측하는 예측회로에 응답하여 그 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 필요가 있을지도 모른다는 표시를, 제2 데이터 소스에 발행하는 단계를 포함한다.
이제 도면들에서, 도 1은, 네트워크(100)에 의해 상호접속된 디바이스들의 네트워크로서 구체화된 데이터 처리장치를 개략적으로 도시한 것이다. 이 장치는, 소위 시스템 온 칩(SoC)이나 네트워크 온 칩(NoC)과 같은 단일의 집적회로로서, 또는 복수의 상호접속형 개별소자들로서 제공되어도 된다.
각종 소위 노드들은, 네트워크(100)를 거쳐 접속된다. 이들은, 네트워크 시스템내에서 데이터 일관성을 감독하는 하나 이상의 홈 노드들(HN), 보다 높은 레벨의 캐시 메모리(120)("보다 높은 레벨"에 대한 레퍼런스는, 요구 노드에 의해 제공되고 이하 설명된 캐시 메모리에 대한 것이다)와 같은 하나 이상의 슬레이브 노드들(SN), 메인 메모리(130) 및 주변기기(140)로 이루어진다. 도 1에 도시된 슬레이브 노드들의 선택은, 예에 의한 것이고, 슬레이브 노드의 각 타입의 0이상이 제공되어도 된다.
슬레이브 노드들(120, 130)은, 각각, 본 예에서는, 메모리 제어기(DMC)(122, 132) 및 메모리(DRAM)(124, 134)를 구비한다.
도 1은 본 예에서 CHI(Coherent Hub Interface) 프로토콜에 따라 동작하는 소위 복수의 요구 노드들(RN)(150, 160, 170)도 도시한 것이다.
RN(150, 160, 170)은, 관련된 캐시 메모리(152, 162, 172)를 갖는 완전 일관적 RN들(RN-F)이다. 또한, RN(170)은, RN-F이어도 되고, 캐시 메모리(172)를 가질 수도 있다.
보다 일반적으로, 상기 노드들은, 완전 일관적 또는 입/출력(I/0) 일관적일 수 있다. 완전 일관적 HN 또는 RN(각각, HN-F, RN-F)은, 일관적 캐시 스토리지를 구비한다. 예를 들면, HN-F(110)는, 캐시 스토리지(112)를 구비한다.
완전 일관적 SN(SN-F)은, HN-F와 쌍으로 되어 있다. HN-F는, 메모리 영역에 대한 일관성을 관리할 수 있다.
도 1은, 관련된 캐시 메모리(152, 162, 172)를 각각 갖는 하나 이상의 마스터 노드들(150, 160, 170); 메모리 제어기를 각각 구비하는 하나 이상의 슬레이브 노드들(120); 및 데이터 처리 시스템에 의해 저장된 데이터 중에서 일관성을 제어하는 홈 노드(110)를 구비하는, 데이터 처리 시스템의 일례를 제공한다.
마찬가지로, 도 1은, (아래에 설명된) 예측기와 발행회로를 각각 구비하고 관련된 캐시 메모리(152, 162, 172)를 각각 갖는 하나 이상의 마스터 노드들(150, 160, 170); 제1 데이터 소스를 제공하되, 요구된 데이터를 캐시 메모리들의 하나 이상으로부터 취득하여서 주어진 데이터 액세스 요구를 이행할 수 있는지를 검출하도록 구성되고, 또 주어진 데이터 액세스 요구를 이행할 수 없을 때 슬레이브 노드(120, 130)와 같은 제2 데이터 소스로부터 상기 요구된 데이터를 요구하도록 구성되는, 홈 노드(110); 및 보다 높은 레벨의 메모리를 각각 갖되, 제2 데이터 소스를 제공하는 하나 이상의 슬레이브 노드들(120, 130)을 구비하는, 데이터 처리장치의 일례를 제공한다.
도 2는, 데이터 판독 액세스를 도시하는 개략적 타이밍도이다.
도 2에서, 상기 요구 노드들 RN-F 150, 160, 170 중 하나는 홈 노드 HN-F(110)에 의해 (일관성 관점으로부터) 감독되는 데이터를 판독하려고 하고 있는 중이다. HN-F는, 소위 일관성의 포인트(PoC)로서 작동한다. 시간적으로 데이터 액세스 요구들을 중첩시키는 핸들링의 오더링이나, 하나의 데이터 액세스 요구의 결과들이 적어도 다른 데이터 액세스 요구의 완료의 타이밍에 관련되는 데이터 액세스 요구들을 관리하는 관점에서, HN-F는 상기 데이터 액세스 요구들이 적절한 순서로 시작 및/또는 완료되는 것을 보장하도록 소위 직렬화의 포인트(PoS)로서도 작동하여도 된다.
이 때문에, 예들에서, 상기 마스터 노드는, 데이터 송신을 하나 이상의 슬레이브 노드들 중 하나에 요구하는 송신 요구를, 홈 노드에 발행하도록 구성되고; 홈 노드는, 슬레이브 노드에서의 메모리 어드레스에 기록된 데이터가 이후의 액세스 요구에 응답하여 해당 메모리 어드레스로부터 판독된 데이터와 일관적이도록 하나 이상의 슬레이브 노드들에 대한 송신 요구들과 액세스 요구들을 직렬화하기 위해 PoS로서 작동하도록 구성된다. 예들에서, 홈 노드는, 하나의 노드에 의해 일관적 메모리 시스템에서의 메모리 어드레스에 기록된 데이터가 상기 노드들의 다른 노드에 의해 일관적 메모리 시스템에서의 해당 메모리 어드레스로부터 판독된 데이터와 일관적이도록 일관적 메모리 시스템으로서, 하나 이상의 마스터 노드들의 캐시 메모리들과, 하나 이상의 슬레이브 노드들의 보다 높은 레벨의 메모리들에 걸쳐, 일관성을 제어하기 위해 PoC로서 작동하도록 구성된다.
상기 요구 노드는, 데이터 판독 요구(200)를 홈 노드에 송신한다. 홈 노드는, 그 요구 자체를 서비스할 수 있거나 이행할 수 있는지를 검출하고, 이 경우에, 데이터 판독 응답(205)을 요구 노드에 제공하고 프로세스가 종료된다.
홈 노드에 의해 판독 요구를 서비스하는 것은, 홈 노드에 의해, 자신의 캐시 메모리(그것이 하나를 갖는 경우)로부터 상기 요구된 데이터를 검색하는 것, 및/또는 PoC로서의 역할에 있어서 홈 노드에 의해 관린된(캐시 메모리들(152, 162, 172) 중 하나 이상과 같은) 캐시 메모리로부터 상기 요구된 데이터를 검색하는 것을 포함할 수 있다. 일부 예들에서, 홈 노드는, 요구된 데이터의 최신 또는 유효 버전을 보유하는지 또는 그의 일관성 관리하에 캐시 메모리가 요구된 데이터의 최신 또는 유효 버전을 보유하는지를, PoC로서의 제어하에 각 캐시 메모리에서 보유한 데이터를 가리키는 (소위 스누프 필터와 같은) PoC로서 홈 노드에 의해 유지된 레코드들을 참고함으로써, 또는 캐시 메모리들의 하나 이상에 질의함으로써, 검출할 수 있다. 판독 요구를 서비스할 수 있는지를 검출하는데 홈 노드에서 사용된 특별한 기술은, 사용중 시스템 아키텍처에 좌우된다. 상기 홈 노드에 의한 판독 요구를 서비스 가능 여부의 검출은, 홈 노드에 의해, 판독 요구를 서비스하려고 하는 시도를 성공적으로 완료하기 위해서, (예를 들면, 상술한 것과 같은 스누프 필터를 사용하여) 선제 검출일 수 있거나, 고장으로부터 생기는 검출일 수 있다.
홈 노드에 의해 판독 요구를 서비스하는 것은, 판독 요구를 서비스하기 위해서 상기 메모리들(120, 130)에 대해 액세스하지 못한다는 것을 암시한다.
그렇지만, 홈 노드가 요구 자체를 서비스할 수 없는 것을 검출하면, 다음에 판독 요구(210)를 적절한 슬레이브 노드 SN(120, 130)에 송신한다. 슬레이브 노드의 메모리 제어기(DMC)는 그 요구를 수신하고, 트랜잭션(215, 220)으로서, 요구된 데이터를 메모리(DRAM)로부터 판독한다. 그리고, 메모리 제어기는, 판독 응답(225)으로서의 데이터를, 도 2의 예에 나타낸 것처럼, 홈 노드를 거쳐 요구 노드에 회신시키거나, 직접 요구 노드에 회신시킨다. 예들에서, 홈 노드에서 제공한 판독 요구는, 메모리 제어기와의 데이터 통신하여, 판독 응답이 제공되어야 하는 다른 노드(이를테면, RN)를 지정할 수 있다.
이 때문에, 홈 노드와 슬레이브 노드는, 제1 데이터 소스가 데이터 액세스 요구를 이행하지 않은 경우 제2 데이터 소스를 이행하도록 배치된, 제1 및 제2 데이터 소스들의 예들을 각각 제공한다.
메모리 액세스의 대기시간은, (적어도 일부의 상황들에서) 시스템 성능에 대해 중요하거나 심지어 결정적이다. 도 2의 예에서, 대기시간은,-메모리 판독 요구가 DRAM에 관해 참조되어야 하는 경우에- 홈 노드가 요구 200을 수신하는 것과 요구 210을 발행하는 것 사이의 지연 230과, DMC가 요구 210을 수신하는 것과 트랜잭션 215를 시작하는 것 사이의 지연 235로서, 도입된다.
도 3은 본 개시내용의 실시예에 따른 데이터 판독 액세스를 도시하는 개략적 타이밍도다.
RN-F는, 도 2를 참조하여 설명한 것과 같은 데이터 판독 요구(300)를 발행하지만, 홈 노드 자체가 판독 요구를 서비스하거나 이행할 수 없는 경우 그 판독 요구를 서비스하거나 이행해야 할 슬레이브 노드의 메모리 제어기에 소위 "판독 힌트"(305)도 직접 발행한다. RN-F는, 슬레이브 노드가 시스템 구성이나 메모리 맵 정보로부터 판독 요구에 관련되는 것을 검출할 수 있다. 예를 들면, 이것이, 시스템 레벨 구성으로서 확립되고, 도 1의 네트워크나 장치에 있어서의 목적지들과 어드레스 범위들 사이에서 매핑을 제공하는, 소위 시스템 어드레스 맵(SAM)이어도 된다. 구성들 예에서, 각 노드는 (해당 시스템내와 그 당시에) 유일한 식별부호(ID)를 갖는다. 패킷은 타겟 ID가 회신되게 지정하고, 응답이 회신되어야 하는 소스 ID를 지정한다.
판독 요구와 같은 패킷은, HN-F(완전 일관적) 또는 HN-I(입/출력 일관적)일 수 있는 홈 노드(또는, 본 기술과 관련지어 추가로 설명되지 않는, 각종 노드)에 송신될 수 있다. RN의 SAM 로직은, 어드레스의 해싱 함수를 사용하여 사용할 특별한 HN의 선택에 도달할 수 있다. 추가의 구성 정보는, 그 특별한 HN을 노드 ID로 매핑한다.
또한, RN-F(150, 160, 170)는, HN-F가 데이터 액세스 요구 자체를 이행하지 않은 경우, 슬레이브 노드가 요구에 의해 핸들링될 것을 검출하기 위해 상술한 것과 같은 SAM 기능성을 제공한다. 그래서, 하나 이상의 슬레이브 노드들의 세트도, 각 RN-F의 SAM 기능성에 의해 어드레스 범위들로 매핑된다. 이 때문에, 개개의 어드레스에 대해서, RN-F가 판독 요구를 송신할 장소인 해당 어드레스로 HN 매핑되어도 되고, 또한 RN-F가 판독 힌트(적용 가능한 경우)를 송신할 장소인 해당 동일한 어드레스로 SN-F 매핑되어도 된다. 그 판독 힌트가 슬레이브 노드의 타겟 ID를 사용하여 어드레싱되는 반면에, 판독 요구는 HN의 타겟 ID를 사용하여 어드레싱된다.
이 때문에, 예들에서, 요구 또는 마스터 노드는, (예를 들면, 데이터 액세스 요구에 관한) 어드레스나 어드레스 범위를 홈 노드와 슬레이브 노드로 매핑하는 어드레스 구성 정보에 액세스하여, 예를 들면 그 마스터 또는 요구 노드는, 액세스되는 어드레스나 어드레스 범위에 적용 가능한 (판독 요구와 같은) 데이터 액세스 요구를 홈 노드에, 해당 동일하나 어드레스나 어드레스 범위에 적용 가능한 (판독 힌트와 같은) 데이터 액세스 힌트를 슬레이브 노드에, 발행할 수 있다.
홈 노드는, 상술한 것처럼, (또, 어느 슬레이브 노드를 사용할 것인지, 및/또는 상술한 쌍으로 되는 구성을 검출하기 위해, 필요한 경우 동일한 SAM 기능성을 사용하여), 슬레이브 노드에 필요로 한 데이터를 판독 응답(310)으로서 회신하거나 판독 요구(315)를 송신하는 것을 진행한다. 그렇지만, 본 경우에, 슬레이브 노드는, 판독 힌트(305)의 시각(335)에서의 수신에 응답하여 필요로 한 데이터를 검색하기 위해 트랜잭션(320, 330)을 이미 시작하였다. 그래서, 슬레이브 노드가 심지어 트랜잭션(320)을 시작하기 위해 그 판독 요구(315)의 수신 때까지 대기하는 대신에, 메모리 제어기는, 판독 힌트(305)의 수신에 응답하여 조기에 트랜잭션(320)을 시작할 수 있다. 이전과 같이, 일단 메모리 제어기가 필요로 한 데이터를 수신하면, 판독 응답(340)으로서 그 필요로 한 데이터를 RN-F에 제공한다.
판독 힌트(305)의 제공 때문에 상기 트랜잭션(320, 330)의 조기 시작에 의해, 대기기간(345)을 절약할 수 있다. 이러한 기간의 길이는, 시스템의 다수의 상이한 설계 파라미터들과 국면들에 좌우되지만, 실시예들에서 이러한 절약은 DRAM으로부터 판독된 데이터에 대해 걸린 전체 시간과 관련지어 중요할 수 있다.
도 4는, 단지 도 3을 참조하여서 설명한 방법을 도시하는 개략적 흐름도다. 도 4에서, (그려진 것처럼) 수직한 점선들은 요구 노드의 액티비티(activity)들, 홈 노드의 액티비티들 및 슬레이브 노드의 액티비티들을 분리한다.
도 4에 도시된 프로세스는, 요구 노드에 의해, 단계 400에서 판독 요구와 판독 힌트를 발행함으로써 시작된다. 판독 요구는 필요로 한 어드레스나 어드레스 범위에 관련하여 홈 노드에 발행되고, 판독 힌트는 해당 어드레스나 어드레스 범위에 관련하며, 홈 노드가 판독 요구를 서비스할 수 없는 경우, 그 판독 요구를 서비스할 필요가 있을 슬레이브 노드에, 발행된다. 판독 요구와 판독 힌트는, 순서적으로 또는 함께 요구 노드에 의해 발행될 수 있다.
단계 405에서, 홈 노드는, 판독 요구(300)를 수신하고, 단계 410에서는 그 판독 요구가 홈 노드에 의해 이행될 수 있는지를 검출한다. 예를 들면, 홈 노드는, 캐시, 스누프 필터 등에서의 요구를 검색하여, 상기 판독 요구(300)가 홈 노드에 의해 만족될 수 있는지를 검출하여도 된다.
대답이 예(yes)인 경우, 단계 415에서, 홈 노드는, 판독 요구를 이행하고, 단계 420에서는 판독 응답(310)을 요구 노드에 제공한다.
단계 410에서 대답이 아니오(no)인 경우, 단계 425에서, 홈 노드는, 그 요구(315)를 슬레이브 노드에 송신한다. 이것은 특별한 트랜잭션에서 홈 노드의 수반을 종료시킨다.
별도로, 단계 430에서, 슬레이브 노드는, 요구 노드로부터 힌트(305)를 수신하고, 단계 435에서는 메모리에 액세스하기 위해 트랜잭션(320)을 시작한다. 그 후, 슬레이브 노드에서의 제어 흐름은 2개의 경로 중 하나에 후속할 수 있고, 이 경로간의 차이는 아래에서 한층 더 설명하겠다. 일 경로에서, 힌트(305)가 불필요하였고 홈 노드가 실제로 판독 응답(310)으로 상기 요구를 서비스할 수 있었다는 것을 (예를 들면) 암시하는, 힌트(305)가 수신되지만 이후의 판독 요구(315)가 수신되지 않은 경우, 힌트는 단계 440에서 폐기되고, 힌트의 수신에 응답하여 시작되었던 메모리 트랜잭션은 종료된다.
한편, 요구(315)가 수신되었을 경우, 트랜잭션(320, 330)은, 단계 435에서 개선된 시작 때문에 비록 그 밖의 경우보다 약간 일찍일지라도 완료되고, 판독 요구는 응답(340)이 단계 450에서 제공되기 전에 단계 445에서 이행된다.
판독 힌트는, 적어도 일부의 그 밖의 타입들의 메시지나 명령과는 달리, 액션을 필요로 하지 않고 적어도 일부의 그 밖의 타입들이나 메시지와는 달리, 응답을 필요로 하지 않는 도 1에 도시된 타입의 네트워크에서 하나의 타입의 메시지나 명령일 수 있다. 슬레이브 노드는, 예를 들면 슬레이브 노드가 이미 그 밖의 액티비티들로 완전히 로딩된 경우 판독 힌트를 폐기하거나 무시할 수 있다. 실제로, 중간 노드는, 예를 들면 해당 중간 노드의 버퍼링 및/또는 송신 용량이 완전히 로딩된 경우, 판독 힌트에 관해 폐기하거나 통과하지 못할 수 있다. 슬레이브 노드는, 판독 힌트에 관한 응답이나 수신의 확인응답을 제공하는 것이 필요하지 않다. 그러므로, 예들에서, 메모리 액세스 회로는, 수신된 판독 힌트에 응답하여 데이터 액세스를 시작할지 않할지를 판정하도록 구성될 수 있다.
도 4에서, 하나 이상의 마스터 노드들은, 데이터 액세스 요구들을 홈 노드에 발행하도록(400) 구성되고; 홈 노드는, 데이터 액세스 요구가 홈 노드에 의해 이행될 수 있거나 데이터 액세스가 하나 이상의 슬레이브 노드들에의 액세스를 필요로 하는지를 검출하고(410), 하나 이상의 슬레이브 노드들에 액세스를 필요로 할 때, 데이터 액세스 요구를 하나 이상의 슬레이브 노드들에 송신하도록(425), 구성된다. 예들에서, 하나 이상의 마스터 노드들은, 데이터 액세스 요구(200)를 홈 노드에; 또는 데이터 액세스 요구(300)를 홈 노드에 및, 데이터 액세스 힌트 메시지(305)를, 홈 노드가 해당 데이터 액세스를 이행 가능하지 않을 때 데이터 액세스 요구에 의해 지정된 데이터 액세스를 이행할 상기 하나 이상의 슬레이브 노드들 중 하나에, 송신하도록 구성되어도 된다.
도 5는, 요구 노드 RN-F(500)의 기능성의 일부를 개략적으로 도시한 것이다. 이 예는, (후술한 것처럼) 단일의 프로세서 코어에 관한 것이지만 마찬가지로 프로세서들의 그룹이나 "클러스터"에도 적용할 수 있다. 프로세서 코어(510)는, 프로세서 명령들에 근거하여 처리 동작들을 수행하고 또한, 캐시 메모리(520)에 액세스한다. 프로세서 코어는, 도 1에서의 네트워크(100)를 거쳐 데이터 처리 트랜잭션들을 시작하고, 이러한 트랜잭션들을 발행 및 핸들링하는 회로(530)를 구비한다.
그 회로(530)는, 예측회로(532), 히스토리 스토어(534), 미처리(outstanding) 트랜잭션 버퍼(536) 및 발행 로직(538)을 구비한다. 예측회로(532)와 히스토리 스토어(534)의 기능들에 대해서는 후술하겠다. 발행 로직(538)은, 데이터 판독 또는 기록 요구들의 네트워크에의 발행을 핸들링하고, 미처리 트랜잭션 스토어(536)는 발행되어 있고 완료 응답이 아직 수신되어 있지 않은 요구들의 상세내용을 유지한다.
그러므로, 도 5에서, 하나 이상의 마스터 노드들(500)은, 데이터 액세스 힌트 메시지를 송신할지를 판정하는 예측회로(532)를 구비한다.
또한, 도 5는, 최근 데이터 액세스 요구들이 제1 데이터 소스(이를테면, 홈 노드)나 제2 데이터 소스(이를테면, DRAM)에 의해 이행되었는지를 가리키는 예측 데이터를 (예를 들면, 히스토리 스토어(534)에) 저장하고, 예측 데이터로부터, 다음 데이터 액세스 요구가 제1 데이터 소스나 제2 데이터 소스에 의해 이행될 것인지를 예측하는 예측회로(532)-상기 제1 및 제2 데이터 소스는 데이터 액세스 요구가 제1 데이터 소스에 의해 이행되지 않은 경우 데이터 액세스 요구가 제2 데이터 소스에 의해 이행되도록 구성된다-; 및 데이터 액세스 요구들(300)을 제1 데이터 소스에 발행하되, 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 것을 예측하는 예측회로에 응답하여 그 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 필요가 있을지도 모른다는 표시(이를테면, 판독 힌트(305))를, 제2 데이터 소스에 발행하는 발행회로(538)를 구비하는, 데이터 처리회로의 일례를 제공한다.
도 6은, 예측회로(532)의 동작의 일례를 개략적으로 도시한 것이다. 히스토리 스토어(534)는, 예를 들면, 카운트 값을 유지한다. 카운트 값은, 이전의 판독 트랜잭션들이 어떻게 핸들링되었는지에 대해서 수신된 정보(605)에 응답하여 변경 로직(600)에 의해 변경된다. 예를 들면, 판독 트랜잭션이 그것의 응답이 홈 노드로부터 수신되도록 핸들링 되는 경우, 히스토리 스토어(534)에서 보유한 카운트는, 감분될 수 있다, 예를 들면 1씩 감소될 수 있다. 판독 응답이 DRAM에서 트랜잭션을 핸들링한 것을 가리키는 경우, 히스토리 스토어(534)에서 보유한 카운트는 증분될 수 있다, 예를 들면 1씩 증가될 수 있다.
비교기(610)는, 히스토리(534)에서 보유한 현재의 카운트와 임계값(620)을 비교한다. 현재의 카운트가 임계값보다 클 경우(많은 최근의 트랜잭션들이 DRAM에 의해 핸들링되어 있다는 것을 가리킴), 예측 로직(532)은, 판독 요구를 발행함과 동시에 판독 힌트를 발행하는 발행회로(538)에 (예를 들면, 신호(615)에 의해) 가리킬 수 있다. 한편, 카운트 값이 임계값이하일 경우, 신호(615)는 판독 힌트가 발행되지 않은 것을 가리킬 수도 있다.
판독 힌트는, 소위 코맨드 대역폭이 허가되는 경우 판독 요구와 동시에 발행될 수 있다는 것을 주목한다. 다시 말하면, 물리 버스가 상기 코맨드들을 반송하도록 구성되고 그 버스상의 공간에 의해 양쪽이 동시에 발행될 수 있는 경우, 이것이 일어날 수 있다. 판독 요구와 판독 힌트가 상이한 시각에서 발행되어야 하는 경우, 그것은, 일부 예들에서 한쪽이 먼저 발행되는 임의의 선택이다.
도 6에(및 아래에 설명된 그 밖의 예들에) 도시된 타입의 회로를 사용하는 이유의 하나는, 판독 힌트가 매 판독 요구와 동시에, 또는 매 판독 요구와 관련지어 발행되는 상황을 피하기 위한 것이다. 이렇게 하는 것은, 네트워크에 걸쳐 판독 힌트들을 해당 슬레이브 노드에 전파할 필요가 있기 때문에 전체 시스템에게 부담을 지울 수 있다. 그래서, 비록 판독요구마다 판독 힌트의 발행이 (적어도 일부 예들에서) 홈 노드가 판독 요구를 서비스할 수 없는 인스턴스들에서 상술한 대기시간 이점이 만족되는 것을 보장할 수 있지만, 이것은 노드간에 정보를 송신하는데 이용 가능한 메시지 송신 대역폭을 오버로딩할 가능성이 있다는 점에서 시스템 성능을 희생할 것이다. 그래서, 도 6에 도시된 타입의 회로 또는, 이하에 설명하는 그 밖의 예들은, 판독 힌트가 특별한 판독 요구와 관련지어 유용하거나 적절할 가능성이 높은지 여부를 예측 또는 추정할 수 있다. 이렇게 하여, (판독 힌트가 판독 요구마다 발행되는 비교 상황에서보다) 적은 판독 힌트들이 발행되지만, 도 6의 회로의 목적이나 후술할 그 밖의 예들은, 실제로 발행되는 판독 힌트들이 각각의 판독 요구들에 대해 이용 가능하거나 적절한 판독 힌트들이 되기 쉽다.
상술한 것처럼, 판독 힌트는 중간 노드에 의해 포워딩되거나 수신자 슬레이브 노드에 의해 액션이 취해져야 할 필요는 없다. 이 때문에, 일부 예들에서, RN에서 설치되는 것으로서 여기서 설명된 타입의 예측회로는, 대신에, 또는 추가로, 중간 노드나 슬레이브 노드에 설치되어, 판독 힌트를 각각 포워딩 및/또는 액션을 할지에 관한 정보를 그 중간 노드 및/또는 슬레이브 노드에 제공한다.
변경 로직(600)은, 히스토리 스토어(534)에서 보유한 카운트의 증분 또는 감분을 핸들링한다. 상기 증분의 사이즈와 감분의 사이즈가 1이거나 또는 심지어 같다는 요구사항은 아니다. 예를 들면, 카운트는, 홈 노드에 의해 핸들링된 트랜잭션마다 1씩 감분될 수 있지만 DRAM에 의해 핸들링된 트랜잭션마다 2씩 증분될 수 있다. 일부 예들에서, 그 증분 및 감분은, 예를 들면 발행회로(538)가 그렇게 너무 많이 검출하는 경우나, 너무 적은 판독 힌트들이 예를 들면 판독 힌트들의 타겟 발행속도와 비교하여 발행중일 경우, 동작시 적응형 단위로 변경될 수 있다. 마찬가지로, 상기 임계값(620)은, 예를 들면 발행회로(538)에 의해 동일한 단위로 적응될 수 있다. 또한, 카운트는 트랜잭션이 DRAM에 의해 핸들링될 때 증분되고 홈 노드 자체에 의해 핸들링될 때는 감분된다는 요구사항은 아니다. 그 변경의 극성이 반대이면, 어느 한 쪽의 센스가 사용될 수 있다. 마찬가지로, 변경 로직(600)에 의해 적용된 변경들의 극성에 따라, 비교기(610)에서 수행한 테스트는, 임계값(620)보다 큼, 임계값(620)이상, 임계값(620)미만, 또는 임계값(620)이하 중 어느 하나일 수 있다. 일반적으로, 임계값(620)과의 비교는, 변경의 극성 및 비교가 어느쪽을 사용하든지) DRAM에서 서비스하는 요구들의 우위는 예측회로가 판독 힌트가 다음 판독 요구를 수반해야 하는 것을 가리키기 쉬울 것이고, 홈 노드에서 서비스하는 요구들의 성능은 예측회로가 판독 힌트가 다음 판독 요구를 수반하지 않아야 하는 것을 가리키기 쉬울 것이다. 일반적으로, 예들에서, 상기 예측회로는, 제1 데이터 소스에 의해 이행되는 최근의 데이터 액세스에 응답하여 제1 변경량만큼, 또한 제2 데이터 소스에 의해 이행되는 최근의 데이터 액세스에 응답하여, 제1 변경량에 대한 반대 극성을 갖는 제2 변경량만큼, 카운트 값을 변경하도록 구성된다. 상술한 것처럼, 적응형 변동은, 상기 예측회로가 제1 변경량과 제2 변경량 중 한쪽이나 양쪽을 가변하도록 구성된다.
이 예들에서, 예측 데이터는 카운트 값을 포함하고, 상기 예측회로는, 최근의 데이터 액세스 요구가 제1 또는 제2 데이터 소스에 의해 이행되었는지의 여부에 따라 카운트 값을 변경하도록 구성된다.
도 6의 예에서는, 단일의 카운터를 제공하여서, 프로그램이 일반적으로 캐시 미스나 일반적으로 캐시 히트 작용에 빠질지도 모르도록 프로그램의 위상형(phased) 동작에 근거하여 예측의 일례를 제공한다. 단일의 카운터는, 이러한 바이어스를 추적하는 고상하게 단순한 방식을 캐시 히트나 캐시 미스 동작을 향해 제공한다. 그 밖의 예들에서, 보다 복잡한 카운트 구성은, 이에 대응하게 보다 상세한 예측 구성을 제공하는데 사용된다.
정보(605)의 이용은, 예측회로가, 홈 노드와 슬레이브 노드 중 한쪽 또는 양쪽으로부터 수신된, 슬레이브 노드가 하나 이상의 이전의 데이터 액세스 요구들을 이행하였는지를 가리키는 표시들(605)에 응답하여 데이터 액세스 힌트 메시지를 슬레이브 노드에 송신할지를 판정하도록 구성되는 일례를 제공할 수 있다. 예들에서, 상기 예측회로는, 제1 및 제2 데이터 소스 중 한쪽이나 양쪽으로부터 수신된, 데이터 소스가 최근의 데이터 액세스 요구를 이행한 것을 가리키는 정보에 응답하여, 예측 데이터를 저장하도록 구성된다.
도 6의 예는, 임계값과 상기 비교기(610)에 의한 "하드(hard)" 비교(카운트 값과 임계값을 비교하는 비교기의 일례)를 사용하여, 판독 힌트가 발행되어야 하는지에 관한 예/결과 없음을 나타낸다. 그 밖의 예들에서, 카운트의 사이즈는, 힌트가 사용 가능할 것이라는 유사도 표시를 제공할 수 있어, 비교기는 이 유사도와 그 밖의 요인들(이를테면, 상술한 것처럼, 원하는 속도에 대해 판독 힌트들을 발생하는 속도)에 근거하여 판독 힌트를 송신할지 않할지의 표시를 발생할 수 있다. 그래서, 대신에, 카운트는, 하드 비교로서 적용되는 대신에 "소프트" 유사도를 가리킬 수 있다.
RN 및/또는 예측회로는, 실제로 판독 힌트가 특별한 판독 요구를 위해 발행되었는지를 가리키는 정보를 저장할 수 있다. 이러한 정보는, 아래에 설명된 방식의 예에서, 판독 힌트가 유용 가능하였는지에 관한 슬레이브 노드로부터의 회신 정보와 함께, 및/또는 슬레이브 노드가 특별한 판독 요구를 서비스한 것을 가리키는 슬레이브 노드로부터 회신된 정보와 함께, 사용될 수 있다.
도 7은, 예를 들면 메모리 관리 유닛(MMU)에서 사용하기 위해, (i) 데이터 판독 동작들; (ii) 명령 페치 동작들; (iii) 메모리 어드레스 변환 정보 페칭과 같은, 판독 트랜잭션의 다수의 클래스들의 각각에 대한 일례에 대해, 예측회로의 다수의 인스턴스들(700, 710, 720)을 개략적으로 도시한 것이다. 예측회로들(700, 710, 720)은, 도 6에 도시된 타입이나 이하 설명된 타입들을 가지질 수 있다. 트랜잭션(730)의 타입에 의하면, 상기 인스턴스들(700...720)의 각 인스턴스는 개략적 멀티플렉서(740)에 의한 동작을 위해 선택될 수 있다. 적절한 예측회로의 출력은 현재의 예측으로서 사용되고, 예측이 적절하였는지를 가리키는 역으로 수신된 정보(이를테면, 이전의 요구가 홈 노드나 DRAM에 의해 핸들링되었지만, 이하 다르게 설명되는 그 밖의 예들에서, 보다 상세한 정보가 추가로 또는 대신에 제공될 수 있는 표시(605))는 해당 각각의 예측회로에 제공된다.
이 때문에, 도 7은, 예측회로가 데이터 액세스 요구들의 2개 이상의 클래스들을 위한 각각의 예측들을 발생하도록 구성되는 일례를 제공한다. 예를 들면, 데이터 액세스 요구들의 2개 이상의 클래스들은, 데이터 판독 요구들; 명령 페치 요구들; 및 어드레스 변환 페치 요구들로 이루어진 리스트로부터 선택될 수 있다.
도 8은 테이블(800)에 의해 제공되고, 예를 들면 현재의 판독 동작을 시작하는 명령에 적절한 프로그램 카운터 값의 비트들 및/또는 현재의 동작에 의해 액세스되는 물리 어드레스(PA)(예를 들면, 액세스되는 어드레스들의 범위에서 최하위 물리 어드레스)의 비트들을 조합하는 조합기(820)에서 발생한 어드레스 정보(810)에 의해 어드레싱된, 카운트 값들이나 그 밖의 정보의 테이블을 개략적으로 도시한 것이다. 조합기(820)에서 수행한 조합은, 예를 들면, 해시 동작, 각각의 값의 비트들의 그룹들이 서로 조합되는 소위 폴딩 동작 등일 수 있다.
테이블(800)은, 다수의 카운트 값들을 보유한다. 어드레스 정보(810)에 응답하여, 카운트 값들 중 하나는, 액세스를 위해 선택되고, 카운트 값(805)으로서 (예를 들면, 도 6의 비교기(610)와 유사한 비교기에) 출력된다. 이전의 판독 요구의 결과(예를 들면, 홈 노드나 DRAM에 의해 서비스되었는지)에 관한 정보(605)가 수신될 때, (해당 판독 요구에 적절한 PA/PC 정보를 사용하여 상기 조합기(820)에 의해 결정된 것처럼) 해당 판독 요구에 적절한 각각의 카운트 값은, 예를 들면 변경 로직(600)이나 유사한 것을 사용하여 변경된, 예를 들면 증분 또는 감분된다.
그래서, 도 7은 판독 요구의 클래스에 따라 (동작면에서) 분할된 예측회로의 일례를 제공한다. 도 8은 판독 요구에 관련되는 PC와 PA의 한쪽 또는 양쪽의 의존성에 따라 (동작면에서) 분할된 예측회로의 일례를 제공한다.
상기 조합기(820)의 동작은, PA 및 PC(의 한쪽 또는 양쪽)의 값들의 상이한 세트들이 동일한 어드레스 정보(810)의 발생에 이어질 수 있는 소위 에일리어싱의 인스턴스들에 이어질 수 있다는 것을 주목한다. 이러한 잠재적 발행은, 후술하는 도 8의 예에 의해 적어도 부분적으로 경감될 수 있다.
도 9는 예측회로의 다른 예를 개략적으로 도시한 것이다. 여기서, 카운트 값들은, 현재의 프로그램 카운터의 한쪽 또는 양쪽으로부터 얻어진 값과 액세스되는 물리 어드레스가 적절한 카운트 값을 선택하는 인덱스를 발생하는데 사용되도록, 예를 들면 256개의 엔트리들의 테이블들에 저장된다(이 때문에 8비트 인덱스에 의해 어드레싱된다).
이 예에서는, 3개의 상기와 같은 테이블(900, 910, 920)을 제공한다. 각 경우의 인덱스는, 프로그램 카운터 및/또는 액세스되는 물리 어드레스의 비트들의 상이한 조합에 의해 발생된다. 그 인덱스들의 발생은, 각각의 폴딩/해싱 로직(905, 915, 925)에 의해 실시된다.
폴딩/해싱 로직(905)은, 프로그램 카운터와 물리 어드레스의 (본 예들에서는) 32비트 전부에 관해 동작한다. 일례에서, 이 폴딩/해싱 로직은, 이 값들을, 예를 들면, 프로그램 카운터와 물리 어드레스 값들의 각각을 각 8비트 부분(예를 들면, LSB에서 시작하고 MSB에서 끝나는 연속적인 8비트 부분들)로 분할하고, 이 부분들을 캐리없이 함께 가산함으로써(배타적-OR 연산) 함께 폴딩한다. 그렇지만, 그 밖의 비트 감소 또는 해싱 기술들이 사용될 수 있다. 그 결과로 얻어진 인덱스는, 테이블(900)에서 적절한 엔트리를 인덱스하는데 사용된다.
테이블(900)에서의 각 엔트리는, 각각의 카운트 값과 태그를 저장하고 있다. 태그는, 프로그램 카운터 및/또는 물리 어드레스로부터도 발생되지만, 상이한 폴딩 또는 해싱 기술들을 사용한다. 태그는 카운트 값과 함께 저장되고, 또한 폴딩/해싱 로직(905)에 의해 별도로 발생된다. 테이블 엔트리가 액세스될 때, 카운트(906)뿐만 아니라, 폴딩/해싱 로직(905)에 의해 발생된 태그(908)와 비교된 저장된 태그(907)도 출력된다. 비교기(909)는, 2개의 태그 값들이 동일한지를 검출한다. 동일한 경우, 비교기(930)에 의한 카운트 값과 임계값(thr1)과의 비교는 예측과 관련되고, 또한 각각의 카운트 값은 판독 요구의 결과에 대해 역으로 수신된 정보에 응답하여(예를 들면, 도 9에 도시되지 않은, 변경 로직(600)과 동일한 변경 로직에 의해) 수정된다. 태그 값들이 동일한 것이 아닌 경우, 이것이 단지 의미할 수 있는 것은, 보다 긴 어드레스 값들을 보다 짧은 인덱스 값에 폴딩 또는 해싱하는 에일리어싱 효과가, 부정확한 엔트리가 프로그램 카운터와 물리 어드레스의 현재의 조합에 대해 판독되어 있다는 것을 의미하는 것이다. 이 경우에, 비교기(930)에 의한 비교는, 예측 프로세스의 일부로서 사용되지 않는다.
유사한 구성은, 프로그램 카운터 및/또는 물리 어드레스의 최하위 16비트만을 사용하는 것을 제외하고는, 폴딩/해싱 로직(915)에 의해 실시된다. 마찬가지로, 폴딩/해싱 로직(925)도, 프로그램 카운터 및/또는 물리 어드레스의 최하위 8비트만을 사용한다. 각각은, 비교기 909 및 비교기 930의 유사한 구성을 사용한다.
그래서, 폴딩/해싱 로직(915, 925)의 3개의 인스턴스들은, PCA/PA비트들의 각각의 상이한 부분들, 예를 들면 각각의 사이즈가 다른 부분들을 사용하여, 인덱스와 태그를 발생한다. 보다 작은 부분들은 상술한 에일리어싱의 타입일 가능성이 보다 많다. 테이블들의 2개이상에 대한 태그들의 비교가 긍정인 것(태그들이 일치)을 증명하는 경우에, 프로그램 카운터/물리 어드레스의 대다수의 비트들을 사용하여 그것의 인덱스를 발생하는 테이블들의 해당 하나로부터 카운트 값의 임계값과의 비교가 사용된다. 달리 말하면, (도 9에 도시된 것처럼) 보다 높이 위에 있는 테이블은, 다수의 테이블들이 일치 태그들을 갖는 경우에서 사용된다.
그 밖의 예들에서, 최하위 엔트리가 가장 최근의 히스토리 값인 경우 (가령) 32개의 히스토리 값들을 갖는 오더링된(선입선출) 레지스터(950)에 배치된, 최근의 요구들의 결과의 히스토리, 예를 들면 판독 요구가 홈 노드에 의해 서비스되었던 것을 가리키는 1과 판독 요구가 DRAM에 의해 서비스되었던 것을 가리키는 0은, 예를 들면 상술한 것과 같은 동일한 부분들(31:0, 15:0, 7:0)을 사용하여, PC 및/또는 PA에 추가로 또는 이 대신에 폴딩/해싱 프로세스에 포함될 수 있다.
이 때문에, 도 9는, 데이터 액세스 요구를 시작하는 명령을 처리하기 위한 프로그램 카운터 값; 및 데이터 액세스 요구에 응답하여 액세스되는 데이터 항목의 어드레스 중, 하나 이상에 따라 예측을 발생하도록 구성되는 예측회로의 일례를 제공한다. 예들에서, 예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 인덱스를 (상기 회로 905, 915, 925에 의해) 발생하고, 그 인덱스에 의해 카운터 값들의 테이블에 액세스하도록, 구성된다. 상기 회로 905, 915, 925는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 태그를 발생하고 그 태그를 엔트리와 관련지어 상기 인덱스에 의해 액세스되는 카운터 값들의 테이블에 저장하기 위한 회로이어도 된다. 예들에서, (상기 회로 905, 915, 925 및 비교기들 909에 의해) 예측회로는, 저장된 태그를 검색하고, 이 검색된 태그를, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 발생된 태그와 비교하도록 구성된다.
도 9에서, 예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽의 상이한 각각의 부분들로부터 발생된 각각의 인덱스들에 의해 카운터 값들의 2개 이상의 테이블들에 액세스하도록 구성된다. 상술한 것처럼, 예들에서, 예측회로는, 인덱스가 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽의 대다수의 비트들에 의해 발생되었던 2개 이상의 테이블 중 해당 테이블에 의해 저장된 카운터 값에 따라 예측을 발생하도록 구성된다.
도 10은, 판독 힌트(1000)와 판독 또는 기록 요구(1010)의 한쪽 또는 양쪽을 수신하도록 배치된 (DMC 122, 132와 같은) 메모리 제어기(1005)를 개략적으로 도시한 것이다. 미처리 판독 힌트들(1020)의 버퍼는, 새로운 판독 힌트가 수신되어 DRAM에의 액세스를 시작하는 액세스 로직(1030)에 의해 액션이 취해질 때, 그 힌트를 규정하는 정보는 미처리 힌트 버퍼(1020)에 저장되도록 구성된다.
예들에서, 판독 힌트(데이터 액세스 힌트 메시지) 및 데이터 액세스 요구(판독 요구)는, 각각 다양한 하나 이상의 메모리 어드레스들에 의해 데이터 액세스를 지정한다. 이후의 요구가 미처리 힌트로서 동일한 메모리 어드레스나 어드레스 범위에 관해 수신되고, 그 요구가 힌트가 수신되고 액션이 시작된 후 (이하에 설명되는) 충분하게 곧 수신되는 경우에, 검출회로(1022)는 미처리 힌트 버퍼(1020)로부터 삭제한다. 별도로, 그 요구는 미처리 요구 버퍼(1040)에 저장된다. 액세스 로직(1030)은, 해당 메모리 어드레스나 어드레스들에 계속해서 액세스하고, 적절한 시간에 응답(1050)을 생성한다. 응답은, 판독 요구의 경우에 요구되었던 데이터와, 일부 예들에서 판독 응답의 데이터 비이트(beat)나 최종 데이터 항목을 수반할 수도 있는 완료 확인응답을 포함하여도 된다.
검출회로(1022)는, 판독 힌트가, 이 판독 힌트에 대응한 요구가 수신되었을 때에 활성이었는지(예를 들면 미처리 힌트 버퍼(1020)에 여전히 보유되었는지)를 검출하고, 이 검출 결과를 가리키는 신호(1024)를 발생하도록 구성된다.
상기 응답(1050)의 일부 또는 전부를 형성하는 확인응답은, (예측회로가 자신의 예측이 정확한 것을 확인하기 위해 사용할 수 있는) 상기 DRAM으로부터 데이터가 얻어졌던 것을 식별하는 정보를 포함하여도 된다. 이것은, 예를 들면 응답(340)을 제공한 특정한 메모리 리소스의 식별자로서, 그 응답(340)을 제공하는 메모리 리소스의 타입의 분류의 식별자로서, 응답(340)의 소스의 식별자(도 3), 및/또는 응답(340)이 DRAM에 의해 제공되었던 표시를, 확인응답에서 가리킴으로써 구현될 수 있다.
또한, 상기 응답의 일부 또는 전부를 형성하는 확인응답은, 이후의 요구가 수신되었던 시간에 판독 힌트가 여전히 활성이었는지에 관한 (신호 1024에 따라) 표시도 포함함으로써, 그 힌트의 사용이 메모리 액세스 대기시간의 일부를 절약할 때 유용하였던 것을 가리킬 수도 있다.
힌트가 수신되어 액션이 취해지지만(그리고 미처리 힌트 버퍼(1020)에 저장되지만) 이후의 요구가 수신되지 않은 경우(예를 들면, 그 이유는 HN이 결국 요구를 서비스할 수 있었기 때문이다), 판독 힌트가 수신되고 및/또는 먼저 미처리 힌트 버퍼에 저장된 이래로 소정 시간 후, 또는 액세스 로직(1030)은 소정의 스테이지가 힌트에 의해 시작된 액세스의 처리, 또는 2개 중 앞선 것, 또는 2개 중 나중의 것에서 도달되는 것을 가리킬 때, 상기 검출회로(1022)는, 힌트를 은퇴시키고 그 힌트를 미처리 힌트 버퍼(1020)로부터 삭제한다.
그래서, 메모리 액세스 회로가 판독 힌트에 응답하여 주어진 다양한 하나 이상의 메모리 어드레스들에 대한 데이터 액세스를 시작하였을 때, 상기 메모리 액세스 회로는, 메모리 제어기가 그 주어진 다양한 하나 이상의 메모리 어드레스들을 지정하는 이후의 데이터 액세스 요구를 수신할 때만 데이터 액세스 응답으로서 상기 액세스된 데이터를 제공하도록 구성된다. 판독 힌트 단독으로 해당 데이터의 회신에 (구성 예에서) 이어지지 않는다. 그것은, 단지 이후의 판독 요구의 준비로 메모리 액세스를 시작할 뿐이다.
그렇지만, 판독 요구가 이후에 (판독 힌트가 은퇴된 후) 수신되는 경우, 신호(1024)는, 판독 요구가 수신되었을 때에 관련된 판독 힌트가 활성이 아니었던 것을 가리키도록 발생되었을 것이다.
상술한 예측회로의 예들에서, 카운트 값들 등은, 판독 요구가 홈 노드에 의해 또는 DRAM과 같은 슬레이브 노드를 참조하여 서비스되거나 이행되었는지의 여부에 따라 변경된다. 그 밖의 예들에서, 카운트 값들은, (i) 판독 힌트가 실제로 (슬레이브 노드로부터 정보를 역으로 갈 필요없이 예측회로 및/또는 RN에서 이루어질 수 있는 검출) 제공되었는지와, (ii) 각각의 판독 힌트가 이후의 요구가 수신되었을 때 여전히 활성이었는지 중, 한쪽 또는 양쪽에 따라 (대신에, 또는 추가로) 변경될 수 있음으로써, 그 힌트의 이용이 메모리 액세스 대기시간의 일부분을 절약할 때 유용하였다는 것을 가리킬 수 있다. "유용한" 판독 힌트가 제공되었을 경우, 이것은, 추가의 판독 힌트들이 (예를 들면, 분류 또는 해싱된 어드레스에 대해) 제공되어야 하는 표시를 향해 카운트 값이나 다른 예측을 조정하는 경향이 있었을 것이다. 판독 힌트가 제공되었지만 "유용하지" 않았을 경우, 이것은, 추가의 판독 힌트들이 제공되지 않아야 하는 표시를 향해 카운트 값(들)의 변경을 조정하도록 구성될 수 있다. 판독 힌트가 제공되지 않았지만 판독 요구가 슬레이브 노드(예를 들면, DRAM)에 의해 서비스되었을 경우, 이것은 추가의 판독 힌트들이 제공되어야 하는 표시를 향해 예측을 조정하는 경향이 있을 수 있었다. 이 결과들 중 어느 하나의 임의의 개개의 인스턴스는, 저절로, RN의 작용에서 변경이 (아마도 그 개개의 인스턴스가 카운트가 임계값의 타측으로 이동하게 하지 않으면) 판독 힌트들을 발행하게 하거나 발행하게 하지 않을 수도 있지만, 이러한 개개의 인스턴스는 하나의 결과나 다른 결과를 향해 카운트 값을 여전히 이동할 수 있거나, 또는 달리 말하면 예측을 하나의 방식이나 다른 방식으로 조정하는 경향이 있을 수 있다는 것을 알 것이다.
이 때문에, 도 10은, 메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지(1000)에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하고; 메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구(1010)에 응답하여 메모리에 저장된 데이터에 액세스하고 그 액세스된 데이터를 데이터 액세스 응답(1050)으로서 데이터 액세스 요구에 제공하도록, 구성된 (액세스 로직(1030)과 같은) 메모리 액세스회로를 구비하는 메모리 제어기의 일례를 제공한다.
도 11은,
단계 1100에서, 메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하는 단계;
단계 1110에서, 메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구에 응답하여 메모리에 저장된 데이터에 액세스하는 단계; 및
단계 1120에서, 데이터 액세스 요구에 대한 데이터 액세스 응답으로서 액세스된 데이터를 제공하는 단계를 포함하는, 메모리 제어방법을 개략적으로 도시한 것이다.
도 12는,
단계 1200에서, 최근 데이터 액세스 요구들이 제1 데이터 소스나 제2 데이터 소스에 의해 이행되었는지를 가리키는 예측 데이터를 저장하는 단계;
단계 1210에서, 예측 데이터로부터, 다음 데이터 액세스 요구가 제1 데이터 소스나 제2 데이터 소스에 의해 이행될 것인지를 예측하는 단계-상기 제1 및 제2 데이터 소스는 데이터 액세스 요구가 제1 데이터 소스에 의해 이행되지 않은 경우 데이터 액세스 요구가 제2 데이터 소스에 의해 이행되도록 구성된다-; 및
단계 1220에서, 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 것을 예측하는 예측회로에 응답하여 그 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 필요가 있을지도 모른다는 표시를, 제2 데이터 소스에 발행하는 단계를 포함하는, 데이터 처리방법을 개략적으로 도시한 것이다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 명시된 동작을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 명시된 동작을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스(이를테면, 상술한 것과 같은 처리소자)는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 명시된 동작을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 본 기술들의 예시적 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 기술들은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 기술들의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 추가 및 수정을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 기술들의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (29)

  1. 메모리 제어기로서,
    메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하고;
    메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구에 응답하여 메모리에 저장된 데이터에 액세스하고;
    데이터 액세스 요구에 대한 데이터 액세스 응답으로서 액세스된 데이터를 제공하도록 구성된, 메모리 액세스 회로를 구비하는, 메모리 제어기.
  2. 제 1 항에 있어서,
    데이터 액세스 힌트 메시지와 데이터 액세스 요구는 각각 다양한 하나 이상의 메모리 어드레스들에 의해 데이터 액세스를 지정하는, 메모리 제어기.
  3. 제 2 항에 있어서,
    메모리 액세스 회로가 데이터 액세스 힌트 메시지에 응답하여 주어진 다양한 하나 이상의 메모리 어드레스들에 대한 데이터 액세스를 시작하였을 때, 메모리 액세스 회로는, 메모리 제어기가 그 주어진 다양한 하나 이상의 메모리 어드레스들을 지정하는 이후의 데이터 액세스 요구를 수신할 때만 데이터 액세스 응답으로서 액세스된 데이터를 제공하도록 구성되는, 메모리 제어기.
  4. 제 1 항에 있어서,
    데이터 액세스 요구는, 메모리 제어기와의 데이터 통신에서, 그 데이터 액세스 응답이 제공되어야 하는 다른 노드를 지정하는, 메모리 제어기.
  5. 제 1 항에 있어서,
    메모리 액세스 회로는, 수신된 데이터 액세스 힌트 메시지에 응답하여 데이터 액세스의 시작 여부를 판정하도록 구성되는, 메모리 제어기.
  6. 데이터 처리 시스템으로서,
    관련된 캐시 메모리를 각각 갖는 하나 이상의 마스터 노드들;
    청구항 1에 따른 메모리 제어기를 각각 구비하는 하나 이상의 슬레이브 노드들; 및
    데이터 처리 시스템에 의해 저장된 데이터 중에서 일관성을 제어하는 홈 노드를 구비하는, 데이터 처리 시스템
  7. 제 6 항에 있어서,
    하나 이상의 마스터 노드들은 데이터 액세스 요구들을 홈 노드에 발행하도록 구성되고;
    홈 노드는, 데이터 액세스 요구가 홈 노드에 의해 이행될 수 있거나 데이터 액세스가 하나 이상의 슬레이브 노드들에의 액세스를 필요로 하는지를 검출하고, 하나 이상의 슬레이브 노드들에 액세스를 필요로 할 때, 데이터 액세스 요구를 하나 이상의 슬레이브 노드들에 송신하도록, 구성되는, 데이터 처리 시스템.
  8. 제 7 항에 있어서,
    하나 이상의 마스터 노드들은,
    데이터 액세스 요구를 홈 노드에; 또는
    데이터 액세스 요구를 홈 노드에 및, 데이터 액세스 힌트 메시지를, 홈 노드가 해당 데이터 액세스를 이행 가능하지 않을 때 데이터 액세스 요구에 의해 지정된 데이터 액세스를 이행할 하나 이상의 슬레이브 노드들 중 하나에, 송신하도록 구성되는, 데이터 처리 시스템.
  9. 제 8 항에 있어서,
    하나 이상의 마스터 노드들은, 데이터 액세스 힌트 메시지를 송신할지를 판정하는 예측회로를 구비하는, 데이터 처리 시스템.
  10. 제 9 항에 있어서,
    예측회로는, 홈 노드와 슬레이브 노드 중 한쪽이나 양쪽으로부터 수신된, 슬레이브 노드가 하나 이상의 이전의 데이터 액세스 요구들을 이행하였는지를 가리키는 표시들에 응답하여, 데이터 액세스 힌트 메시지를 슬레이브 노드에 송신할지를 판정하도록 구성되는, 데이터 처리 시스템.
  11. 메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 힌트 메시지에 응답하여 메모리에 저장된 데이터의 데이터 액세스를 시작하는 단계;
    메모리 제어기와의 데이터 통신에서 다른 노드로부터 수신된 데이터 액세스 요구에 응답하여 메모리에 저장된 데이터에 액세스하는 단계; 및
    데이터 액세스 요구에 대한 데이터 액세스 응답으로서 액세스된 데이터를 제공하는 단계를 포함하는, 메모리 제어방법.
  12. 최근 데이터 액세스 요구들이 제1 데이터 소스나 제2 데이터 소스에 의해 이행되었는지를 가리키는 예측 데이터를 저장하고, 예측 데이터로부터, 다음 데이터 액세스 요구가 제1 데이터 소스나 제2 데이터 소스에 의해 이행될 것인지를 예측하는 예측회로-상기 제1 및 제2 데이터 소스는 데이터 액세스 요구가 제1 데이터 소스에 의해 이행되지 않은 경우 데이터 액세스 요구가 제2 데이터 소스에 의해 이행되도록 구성된다-; 및
    데이터 액세스 요구들을 제1 데이터 소스에 발행하되, 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 것을 예측하는 예측회로에 응답하여 그 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 필요가 있을지도 모른다는 표시를, 제2 데이터 소스에 발행하도록 구성되는, 발행회로를 구비하는, 데이터 처리회로.
  13. 제 12 항에 있어서,
    예측회로는, 제1 및 제2 데이터 소스 중 한쪽이나 양쪽으로부터 수신된, 데이터 소스가 최근의 데이터 액세스 요구를 이행한 것을 가리키는 정보에 응답하여, 예측 데이터를 저장하도록 구성되는, 데이터 처리회로.
  14. 제 13 항에 있어서,
    예측 데이터는 카운트 값을 포함하고, 예측회로는, 최근의 데이터 액세스 요구가 제1 또는 제2 데이터 소스에 의해 이행되었는지의 여부에 따라 카운트 값을 변경하도록 구성되는, 데이터 처리회로.
  15. 제 14 항에 있어서,
    예측회로는, 카운트 값과 임계값을 비교하는 비교기를 구비하는, 데이터 처리회로.
  16. 제 14 항에 있어서,
    예측회로는, 제1 데이터 소스에 의해 이행되는 최근의 데이터 액세스에 응답하여 제1 변경량만큼, 또한 제2 데이터 소스에 의해 이행되는 최근의 데이터 액세스에 응답하여, 제1 변경량에 대한 반대 극성을 갖는 제2 변경량만큼, 카운트 값을 변경하도록 구성되는, 데이터 처리회로.
  17. 제 16 항에 있어서,
    예측회로는 제1 변경량과 제2 변경량 중 한쪽이나 양쪽을 가변하도록 구성되는, 데이터 처리회로.
  18. 제 12 항에 있어서,
    예측회로는, 데이터 액세스 요구들의 2개 이상의 클래스들에 대한 각각의 예측들을 발생하도록 구성되는, 데이터 처리회로.
  19. 제 18 항에 있어서,
    데이터 액세스 요구들의 2개 이상의 클래스들은:
    데이터 판독 요구들;
    명령 페치 요구들; 및
    어드레스 변환 페치 요구들로 이루어진 리스트로부터 선택되는, 데이터 처리회로.
  20. 제 12 항에 있어서,
    예측회로는:
    데이터 액세스 요구를 시작하는 처리 명령에 대한 프로그램 카운터 값;
    데이터 액세스 요구에 응답하여 액세스되는 데이터 항목의 어드레스의,
    하나 이상에 따라 예측을 발생하도록 구성되는, 데이터 처리회로.
  21. 제 20 항에 있어서,
    예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 인덱스를 발생하고, 인덱스에 의해 카운터 값들의 테이블에 액세스하도록, 구성되는, 데이터 처리회로.
  22. 제 21 항에 있어서,
    예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 태그를 발생하고, 인덱스에 의해 액세스되는 카운터 값들의 테이블에 있는 엔트리와 관련지어 태그를 저장하도록 구성되는, 데이터 처리회로.
  23. 제 22 항에 있어서,
    예측회로는, 저장된 태그를 검색하고, 검색된 태그를 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽으로부터 발생된 태그와 비교하도록 구성되는, 데이터 처리회로.
  24. 제 23 항에 있어서,
    예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽의 상이한 각각의 부분들로부터 발생된 각각의 인덱스들에 의해 카운터 값들의 2개 이상의 테이블들에 액세스하도록 구성되는, 데이터 처리회로.
  25. 제 24 항에 있어서,
    2개 이상의 테이블들이 발생된 태그와 일치하는 저장된 태그를 가질 때, 예측회로는, 프로그램 카운터 값과 데이터 항목의 어드레스의 한쪽 또는 양쪽의 비트들의 보다 큰 수만큼 인덱스를 발생하였던 2개 이상의 테이블들 중 해당 테이블에 의해 저장된 카운터 값에 따라 예측을 발생하도록 구성되는, 데이터 처리회로.
  26. 청구항 12에 따른 회로를 각각 구비하고 관련된 캐시 메모리를 각각 갖는, 하나 이상의 마스터 노드들;
    제1 데이터 소스를 제공하되, 요구된 데이터를 캐시 메모리들의 하나 이상으로부터 취득하여서 주어진 데이터 액세스 요구를 이행할 수 있는지를 검출하도록 구성되고, 또 주어진 데이터 액세스 요구를 이행할 수 없을 때 제2 데이터 소스로부터 상기 요구된 데이터를 요구하도록 구성되는, 홈 노드; 및
    보다 높은 레벨의 메모리를 각각 갖되, 제2 데이터 소스를 제공하는 하나 이상의 슬레이브 노드들을 구비하는, 데이터 처리장치.
  27. 제 26 항에 있어서,
    마스터 노드는, 데이터 송신을 하나 이상의 슬레이브 노드들 중 하나에 요구하는 송신 요구를, 홈 노드에 발행하도록 구성되고;
    홈 노드는, 슬레이브 노드에서의 메모리 어드레스에 기록된 데이터가 이후의 액세스 요구에 응답하여 해당 메모리 어드레스로부터 판독된 데이터와 일관적이도록 하나 이상의 슬레이브 노드들에 대한 송신 요구들과 액세스 요구들을 직렬화하도록 구성되는, 데이터 처리장치.
  28. 제 26 항에 있어서,
    홈 노드는, 하나의 노드에 의해 일관적 메모리 시스템에서의 메모리 어드레스에 기록된 데이터가 상기 노드들의 다른 노드에 의해 일관적 메모리 시스템에서의 해당 메모리 어드레스로부터 판독된 데이터와 일관적이도록 일관적 메모리 시스템으로서, 하나 이상의 마스터 노드들의 캐시 메모리들과, 하나 이상의 슬레이브 노드들의 보다 높은 레벨의 메모리들에 걸쳐, 일관성을 제어하도록 구성되는, 데이터 처리장치.
  29. 최근 데이터 액세스 요구들이 제1 데이터 소스나 제2 데이터 소스에 의해 이행되었는지를 가리키는 예측 데이터를 저장하는 단계;
    예측 데이터로부터, 다음 데이터 액세스 요구가 제1 데이터 소스나 제2 데이터 소스에 의해 이행될 것인지를 예측하는 단계-상기 제1 및 제2 데이터 소스는 데이터 액세스 요구가 제1 데이터 소스에 의해 이행되지 않은 경우 데이터 액세스 요구가 제2 데이터 소스에 의해 이행되도록 구성된다-; 및
    주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 것을 예측하는 예측회로에 응답하여 그 주어진 데이터 액세스 요구가 제2 데이터 소스에 의해 이행될 필요가 있을지도 모른다는 표시를, 제2 데이터 소스에 발행하는 단계를 포함하는, 데이터 처리방법.
KR1020197024440A 2017-02-08 2018-01-23 데이터 처리 KR102526431B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/427,391 US10402349B2 (en) 2017-02-08 2017-02-08 Memory controller having data access hint message for specifying the given range of one or more memory addresses
US15/427,391 2017-02-08
PCT/GB2018/050191 WO2018146448A1 (en) 2017-02-08 2018-01-23 Data processing

Publications (2)

Publication Number Publication Date
KR20190112020A true KR20190112020A (ko) 2019-10-02
KR102526431B1 KR102526431B1 (ko) 2023-04-27

Family

ID=61132819

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197024440A KR102526431B1 (ko) 2017-02-08 2018-01-23 데이터 처리

Country Status (8)

Country Link
US (2) US10402349B2 (ko)
EP (1) EP3580661B1 (ko)
JP (1) JP7089530B2 (ko)
KR (1) KR102526431B1 (ko)
CN (1) CN110235113B (ko)
IL (1) IL268321B (ko)
TW (1) TWI766936B (ko)
WO (1) WO2018146448A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402349B2 (en) * 2017-02-08 2019-09-03 Arm Limited Memory controller having data access hint message for specifying the given range of one or more memory addresses
US11269773B2 (en) * 2019-10-08 2022-03-08 Arm Limited Exclusivity in circuitry having a home node providing coherency control
US12056374B2 (en) 2021-02-03 2024-08-06 Alibaba Group Holding Limited Dynamic memory coherency biasing techniques

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006139646A (ja) * 2004-11-15 2006-06-01 Seiko Epson Corp データ転送装置およびデータ転送方法
GB2440758A (en) * 2006-08-08 2008-02-13 Advanced Risc Mach Ltd Interconnect logic for a data processing apparatus
JP2011054077A (ja) * 2009-09-04 2011-03-17 Toshiba Corp マルチプロセッサ
US20150199290A1 (en) * 2014-01-13 2015-07-16 Arm Limited Data processing system and method for handling multiple transactions

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US7058767B2 (en) * 2003-04-28 2006-06-06 International Business Machines Corporation Adaptive memory access speculation
US7555597B2 (en) * 2006-09-08 2009-06-30 Intel Corporation Direct cache access in multiple core processors
US7890699B2 (en) 2008-01-10 2011-02-15 International Business Machines Corporation Processing unit incorporating L1 cache bypass
EP2529312A4 (en) * 2010-01-28 2013-07-03 Hewlett Packard Development Co INTERFACE METHOD AND DEVICE FOR MEMORY DEVICES
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
GB2522906B (en) * 2014-02-10 2021-07-14 Advanced Risc Mach Ltd Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address
US10445240B2 (en) * 2014-08-01 2019-10-15 Analog Devices Global Unlimited Company Bus-based cache architecture
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US20160224241A1 (en) * 2015-02-03 2016-08-04 Qualcomm Incorporated PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM
US10282297B2 (en) * 2017-02-08 2019-05-07 Arm Limited Read-with overridable-invalidate transaction
US10402349B2 (en) * 2017-02-08 2019-09-03 Arm Limited Memory controller having data access hint message for specifying the given range of one or more memory addresses

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006139646A (ja) * 2004-11-15 2006-06-01 Seiko Epson Corp データ転送装置およびデータ転送方法
GB2440758A (en) * 2006-08-08 2008-02-13 Advanced Risc Mach Ltd Interconnect logic for a data processing apparatus
JP2011054077A (ja) * 2009-09-04 2011-03-17 Toshiba Corp マルチプロセッサ
US20150199290A1 (en) * 2014-01-13 2015-07-16 Arm Limited Data processing system and method for handling multiple transactions

Also Published As

Publication number Publication date
KR102526431B1 (ko) 2023-04-27
EP3580661B1 (en) 2023-03-01
IL268321A (en) 2019-09-26
JP2020514878A (ja) 2020-05-21
JP7089530B2 (ja) 2022-06-22
US20190347217A1 (en) 2019-11-14
EP3580661A1 (en) 2019-12-18
TWI766936B (zh) 2022-06-11
CN110235113B (zh) 2023-11-14
US20180225232A1 (en) 2018-08-09
US10713187B2 (en) 2020-07-14
IL268321B (en) 2020-10-29
US10402349B2 (en) 2019-09-03
WO2018146448A1 (en) 2018-08-16
CN110235113A (zh) 2019-09-13
TW201832084A (zh) 2018-09-01

Similar Documents

Publication Publication Date Title
US11314648B2 (en) Data processing
KR102319809B1 (ko) 데이터 처리 시스템 및 다중 트랜잭션들을 처리하는 방법
US20180039424A1 (en) Method for accessing extended memory, device, and system
US8656137B2 (en) Computer system with processor local coherency for virtualized input/output
US20130290643A1 (en) Using a cache in a disaggregated memory architecture
JP5666722B2 (ja) メモリ・インターフェース
US20090265293A1 (en) Access speculation predictor implemented via idle command processing resources
US10713187B2 (en) Memory controller having data access hint message for specifying the given range of one or more memory addresses
CN114217861A (zh) 数据处理方法及装置、电子装置和存储介质
CN113794764A (zh) 服务器集群的请求处理方法、介质和电子设备
US8549274B2 (en) Distributive cache accessing device and method for accelerating to boot remote diskless computers
KR20180092276A (ko) 캐시 콘텐트 관리
US7725660B2 (en) Directory for multi-node coherent bus
US7669013B2 (en) Directory for multi-node coherent bus
US10990543B1 (en) Apparatus and method for arbitrating access to a set of resources
US10733118B2 (en) Computer system, communication device, and storage control method with DMA transfer of data
US10970225B1 (en) Apparatus and method for handling cache maintenance operations
US11875152B2 (en) Methods and systems for optimizing file system usage
CN113590507B (zh) 一种分布式存储***及其缓存层、数据访问方法、设备
US10255103B2 (en) Transaction handling
US11914865B2 (en) Methods and systems for limiting data traffic while processing computer system operations
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法

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