KR101814412B1 - 데이터 버퍼와 연관된 스누프 필터링의 제공 - Google Patents

데이터 버퍼와 연관된 스누프 필터링의 제공 Download PDF

Info

Publication number
KR101814412B1
KR101814412B1 KR1020157021955A KR20157021955A KR101814412B1 KR 101814412 B1 KR101814412 B1 KR 101814412B1 KR 1020157021955 A KR1020157021955 A KR 1020157021955A KR 20157021955 A KR20157021955 A KR 20157021955A KR 101814412 B1 KR101814412 B1 KR 101814412B1
Authority
KR
South Korea
Prior art keywords
request
snooped
memory
memory request
fabric
Prior art date
Application number
KR1020157021955A
Other languages
English (en)
Other versions
KR20150107831A (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 KR20150107831A publication Critical patent/KR20150107831A/ko
Application granted granted Critical
Publication of KR101814412B1 publication Critical patent/KR101814412B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

일 실시예에서, 충돌 검출 로직이 시스템 온 칩(SoC) 상의 시스템의 일관성 패브릭의 중재기로부터의 복수의 메모리 요청을 수신하기 위해 구성된다. 충돌 검출 로직은 제 1 어드레스와 연관된 표시자가 일관성 패브릭이 제 1 어드레스에 대한 제어를 갖는 것을 표시하는 경우에 제 1 어드레스에 대한 제 1 스누핑된 메모리 요청을 스누핑되지 않은 메모리 요청으로 다운그레이드한다. 다른 실시예가 설명되고 청구된다.

Description

데이터 버퍼와 연관된 스누프 필터링의 제공{PROVIDING SNOOP FILTERING ASSOCIATED WITH A DATA BUFFER}
본 개시는 컴퓨팅 시스템에 관한 것이며, 보다 상세하게는 복수의 디바이스를 메모리에 연결하는 패브릭(fabric)을 포함하는 시스템에 관한 것이나 이에 한정되지 않는다.
[배경기술]
본 개시의 배경기술이 되는 선행 문헌으로는, 예를 들어, 미국 특허출원공개공보 US2011/0320672호가 있다.
도 1은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템의 블록도의 일 실시예를 도시한다.
도 2는 본 발명의 일 실시예에 따른 시스템 온 칩(SoC)의 고차원 도면의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 공유 메모리 패브릭의 일부분의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 승인 중재기의 부가적인 상세사항의 블록도이다.
도 5는 본 발명의 일 실시예에 따른 공유 메모리 패브릭의 부가적인 상세사항을 도시하는 블록도이다.
도 6은 본 발명의 일 실시예에 따른 방법의 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 스누프 필터 로직을 사용하는 유입 메모리 요청을 처리하는 방법의 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 SoC의 블록도이다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템 내에 존재하는 구성요소의 블록도이다.
하기의 명세서에서, 본 발명의 완전한 이해를 제공하기 위해서 특정 유형의 프로세서와 특정 하드웨어 구조체, 특정 구성요소(architectural) 및 마이크로 구성요소의 상세, 특정 레지스터 사양, 특정 명령어 유형, 특정 시스템 구성요소, 특정 측정치/높이, 특정 프로세서 파이프라인 단계 및 동작 등의 시스템 사양의 예시와 같은 다양한 특정 상세에 대하여 설명한다. 그러나, 본 기술분야에 속하는 당업자에게 이러한 특정 상세가 본 발명을 실시하기 위해서 채택될 필요는 없음이 명백할 것이다. 다른 예시에서, 컴퓨터 시스템의 특정한 및 대안적인 프로세서 구성요소, 설명된 알고리즘을 위한 특정 로직 회로/코드, 특정 펌웨어 코드, 특정 상호접속 동작, 특정 로직 사양, 특정 제조 기술 및 재료, 특정 컴파일러 구현, 코드 내의 특정 알고리즘 표현, 특정 파워 다운 및 게이트 기술/로직 및 다른 특정 동작적 상세와 같은 널리 알려진 구성요소 또는 방법은 본 발명을 불필요하게 모호하게 하는 것을 피하기 위해서 상세하게 설명되지 않는다.
비록 하기의 실시예가 컴퓨팅 플랫폼 또는 마이크로프로세서와 같은 특정 집적 회로에서의 에너지 절약 및 에너지 효율을 참조하여 설명되었으나, 다른 실시예가 다른 유형의 집적 회로 및 로직 디바이스에 적용가능하다. 본 명세서에 설명된 실시예의 유사한 기술 및 가르침이 더 나은 에너지 효율 및 에너지 절약으로부터 이득을 취할 수 있는 다른 유형의 회로 또는 반도체 디바이스에 적용될 수 있다. 예를 들어, 개시된 실시예는 데스크탑 컴퓨터 시스템 또는 UltrabooksTM에 제한되지 않으며, 핸드헬드 디바이스, 태블릿, 다른 씬 노트북, 시스템 온 칩(SOC) 디바이스, 및 임베디드 애플리케이션과 같은 다른 디바이스에서도 또한 사용될 수 있다. 핸드헬드 디바이스의 일부 예시는 휴대 전화, 인터넷 프로토콜 디바이스, 디지털 카메라, PDA(personal digital assistants) 및 핸드헬드 PC를 포함한다. 임베디드 애플리케이션은 전형적으로 마이크로컨트롤러, DSP(digital signal processor), 시스템 온 칩, 네트워크 컴퓨터(NetPC), 셋-톱 박스, 네트워크 허브, WAN(wide area network) 스위치, 또는 하기에 설명되는 기능 및 동작을 수행할 수 있는 임의의 다른 시스템을 포함한다. 아울러, 본 명세서에 설명되는 장치, 방법 및 시스템은 물리적인 컴퓨팅 디바이스에 제한되지 않으며, 에너지 절약 및 효율을 위한 소프트웨어 최적화에 관계될 수도 있다. 하기의 설명에서 명백해질 바와 같이, 본 명세서에서 설명되는 방법, 장치 및 시스템의 실시예는 (하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합과 관련하여) 성능 고려사항과 향후 견주게 될 '녹색 기술'에 필수 불가결하다.
컴퓨팅 시스템이 진보함에 따라, 그 내부의 구성요소는 더욱 복잡해진다. 결과적으로, 구성요소들 간의 연결 및 통신을 위한 상호접속 구조의 복잡도 또한 구성요소의 최적의 동작을 충족하기 위한 대역폭 요건을 보장하기 위해서 증가하게 된다. 아울러, 상이한 특정 시장마다 시장의 요구를 충족하는 상이한 양태의 상호접속 구조를 요구한다. 예를 들어, 서버는 더 빠른 성능을 요구하고, 모바일 생태계는 때때로 절전을 위해 전체 성능을 희생하는 것이 가능하다. 최대의 절전을 가지면서도 가능한 가장 빠른 성능을 제공하는 것이 여전히 대부분의 패브릭의 한 목적이다. 하기에서, 본 명세서에서 설명된 발명의 양태로부터 잠재적으로 이득을 취할 수 있는 여러 상호접속부에 대해 논의된다.
도 1을 참조하면, 멀티코어 프로세서를 포함하는 컴퓨팅 시스템의 일 실시예의 블럭도를 도시한다. 프로세서(100)는 마이크로프로세서, 임베디드 프로세서, DSP(a digital signal processor), 네트워크 프로세서, 핸드헬드 프로세서, 애플리케이션 프로세서, 코-프로세서(co-processor), 시스템 온 칩(SoC) 또는 코드를 실행하는 임의의 디바이스와 같은 임의의 프로세서 또는 프로세싱 디바이스를 포함한다. 일 실시예에서, 프로세서(100)는 비대칭 코어 또는 대칭 코어(도시된 실시예)를 포함할 수 있는 적어도 두 개의 코어 - 코어(101 및 102) - 를 포함한다. 그러나, 프로세서(100)는 대칭적 또는 비대칭적일 수 있는 임의 숫자의 처리 요소를 포함할 수 있다.
일 실시예에서, 처리 요소는 소프트웨어 쓰레드를 지원하는 하드웨어 또는 로직을 지칭한다. 하드웨어 처리 요소의 예시는: 쓰레드 유닛, 쓰레드 슬롯, 쓰레드, 프로세스 유닛, 컨텍스트, 컨텍스트 유닛, 논리적 프로세서, 하드웨어 쓰레드, 코어 및/또는 실행 상태 또는 구조적 상태와 같은 프로세서의 상태를 유지할 수 있는 다른 구성요소를 포함한다. 즉, 처리 요소는 일 실시예에서 소프트웨어 쓰레드, 운영 체제, 애플리케이션 또는 다른 코드와 같은 코드와 독립적으로 연관될 수 있는 임의의 하드웨어를 지칭한다. 물리적 프로세서(또는 프로세서 소켓)는 일반적으로 코어와 하드웨어 쓰레드와 같은 임의 숫자의 다른 처리 요소를 잠재적으로 포함하는 집적 회로를 지칭한다.
코어는 종종 집적 회로 상에 위치되어 독립적인 구조적 상태를 유지할 수 있는 로직을 지칭하며, 독립적으로 유지되는 구조적 상태의 각각은 적어도 일부의 전용 실행 리소스와 연관된다. 코어와는 대조적으로, 하드웨어 쓰레드는 일반적으로 집적 회로 상에 위치되어 독립적인 구조적 상태를 유지할 수 있는 임의의 로직을 지칭하며, 독립적으로 유지되는 구조적 상태는 실행 리소스로의 액세스를 공유한다. 특정 리소스는 공유되고 다른 리소스는 구조적 상태에 전용되는 경우에서 알 수 있듯이, 하드웨어 쓰레드와 코어의 명명법(nomenclature) 사이의 라인은 중첩된다. 그러나, 코어와 하드웨어 쓰레드는 종종 운영체제에 의해 개별적인 논리적 프로세서로서 인식되어, 운영체제는 각각의 논리적 프로세서 상의 동작을 개별적으로 스케줄링할 수 있다.
도 1에 도시된 바와 같은 물리적 프로세서(100)는 두 개의 코어 - 코어(101 및 102) - 를 포함한다. 여기서, 코어(101 및 102)는 대칭적 코어, 즉, 동일한 사양, 기능 유닛 및/또는 로직을 갖는 코어로서 고려된다. 다른 실시예에서, 코어(101)는 비 순차적(out-of-order) 프로세서 코어를 포함하고, 코어(102)는 순차적(in-order) 코어를 포함한다. 그러나, 코어(101 및 102)는 네이티브 코어(native core), 소프트웨어 관리 코어, 네이티브 ISA(Instruction Set Architecture)를 실행하도록 구성된 코어, 번역된 ISA를 실행하도록 구성된 코어, 통합 설계된(co-designed) 코어 또는 다른 알려진 코어와 같은 임의의 유형의 코어로부터 개별적으로 선택될 수 있다. 이종의 코어 환경(즉, 비대칭 코어)에서, 이진 번역과 같은 번역의 일부 형태는 하나 또는 두 개의 코어 상의 코드를 스케줄링하거나 실행하는데 이용될 수 있다. 이제 심화될 논의에서, 코어(101) 내에 도시된 기능적 유닛들과 도시된 실시예에서 유사한 방식으로 동작하는 코어(102) 내의 유닛들은 하기에서 더욱 상세히 설명된다.
도시된 바와 같이, 코어(101)는 하드웨어 쓰레드 슬롯(101a 및 101b)으로도 지칭될 수 있는 두 개의 하드웨어 쓰레드(101a 및 101b)를 포함한다. 따라서, 일 실시예에서는 운영체제와 같은 소프트웨어 엔티티가 프로세서(100)를 네 개의 별개의 프로세서, 즉, 네 개의 소프트웨어 쓰레드를 동시에 실행할 수 있는 네 개의 논리적 프로세서 또는 처리 요소로서 잠재적으로 인식할 수 있다. 상기에서 언급된 바와 같이, 제 1 쓰레드는 구조적 상태 레지스터(101a)와 연관되고, 제 2 쓰레드는 구조적 상태 레지스터(101b)에 연관되고, 제 3 쓰레드는 구조적 상태 레지스터(102a)에 연관될 수 있고, 제 4 쓰레드는 구조적 상태 레지스터(102b)에 연관될 수 있다. 여기서, 각각의 구조적 상태 레지스터(101a, 101b, 102a 및 102b)는 상기 설명된 바와 같이 처리 요소, 쓰레드 슬롯 또는 스레드 유닛으로 지칭될 수 있다. 도시된 바와 같이, 구조적 상태 레지스터(101a)는 구조적 상태 레지스터(101b)에 복제되어, 개별적인 구조적 상태/컨텍스트는 논리적 프로세서(101a) 및 논리적 프로세서(101b)를 위해 저장될 수 있다. 코어(101)에서, 인스트럭션 포인터, 할당기 및 리네이머 블럭(130)내의 리네이밍 로직과 같은 다른 더 작은 리소스들이 또한 쓰레드(101a 및 101b)를 위해 복제될 수 있다. 리오더/리타이어먼트 유닛(135) 내의 리오더 버퍼, ILTB(120), 로드/저장 버퍼 및 큐와 같은 일부 리소스들은 파티셔닝을 통해 공유될 수 있다. 범용 내부 레지스터, 페이지-테이블 기본 레지스터(들), 저-레벨 데이터-캐시 및 데이터-TLB(150), 실행 유닛(들)(140) 및 비순차 유닛(135) 일부분과 같은 다른 리소스들은 잠재적으로 완전하게 공유된다.
프로세서(100)는 대개 완전히 공유되거나, 파티셔닝을 통해 공유되거나, 처리 요소에 의해/처리 요소에 대해 전용될 수 있는 다른 리소스를 포함한다. 도 1에서, 프로세서의 예시적인 논리적 유닛/리소스를 갖는 순수하게 예시적인 프로세서의 실시예가 도시된다. 프로세서는 임의의 이러한 기능적 유닛들을 포함하고 제외할 수 있을 뿐만 아니라, 도시되지 않은 알려진 기능적 유닛, 로직 또는 펌웨어를 포함할 수 있음을 유의해야 한다. 도시된 바와 같이, 코어(101)는 단순화된 대표적인 비순차적(out-of order: OOO) 프로세서 코어를 포함한다. 그러나, 순차적 코어도 다른 실시예에서 이용될 수 있다. OOO 코어는 실행될/취해질 브랜치를 예측하는 브랜치 타겟 버퍼(120)와 인스트럭션을 위한 어드레스 번역 엔트리를 저장하는 인스트럭션-번역 버퍼(I-TLB)(120)를 포함한다.
코어(101)는 또한 페치된 구성요소를 디코드하는 페치 유닛(120)에 연결된 디코드 모듈(125)을 포함한다. 일 실시예에서, 페치 로직은 각각 쓰레드 슬롯(101a, 101b)과 연관된 개별적인 시퀀스를 포함한다. 대체로, 코어(101)는 프로세서(100) 상에서 실행가능한 인스트럭션을 정의/특정하는 제 1 ISA와 연관된다. 대개, 제 1 ISA의 일부분인 머신 코드 인스트럭션은 수행될 인스트럭션 또는 동작을 참조/특정하는 인스트럭션(오피코드(opcode)로 지칭됨)의 일부분을 포함한다. 디코드 로직(125)은 그들의 오피코드로부터 이러한 인스트럭션을 인식하고 제 1 ISA에 의해 정의된 바와 같은 처리를 위해 파이프라인에서 디코딩된 인스트럭션을 패싱하는 회로를 포함한다. 예를 들어, 하기에서 더욱 상세히 논의될 바와 같이, 디코더(125)는 일 실시예에서 트랜잭션 인스트럭션과 같은 특정 인스트럭션을 인식하도록 설계 또는 구성된 로직을 포함한다. 디코더(125)에 의한 인식의 결과로서, 아키텍처 또는 코어(101)는 적절한 인스트럭션에 연관된 작업을 수행하기 위해서 특정한 사전결정된 액션을 취한다. 본 명세서에 설명된 임의의 작업, 블록, 동작 및 방법은 일부는 새롭거나 예전 인스트럭션일 수 있는 하나 또는 다수의 인스트럭션에 응답하여 수행될 수 있다는 것을 유의하는 것이 중요하다. 일 실시예에서, 디코더(126)가 동일한 ISA(또는 그의 서브세트)를 인식한다는 것을 유의해야 한다. 대안적으로, 이종의 코어 환경에서, 디코더(126)는 제 2 ISA(제 1 ISA의 서브세트이거나 별개의 ISA)를 인식한다.
일 예시에서, 할당기 및 리네이머 블록(130)은 인스트럭션 처리 결과를 저장하는 레지스터 파일과 같은 리소스를 예약하는 할당기를 포함한다. 그러나, 쓰레드(101a 및 101b)는 잠재적으로 비순차적으로 실행가능하고, 이러한 경우 할당기 및 리네이머 블록(130)은 인스트럭션 결과를 트랙하기 위한 리오더 버퍼와 같은 다른 리소스를 예약한다. 유닛(130)은 또한 프로그램/인스트럭션 참조 레지스터를 프로세서(100) 내부의 다른 레지스터로 리네이밍하는 레지스터 리네이머를 포함할 수 있다. 리오더/리타이어먼트 유닛(135)은 비순차적으로 실행된 인스트럭션의 비순차적 실행과 그 후의 순차적 리타이어먼트를 지원하는 상기 언급된 리오더 버퍼, 로드 버퍼 및 저장 버퍼와 같은 구성요소를 포함한다.
스케줄러 및 실행 유닛(들) 블럭(140)은 일 실시예에서 실행 유닛 상의 인스트럭션/동작을 스케줄링하는 스케줄러 유닛을 포함한다. 예를 들어, 플로팅 포인트 인스트럭션은 이용가능한 플로팅 포인트 실행 유닛을 갖는 실행 유닛의 포트 상에서 스케줄링된다. 실행 유닛과 연관된 레지스터 파일이 또한 정보 인스트럭션 처리 결과를 저장하도록 포함될 수 있다. 예시적인 실행 유닛은 플로팅 포인트 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛 및 다른 알려진 실행 유닛을 포함한다.
저 레벨 데이터 캐시 및 데이터 번역 버퍼(D-TLB)(150)는 실행 유닛(들)(140)에 연결된다. 데이터 캐시는 데이터 오퍼랜드(operand)와 같이 최근에 사용/동작된 요소를 저장하기 위한 것으로, 이들은 잠재적으로 메모리 일관성(coherency) 상태로 유지된다. D-TLB는 최근의 가상/선형 물리적 어드레스 번역을 저장한다. 특정 예시로서, 프로세서는 물리적 메모리를 복수의 가상 페이지로 분할하기 위한 페이지 테이블 구조체를 포함할 수 있다.
여기서, 코어(101 및 102)는 온-칩 인터페이스(110)와 연관된 제 2 레벨 캐시와 같은 더 높은 레벨 또는 더 먼 캐시로의 액세스를 공유한다. 더 높은 레벨 또는 더 먼 등의 표현은 캐시의 레벨이 증가하거나 실행 유닛(들)으로부터 더 멀리 떨어진 것을 의미한다. 일 실시예에서, 더 높은 레벨의 캐시는 제 2 또는 제 3 레벨 데이터 캐시와 같은 최종 레벨 데이터 캐시 - 프로세서(100) 상의 메모리 계층 내의 최종 캐시 - 이다. 그러나, 더 높은 레벨의 캐시는 이에 제한되지 않으며, 인스트럭션 캐시에 연관되거나 인스트럭션 캐시를 포함할 수 있다. 트레이스 캐시 - 인스트럭션 캐시의 한 유형 - 가 대신에 최근에 디코딩된 트레이스를 저장하기 위해서 디코더(125) 뒤에 연결될 수 있다. 여기서, 인스트럭션은 잠재적으로 다수의 마이크로-인스트럭션(마이크로-동작)으로 디코딩될 수 있는 매크로-인스트럭션을 지칭한다.
도시된 사양에서, 프로세서(100)는 또한 온-칩 인터페이스 모듈(110)을 포함한다. 역사적으로, 하기에서 더욱 상세하게 설명되는 메모리 컨트롤러는 프로세서(100) 외부의 컴퓨팅 시스템 내에 포함되었다. 본 시나리오에서, 온-칩 인터페이스 모듈(110)은 시스템 메모리(175), 칩셋(종종 메모리(175)를 접속하기 위한 메모리 컨트롤러 허브와 주변 디바이스를 접속하기 위한 I/O 컨트롤러 허브를 포함함), 메모리 컨트롤러 허브, 노스브리지(northbridge) 또는 다른 집적 회로와 같은 프로세서(100) 외부의 디바이스와 통신한다. 또한 본 시나리오에서, 버스(105)는 멀티-드롭 버스, 포인트-투-포인트 상호접속부, 직렬 상호접속부, 병렬 버스, 일관성(예컨대, 캐시 일관성) 버스, 적층 프로토콜 아키텍처, 차동 버스 및 GTL 버스 등과 같은 임의의 알려진 상호접속부를 포함할 수 있다.
메모리(175)는 프로세서(100)에 전용되거나 시스템 내의 다른 디바이스에 공유될 수 있다. 메모리(175) 유형의 공통적 예시는 DRAM, SRAM, 비휘발성 메모리(NV 메모리) 및 다른 알려진 저장 디바이스를 포함한다. 디바이스(180)는 그래픽 가속기, 메모리 컨트롤러 허브에 연결된 프로세서 또는 카드, I/O 컨트롤러 허브에 연결된 데이터 스토리지, 무선 송수신기, 플래시 디바이스, 오디오 컨트롤러, 네트워크 컨트롤러 또는 다른 알려진 디바이스를 포함할 수 있음을 유의한다.
최근에는 그러나, 더 많은 로직과 디바이스가 SoC와 같은 단일의 다이에 집적됨에 따라, 이러한 디바이스의 각각은 프로세서(100)에 집적될 수 있다. 예를 들어, 일 실시예에서 메모리 컨트롤러 허브는 프로세서(100)를 갖는 동일한 패키지 및/또는 다이 상에 존재한다. 여기서, 코어(101)의 일부분(온-코어(on-core) 부분)은 메모리(175) 및 그래픽 디바이스(180)와 같은 다른 디바이스와 인터페이스하기 위한 하나 이상의 컨트롤러(들)를 포함한다. 그러한 디바이스와의 인터페이스를 위한 상호접속부 및 컨트롤러를 포함하는 사양은 온-코어(또는 언-코어(un-core) 사양)으로 자주 지칭된다. 일 예시로서, 온-칩 인터페이스(110)는 온-칩 통신을 위한 링 상호접속부(a ring interconnect)와 오프-칩 통신을 위한 고속 직렬 포인트-투-포인트 링크(105)를 포함한다. 그러나, SoC 환경에서, 네트워크 인터페이스, 코프로세서(co-processor), 메모리(175), 그래픽 프로세서(180) 및 다른 알려진 컴퓨터 디바이스/인터페이스와 같은 더 많은 디바이스들이 높은 기능성과 낮은 전력 소비를 갖춘 작은 폼 팩터를 제공하기 위해 단일 다이 또는 집적 회로 상에 집적될 수 있다.
일 실시예에서, 프로세서(100)는 본 명세서에 설명된 장치 및 방법을 지원하거나 그와 인터페이싱하기 위해서 애플리케이션 코드(176)를 컴파일, 번역 및/또는 최적화하기 위해서 컴파일러, 최적화 및/또는 번역 코드(177)를 실행하는 것이 가능하다. 컴파일러는 종종 소스 텍스트/코드를 타겟 텍스트/코드로 번역하는 프로그램 또는 프로그램 세트를 포함한다. 대체로, 컴파일러로 프로그램/애플리케이션 코드를 컴파일하는 것은 고-레벨 프로그래밍 언어 코드를 저-레벨 머신 또는 어셈블리 언어 코드로 변환하는 다수의 페이즈 및 패스(pass)를 통해 수행된다. 그러나, 단일 패스 컴파일러가 또한 단순한 컴파일링을 위해서 이용될 수 있다. 컴파일러는 임의의 알려진 컴파일링 기술을 이용하여 시맨틱(semantic) 분석, 프리프로세싱(preprocessing), 파싱(parsing), 의미 분석, 코드 생성, 코드 변형 및 코드 최적화와 같은 임의의 알려진 컴파일러 동작을 수행할 수 있다.
큰 컴파일러는 종종 다수의 페이즈를 포함하지만, 이러한 페이즈는 대부분 두 개의 일반적인 페이즈 - (1) 일반적으로 신택틱(syntactic) 처리, 시맨틱 처리 및 일 변형/최적화가 이루어지는 프론트-엔드 및 (2) 일반적으로 분석, 변형, 최적화 및 코드 생성이 이루어지는 백-엔드 - 내에 포함된다. 일부 컴파일러는 컴파일러의 프론트-엔드 및 백-엔드 사이의 경계(delineation)의 흐릿함을 설명하는 중앙(middle)로서 지칭된다. 결과적으로, 컴파일러의 삽입, 연관, 생성 또는 다른 동작에 대한 참조는 앞서 언급된 임의의 페이즈 또는 패스뿐만 아니라, 컴파일러의 임의의 다른 알려진 페이즈 또는 패스에서 이뤄질 수 있다. 설명을 위한 예시로서, 컴파일러는 잠재적으로 동작, 호출, 함수 등을 컴파일링의 프론트-엔드 내에 호출/동작의 삽입과 그 후 변형 페이즈 동안 저-레벨 코드로 호출/동작의 변형과 같은 하나 이상의 컴파일링의 페이즈 내에 삽입한다. 동적 컴파일링 동안, 컴파일러 코드 또는 동적 최적화 코드는 그러한 동작/호출을 삽입할 뿐만 아니라 실행시간 동안 실행을 위한 코드의 최적화할 수 있다는 것을 유의해야 한다. 특정한 설명적인 예시로서, 이진 코드(이미 컴파일링된 코드)는 실행시간 동안 동적으로 최적화될 수 있다. 여기서, 프로그램 코드는 동적 최적화 코드, 이진 코드 또는 이들의 조합을 포함할 수 있다.
컴파일러와 유사하게, 이진 번역기와 같은 번역기는 코드를 최적화 및/또는 번역하기 위해서 코드를 정적으로 또는 동적으로 번역한다. 따라서, 코드, 애플리케이션 코드 또는 다른 소프트웨어 환경에 대한 참조는 (1) 동적으로 또는 정적으로 프로그램 코드를 컴파일하거나, 소프트웨어 구조를 유지하거나, 다른 동작을 수행하거나, 코드를 최적화하거나, 코드를 번역하기 위한 컴파일러 프로그램(들), 최적화 코드 최적화기 또는 번역기의 실행 (2) 최적화/컴파일된 애플리케이션 코드와 같은 동작/호출을 포함하는 메인 프로그램 코드의 실행 (3) 소프트웨어 구조를 유지하거나, 동작에 관련된 다른 소프트웨어를 수행하거나, 코드를 최적화하기 위한 메인 프로그램 코드와 연관된 라이브러리와 같은 다른 프로그램 코드의 실행 또는 (4) 이들의 조합을 지칭한다.
다양한 실시에에서, 프로세서는 시스템 온 칩(SoC)으로서 구성될 수 있다. 그러한 SoC는 스마트폰, 태블릿 컴퓨터, 울트라북TM 등등과 같은 저전력 휴대용 컴퓨팅 디바이스부터 노트북, 데스크톱, 서버 컴퓨터 및 다른 것과 같은 더욱 전통적인 컴퓨터 시스템까지 매우 다양한 컴퓨팅 디바이스에서 사용될 수 있다. 현대적인 SoC에서, 일반적으로 많은 상이한 에이전트들이 단일 반도체 다이 상에 존재한다. 이러한 에이전트는 하나 이상의 처리 유닛을 포함한다. 일 실시예에서, SoC는 복수의 중앙 처리 유닛(CPU)을 포함할 수 있고, 각각의 CPU는 하나 이상의 코어, 연관된 캐시 메모리, 인터페이스 등등을 포함한다. 아울러, SoC는 에이전트 온 다이를 상호접속하고 일관성 처리를 수행하는 일관성 패브릭과 같은 다른 에이전트를 포함한다. 일부 실시예에서, 이러한 일관성 패브릭은 다른 모든 회로 및 로직 중에서도 메모리 제어기 회로 및 공유된 메모리 패브릭 회로를 포함하는 그 자체가 다양한 구성 요소로 형성된 시스템 에이전트를 지칭한다. "일관적인 패브릭," "일관성 패브릭" 및 "시스템 에이전트"라는 용어는 본 명세서에서 상호교환적으로 사용될 수 있다.
스누프 표시자(snoop indicator)는 메모리 요청이 중앙 처리 유닛(CPU)과 같은 시스템 내의 캐싱 에이전트와 일관성을 유지하는 것을 표시하는 메모리 요청과 연관될 수 있다. SoC의 비-캐싱 에이전트는 스누핑된 및 스누핑되지 않은 메모리 요청을 발행할 수 있다. 일관성 패브릭 또는 다른 에이전트는 모든 캐싱 에이전트 간의 스누핑된 메모리 요청의 소유권을 리졸브(resolve)하기 위해 버스 프로토콜을 사용한다. 이러한 일관성 프로토콜은 캐시 라인의 소유권을 리졸브하기 위해 복수의 메시징 사이클을 취할 수 있다. 하나의 저 전력/영역 스누핑 알고리즘은 한번에 어드레스 하나마다 단일 일관성 요청을 처리하도록 동작한다. 이처럼, 동일한 어드레스(예를 들어, 캐시 라인)에 대한 둘 이상의 일관성 액세스는 직렬화되어, 소유권이 각 일관성 요청에 대해 명백하게 수립되었음을 보장한다. 그러나, 이러한 직렬화는 성능을 감소시키고 불필요한 스누프으로 인한 전력을 증가시킬 수 있다. 다른 구현이 시스템 내의 모든 캐시 라인의 소유권을 빠르게 리졸브하기 위해서 일관성 패브릭 내에 포괄적인 스누프를 포함한다. 그러나, 그러한 커다란 스누프 필터를 생성하는 면적/전력 비용은 SoC와 같은 저전력 프로세서에서는 바람직하지 않을 수 있다.
실시예는 일관성 패브릭의 데이터 제어 구조체를 사용하는 매우 적은 전력을 소비하는 시간 스누프 필터를 제공하기 위한 알고리즘 및 마이크로아키텍처를 제공한다. 실시예는 시간적으로 근접한 많은 동일한 캐시 라인 액세스를 발행하는 비-캐싱 에이전트로부터의 스누프를 필터링하는데 최적화될 수 있다. 일 실시예에서, SoC 부트 구성 처리의 일부로서 시간 스누프 필터의 활성화 및 비활성화는 BIOS 기록가능 제어 레지스터에서 노출된다.
이제 도 2를 참조하면, 본 발명의 일 실시예에 따른 SoC의 고차원 도면의 블록도가 도시된다. 도 2에 도시된 바와 같이, SoC(200)는 다양한 에이전트와 다른 구성요소를 포함한다. 다양한 에이전트들을 상호접속하고 특정 시스템-레벨 제어 기술을 제공하려는 목적으로, 본 명세서에서 시스템 에이전트로서 또한 지칭되는 일관성 패브릭(210)이 제공된다. 하기에서 더욱 설명될 바와 같이, 시스템 에이전트(210)는 본 발명의 일 실시예에 따른 시간 스누프 필터 로직뿐만 아니라 큐, 버퍼, 트래커, 제어 로직 등과 같은 다양한 다른 구성요소를 포함한다.
도시된 바와 같이, 일관성 패브릭(210)은 복수의 상이한 에이전트와 다른 구성요소 사이의 주 온-칩 상요접속부로서 동작한다. 업스트림 측에 복수의 캐싱 에이전트(2201-220n)가 제공된다. 비록 본 발명의 범위가 이에 제한되는 것은 아니지만, 이러한 캐싱 에이전트는 일반적으로 하나 이상의 프로세서 코어와 하나 이상의 레벨의 캐시 메모리를 포함하는 중앙 처리 장치(CPU)에 대응할 수 있다. 따라서, 이러한 에이전트는 내부 에이전트 캐시를 통해 일관적인 방식으로 데이터를 유지하도록 구성된 캐싱 에이전트이다. 비록 CPU로서 설명되었으나, 캐시 메모리와 연관된 코어, 그래픽 엔진, 또는 다른 특성화된 처리 로직과 같은 다른 유형의 캐싱 에이전트가 일부 실시예에서 캐싱 에이전트로서 동작할 수 있다. 메모리 매핑된 입출력(MMIO) 기록을 송신하는 에이전트가 캐싱 에이전트에 제한되지 않으며, 비-캐싱 에이전트와 같은 다른 에이전트 또한 MMIO 트랜잭션을 송신한다.
대조적으로, SoC(200)의 다른 에이전트가 비-캐싱 에이전트로서 구성될 수 있다. 캡처 디바이스, 렌더링 디바이스, 주변 디바이스 등과 같은 많은 형태를 취할 수 있는 IO 에이전트와 같은 상이한 유형의 비-캐싱 에이전트가 존재할 수 있다. 비-캐싱 IO 에이전트(2301, 및 2302)와 같은 이러한 비-캐싱 에이전트의 일부는 PCIeTM(Peripheral Component Interconnect Express) 통신 프로토콜에 따른 오더링 규칙에 상응하는 온-칩 상호접속부를 통해 시스템 에이전트(210)와 직접 연결된다. 비-캐싱 에이전트는 이러한 온-칩 상호접속부의 주 인터페이스 상에서 업스트림 스누핑된 및 비-스누핑된 메모리 요청을 발행한다. IO 에이전트는 SoC가 지원하는 임의의 가상 채널(VC)(일부 SoC는 1 개의 VC를 지원하고, 일부는 2 개의 VC를 지원하고, 일부는 3 개의 VC를 지원하는 것 등등을 유의) 상에 메모리 요청을 발행할 수 있다.
요청 및 기록 데이터는 인바운드 경로(inbound path) 상에서 시스템 에이전트(210)에 도착한다. 판독 완료 데이터는 아웃바운드 경로(outbound path) 상에서 에이전트에 반환한다. 캐싱 에이전트는 포트 IO 또는 메모리 매핑된 판독/기록을 사용하여 다운스트림 요청을 IO 디바이스에 발행한다. 이러한 요청은 일 실시예에서 제 1 가상 채널(즉, VC0) 상에서 이동한다. 캐싱 에이전트(220)로부터의 각각의 요청은 전역적으로(globally) 오더링되는 경우에 시스템 에이전트(210)로부터 표시를 수신한다. 캐싱 에이전트(220)로부터의 MMIO 기록은 시스템 에이전트(210)의 오더링된 도메인으로 패싱되는 경우에 전역적으로 오더링된다. 이러한 패싱은 아웃바운드 경로로의 다운스트림 기록을 포스팅하는 것으로 지칭된다. 아웃바운드 판독 완료가 오더링된 도메인으로 크로싱되면, 오더링된 도메인으로 포스팅된 동일한 VC의 임의의 이전 MMIO 기록을 바이패싱할 수 없다.
결국, 다른 비-캐싱 IO 에이전트(2303 내지 230Z)는 스위치 패브릭(235)을 통해 온-칩 상호접속부의 주 인터페이스 또는 상이한 프로토콜에 대한 브릿지에 연결된다. 도시된 예시에서, 이러한 비-캐싱 에이전트(및 스위치 패브릭)의 각각은 온-칩 상호접속부의 주 인터페이스를 통해 일관성 패브릭(210)에 연결될 수 있다. 일 실시예에서, 주 인터페이스는 상이한 VC와의 사이에 오더링 요건이 없는 하나 이상의 VC를 포함한다. 아울러, SoC(200)는 상이한 상호접속 기술의 요청자 인터페이스를 통해 일관성 패브릭(210)에 직접 연결될 수 있는 복수의 집적된 비-캐싱 에이전트(2401 내지 240x)를 더 포함한다. 또한, 복수의 제어기(2501 내지 250n)가 일 실시예에서 DRAM으로 구현될 수 있는 SoC에 연결된 메모리(설명의 편의를 위하여 도 2에 미도시)에 대한 상호접속부 및 제어 기능을 제공하기 위해서 일관성 패브릭(210)에 연결될 수있다.
일관성 패브릭(210)은 에이전트를 (예를 들어, 중간 메모리 제어기를 통해) 공유 메모리에 연결하는 공유 메모리 패브릭을 포함한다. 공유 메모리 패브릭은 시간 임계적인 등시성 디바이스(isochronous devices)에 대한 서비스 품질(QoS) 요건을 준수하여 활성화되고, 본 명세서의 일 실시예에서 최선형 디바이스(best effort devices)로도 지칭되는 비-등시성 디바이스에 대하여 메모리 대역 프로포셔닝(proportioning)을 제공하도록 구성된다. 도 2의 실시예에서 이러한 예시가 도시되었으나, 본 발명의 범위가 이에 제한되는 것이 아니며, 많은 다양한 유형의 SoC 및 다른 반도체 디바이스가 본 발명의 일 실시예에 따른 시간 스누프 필터 로직의 장점을 취할 수 있음을 이해해야 한다.
서비스 카테고리의 계층은 공유 메모리 패브릭에 연결된 각각의 디바이스에 할당된다. 서비스의 다양한 계층이 패브릭에 의해 지원될 수 있다. 본 발명의 범위가 이에 제한되는 것은 아니지만, 일 실시예에서 두 계층의 서비스 카테고리를 갖는 디바이스가 제시되며, 이 두 계층의 서비스 카테고리는 지연 시간에 민감한 디바이스를 위해 사용되는 등시성 계층의 서비스 카테고리와 메모리에 대한 그들의 요청을 서비스하는데 더 긴 지연 시간을 견딜 수 있는 디바이스를 위해 사용되는 최선형 계층의 서비스 카테고리이다. 본 발명의 범위가 이에 제한되는 것은 아니지만, 일부 실시예에서 지연 시간에 민감한 디바이스는 오디오 또는 비디오 플레이어, 카메라 디바이스 등과 같은 콘텐츠 렌더링 디바이스를 포함하고, 낮은 우선순위의 디바이스는 프로세서 코어, 그래픽 처리 유닛 등을 포함한다.
요청 데드라인 형식의 시간은 메모리에 대한 요청을 완료하는데 필요한 지연 시간을 패브릭에 알리기 위해서 등시성 디바이스로부터 패브릭에 통신된다. 동기화를 활성화기 위해서 패브릭은 모든 등시성 요청 에이전트에 글로벌 타이머를 방송한다. 이 글로벌 타이머는 등시성 디바이스에 의한 샘플링에 사용가능하도록 패브릭으로부터의 출력 상에서 연속적으로 구동된다. 이러한 시간 값에 응답하여, 에이전트는 요청의 완료를 위한 지연시간 요건을 결정하고, 요청에 대한 데드라인을 형성하기 위해서 이 지연시간 값을 글로벌 타이머 값에 더한다. 지연시간을 결정하는 상이한 방법이 다른 실시예에서 발생한다. 이렇게 통신된 지연시간 또는 데드라인 값에 기초하여, 패브릭은 메모리의 현재 전력 상태와 패브릭 내에 계류중인 다른 스케줄링되지 않은 메모리 요청을 위해 필요한 지연시간에 대한 지식에 기초하여 보다 양호한 스케줄링을 결정한다. 이러한 데드라인 통신은 메모리 대역폭을 향상시키고 시스템 파워를 절약할 수 있다. 요청 데드라인의 사용은 패브릭에 등시성 디바이스로부터의 각각의 요청을 위한 지연시간 정보를 제공한다.
실시예는 메모리 요청이 비 순차적으로 스케줄링되는 것을 허용함으로써 메모리 대역폭 내의 효율성을 제공할 수 있으나, 이는 일부 요청에 대해서 긴 스케줄링 지연시간을 초래할 수 있다. 그러한 문제를 해결하기 위해서, 패브릭은 각각의 등시성 메모리 요청에 예컨대 높은 우선순위 또는 낮은 우선순위와 같은 우선순위 레벨을 할당한다. 높은 우선순위의 등시성 요청을 스케줄링하는 경우에, 허용된 비순차적 스케줄링의 양은 최선형 또는 낮은 우선순위의 등시성 요청을 스케줄링하는 경우에 허용가능한 것보다 더 적다. 높은 우선순위 요청을 위한 비순차적 스케줄링의 양을 제한하는 것은 요청 지연기간 요건에 부합하는 것을 보장하기 위해서 수행된다. 요청의 우선순위가 요청의 데드라인으로부터 결정되기 때문에, 패브릭은 요청이 스케줄링된 이후에 즉각적으로 등시성 디바이스에 대한 다른 계류중인 요청의 레벨이 무엇인지 결정할 수 있다. 데드라인 방법을 사용하기 때문에, 모든 계류중인 요청의 우선순위 레벨은 글로벌 타이머가 증가하는 경우에만 변경된다.
일 실시예에서, 공유 메모리 패브릭은 메모리 제어기에 송신된 요청을 스케줄링하는데 사용되는 두 개의 중재 포인트(arbitration points)를 포함한다. 제 1 중재 포인트는 디바이스로부터 공유 메모리 패브릭으로의 요청을 승인하고, 승인 중재기(admit arbiter)로 지칭된다. 제 2 중재 포인트는 공유 메모리 패브릭으로부터 메모리 제어기로 송신된 요청을 스케줄링하는데 사용되고, 스케줄러 중재기로 지칭된다.
공유 메모리 패브릭에 접속된 각각의 디바이스는 디바이스와 패브릭 사이에 접속된 요청 인터페이스를 갖는다. 요청 인터페이스는 QoS 메모리 스케줄링을 위해 사용될 수 있는 요청에 관한 정보를 제공한다. 일 실시예에서, 이러한 정보는 메모리 주소, 오더링 ID 필드 및 오피코드 필드를 포함한다. 등시성 디바이스를 위해, 요청 데드라인 필드라고 칭해지는 추가적인 필드가 요청을 완성하는데 필요한 지연시간을 표시하기 위해 제공된다. SoC의 일부 구현에서 메모리 패브릭 인터페이스가 다른 패브릭 또는 다수의 디바이스가 공통 요청 인터페이스를 공유하는 것을 허용하는 스위치에 접속될 수 있다는 것을 유의해야 한다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 공유 메모리 패브릭의 일부분의 블록도가 도시된다. 도 3에 도시된 바와 같이, 공유 메모리 패브릭(300)은 복수의 에이전트(3150 내지 3153)(총칭적으로 에이전트(315))와 메모리 제어기(370) 사이에 연결된다. 일부 실시예에서, 하나 이상의 메모리 제어기가 존재한다는 것을 유의해야 한다. 아울러, 설명의 편의를 위하여 도시되지 않았으나, 메모리 제어기는 DRAM 또는 다른 시스템 메모리와 같은 시스템 메모리에 연결되는 것이 이해될 것이다.
도 3에 도시된 실시예에서, 다양한 유형의 에이전트가 공유 메모리 패브릭(300)에 연결된다. 특히, 다양한 에이전트는 이른바 등시성 에이전트로 칭해지는 제 1 계층의 서비스(COS) 에이전트 유형과 이른바 최선형 COS 에이전트로 칭해지는 제 2 계층의 서비스 에이전트 유형을 포함한다. 도시된 바와 같이, 각각의 에이전트(315)는 승인 중재기(320)에 대한 요청 정보를 통신할 수 있다. 결국, 승인 중재기(320)는 다시 에이전트와 대응하는 제어 유형의 정보를 통신할 수 있다. 아울러, 등시성 에이전트(즉, 도 3의 실시예에서 에이전트 3151 및 3153)는 승인 중재기(320)와 요청 데드라인 정보를 통신하기 위한 추가 링크를 더 포함한다. 이를 위하여, 이러한 에이전트는 또한 글로벌 타이머(350)로부터 글로벌 타이밍 정보를 수신하고, 승인 중재기(320)와 스케줄러 중재기(330)에 연결되도록 구성된다.
도 3의 실시예에서, 승인 중재기(320)는 에이전트(315)로부터 유입 요청(및 등시성 에이전트로부터의 요청 데드라인 정보)을 수신하고 스케줄러 중재기(330)에 승인하기에 적합한 요청을 선택하도록 구성될 수 있다. 그 중재 처리를 원조하기 위해서, 승인 중재기(320)는 스케줄러 중재기(330)에 추가로 연결된 설정 레지스터(360)의 세트로부터 설정 정보를 수신한다. 아울러, 요청 및 일관성 트래커(340)가 중재기(320 및 330)에 연결될 수 있다. 일반적으로, 트래커(340)는 다수의 스코어보드(342), 데이터 버퍼(344) 및 대응하는 어드레스 태그 스토리지(345), 제어 큐(346) 및 다양한 버퍼와 같은 다른 리소스, 리소스 할당 로직(248)과 같은 로직 등을 포함할 수 있다. 일부 구현에서, 태그 어레이와 데이터 버퍼는 트래커가 아닌 다른 곳에 위치될 수 있다. 도 3의 실시예가 고 레벨에서 도시되었으나, 본 발명의 범위가 이에 제한되는 것이 아님을 이해해야 한다.
공유 메모리 패브릭은 승인 중재기에 의해 수용될 수 있는 요청 에이전트로부터의 요청 전에 먼저 할당된 특정의 한정된 리소스를 포함할 수 있다. 이러한 리소스는 내부 데이터 버퍼와 어드레스 태그 스토리지 내의 이용가능한 엔트리를 포함한다. 다른 한정된 리소스는 메모리 스케줄러 내의 사용가능한 엔트리와 요청 트래커 스코어보드를 포함한다. 패브릭의 내부 데이터 버퍼, 태그 어레이 및 메모리 스케줄러 스코어보드를 위한 리소스 내에 일대일 대응관계가 존재한다. 일 실시예에서, 이러한 리소스는 메모리의 사전 결정된 영역(예를 들어, 64 바이트의 캐시 라인 폭)에 할당된다. 각각의 능동적인 요청은 또한 요청 및 일관성 트래커 내에 그 자신의 엔트리를 할당하지만, 메모리 내의 동일 영역에 대한 다수의 요청이 데이터 버퍼, 태그 어레이 및 메모리 스케줄러 스코어보드 내의 동일 엔트리를 공유한다. 하나 이상의 요청이 동일한 데이터 버퍼, 태그 어레이 및 스케줄러 스코어보드 엔트리에 할당되는 것이 가능하지만, 단지 하나의 판독 요청이 요청 및 일관성 트래커 내의 모든 미처리된 판독 요청을 위해 메모리 제어기에 스케줄링된다.
모든 디바이스에 대한 요청 인터페이스는 패브릭의 승인 중재기에 접속된다. 등시성 디바이스는 패브릭에 요청을 완성하는데 필요한 지연시간을 표시하는 요청 버스의 데드라인 필드를 사용한다. 패브릭은 패브릭에 부착된 모든 등시성 디바이스에 글로벌 타이머 값을 송신한다. 패브릭에 송신될 각각의 요청에 대하여, 예컨대 데드라인 로직 내의 등시성 디바이스는 요청 데드라인을 생성하기 위해서 글로벌 타이머의 현재 값에 값을 완성하고 더하기 위한 요청에 필요한 지연시간을 결정한다. 상이한 방법이 요청을 위해 필요한 지연시간을 결정하기 위해서 상이한 등시성 디바이스에 의해 사용될 수 있지만, 모든 등시성 디바이스는 요청 인터페이스의 데드라인 필드를 사용하는 요청 지연시간을 패브릭에 표시한다.
일 실시예에서, 승인 중재기는 두 단계의 우선순위를 갖는다. 긴급한 등시성 요청을 위해 사용되는 중재기 내의 높은 우선순위 경로가 존재한다. 요청하는 에이전트가 등시성 에이전트로서 구성되고 요청의 데드라인 필드가 긴급 임계값으로 지칭되는 임계값을 특정하는 설정 레지스터 내에 저장된 값보다 작은 경우에 긴급한 것으로 간주된다. 승인 중재기는 또한 최선형 요청과 긴급한 것으로 간주되지 않는 등시성 요청을 위해 사용되는 낮은 우선순위 경로를 갖는다. 중재의 최종 레벨은 높은 우선순위 중재의 승자와 낮은 우선순위 중재의 승자 사이에서 선택하는 우선순위 선택기를 사용하여 수행된다.
일 실시예에서, 승인 중재기 최종 선택기는 설정 레지스터를 사용하여 선택될 수 있는 두 개의 모드를 갖는다. 제 1 모드는 적어도 하나의 높은 우선순위의 요청이 승인 중재기의 입력에 존재한다고 가정하여, 선택기가 낮은 우선순위의 중재 경로의 승자를 선택하기 전에 높은 우선순위의 중재 경로의 승자를 선택하는 고정된 우선순위 모드이다. 최종 선택기의 제 2 모드는 최종 선택기가 높은 우선순위 경로를 수용하는 것과 N 개의 높은 우선순위의 요청이 수용된 후 낮은 우선순위 경로를 수용하는 것으로 스위칭하는 가중된 라운드 로빈(round robin) 모드이다. 선택기는 그 후 높은 우선순위 경로로부터의 요청을 수신하는 것으로 다시 스위칭하기 전에 낮은 우선순위 경로의 승자로부터 M 개의 낮은 우선순위의 요청을 수용한다. 일 실시예에서, N 및 M의 값은 설정 레지스터를 사용하여 특정된다.
이제 도 4를 참조하면, 본 발명의 일 실시예에 따른 승인 중재기의 보다 상세한 블록도를 도시한다. 도 4에 도시된 바와 같이, 중재기(320)는 요청 에이전트로부터 유입 요청을 수신한다. 이러한 도시에서, 요청 에이전트(3150 및 3151)는 비-등시성 또는 최선형 에이전트이고, 에이전트(3152 및 3153)는 등시성 에이전트이다. 등시성 에이전트는 요청을 위해 필요한 지연시간을 계산하는데 사용되는 데드라인 결정 로직(DDL)(318)을 포함하거나 데드라인 결정 로직에 연결되는 것을 유의해야 한다. 적어도 일부의 에이전트가 제 3 자 IP 블록인 일 실시예에서, 이러한 로직은 에이전트를 공유 메모리 패브릭에 연결하는 래퍼(wrapper) 또는 인터페이스 로직으로 구현될 수 있다.
도시된 실시예에서, 승인 중재기(320)는 각각 낮은 우선순위 연령 기반 중재기 및 높은 우선순위 연령 기반 중재기에 대응하는 제 1 연령 기반 중재기(322) 및 제 2 연령 기반 중재기(324)를 포함한다. 따라서, 도시된 바와 같이, 모든 에이전트(315)로부터의 요청이 제 1 중재기(322)에 제공되고, 등시성 에이전트(3152 및 3153)로부터의 요청만이 제 2 중재기(324)에 제공된다. 등시성 에이전트 중 하나로부터의 특정 요청이 긴급한 상태에 있는지를 판정하기 위해서, 데드라인 확인 로직 쌍(3210 및 321n)은 각각 이러한 등시성 에이전트 중 대응하는 하나로부터의 요청과 글로벌 타이머(350)로부터의 글로벌 타이밍 정보를 수신하도록 연결된다. 에이전트에 의해 제공된 데드라인 정보와 글로벌 타이밍 정보의 비교에 기초하여, 대응하는 요청에 대한 긴급한 상태의 표시가 제 2 중재기(324)에 제공될 수 있다.
동작에서, 중재기(322 및 324)는 유입 요청의 세트로부터의 중재 승자를 선택하도록 동작한다. 도시된 실시예에서, 이러한 판정은 각각의 에이전트의 연령 값을 저장하는 연령 스토리지(326)으로부터의 정보에 부분적으로 기초한다. 각각의 중재기로부터의 대응하는 승자는 동작의 모드에 기초하여 스케줄러 중재기(330)(도시의 편의를 위하여 도 4에 도시되지 않음)에 제공하기 위한 대응하는 요청을 동작의 모드에 기초하여 선택하는 우선순위 중재 선택기(325)에 연결될 수 있다. 이를 위하여, 선택기(325)는 우선순위 스토리지(329) 내의 정보에 적어도 부분적으로 기초하여 스케줄러 중재기에 대한 승인을 위한 요청을 선택할 수 있다.
승인 중재기에 의해 구현된 연령 기반 알고리즘은 마지막 에이전트가 중재기에 의해 수용된 이후 가장 오래 대기한 요청 에이전트가 가장 높은 우선순위 레벨을 부여받는다. 에이전트가 가장 높은 우선순위 레벨을 수신하면, 에이전트의 우선순위 레벨은 그 에이전트가 중재기에 의해 수용되기 않는 한 변경될 수 없다. 이러한 방식으로, 라운드 로빈 중재를 사용하는 경우 흔히 발견되는 고갈 이슈(starvation issues)가 요청 에이전트의 우선순위 레벨이 그 요청 에이전트가 중재기에 의해 수용되는 때에만 증가하는 것을 보장함으로써 회피될 수 있다.
승인 중재기는 모든 요청 에이전트에 할당될 에이전트 가중치를 허용한다. 가중치는 각각의 요청 에이전트에 대해 요청 대역폭의 백분율을 할당하는데 사용된다. 일 실시예에서, 가중치 값은 에이전트 가중치 설정 레지스터 내에 저장된 값을 통해 각각의 에이전트에 대해 특정된다. 에이전트에 할당된 요청 대역폭의 백분율은 일 실시예에서 모든 에이전트의 가중치의 합으로 나눠진 에이전트 가중치 값과 같다.
승인 중재기의 가중된 연령 기반 알고리즘은 언제 요청 에이전트가 중재기에 의해 마지막으로 수용되었는 지와의 상대적인 연령에 기초한다. 승인 중재기에 접속된 각각의 요청 에이전트에 대해서, 예시된 하나의 연령 카운터와 예시된 하나의 가중치 카운터가 존재한다. 승인 중재기 내의 높은 우선선위 경로 및 낮은 우선순위 경로 모두 승인 중재기에 접속된 에이전트의 공통 연령 카운터와 가중치 카운터를 공유한다. 요청 에이전트의 연령 및 가중치 레지스터를 업데이트하는 것은 최종 중재 승자를 선택한 후에 최종 선택기(즉, 우선순위 중재 선택기(325))에 의해 결정된다.
모든 요청 에이전트의 (예컨대 연령 저장소(326)의) 연령 레지스터는 승인 중재기로의 리셋 입력을 수신하는 것에 응답하여 먼저 초기화된다. 리셋이 어서트(assert)하면, 연령 레지스터는 0으로 시작해서 N-1의 값에서 끝나는 범위 내의 고유한 값으로 초기화되고, 여기서 N의 값은 승인 중재기에 접속된 요청 인터페이스의 개수와 같다.
요청 에이전트에 의해 어서트된 임의의 요청에 앞서, (예컨대 웨이트 스토리지(328)의) 에이전트 가중치 카운터가 패브릭의 에이전트 가중치 설정 레지스터 내의 프로그램된 값으로부터 초기화된다. 가중치 카운터가 초기화되면, 에이전트의 카운터는 에이전트의 수용된 각각의 요청마다 감소한다. 에이전트의 가중치 카운터가 0에 도달하고 에이전트가 다시 수용 중재기에 의해 수용되는 경우에, 카운터는 에이전트의 가중치를 위한 설정 레지스터 내에 프로그램된 값으로 다시 로딩된다.
일 실시예에서, 제 1 및 제 2 중재기(322 및 324)에서 수행되는 연령 기반 중재 방법은 중재의 승자를 결정하기 위해서 요청 비트 벡터(각각의 중재기는 고유의 벡터를 가짐)를 사용한다. 요청이 에이전트를 위해 어서트되는 경우에, 중재기는 요청 에이전트의 연령 값을 요청의 우선순위 레벨으로서 사용한다. 중재기의 우선순위 레벨과 그에 따른 비트 벡터 폭의 범위는 0 부터 N-1이다. 연령 기반 알고리즘은 모든 요청 에이전트의 연령 값이 항상 고유하고 따라서 중재 마다 오직 하나의 승자만이 존재하는 것을 보장한다.
중재기는 요청 중재의 승자에 대한 가중치 카운터가 0에 도달하는 경우에 모든 에이전트의 연령 레지스터를 업데이트한다. 일 실시예에서, 모든 에이전트의 연령 레지스터는 에이전트의 연령 값이 항상 고유한 값인 것을 보장하는 다음의 규칙에 따라 업데이트된다.
규칙 1: 에이전트의 연령이 중재의 승자의 연령과 같은 경우에, 에이전트의 연령 레지스터가 가장 최근의 요청 연령 또는 가장 낮은 우선순위를 표시하기 위해서 0으로 설정된다.
규칙 2: 에이전트의 연령이 중재의 승자보다 작은 경우에, 에이전트의 연령 레지스터는 1 만큼 증가한다.
규칙 3: 에이전트의 연령이 중재의 승자보다 큰 경우에, 에이전트의 연령 레지스터는 변경되지 않는다.
도 4에 더 도시된 바와 같이, 소정의 요청이 우선순위 중재 선택기(325)에서 선택된 후에, 버퍼를 할당하는데 있어서의 충돌과 요청된 데이터가 다른 요청자에 의해 현재 액세스되는 어드레스 충돌과 같은 다양한 소스의 충돌을 방지하기 위해 유입되는 다양한 요청 상의 충돌 검출을 수행하는 충돌 검출기(332)에 제공된다. 또한, 충돌 검출기(332)는 예컨대 데이터 버퍼(344) 내의 캐시 라인이 스누프 요청이 SoC의 하나 이상의 캐시 메모리에서 수행되도록 하는 프로세스에 있는 스누프 충돌 케이스를 처리할 수 있다. 그러한 스누프 충돌 케이스를 더욱 용이하게 처리하기 위해서, 충돌 검출기(332)는 본 명세서서 설명된 바와 같은 스누프 필터 로직(334)을 더 포함할 수 있다. 일반적으로, 스툽 필터 로직(334)이 최소한의 복잡성과 낮은 전력을 가지고 비-캐싱 에이전트로부터 스누핑되지 않은 메모리 요청으로 지연시간 없이, 따라서 스누프 충돌 해결 없이 처리될 수 있는 유입된 스누핑된 메모리 요청을 변환 또는 다운그레이딩함으로써 이러한 스누프 충돌 케이스의 적어도 일부를 방지할 수 있다. 도 4의 실시예가 고 레벨에서 도시되었으나, 본 발명의 범위가 이에 제한되는 것이 아님을 이해해야 한다.
충돌 검출기(332)에서 충돌이 검출되는 경우에, 피드백 정보가 중재기(322 및 324)로 통신된다. 이러한 방식으로, 이들 중재기는 충돌이 해결될 때까지 추가적인 중재 라운드로부터 대응하는 요청 에이전트를 마스킹할 수 있다. 이처럼, 이러한 피드백 신호는 하나 이상의 중재 라운드에서 중재를 수행하기 위해 사용가능한 요청 에이전트의 개수를 줄이는 마스크로서 동작한다. 주어진 충돌이 해결된 경우에, 이러한 마스크 신호는 제거되어 요청 에이전트가 중재 라운드에 참여할 수 있도록 활성화되는 것을 유의해야 한다. 일부 실시예에서, 그러한 요청은 높은 우선순위를 가지고 중재기(322 및 324)에 재진입함으로써 멈출 수 있음을 유의해야 한다.
이제 도 5를 참조하면, 본 발명의 일 실시예에 따른 공유 메모리 패브릭의 추가적인 상세사항을 도시하는 블럭도가 도시된다. 도 5에 도시된 바와 같이, 충돌 검출 로직(332)은 (예를 들어, 각각 SoC의 요청 에이전트에 대응하는) 복수의 요청 포트 중 하나로부터 중재된 요청을 수신하도록 구성된다. 보다 상세히, 유입 요청은 도 4의 우선순위 중재 선택기(325)의 출력으로부터 수신될 수 있다. 즉, 우선순위 중재 선택기(325)가 출력으로서 최종적으로 선택된 요청을 제공하는 경우에, 주어진 요청 에이전트와 연관된 대응하는 라인 상에 제공된다.
도 5에 도시된 바와 같이, 충돌 검출 로직(332)은 비-캐싱 에이전트로부터의 적어도 일부의 유입 스누핑된 메모리 요청을 스누핑되지 않은 요청으로 변환하고, 요청을 멈추는 대신에 다음 수락된 요청으로서 출력되도록 활성화하고, 결국 요청 에이전트 자체의 전진(forward progress)을 잠재적으로 멈춤으로써 스누프 충돌 케이스의 개수를 줄일 수 있는 스누프 필터 로직(334)를 포함한다. 충돌 검출 로직(332)이 버퍼를 할당하는데 있어서의 충돌로 인해 요청을 수락할 수 없는 경우에, 그 요청기는 충돌이 해결되어 데이터 버퍼가 할당될 수 있을 때까지 차단될 수 있음을 유의해야 한다. 다른 충돌 케이스는 라인이 현재 여전히 캐싱 에이전트에 스누핑되는 경우이다. 본 발명의 일 실시예가 없으면 일관성 프로토콜은 동일한 캐시 라인을 다시 스누핑하기 전에 캐시 라인의 소유권이 완전히 해결되는 것이 필요할 수 있다. 본 발명의 일 실시예를 사용하면, 적어도 일부의 스누핑된 요청이 스누핑되지 않은 요청으로 변환되어 일관성 패브릭(나아가 시스템 에이전트의 일부분)으로 미리 진입하는 것이 허용될 수 있다. 실시예는 저전력 및 최소한의 SoC 구조체를 사용하여 스누프 필터링을 수행할 수 있다. 아울러, 실시예는 비-캐싱 에이전트에서와 같이 동일한 캐시 라인에 대한 다수의 스누핑된 메모리 요청의 성능을 향상시킬 수 있다.
본 발명의 일 실시예에 따라 충돌 검출 동작과 스누프 메모리 요청 다운그레이드/변환을 수행하기 위해서, 충돌 검출 로직(332)은 데이터 버퍼(344)와 관련된 특정 정보를 수신하도록 연결된다. 보다 상세히, 충돌 검출 로직(334)은 태그 스토리지(343)로부터 상태 및 제어 정보를 수신하도록 구성된다. 상이한 구현에서, 태그 스토리지(343)는 데이터 버퍼의 일부분이거나 (예를 들어, 데이터 버퍼(344)와 동일한 개수의 라인 또는 엔트리를 갖는) 데이터 버퍼와 연관된 별개의 스토리지 어레이일 수 있다. 일 실시예에서, 데이터 버퍼(344)와 태그 스토리지(343)는 각각 64 개의 엔트리를 포함할 수 있다. 그러한 일 실시예에서, 데이터 버퍼(344)는 64B 폭의 스토리지를 제공한다.
도 5를 참조하면, 태그 스토리지(343)는 다수의 구성요소를 포함하도록 도시된다. 태그 스토리지(343)는 소유권 표시자(343a)를 포함한다. 일 실시예에서, 이러한 표시자는 데이터 버퍼(344) 내의 대응하는 엔트리 또는 라인이 시스템 에이전트에 의해 소유됨을 표시하는 단일 비트일 수 있다. 비록 "소유권"으로 설명되었으나, 본 명세서에서 의미하는 바는 시스템 에이전트가 SoC의 임의의 캐시 내의 이러한 대응하는 캐시 라인을 이전에 무효화(invalidate)했다는 것이며, 따라서 이러한 제 1 상태(예컨대, 로직 하이)의 소유권 표시자는 이 캐시 라인의 데이터의 유효한 사본이 SoC의 임의의 캐시 메모리 내에 존재하지 않아서 (비록 데이터가 데이터 버퍼(344)의 대응하는엔트리 내에 존재할 수 있으나) 스누핑된 요청을 수행할 필요가 없음을 나타낸다. 다른 방식으로 설명하면, 패브릭의 메모리 제어기는 라인을 스누핑하고 캐싱 에이전트는 스누프가 수행되었기 때문에 라인을 요청하지 않는다. 따라서, 메모리 제어기는 시스템 내에서 라인의 유일한 사본을 갖는것이 보장된다.
아울러, 태그 스토리지(343) 내의 제어 및 상태 표시자는 하위 청크 상태 표시자(343b)와 상위 청크 상태 표시자(343c)를 포함하여, 각각 주어진 청크가 현재 액세스(판독 또는 기록 상태)되었는가를 나타내는 표시와 캐시 라인의 동일한 청크에 대한 다수의 액세스를 허용하는 기준 카운트를 포함할 수 있다. 그러한 상태 표시자를 사용하여, (동일한 요청자로부터의) 새로운 독립적인 판독 및 기록 액세스가 단일 캐시 라인의 상이한 청크에 대해 허용될 수 있다. 다음으로, 라인 상태 표시자(343d)가 라인이 메모리로 플러시(flush)될 수정된 데이터를 포함한다는 것을 나타내는 제 1 상태일 수 있다. 마지막으로, 어드레스 필드(343e)는 대응하는 데이터 버퍼 엔트리와 연관된 시스템 메모리의 어드레스, 예를 들어, 물리적인 어드레스(또는 어드레스 부분)를 저장한다. 도 5의 실시예가 고 레벨에서 도시되었으나, 다른 실시예에서는 추가적인/추가적이거나 상이한 정보가 존재할 수 있음을 이해해야 한다.
스누프 필터 로직은 일시적인 것임을 유의해야 한다. 즉, SoC의 캐시 메모리에 포괄적인 완전한 디렉토리 또는 스누프 필터를 제공하는 대신에, 매우 제한된 스누프 필터 로직이 제공된다. 특정 실시예에서, 스누프 필터링은 공유 메모리 패브릭의 데이터 버퍼 내에 히트(hit)하는 메모리 요청에 대해서만 수행될 수 있다. 따라서, 이러한 데이터 버퍼가 64개의 엔트리를 포함하는 일 구현에서, 스누프 필터 로직은 오직 이러한 64 개의 엔트리를 위해서 대응하는 스누프 필터 능력(capabilities)을 제공할 수 있다. 따라서 본 발명의 일 실시예를 사용하여 활성화된 스누프 필터링은 일시적이어서 스누프 필터링은 이러한 엔트리가 존재하는 경우에만 이러한 엔트리에 대해서 수행된다. 엔트리의 데이터가 축출되는 경우에, 그 데이터와 연관된 메모리 요청을 위한 스누프 필터링을 수행하는 능력은 사라진다.
또한, 스누프 필터 로직(334)를 사용하면, 동일한 어드레스에 대한 다수의 요청이 수락되어 소유권 표시자가 대응하는 데이터가 시스템 에이전트에 의해 소유되었다고 표시하는 경우에 후속하는(subsequent) 메모리 요청을 멈추거나 유지할 필요없이 공유 메모리 패브릭 내에서 처리를 제공할 수 있다.
스누핑된 메모리 요청을 스누핑되지 않은 메모리 요청으로 변환함으로써, 메모리 요청은 스누핑되지 않은 메모리 요청으로서 처리됨을 유의해야 한다. 다른 방식으로 설명하면, 이러한 메모리 요청을 처리하는 동안의 시점에서 어떤 유형의 스누프 처리도 수행되지 않는다.
이제 도 6을 참조하면, 본 발명의 일 실시예에 따른 방법의 흐름도가 도시된다. 도 6에 도시된 바와 같이, 방법(500)은 패브릭의 스누프 필터 로직에 의해 적어도 부분적으로 구현될 수 있다. 다양한 구현에서, 하드웨어, 펌웨어 및/또는 소프트웨어의 조합이 패브릭에 연결된 비-캐싱 에이전트로부터 유입 메모리 요청을 더욱 효과적으로 처리하기 위해서 동작을 수행하는데 사용될 수 있다. 도 6의 실시예에서, 간단화된 처리가 특정 스누핑된 메모리 요청이 동일한 어드레스에 대한 앞선 스누핑된 메모리 요청이 완료되어 시스템 에이전트가 그 어드레스의 소유자가 되는 경우에 다운그레이드되도록 수행된다. 이는 구현을 용이하게 하지만, 하기에서 설명되는 다른 실시예에서, 시스템 에이전트가 소유자가 되기 전에 후속하는 요청을 수락하는 것을 허용함으로써 더욱 큰 지연시간 감소가 실현될 수 있다.
방법(500)은 비-캐싱 에이전트로부터의 제 1 스누핑된 메모리 요청을 시스템 에이전트 내에서 수신하는 단계로부터 시작한다 (블록 510). 이러한 시스템 에이전트는 스누프 필터 로직을 포함하는 패브릭을 포함할 수 있다. 다음에, 이러한 스누핑된 메모리 요청의 어드레스와 연관된 데이터 버퍼의 엔트리가 시스템 에이전트에 의해 소유되는지를 판정하는 마름모(520)로 나아가도록 제어된다. 일 실시예에서, 이러한 판정은 데이터 버퍼의 대응하는 엔트리의 소유권 표시자에 기초할 수 있다. 세트 또는 로직 하이 상태인 경우에, 이러한 표시자는 엔트리가 시스템 에이전트에 소유된 것을 표시한다. 다른 방식으로 설명하면, 이러한 세트 소유권 표시자는 어떤 캐싱 에이전트도 연관된 엔트리(및 요청의 어드레스)에 대해서 데이터의 유효한 사본을 포함하고 있지 않음을 표시한다.
엔트리가 시스템 에이전트에 의해 소유된 경우에, 스누핑된 메모리 요청이 스누핑되지 않은 메모리 요청으로 다운그레이드될 수 있는 블록(530)으로 진행된다. 일 실시예에서, 로직은 이렇게 수신된 스누핑된 메모리 요청을 스누핑되지 않은 메모리 요청으로 변환한다. 아울러, 대응하는 엔트리에 대한 데이터의 어떠한 유효한 사본도 SoC의 임의의 캐시에 존재하지 않기 때문에, 요청이 중지됨을 초래하지 않고도 요청이 수락될 수 있다. 다양한 실시예에서, 요청은 다른 요청 사이에서 중재될 수 있으며, 하나 이상의 중재 라운드가 끝날 때까지 수락되지 않을 수 있다. 아울러, 동일한 요청자로부터 이 동일한 엔트리로의 임의의 후속하는 메모리 요청 또한 지연시간 없이 수락될 수 있다 (블록 540).
요청을 수락한 후에, 공유 메모리 패브릭과 같은 시스템 에이전트의 다양한 로직에 의해 처리될 수 있다. 예를 들어, 스누핑되지 않은 판독 요청에 대해서, 데이터가 패브릭의 데이터 버퍼 내에 존재하면, 요청된 데이터는 요청차로 반환될 수 있다. 데이터가 패브릭의 데이터 버퍼 내에 존재하지 않으면, 메모리 요청은 메모리 제어기를 통해 데이터를 포함하는 메모리로 발행될 수 있다. 기록 요청을 대신해서, 기록 요청과 연관된 데이터가 데이터 버퍼의 대응하는 엔트리에 기록될 수 있다. 그 후, 예를 들어 데이터 버퍼로부터의 축출 이후의 시간에 이 데이터는 메모리에 다시 기록될 수 있다.
일 실시예에서, 소유권이 시스템 에이전트에 있다고 표시된 스누핑된 판독 요청에 대해서, 추가적인 처리가 수행될 수 있음을 유의한다. 보다 상세히, 이러한 스누핑된 메모리 요청과 동일한 요청 포트로부터의 이전 스누프 실효(invalidations)가 계류중인 경우에, (스누핑되지 않은 요청으로 다운그레이드된) 스누핑된 판독 요청의 결과가 동일한 요청 포트로부터 이전 스누프 동작을 완료하는 것을 중지하도록 유지될 수 있다. 즉, 메모리로부터 판독되어 시스템 에이전트의 데이터 버퍼에 저장된 데이터는 이전 스누프 실효의 결과(예를 들어, 기록)가 완성될 때까지 거기에 유지될 수 있다. 요청 에이전트로부터의 모든 앞선 스누프 트랜잭션이 완료된 경우에, 이러한 다운그레이드된 스누핑된 판독 요청을 위해 획득된 데이터가 요청자에 반환된다.
도 6을 다시 참조하면, 마름모(520)에서 데이터 버퍼의 엔트리가 시스템 에이전트에 의해 소유되지 않은 것으로 판정된 경우에, 마름모(550)로 진행되어 액티브 요청이 엔트리에 대하여 계류중인지 판정한다. 만약 그렇다면 블록(555)으로 진행되어 요청은 액티브 요청이 완료되어 더 이상 계류중이지 않을 때까지 중지된다.
엔트리에 대한 요청이 계류중이지 않으면, 블록(560)으로 진행되어 요청이 수락된다. 이러한 요청의 처리의 일부로서, 전형적인 스누프 흐름이 실효된 스누프 요청이 하나 이상의 캐싱 에이전트, 예를 들어, 연관된 캐시 메모리를 갖는 SoC의 하나 이상의 코어로 송신되도록 수행될 수 있다. 이러한 실효된 스누프 요청을 거쳐, 데이터의 가장 최근의 사본이 획득될 수 있다. 아울러, 이러한 하나 이상의 캐시 메모리에 존재하는 데이터의 사본들은 무효화될 수 있다.
다음으로 마름모(570)m로 진행되어 스누핑된 메모리 요청이 완료되었는지 판정한다. 일 실시예에서, 마름모(570)에서의 판정은 메모리 요청이 리타이어되었는지에 기초한다. 만약 그렇다면, 블록(580)으로 진행된다. 그곳에서 엔트리를 위한 소유권 표시자가 시스템 에이전트를 사용하여 소유권을 표시하기 위해서 세트될 수 있다. 즉, 이러한 소유권 표시자는 세트 또는 로직 하이 상태로 업데이트될 수 있다. 이러한 업데이트로 인해, 시스템 에이전트는 SoC의 임의의 캐시 내의 데이터의 모든 사본이 무효화 되기 때문에 소유권자로서 표시된다. 이처럼, 비-캐싱 에이전트로부터 유입 스누핑된 메모리 요청이 대응하는 엔트리를 위하여 수신되는 경우에, 데이터의 유효한 사본이 SoC의 임의의 캐시 내에 존재하지 않는 것이 보장되기 때문에 스누핑되지 않은 메모리 요청으로 변환될 수 있고 스누핑된 요청 흐름에 따라 처리될 수 있다. 도 6에 도시된 바와 같이, 상기 설명된 블록(580)부터 블록(540)으로 진행된다.
아울러, 처리를 향상시키기 위해서 동일한 어드레스를 위해 다수의 유입 메모리 요청이 동일한 요청자로부터 수신되고, 모든 요청은 수락되어 멈춤 및 성능 향상 없이도 처리될 수 있다. 도 6의 실시예가 비록 고레벨에서 도시되었으나, 본 발명의 범위가 이에 제한되는 것이 아님을 유의한다. 즉, 다양한 실시예에서 추가적인 순서화 규칙과 다른 요건이 본 발명의 일 실시예에 따라 스누프 필터 로직을 사용하여 유입 메모리 요청을 처리하는 것과 관계될 수 있다. 아울러, 지연시간이 더욱 감소된 특정 유형의 요청이 시스템 에이전트에 의해 대응하는 캐시 라인의 소유권 이전에 스누핑된 메모리 요청을 다운그레이드하고 수락함으로써 실현될 수 있다.
이제 도 7을 참조하면, 본 발명의 일 실시예에 따른 스누프 필터 로직을 사용하여 유입 메모리 요청을 처리하는 방법의 흐름도를 도시한다. 도 7에 도시된 바와 같이, 방법(600)은 SoC의 다양한 하드웨어, 소프트웨어 및/또는 펌웨어에 의해 수행될 수 있다. 일 실시예에서, 방법의 적어도 일부분은 도 5의 충돌 검출 로직(332) 및 스누프 필터 로직(334) 내에 구현될 수 있다. 방법(600)은 리셋 또는 새로운 어드레스가 SoC 데이터 버퍼 내의 캐시 라인에 할당되는 경우에 시작한다 (블록 605). 그러한 방법의 개시에 응답하여, 캐시 라인과 연관된 소유권 표시자는 클리어될 수 있다 (블록 610). 소유권 표시자를 클리어함으로써 그 라인의 데이터가 소유되었는지 아니면 SoC의 캐싱 라인과 연관되었는지(예를 들어, 데이터카 SoC의 캐시 라인 또는 캐싱 에이전트 내에 존재하는지)에 대한 보장이 없다.
도 7을 다시 참조하면, 다음으로 유입 메모리 요청이 캐싱 에이전트로부터의 것인지를 판정할 수 있다 (마름모 615). 그렇다면, 블록(620)으로 진행되어 요청은 충돌이 존재하지 않는 경우에 수락될 수 있다. 보다 상세히, 일 실시예에서 캐시 라인으로의 요청은 라인에 대한 액티브 요청이 없는 경우에만 수락된다. 요청이 수락되는 경우에, 라인에 대한 소유권 표시자는 제 2 상태, 예컨대, 클리어된 상태로 놓인다. 이러한 요청을 수락한 후에, 이 요청이 리타이어될 때까지 캐시 라인에 대한 어떤 다른 요청도 시스템 에이전트에 수락되도록 허용되지 않는다. 기록 요청은 DRAM으로 플러시될 필요가 없고, 대신에 버퍼에 더티 상태(dirty status)로서 마킹될 수 있다.
다음으로, 마름모(625)에서 유입 요청이 스누핑되지 않은 판독 또는 기록 요청인지 판정될 수 있다. 만약 그렇다면, 블록(630)으로 진행되어 동일한 요청자로부터의 다수의 요청이 수락될 수 있다. 보다 상세히, 일 실시에에서 다수의 요청이 동일한 요청자로부터 수신된 것이고 32B의 청크에 대한 판독/기록 충돌이 없는 동일한 라인에 대한 시스템 에이전트로 수락되도록 허용된다. 이러한 스누핑되지 않은 요청에 대하여, 소유권 표시자는 현재 상태를 유지할 수 있다.
다시 도 7을 참조하면, 다음으로 마름모(635)로 진행되어 유입 요청이 스누핑된 판독 요청이고 소유권 표시자가 제2의 클리어된 상태인지 판정할 수 있다. 만약 그렇다면, 마름모(640)으로 진행되어 요청을 개시하는 에이전트가 요청 순서대로 데이터를 수락할 수 있는지 판정할 수 있다. 만약 그렇다면, 블록(645)로 진행되어 스누핑된 판독이 충돌이 없는 경우에 수락될 수 있다. 아울러, 이러한 스누핑된 판독 요청이 성공적으로 리타이어된 후에 소유권 표시자는 제 1 상태로 업데이트될 수 있다.
마름모(640) 대신에 에이전트가 요청 순서대로 판독 데이터를 수락할 필요가 없는 것으로 판정되는 경우에, 블록(648)으로 진행된다. 거기서, 스누핑된 판독이 충돌이 없는 경우에 수락될 수 있다. 아울러, 이러한 스누핑된 판독 요청이 성공적으로 리타이어된 후에, 소유권 표시자는 업데이트될 수 있다. 보다 상세히, 일 실시예에서 스누핑된 판독 요청이 액티브 요청이 라인 상에 존재하지 않는 경우에만 수락된다. 소유권 표시자는 제 1 스누핑된 판독이 리타이어될 때까지 제 2 상태를 유지할 수 있다. 소유권 표시자가 요청 상태에 있고 제 1 스누핑된 판독 요청이 여전히 활성화된 동안, 동일한 라인에 대한 판독 및 스누핑되지 않은 판독 요청이 동일한 요청자 포트로부터만 수락될 수 있다. 제 1 스누핑된 판독 요청을 수락한 후에, 모든 성공적인 스누핑된 판독이 스누핑되지 않은 판독 요청으로 다운그레이드된다. 이러한 요청이 제1 스누핑된 판독 요청을 위한 스누프 처리의 완료 전에 수락도고 다운그레이드될 수 있음을 유의한다. 제 1 스누핑된 판독 요청이 리타이어된 후에, 소유권 표시자는 제 1 상태로 세트된다.
다시 도 7을 참조하면, 유입 메모리 요청이 제 2 상태의 소유권 표시자를 갖는 스누핑된 판독 요청이 아닌 경우에, 유입 요청이 제 1 상태의 소유권 표시자를 갖는 스누핑된 판독 요청인지 판정하는 마름모(650)로 진행된다. 만약 그렇다면, 블록(655)으로 진행되어 요청이 스누핑되지 않은 판독 요청으로 다운그레이드되어 적절히 처리될 수 있다. 일 실시예에서, 다수의 요청이 동일한 요청자로부터 수신되고 32B 청크에 대한 판독/기록 충돌이 없는 한 동일한 라인으로 수락되도록 허용됨을 유의한다. 또한 소유권 표시자는 제 1 상태를 유지함을 유의한다.
그렇지 않으면, 마름모(650)로부터 마름모(660)로 진행되어 유입 요청이 스누핑된 기록 요청이고 소유권 표시자가 제 2 상태인지 판정한다. 만약 그렇다면, 블록(665)으로 진행되어 스누핑된 기록 요청이 충돌이 없는 경우에 수락될 수 있다. 아울러, 이러한 스누핑된 기록 요청이 리타이어된 경우에, 소유권 표시자는 업데이트될 수 있다. 보다 상세히, 일 실시예에서 스누핑된 기록 요청이 캐시 라인에 대한 액티브 요청이 없는 경우에만 수락된다. 캐시 라인에 대한 소유권 표시자는 제 1 스누핑된 기록 요청이 리타이어될 때까지 제 2 상태를 유지한다. 소유권 표시자가 제 2 상태이고 제 1 스누핑된 기록 요청이 여전이 활성화된 동안, 동일 캐시 라인에 대한 다수의 스누핑된 기록 요청 및 스누핑되지 않은 기록 요청이 동일한 요청자로부터만 수락되도록 허용된다. 제 1 스누핑된 기록 요청이 리타이어된 경우에, 소유권 표시자는 제 1 상태로 세트된다.
다시 도 7을 참조하면, 마름모(660)로부터 마름모(670)로 진행되어 유입 요청이 스누핑된 기록이고 소유권 표시자가 제 1 상태인지 판정된다. 만약 그렇다면, 블록(675)으로 진행되어 요청은 스누핑되지 않은 기록 요청으로 다운그레이드될 수 있다. 일 실시예에서, 다수의 요청이 동일한 요청자로부터 수신되고 32B 청크에 대한 판독/기록 충돌이 없는 한 동일한 캐시 라인에 대해 수락되도록 허용된다. 소유권 표시자는 제 1 상태를 유지할 수 있다. 도 7의 실시예는 고레벨에서 도시되었으나, 본 발명의 범위는 이제 제한되는 것이 아님을 이해한다.
이제 도 8을 참조하면, 본 발명의 일 실시예에 따른 SoC의 블록도가 도시된다. 도 8에 도시된 바와 같이, SoC(1000)는 상기 설명된 바와 같은 공유 메모리 중재기를 따라 복수의 IP 블록을 포함한 단일 다이 반도체 디바이스이다. 도 8의 실시예에서, 복수의 코어(10100-1010n)가 제공되고, 각각 독립적으로 명령어를 실행할 수 있다. 일 실시예에서, 모든 이러한 코어는, 예를 들어, AtomTM 기반 코어와 같은 Intel ArchitectureTM의순차적 코어 디자인 같은 단일 디자인이다. 다른 실시예에서, 코어는 Intel CoreTM 기반 디자인과 같은 Intel ArchitectureTM (IA) 32 코어와 같은 비순차적 프로세서일 수 있다. 다른 실시예에서, 이종 코어의 혼합이 제공될 수 있다. 아울러, 각각 독립적으로 그래픽 동작을 수행하는 복수의 그래픽 엔진, 즉 독립적인 그래픽 유닛(10200-1020n)이 제공될 수 있다. 도시된 바와 같이, 복수의 코어는 레벨 2(L2) 캐시와 같은 공유 캐시 메모리(1015)와 연결되고, 유사하게 그래픽 엔진은 다른 공유 캐시 메모리(1025)에 연결된다.
시스템 에이전트(1030)는 이들 코어와 그래픽 엔진에 대응하는 인-다이(in-die) 상호접속부(1028 및 1029)를 통해 연결된다. 도시된 바와 같이, 시스템 에이전트(1030)는 본 명세서에 설명된 바와 같이 구성될 수 있는 공유 메모리 패브릭(1035)를 포함한다. 물론 다양한 다른 로직, 제어기 및 전력 관리 유닛과 같은 다른 유닛이 시스템 에이전트(1030) 내에 존재할 수 있다. 도시된 바와 같이, 공유 메모리 패브릭(1035)은 DRAM으로 구성되는 시스템 메모리와 같은 오프-칩 메모리에 결국 연결되는 메모리 제어기(1040)와 통신한다. 아울러, 시스템 에이전트(1030)는 상호접속부(1044)를 통해 다양한 주변 디바이스와 같은 하나 이상의 내부 에이전트(1050)에 연결된다. 일 실시예에서, 상호접속부(1044)는 우선순위 채널 상호접속부, 사이드밴드 채널 상호접속부 및 메모리 채널 상호접속부를 포함할 수 있다. 유사하게 구성된 상호접속부(1046)가 시스템 에이전트와 하나 이상의 오프-칩 에이전트(도 8의 실시예에서 도시의 편이를 위해 미도시됨) 사이의 통신을 제공한다. 도 8에서 고레벨으로서 도시되었으나, 본 발명의 범위는 이에 한정되는 것이 아님을 이해한다.
이제 도 9를 참조하면, 본 발명의 일 실시예에 따른 컴퓨터 시스템 내에 존재하는 구성요소의 블록도를 도시한다. 도 9에 도시된 바와 같이, 시스템(1100)은 많은 다양한 구성요소를 포함할 수 있다. 일 실시예에서, 시스템(1100)은 본 명세서에서 설명되는 바와 같은 SoC를 포함하는 사용자 장비, 터치-활성화 디바이스이다. 시스템(1100)의 구성요소는 IC, IC의 일부분, 이산 반도체 디바이스 또는 마더 보드 또는 컴퓨터 시스템의 애드-인(add-in) 카드와 같은 회로 보드에 구성되는 다른 모듈로서 구현되거나, 컴퓨터 시스템의 섀시(chassis) 내에 통합되는 구성요소로서 구현될 수 있음을 유의한다. 또한, 도 9의 블록도는 컴퓨터 시스템의 많은 구성요소의 고레벨 도면을 도시하도록 의도된 것을 유의한다. 그러나, 특정 구현에 내에 추가적인 구성요소가 존재할 수 있으며, 아울러 도시된 구성요소의 상이한 배치가 다른 구현에서 발생할 수 있음을 이해해야 한다.
도 9에 도시된 바와 같이, 울트라 저 전압 프로세서와 같이 저 전력 멀티코어 프로세서 소켓일 수 있는 프로세서(1110)는 주 처리 유닛 및 시스템 내의 다양한 구성요소와의 통신을 위한 중앙 허브로서 동작할 수 있다. 그러한 프로세서는 본 명세서에 설명된 바와 같은 SoC로서 구현될 수 있다. 일 실시예에서, 프로세서(1110)는 단일 SoC 내에서 고전력 및 저전력 코어를 실현하기 위한 하나 이상의 CoreTM-기반 코어와 하나 이상의 Intel® ATOMTM-기반 코어와 같이, 인텔 사(캘리포니아주, 산타 클라라)로부터 구할 수 있는 i3, i5, i7 또는 다른 그러한 프로세서와 같은 Intel® Architecture CoreTM-기반 프로세서일 수 있다. 그러나, Advanced Micro Devices (AMD) (캘리포니아주, 서니베일)로부터 구할 수 있는 것과 같은 다른 저전력 프로세서, ARM Holdings 사로부터의 ARM-기반 디자인 또는 MIPS 테크놀로지스 사(캘리포니아, 서니베일)로부터의 MIPS-기반 디자인 또는 그들의 라이센스를 사용한 것 또는 기술을 사용한 것이 Apple A5 또는 A6 프로세서와 같은 다른 실시예에 존재할 수 있음을 이해해야 한다.
프로세서(1110)는 일 실시예에서 소정의 시스템 메모리 양을 제공하기 위해서 다수의 메모리 디바이스를 통해 구현될 수 있는 시스템 메모리(1115)와 통신할 수 있다. 데이터, 애플리케이션, 하나 이상의 운영 체제 등과 같은 정보의 지속적인 저장을 제공하기 위해서, 매스 스토리지(mass storage)(1120)가 또한 프로세서(1110)에 연결될 수 있다. 또한 도 9에 도시된 바와 같이, 플래시 디바이스(1122)가 예를 들어 직렬 주변장치 인터페이스(serial peripheral interface: SPI)를 통해 프로세서(1110)에 연결될 수 있다. 이 플래시 디바이스는 BIOS( basic input/output software)뿐만 아니라 시스템의 다른 펌웨어를 포함하는 시스템 소프트웨어의 비휘발성 스토리지를 제공할 수 있다.
다양한 입/출력(IO) 디바이스가 시스템(1100) 내에 존재할 수 있다. 특히 도 9의 실시예에 도시된 것은 섀시의 뚜껑 부분 내에 구성되는 고해상도의 LCD 또는 LED 패널일 수 있는 디스플레이(1124)이다. 이러한 디스플레이 패널은 또한 예를 들어 디스플레이 패널의 외부 상면에 구성되는 터치 스크린(1125)이 제공될 수 있어, 이러한 터치 스크린과 사용자의 상호작용을 통해 사용자 입력이 시스템에 제공되어, 예를 들어, 정보의 디스플레이, 정보의 액세스 등과 같은 원하는 동작을 가능하게 할 수 있다. 일 실시예에서, 디스플레이(1124)는 고성능 그래픽 상호접속부로서 구현될 수 있는 디스플레이 상호접속부를 통해 프로세서(1110)에 연결될 수 있다. 터치 스크린(1125)이 일 실시예에서는 I2C 상호접속부일 수 있는 다른 상호접속부를 통해 프로세서(1110)에 연결될 수 있다. 도 9에 더 도시된 바와 같이, 터치 스크린(1125)에 더불어 터치의 방식의 사용자 입력이 섀시 내에 구성될 수 있고 또한 터치 스크린(1125)과 동일한 I2C 상호접속부로 연결될 수 있는 터치 패드(1130)를 통해 발생할 수 있다.
지각적인(perceptual) 계산과 다른 목적을 위해서, 다양한 센서가 시스템 내에 존재할 수 있고 상이한 방식으로 프로세서(1110)에 연결될 수 있다. 특정한 관성(inertial) 및 환경 센서가, 예를 들어, I2C 상호접속부를 통해 센서 허브(1140)를 거쳐 프로세서(1110)에 연결될 수 있다. 도 9에 도시된 실시예에서, 이러한 센서는 가속도계(1141), 주변광 센서(ambient light sensor: ALS)(1142), 나침반(1143) 및 자이로스코프(1144)를 포함할 수 있다. 일 실시예에서, 다른 환경 센서는 SM(system management) 버스를 통해 프로세서(1110)에 연결될 수 있는 하나 이상의 열 센서(1146)를 포함할 수 있다.
또한 도 9에 도시된 바와 같이, 다양한 주변 디바이스가 LPC(low pin count) 상호접속부를 통해 프로세서(1110)에 연결될 수 있다. 도시된 실시예에서, 다양한 구성요소가 내장형 제어기(1135)를 통해 연결될 수 있다. 그러한 구성요소는 (예를 들어, PS2 인터페이스를 통해 연결된) 키보드(1136), 팬(1137) 및 열 센서(1139)를 포함할 수 있다. 일부 실시예에서, 터치 패드(1130)는 또한 PS2 인터페이스를 통해 EC(1135)에 연결될 수 있다. 아울러, TGC(Trusted Computing Group) TPM 사양 버전 1.2(2003년 10월 2일)에 따른 TPM(trusted platform module)(1138)과 같은 보안 프로세서 또한 LPC 상호접속부를 통해 프로세서(1110)에 연결될 수 있다.
시스템(1100)은 무선방식을 포함한 다양한 방식으로 외부 디바이스와 통신할 수 있다. 도 9에 도시된 실시예에서, 각각 특정 무선 통신 프로토콜에 대해 구성될 수 있는 라디오에 대응할 수 있는 다양한 무선 모듈이 존재한다. 근접 필드와 같은 단거리 내의 무선 통신을 위한 한 방식은 일 실시예에서 SM 버스를 통해 프로세서(1110)와 통신할 수 있는 NFC(near field communication) 유닛(1145)을 통한 것일 수 있다. 이러한 NFC 유닛(1145)을 통하여 가까이 인접하는 디바이스들은 서로 통신할 수 있다. 예를 들어, 사용자는 시스템(1100)이 사용자의 스마트폰과 같은 다른 (예컨대) 이동식 디바이스와 통신하도록 활성화기 위해서 두 개의 디바이스들을 근접한 거리에 함께 놓고, 식별 정보, 결제 정보, 또는 이미지 데이터와 같은 데이터를 전송할 수 있다. 무선 전력 전송 또한 NFC 시스템을 통해 수행될 수 있다.
도 9에 더 도시된 바와 같이, 추가적인 무선 유닛이 WLAN 유닛(1150) 및 블루투스 유닛(1152)를 포함하는 다른 단거리 무선 엔진을 포함할 수 있다. WLAN 유닛(1150)을 사용하여, 소정의 IEEE 802.11 표준에 따른 Wi-FiTM 통신이 실현될 수 있으며, 블루투스 유닛(1152)을 통해 블루투스 프로토콜을 통한 단거리 통신이 발생할 수 있다. 이러한 유닛들은, 예를 들어, USB 링크 또는 UART(universal asynchronous receiver transmitter) 링크를 통해 프로세서(1110)와 통신할 수 있다. 또는 이러한 유닛들은 PCI Express TM 사양 기반 사양 버전 3.0(2007년 1월 17일 공개됨) 또는 SDIO(serial data input/output) 표준과 같은 다른 그러한 프로토콜에 따른 PCIeTM 프로토콜을 통한 상호접속을 통해 프로세서(1110)에 연결될 수 있다. 물론, 하나 이상의 애드-인 카드 상에 구성될 수 있는 이러한 주변 디바이스 간의 실제적인 물리적 접속이 마더보드에 구성된 차세대 폼 팩터(NGFF) 접속기에 의해 구현될 수 있다.
아울러, 예를 들어 셀룰러 또는 다른 무선 광역 프로토콜에 따른 무선 광역 통신이 결국 가입자 식별 모듈(SIM)(1157)에 연결될 수 있는 WWAN 유닛(1156)을 통해 발생할 수 있다. 아울러, 위치 정보의 수신 및 사용을 가능하게 하기 위해 GPS 모듈(1155)이 또한 존재할 수 있다. 도 9에 도시된 실시예에서, WWAN 유닛(1156) 및 카메라 모듈(1154)와 같은 통합 캡처 디바이스가 USB 2.0 또는 3.0 링크 또는 UART 또는 I2C 프로토콜과 같은 소정의 USB 프로토콜을 통해 통신할 수 있다. 이러한 유닛들의 실제적인 물리적 접속은 NGFF 애드-인 카드를 마더보드 상에 구성된 NGFF 접속기에 적용함으로써 구현될 수 있다.
오디오 입력 및 출력을 제공하기 위해서, 오디오 프로세서가 HDA(high definition audio) 링크를 통해 프로세서(1110)에 연결될 수 있는 DSP(digital signal processor)(1160)를 통해 구현될 수 있다. 유사하게, DSP(1160)는 섀시 내에 구현될 수 있는 출력 스피커(1163)에 결국 연결될 수 있는 통합 CODEC 및 앰프(1162)와 통신할 수 있다. 유사하게, CODEC 및 앰프(1162)는 일 실시예에서 시스템 내의 다양한 동작의 음성 활성화 제어를 가능하게 하는 고품질 오디오 입력을 제공하기 위한 듀얼 어레이 마이크로폰을 통해 구현될 수 있는 마이크로폰(1165)으로부터 오디오 입력을 수신하도록 연결될 수 있다. 오디오 출력이 또한 CODEC 및 앰프(1162)로부터 해드폰 잭(1164)로 제고오딜 수 있음을 유의한다. 도 9의 실시예에서 이들 특정 구성요소로서 도시되었으나, 본 발명의 범위는 이제 한정되는 것이 아님을 이해한다.
하기의 예시들은 추가적인 실시예를 포함한다.
일 예시에서, SoC는 SoC의 복수의 에이전트를 상호접속하는 패브릭을 포함하며, 패브릭은 복수의 에이전트로 및 복수의 에이전트로부터, 및 SoC에 연결된 메모리로 및 메모리로부터 전송될 데이터를 각각 저장하는 복수의 엔트리를 포함하는 데이터 버퍼와, 패브릭이 복수의 에이전트 중 제 1 에이전트의 적어도 하나의 캐시 메모리 내에서 복수의 엔트리 중 한 엔트리 내의 데이터를 무효화한 후에 복수의 엔트리 중 한 엔트리 내의 데이터와 연관된 복수의 메모리 요청이 수락되도록 활성화하는 중재 로직을 포함한다.
일 예시에서, SoC는 데이터 버퍼의 복수의 엔트리의 각각과 연관된 소유권 표시자를 더 포함하되, 소유권 표시자는 엔트리의 대응하는 데이터가 복수의 에이전트의 캐싱 에이전트 내에서 무효화되었음을 표시하는 제 1 상태를 갖는다.
일 예시에서, 중재 로직은 데이터 버퍼의 제 1 엔트리의 데이터와 연관된 제 1 스누핑된 메모리 요청이 리타이어(retire)한 경우에, 소유권 표시자를 제 1 상태로 업데이트한다.
일 예시에서, 중재 로직은 제 1 스누핑된 메모리 요청이 리타이어하기 전에 제 1 엔트리의 데이터와 연관된 하나 이상의 후속하는 메모리 요청을 수락한다.
일 예시에서, 하나 이상의 후속하는 메모리 요청은 제 1 스누핑된 메모리 요청과 동일한 요청자로부터의 것이다.
일 예시에서, 중재 로직은 하나 이상의 후속하는 메모리 요청을 스누핑된 메모리 요청으로부터 스누핑되지 않은 메모리 요청으로 다운그레이드한다.
일 예시에서, 제 1 에이전트는 캐싱 에이전트를 포함하고, 복수의 메모리 요청은 복수의 에이전트 중 비-캐싱 에이전트로부터 수신된다.
일 예시에서, 중재 수단은 스누핑된 메모리 요청을 비-캐싱된 에이전트로부터 스누핑되지 않은 메모리 요청으로 다운그레이드하고, 복수의 에이전트의 캐싱 에이전트에 대한 스누프 요청의 발행 없이 스누핑된 메모리 요청과 연관된 데이터를 상기 비-캐싱 에이전트로 전달한다.
일 예시에서, 중재 수단은 시간 스누프 필터를 포함하고, 시간 스누프 필터는 데이터 버퍼에 관해서는 포괄적이며(inclusive) SoC의 하나 이상의 캐시 메모리에 관해서는 비포괄적이다.
다른 예시에서, 방법은 프로세서의 비-캐싱 에이전트로부터 프로세서의 일관성 패브릭(coherent fabric) 내의 제 1 어드레스에 대한 제 1 스누핑된 메모리 요청을 수신하는 단계와, 제 1 어드레스와 연관된 일관성 패브릭의 데이터 버퍼의 엔트리가 일관성 패브릭에 의해 소유되는지를 검출하는 단계와, 만약 그렇다면, 제 1 스누핑된 메모리 요청을 스누핑되지 않은 메모리 요청으로 다운그레이드하는 단계를 포함한다.
일 예시에서, 방법은 엔트리가 일관성 패브릭에 의해 소유되지 않은 경우에, 제 1 스누핑된 메모리 요청이 제 1 어드레스에 대해 계류중인 스누핑된 메모리 요청과 동일한 요청자로부터의 것이면, 제 1 스누핑된 메모리 요청을 수락하고 다운그레이딩하는 단계를 더 포함한다.
일 예시에서, 방법은 계류중인 스누핑된 메모리 요청에 대한 스누프 처리가 완료되기 전에 제 1 스누핑된 메모리 요청을 수락하고 다운그레이드하는 단계를 더 포함한다.
일 예시에서, 스누핑되지 않은 메모리 요청이 계류중인 동안에, 제 1 스누핑된 메모리 요청과 동일한 요청자로부터의 제 1 어드레스에 대한 하나 이상의 후속하는 메모리 요청이 수락된다.
일 예시에서, 제 1 스누핑된 메모리 요청을 다운그레이드하는 단계는 제 1 스누핑된 메모리 요청을 스누핑되지 않은 메모리 요청으로 변환하는 단계를 포함한다.
일 예시에서, 방법은 데이터 버퍼의 엔트리가 일관성 패브릭에 의해 소유되지 않은 경우에, 액티브 메모리 요청이 엔트리에 대해 계류중인지 판정하고, 어떤 액티브 메모리 요청도 엔트리에 대해 계류중이지 않은 경우에, 제 1 스누핑된 메모리 요청을 수락하고 프로세서의 하나 이상의 캐싱 에이전트에 대한 스누프 요청을 무효화하는 단계를 더 포함한다.
일 예시에서, 방법은 액티브 메모리 요청이 엔트리에 대해 계류중인 경우에, 제 1 스누핑된 메모리 요청을 멈추는(stalling) 단계를 더 포함한다.
일 예시에서, 방법은 일관성 패브릭이 제 1 스누핑된 메모리 요청의 리타이어먼트에 응답하여 엔트리를 소유하고 있음을 표시하도록 엔트리의 소유권 표시자를 설정하고, 데이터 버퍼 내의 엔트리를 할당하는 것에 응답하여 엔트리에 대한 소유권 표시자를 클리어하는 단계를 더 포함한다.
일 예시에서, 방법은 제 1 스누핑된 메모리 요청의 요청자로부터의 이전 스누핑된 무효화(invalidation)가 완료되기 전까지 데이터 버퍼 내의 스누핑되지 않은 메모리 요청과 연관된 반환 데이터를 유지하는 단계를 더 포함한다.
다른 예시에서, 명령어를 포함하는 컴퓨터 판독가능 매체가 상기 예시 중 어느 하나의 방법을 수행한다.
다른 예시에서, 장치가 상기 예시 중 어느 하나의 방법을 수행하기 위한 수단을 포함한다.
다른 예시에서, 시스템은 제 1 코어 및 제 1 캐시 메모리와, DRAM과 연결된 적어도 하나의 메모리 제어기와, 제 1 비-캐싱 에이전트와, 제 1 코어, 제 1 비-캐싱 에이전트 및 적어도 하나의 메모리 제어기를 연결하는 패브릭 - 패브릭은 데이터 버퍼와 데이터 버퍼에는 포괄적이고 제 1 캐시 메모리에는 비포괄적인 시간 스누프 필터 로직을 포함하고, 시간 스누프 필터 로직은 제 1 어드레스와 연관된 표시자가 패브릭이 제 1 어드레스에 대한 제어를 갖는다는 것을 표시하는 경우에 제 1 비-캐싱 에이전트로부터의 제 1 어드레스에 대한 복수의 스누핑된 메모리 요청이 멈춤(stall) 없이 수락되도록 활성화함 - 과, SoC에 연결된 DRAM을 포함하는 SoC를 포함한다.
일 예시에서, 시간 스누프 필터 로직은 BIOS(basic input/output system), 펌웨어 또는 다른 소프트웨어에 따라 활성화된다.
일 예시에서, 시간 스누프 필터는 패브릭이 제 1 캐시 메모리 내의 제 1 어드레스와 연관된 데이터를 무효화한 후에 복수의 스누핑된 메모리 요청이 수락되도록 활성화한다.
일 예시에서, 표시자는 제 1 어드레스와 연관된 데이터가 무효화된 이후에 패브릭이 제 1 어드레스에 대한 제어를 갖는다는 것을 표시한다.
일 예시에서, 시간 스누프 필터 로직은 제 1 어드레스와 연관된 제 1 스누핑된 메모리 요청이 리타이어할 때 표시자를 업데이트하고, 시간 스누프 필터 로직은 제 1 스누핑된 메모리 요청이 리타이어하기 전에 제 1 어드레스와 연관된 하나 이상의 후속하는 메모리 요청을 수락한다.
일 예시에서, 시간 스누프 필터 로직은 하나 이상의 후속하는 메모리 요청을 스누핑된 메모리 요청으로부터 스누핑되지 않은 메모리 요청으로 다운그레이드한다.
다른 예시에서, 장치는 시스템 온 칩(SoC)의 일관성 패브릭의 중재기로부터 복수의 메모리 요청을 수신하는 충돌 검출 로직을 포함하되, 충돌 검출 로직은 제 1 어드레스와 연관된 표시자가 일관성 로직이 제 1 어드레스의 제어를 갖는 것을 표시하는 경우에 제 1 어드레스에 대한 제 1 스누핑된 메모리 요청을 스누핑되지 않은 메모리 요청으로 다운그레이드한다.
일 예시에서, 스누프 필터 로직은 일관성 패브릭의 버퍼에 포괄적이고, SoC의 하나 이상의 캐시 메모리에 비포괄적이다.
일 예시에서, 스누프 필터 로직은 일관성 패브릭이 SoC의 제 1 에이전트의 복수의 캐시 메모리 내의 데이터를 무효화한 후에 그리고 스누핑되지 않은 메모리 요청이 리타이어되기 전에 수락될 제 1 어드레스와 연관된 복수의 메모리 요청을 활성화한다.
일 예시에서, 스누프 필터 로직은 일관성 표시자가 제 1 어드레스에 대한 스누핑된 메모리 요청의 리타이어먼트에 응답하여 제 1 어드레스의 제어를 갖는 것을 표시하도록 표시자를 업데이트한다.
일 예시에서, 스누프 필터 로직은 시간 스누프 필터를 포함한다.
일 예시에서, 시간 스누프 필터는 일관성 패브릭의 데이터 버퍼에 포괄적이고, SoC의 하나 이상의 캐시 메모리에 비포괄적이다.
상기 예시의 다양한 조합이 가능함을 이해한다.
실시예는 많은 상이한 유형의 시스템에서 사용될 수 있다. 예를 들어, 일 실시예에서, 통신 디바이스가 본 명세서에서 설명된 다양한 방법 및 기술을 수행하기 위해서 배치될 수 있다. 물론, 본 발명의 범위가 통신 디바이스에 한정되는 것은 아니며, 다른 실시예는 명령어를 처리하기 위한 다른 유형의 장치 또는 컴퓨팅 디바이스에서 실행되는 것에 응답하여 디바이스로 하여금 본 명세서에 설명된 하나 이상의 방법 및 기술을 수행하도록 하는 명령어를 포함하는 하나 이상의 머신 판독가능 매체에 관한 것일 수 있다.
실시예는 코드로서 구현될 수 있으며, 명령어를 수행하기 위해 시스템을 프로그램하는데 사용될 수 있는 명령어를 저장하는 비-일시적인 저장 매체 상에 저장될 수 있다. 저장 매체는 플로피 디스크, 광학 디스크, SSD(solid state device), CD-ROM(compact disk read-only memories), CD-RW(compact disk rewritables), 및 자기광학 디스크, ROM, DRAM, SRAM, EPROM, 플래시 메모리, EEPROM, 자기 또는 광학 카드와 같은 DRAM과 같은 반도체 디바이스 또는 전자적 명령어를 저장하기에 적합한 임의 유형의 매체를 포함하는 임의 유형의 디스크를 포함할 수 있지만, 이에 제한되는 것은 아니다.
본 발명이 제한된 개수의 실시예와 관련하여 설명되었으나, 당업자는 그로부터 수많은 수정 및 변형을 이해할 수 있을 것이다. 첨부된 청구항은 본 발명의 참된 사상 및 범위 내에 속하는 모든 그러한 수정 및 변형을 포괄하는 것으로 의도된다.

Claims (30)

  1. 시스템 온 칩(SoC)으로서,
    상기 SoC의 복수의 에이전트를 상호접속하는 패브릭을 포함하며, 상기 패브릭은
    상기 복수의 에이전트로 및 상기 복수의 에이전트로부터, 및 상기 SoC에 연결된 메모리로 및 메모리로부터 전송될 데이터를 각각 저장하는 복수의 엔트리를 포함하는 데이터 버퍼와,
    상기 데이터 버퍼의 상기 복수의 엔트리의 각각과 연관된 소유권 표시자 - 상기 소유권 표시자는 상기 엔트리의 대응하는 데이터가 상기 복수의 에이전트의 캐싱 에이전트 내에서 무효화되었음을 표시하는 제 1 상태임 - 와,
    상기 패브릭이 상기 복수의 에이전트 중 제 1 에이전트의 적어도 하나의 캐시 메모리 내에서 상기 복수의 엔트리 중 한 엔트리 내의 데이터를 무효화한 후에 상기 복수의 엔트리 중 한 엔트리 내의 데이터와 연관된 복수의 메모리 요청이 수락되도록 활성화하는 중재 로직 - 상기 중재 로직은 상기 데이터 버퍼의 제 1 엔트리의 데이터와 연관된 제 1 스누핑된 메모리 요청이 리타이어(retire)한 경우에, 상기 소유권 표시자를 상기 제 1 상태로 업데이트함 - 을 포함하는
    SoC.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 중재 로직은 상기 제 1 스누핑된 메모리 요청이 리타이어하기 전에 상기 제 1 엔트리의 데이터와 연관된 하나 이상의 후속하는 메모리 요청을 수락하는
    SoC.
  5. 제 4 항에 있어서,
    상기 하나 이상의 후속하는 메모리 요청은 상기 제 1 스누핑된 메모리 요청과 동일한 요청자로부터의 것인
    SoC.

  6. 제 4 항에 있어서,
    상기 중재 로직은 상기 하나 이상의 후속하는 메모리 요청을 스누핑된 메모리 요청으로부터 스누핑되지 않은 메모리 요청으로 다운그레이드하는
    SoC.
  7. 제 1 항에 있어서,
    상기 제 1 에이전트는 캐싱 에이전트를 포함하고, 상기 복수의 메모리 요청은 상기 복수의 에이전트 중 비-캐싱 에이전트로부터 수신되는
    SoC.
  8. 제 7 항에 있어서,
    상기 중재 로직은 스누핑된 메모리 요청을 상기 비-캐싱된 에이전트로부터 스누핑되지 않은 메모리 요청으로 다운그레이드하고, 상기 복수의 에이전트의 캐싱 에이전트에 대한 스누프 요청의 발행 없이 상기 스누핑된 메모리 요청과 연관된 데이터를 상기 비-캐싱 에이전트로 전달하는
    SoC.
  9. 제 1 항에 있어서,
    상기 중재 로직은 시간 스누프 필터(a temporal snoop filter)를 포함하고, 상기 시간 스누프 필터는 상기 데이터 버퍼에 관해서는 포괄적이며(inclusive) 상기 SoC의 하나 이상의 캐시 메모리에 관해서는 비포괄적인
    SoC.
  10. 프로세서의 비-캐싱 에이전트로부터 상기 프로세서의 일관성 패브릭(coherent fabric) 내의 제 1 어드레스에 대한 제 1 스누핑된 메모리 요청을 수신하는 단계와,
    상기 제 1 어드레스와 연관된 상기 일관성 패브릭의 데이터 버퍼의 엔트리가 상기 일관성 패브릭에 의해 소유되는지를 검출하는 단계와,
    만약 그렇다면, 상기 제 1 스누핑된 메모리 요청을 스누핑되지 않은 메모리 요청으로 다운그레이드하는 단계를 포함하는
    방법.
  11. 제 10 항에 있어서,
    상기 엔트리가 상기 일관성 패브릭에 의해 소유되지 않은 경우에, 상기 제 1 스누핑된 메모리 요청이 상기 제 1 어드레스에 대해 계류중인 스누핑된 메모리 요청과 동일한 요청자로부터의 것이면, 상기 제 1 스누핑된 메모리 요청을 수락하고 다운그레이딩하는 단계를 더 포함하는
    방법.
  12. 제 11 항에 있어서,
    상기 계류중인 스누핑된 메모리 요청에 대한 스누프 처리가 완료되기 전에 상기 제 1 스누핑된 메모리 요청을 수락하고 다운그레이드하는 단계를 더 포함하는
    방법.
  13. 제 10 항에 있어서,
    상기 스누핑되지 않은 메모리 요청이 계류중인 동안에, 상기 제 1 스누핑된 메모리 요청과 동일한 요청자로부터의 상기 제 1 어드레스에 대한 하나 이상의 후속하는 메모리 요청을 수락하는 단계를 더 포함하는
    방법.
  14. 제 10 항에 있어서,
    상기 제 1 스누핑된 메모리 요청을 다운그레이드하는 단계는 상기 제 1 스누핑된 메모리 요청을 상기 스누핑되지 않은 메모리 요청으로 변환하는 단계를 포함하는
    방법.
  15. 제 11 항에 있어서,
    상기 데이터 버퍼의 엔트리가 상기 일관성 패브릭에 의해 소유되지 않은 경우에, 액티브 메모리 요청이 상기 엔트리에 대해 계류중인지 판정하고,
    어떤 액티브 메모리 요청도 상기 엔트리에 대해 계류중이지 않은 경우에, 상기 제 1 스누핑된 메모리 요청을 수락하고 상기 프로세서의 하나 이상의 캐싱 에이전트에 대한 스누프 요청을 무효화하는 단계를 더 포함하는
    방법.
  16. 제 15 항에 있어서,
    액티브 메모리 요청이 상기 엔트리에 대해 계류중인 경우에, 상기 제 1 스누핑된 메모리 요청을 멈추는(stalling) 단계를 더 포함하는
    방법.
  17. 제 15 항에 있어서,
    상기 일관성 패브릭이 상기 제 1 스누핑된 메모리 요청의 리타이어먼트에 응답하여 상기 엔트리를 소유하고 있음을 표시하도록 상기 엔트리의 소유권 표시자를 설정하고, 상기 데이터 버퍼 내의 엔트리를 할당하는 것에 응답하여 상기 엔트리에 대한 소유권 표시자를 클리어하는 단계를 더 포함하는
    방법.
  18. 제 10 항에 있어서,
    상기 제 1 스누핑된 메모리 요청의 요청자로부터의 이전 스누핑된 무효화(invalidation)가 완료되기 전까지 상기 데이터 버퍼 내의 상기 스누핑되지 않은 메모리 요청과 연관된 반환 데이터를 유지하는 단계를 더 포함하는
    방법.
  19. 시스템 온 칩(SoC)을 포함하는 시스템으로서,
    상기 SoC는,
    제 1 코어 및 제 1 캐시 메모리와,
    DRAM과 연결된 적어도 하나의 메모리 제어기와,
    제 1 비-캐싱 에이전트와,
    상기 제 1 코어, 상기 제 1 비-캐싱 에이전트 및 상기 적어도 하나의 메모리 제어기를 연결하는 패브릭 - 상기 패브릭은 데이터 버퍼와 상기 데이터 버퍼에는 포괄적이고 상기 제 1 캐시 메모리에는 비포괄적인 시간 스누프 필터 로직을 포함하고, 상기 시간 스누프 필터 로직은 제 1 어드레스와 연관된 표시자가 상기 패브릭이 상기 제 1 어드레스에 대한 제어를 갖는다는 것을 표시하는 경우에 상기 제 1 비-캐싱 에이전트로부터의 상기 제 1 어드레스에 대한 복수의 스누핑된 메모리 요청이 멈춤(stall) 없이 수락되도록 활성화함 - 과,
    상기 SoC에 연결된 상기 DRAM을 포함하는
    시스템.
  20. 제 19 항에 있어서,
    상기 시간 스누프 필터 로직은 BIOS(basic input/output system), 펌웨어 또는 다른 소프트웨어에 따라 활성화되는
    시스템.
  21. 제 19 항에 있어서,
    상기 시간 스누프 필터 로직은 상기 패브릭이 상기 제 1 캐시 메모리 내의 상기 제 1 어드레스와 연관된 데이터를 무효화한 후에 상기 복수의 스누핑된 메모리 요청이 수락되도록 활성화하는
    시스템.
  22. 제 21 항에 있어서,
    상기 표시자는 상기 제 1 어드레스와 연관된 데이터가 무효화된 이후에 상기 패브릭이 상기 제 1 어드레스에 대한 제어를 갖는다는 것을 표시하는
    시스템.
  23. 제 19 항에 있어서,
    상기 시간 스누프 필터 로직은 상기 제 1 어드레스와 연관된 제 1 스누핑된 메모리 요청이 리타이어할 때 상기 표시자를 업데이트하고, 상기 시간 스누프 필터 로직은 상기 제 1 스누핑된 메모리 요청이 리타이어하기 전에 상기 제 1 어드레스와 연관된 하나 이상의 후속하는 메모리 요청을 수락하는
    시스템.
  24. 제 23 항에 있어서,
    상기 시간 스누프 필터 로직은 상기 하나 이상의 후속하는 메모리 요청을 스누핑된 메모리 요청으로부터 스누핑되지 않은 메모리 요청으로 다운그레이드하는
    시스템.
  25. 시스템 온 칩(SoC)의 일관성 패브릭의 중재기로부터 복수의 메모리 요청을 수신하는 충돌 검출 로직을 포함하되, 상기 충돌 검출 로직은 제 1 어드레스와 연관된 표시자가 상기 일관성 패브릭이 상기 제 1 어드레스의 제어를 갖는다는 것을 표시하는 경우에 상기 제 1 어드레스에 대한 제 1 스누핑된 메모리 요청을 스누핑되지 않은 메모리 요청으로 다운그레이드하는 스누프 필터 로직을 포함하는
    장치.
  26. 제 25 항에 있어서,
    상기 스누프 필터 로직은 상기 일관성 패브릭의 버퍼에는 포괄적이고, 상기 SoC의 하나 이상의 캐시 메모리에는 비포괄적인
    장치.
  27. 제 25 항에 있어서,
    상기 스누프 필터 로직은 상기 일관성 패브릭이 상기 SoC의 제 1 에이전트의 복수의 캐시 메모리 내의 데이터를 무효화한 후에 그리고 상기 스누핑되지 않은 메모리 요청이 리타이어되기 전에 상기 제 1 어드레스와 연관된 복수의 메모리 요청이 수락되도록 활성화하는
    장치.
  28. 제 27 항에 있어서,
    상기 스누프 필터 로직은 상기 일관성 패브릭이 상기 제 1 어드레스에 대한 스누핑된 메모리 요청의 리타이어먼트에 응답하여 상기 제 1 어드레스의 제어를 갖는다는 것을 표시하도록 상기 표시자를 업데이트하는
    장치.
  29. 제 25 항에 있어서,
    상기 스누프 필터 로직은 시간 스누프 필터를 포함하는
    장치.
  30. 제 29 항에 있어서,
    상기 시간 스누프 필터는 상기 일관성 패브릭의 데이터 버퍼에는 포괄적이고, 상기 SoC의 하나 이상의 캐시 메모리에는 비포괄적인
    장치.
KR1020157021955A 2013-03-15 2013-03-15 데이터 버퍼와 연관된 스누프 필터링의 제공 KR101814412B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/031838 WO2014142939A1 (en) 2013-03-15 2013-03-15 Providing snoop filtering associated with a data buffer

Publications (2)

Publication Number Publication Date
KR20150107831A KR20150107831A (ko) 2015-09-23
KR101814412B1 true KR101814412B1 (ko) 2018-01-03

Family

ID=51533859

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157021955A KR101814412B1 (ko) 2013-03-15 2013-03-15 데이터 버퍼와 연관된 스누프 필터링의 제공

Country Status (7)

Country Link
US (1) US9767026B2 (ko)
EP (1) EP2972909A4 (ko)
KR (1) KR101814412B1 (ko)
CN (1) CN105009101B (ko)
DE (1) DE112013001361B4 (ko)
RU (1) RU2608000C2 (ko)
WO (1) WO2014142939A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9563579B2 (en) 2013-02-28 2017-02-07 Intel Corporation Method, apparatus, system for representing, specifying and using deadlines
US10013385B2 (en) 2014-11-13 2018-07-03 Cavium, Inc. Programmable validation of transaction requests
US9569362B2 (en) * 2014-11-13 2017-02-14 Cavium, Inc. Programmable ordering and prefetch
US9971711B2 (en) 2014-12-25 2018-05-15 Intel Corporation Tightly-coupled distributed uncore coherent fabric
US9606925B2 (en) * 2015-03-26 2017-03-28 Intel Corporation Method, apparatus and system for optimizing cache memory transaction handling in a processor
US9996487B2 (en) 2015-06-26 2018-06-12 Intel Corporation Coherent fabric interconnect for use in multiple topologies
US10157133B2 (en) * 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9990292B2 (en) * 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US20180165240A1 (en) * 2016-12-08 2018-06-14 Intel IP Corporation Interconnect network supporting multiple consistency mechanisms, multiple protocols, and multiple switching mechanisms
CN106656391B (zh) * 2016-12-12 2018-10-12 中国航空工业集团公司西安航空计算技术研究所 一种交换机芯片多路时钟同步原语冲突处理电路
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
RU2649943C1 (ru) * 2017-07-04 2018-04-05 федеральное государственное автономное образовательное учреждение высшего образования "Национальный исследовательский ядерный университет "МИФИ" (НИЯУ МИФИ) Многовыходной арбитр приоритетов
CN108334337B (zh) * 2018-01-30 2022-02-01 江苏华存电子科技有限公司 含自动管理功能的低延迟指令调度器及过滤猜测访问方法
US11275616B2 (en) * 2019-06-13 2022-03-15 Apple Inc. Resource access management
CN111984387B (zh) * 2020-08-26 2024-06-25 上海兆芯集成电路股份有限公司 用于调度发布队列中指令的方法及处理器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132147A1 (en) * 2003-12-10 2005-06-16 International Business Machines Corporation Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
US20060224836A1 (en) * 2005-03-29 2006-10-05 International Business Machines Corporation Method and apparatus for filtering snoop requests using stream registers
US20130007386A1 (en) * 2011-06-29 2013-01-03 Synopsys Inc. Memory arbiter with latency guarantees for multiple ports

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951657A (en) * 1996-06-19 1999-09-14 Wisconsin Alumni Research Foundation Cacheable interface control registers for high speed data transfer
US6874039B2 (en) * 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US7093079B2 (en) 2002-12-17 2006-08-15 Intel Corporation Snoop filter bypass
US7644237B1 (en) 2003-06-23 2010-01-05 Mips Technologies, Inc. Method and apparatus for global ordering to insure latency independent coherence
US7373462B2 (en) * 2005-03-29 2008-05-13 International Business Machines Corporation Snoop filter for filtering snoop requests
US20080109624A1 (en) 2006-11-03 2008-05-08 Gilbert Jeffrey D Multiprocessor system with private memory sections
US8631208B2 (en) * 2009-01-27 2014-01-14 Intel Corporation Providing address range coherency capability to a device
US8650629B2 (en) * 2009-12-16 2014-02-11 Intel Corporation Interface logic for a multi-core system-on-a-chip (SoC)
US8522189B2 (en) * 2011-03-09 2013-08-27 Intel Corporation Functional fabric based test access mechanism for SoCs
US9043665B2 (en) * 2011-03-09 2015-05-26 Intel Corporation Functional fabric based test wrapper for circuit testing of IP blocks
US20130007376A1 (en) 2011-07-01 2013-01-03 Sailesh Kottapalli Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems
US9563579B2 (en) 2013-02-28 2017-02-07 Intel Corporation Method, apparatus, system for representing, specifying and using deadlines

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132147A1 (en) * 2003-12-10 2005-06-16 International Business Machines Corporation Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
US20060224836A1 (en) * 2005-03-29 2006-10-05 International Business Machines Corporation Method and apparatus for filtering snoop requests using stream registers
US20130007386A1 (en) * 2011-06-29 2013-01-03 Synopsys Inc. Memory arbiter with latency guarantees for multiple ports

Also Published As

Publication number Publication date
US9767026B2 (en) 2017-09-19
DE112013001361B4 (de) 2023-06-15
KR20150107831A (ko) 2015-09-23
EP2972909A1 (en) 2016-01-20
CN105009101A (zh) 2015-10-28
CN105009101B (zh) 2018-03-13
DE112013001361T5 (de) 2014-11-27
US20140281197A1 (en) 2014-09-18
RU2014139597A (ru) 2016-04-20
WO2014142939A1 (en) 2014-09-18
EP2972909A4 (en) 2016-12-14
RU2608000C2 (ru) 2017-01-11

Similar Documents

Publication Publication Date Title
KR101814412B1 (ko) 데이터 버퍼와 연관된 스누프 필터링의 제공
US9563579B2 (en) Method, apparatus, system for representing, specifying and using deadlines
US9405687B2 (en) Method, apparatus and system for handling cache misses in a processor
CN107078959B (zh) 用于减轻分布式非核结构中的业务量引导低效的系统和方法
US10338974B2 (en) Virtual retry queue
EP3314445B1 (en) Coherent fabric interconnect for use in multiple topologies
KR101695328B1 (ko) 모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템
US20140258620A1 (en) Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture
CN107077190B (zh) 非核结构中的功率管理
CN107003962B (zh) 保持计算系统中高速缓存一致性的方法、装置和计算系统
US9552308B2 (en) Early wake-warn for clock gating control
JP2016521936A (ja) クレジットに基づく調停のためのサービスレート再分配
EP3274860B1 (en) A method, apparatus and system for optimizing cache memory transaction handling in a processor
US9189296B2 (en) Caching agent for deadlock prevention in a processor by allowing requests that do not deplete available coherence resources
US20140281276A1 (en) Method, apparatus, and system for low latency communication

Legal Events

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