KR20170012581A - 고성능 인터커넥트 코히어런스 프로토콜 - Google Patents
고성능 인터커넥트 코히어런스 프로토콜 Download PDFInfo
- Publication number
- KR20170012581A KR20170012581A KR1020177001836A KR20177001836A KR20170012581A KR 20170012581 A KR20170012581 A KR 20170012581A KR 1020177001836 A KR1020177001836 A KR 1020177001836A KR 20177001836 A KR20177001836 A KR 20177001836A KR 20170012581 A KR20170012581 A KR 20170012581A
- Authority
- KR
- South Korea
- Prior art keywords
- request
- agent
- coherence
- response
- snoop
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/22—Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache 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)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4286—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4265—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
- G06F13/4273—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/622—State-only directory, i.e. not recording identity of sharing or owning nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Transfer Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
특정 캐시 라인에 대응하는 코히어런스 프로토콜 메시지가 송신된다. 특정 캐시 라인과 관련된 잠재적 충돌은 식별되고 포워드 요청은 잠재적 충돌을 식별하도록 홈 에이전트에 송신된다. 포워드 응답은 홈 에이전트로부터 포워드 요청에 대해 응답하여 수신될 수 있고 충돌에 대한 응답이 결정될 수 있다.
Description
본 개시는 일반적으로 컴퓨터 개발의 분야에 관련되며, 보다 상세하게는 상호-의존적인 제한된 시스템의 협력을 포함하는 소프트웨어 개발에 관련된다.
반도체 처리 및 로직 디자인의 발전은 집적 회로 디바이스 상에 존재할 수 있는 로직의 양적 증가를 가능하게 해주었다. 결과적으로, 컴퓨터 시스템 구성은 한 시스템 내의 단일 또는 복수의 집적 회로로부터 개개의 집적 회로 상에 존재하는 복수의 코어, 복수의 하드웨어 스레드, 및 복수의 로직 프로세서뿐만 아니라 그러한 프로세서 내에 집적된 다른 인터페이스로 진화하였다. 프로세서 또는 집적 회로는 전형적으로 단일의 물리적 프로세서 다이를 포함하는데, 이 프로세서 다이는 임의 개수의 코어, 하드웨어 스레드, 로직 프로세서, 인터페이스, 메모리, 제어기 허브 등을 포함할 수 있다.
더 작은 패키지 내에 더 많은 처리 능력을 맞추는 역량이 더 커짐에 따라, 소형의 컴퓨팅 디바이스의 인기가 높아지고 있다. 스마트폰, 태블릿, 울트라씬 노트북, 및 다른 사용자 장비가 기하급수적으로 증가되었다. 그러나, 이러한 소형 디바이스들은 데이터 저장 및 폼 팩터를 초과하는 복잡한 처리를 모두 서버에 의존하고 있다. 그 결과, 고성능 컴퓨팅 마켓(즉, 서버 공간)의 수요가 또한 증가하였다. 예를 들어, 현대의 서버에서는 보통 복수 코어를 가진 단일 프로세서뿐만 아니라, 복수의 물리적 프로세서(다중 소켓이라고도 지칭함)가 컴퓨팅 성능을 높이기 위해 존재한다. 그러나 컴퓨팅 시스템에서 디바이스의 개수와 함께 처리 능력이 증가함에 따라서, 소켓과 다른 디바이스 간의 통신이 더욱 중요해지고 있다.
실제로, 애초에 전기 통신을 취급하였던 전통적인 멀티-드롭 버스로부터 고속의 통신을 용이하게 해주는 완전히 발달한 인터커넥트 아키텍처에 이르기까지 인터커넥트 기술이 성장하였다. 불행하게도, 더욱 높은 속도로 소비하고자 하는 미래의 프로세서에 대한 요구로서, 이에 해당하는 요구는 기존의 인터커넥트 아키텍처의 역량에 집중되고 있다.
도 1은 일 실시예에 따른 컴퓨터 시스템의 I/O 디바이스들을 접속시키는 포인트-투-포인트 인터커넥트를 포함하는 시스템의 간략화된 블록도를 도시한다.
도 2는 일 실시예에 따른 계층화된 프로토콜 스택의 간략화된 블록도를 도시한다.
도 3은 트랜잭션 디스크립터에 관한 일 실시예를 도시한다.
도 4는 직렬 포인트-투-포인트 링크에 관한 일 실시예를 도시한다.
도 5는 잠재적인 고성능 인터커넥트(High Performance Interconnect (HPI)) 시스템 구성에 관한 실시예를 도시한다.
도 6은 HPI와 연관된 계층화된 프로토콜 스택에 관한 일 실시예를 도시한다.
도 7은 예시의 코히어런스 프로토콜 충돌 관리에 관한 흐름도를 도시한다.
도 8은 다른 예시의 코히어런스 프로토콜 충돌 관리에 관한 흐름도를 도시한다.
도 9는 다른 예시의 코히어런스 프로토콜 충돌 관리에 관한 흐름도를 도시한다.
도 10은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도에 관한 일 실시예를 도시한다.
여러 도면에서 유사한 참조 부호 및 명칭은 유사한 구성요소를 나타낸다.
도 2는 일 실시예에 따른 계층화된 프로토콜 스택의 간략화된 블록도를 도시한다.
도 3은 트랜잭션 디스크립터에 관한 일 실시예를 도시한다.
도 4는 직렬 포인트-투-포인트 링크에 관한 일 실시예를 도시한다.
도 5는 잠재적인 고성능 인터커넥트(High Performance Interconnect (HPI)) 시스템 구성에 관한 실시예를 도시한다.
도 6은 HPI와 연관된 계층화된 프로토콜 스택에 관한 일 실시예를 도시한다.
도 7은 예시의 코히어런스 프로토콜 충돌 관리에 관한 흐름도를 도시한다.
도 8은 다른 예시의 코히어런스 프로토콜 충돌 관리에 관한 흐름도를 도시한다.
도 9는 다른 예시의 코히어런스 프로토콜 충돌 관리에 관한 흐름도를 도시한다.
도 10은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도에 관한 일 실시예를 도시한다.
여러 도면에서 유사한 참조 부호 및 명칭은 유사한 구성요소를 나타낸다.
하기 설명에서, 특정 형태의 프로세서 및 시스템 구성, 특정 하드웨어 구조, 특정 아키텍처 및 마이크로 아키텍처 세부사항, 특정 레지스터 구성, 특정 명령어 타입, 특정 시스템 컴포넌트, 특정 프로세서 파이프라인 스테이지, 특정 인터커넥트 계층, 특정 패킷/트랜잭션 구성, 특정 트랜잭션 이름, 특정 프로토콜 교환, 특정 링크 폭, 특정 구현, 및 동작 등의 예와 같은 많은 특정한 세부 사항이 본 발명의 철저한 이해를 제공하기 위해 설명된다. 그러나, 본 기술에서 통상의 지식을 가진 자들에게는 이러한 특정 세부사항이 본 개시의 주제를 실시하기 위해 반드시 이용될 필요가 있지 않다는 것이 인식될 수 있다. 다른 사례에서, 본 개시를 불필요하게 모호하지 않도록 하기 위해, 특정하고 대안적인 프로세서 아키텍처, 설명된 알고리즘에 대한 특정 로직 회로/코드, 특정 펌웨어 코드, 로우-레벨 인터커넥트 동작, 특정 로직 구성, 특정 제조 기술 및 재료, 특정 컴파일러 구현, 코드 내 알고리즘의 특정 표현, 특정 파워 다운 및 게이팅 기술/로직, 및 컴퓨터 시스템의 다른 특정 동작의 세부사항과 같은 공지된 컴포넌트 또는 방법에 관해서는 아주 자세하게 설명하지 않았다.
비록 다음과 같은 실시예가 컴퓨팅 플랫폼이나 마이크로프로세서와 같은 특정 집적 회로 내의 에너지 보존, 에너지 효율, 및 프로세싱 효율 등에 관하여 기술될 수 있을지라도, 다른 실시예가 다른 방식의 집적 회로 및 로직 디바이스에 적용 가능하다. 본 명세서에서 설명되는 실시예의 유사한 기술 및 가르침은 그러한 특징으로부터 이득을 받을 수도 있는 다른 방식의 회로 또는 반도체 디바이스에 적용될 수 있다. 예를 들면, 기술된 실시예는 서버 컴퓨터 시스템, 데스크톱 컴퓨터 시스템, 랩톱, 울트라북TM으로 제한되지 않고, 휴대형 디바이스, 스마트폰, 태블릿, 다른 씬(thin) 노트북, 시스템 온 칩(SOC) 디바이스, 및 임베디드 애플리케이션과 같은 다른 디바이스에서도 사용될 수 있다. 휴대형 디바이스의 일부 예는 셀룰러 폰, 인터넷 프로토콜 디바이스, 디지털 카메라, 개인 휴대정보 단말(PDA), 및 휴대 PC를 포함한다. 여기서, 고성능 인터커넥트를 위한 유사 기술은 저전력 인터커넥트에서 성능(또는 심지어는 절전)을 높이는데 적용될 수 있다. 임베디드 애플리케이션은 통상적으로 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 시스템 온 칩, 네트워크 컴퓨터(NetPC), 셋탑 박스, 네트워크 허브, 광역 네트(WAN) 스위치, 또는 아래에서 교시된 기능 및 동작을 수행할 수 있는 임의의 다른 시스템을 포함한다. 더욱이, 본 명세서에서 기술된 장치, 방법 및 시스템은 물리적인 컴퓨팅 디바이스로 제한되지 않고, 에너지 보존 및 효율을 위한 소프트웨어 최적화에도 관련될 수 있다. 아래의 설명에서 쉽게 명백해지는 바와 같이, 본 명세서에서 기술된 방법, 장치 및 시스템의 실시예는 (하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합과 관련한 것이든지) 성능 고려 사항과 장차 균형을 이루는 "녹색 기술"에 중요하게 고려될 수 있다.
컴퓨팅 시스템이 발달하면서, 컴퓨팅 시스템 내 컴포넌트들은 더욱 복잡해지고 있다. 컴포넌트들 간을 연결하고 통신하게 하는 인터커넥트 아키텍처 또한 최적한 컴포넌트 동작에 필요한 대역폭 요구가 충족되는 것을 보장하기 위해 복잡도가 증가되고 있다. 뿐만 아니라, 다양한 세분된 시장은 제각각의 시장에 어울리는 인터커넥트 아키텍처의 다양한 양태를 요구하고 있다. 예를 들면, 서버는 고성능을 요구하는 반면, 모바일 에코시스템은 때로는 절전을 위해 전체 성능을 희생할 수 있다. 그렇지만, 이것은 절전을 극대화하면서 최고로 가능한 성능을 제공하려는 대부분의 패브릭의 한 가지 목적이다. 또한, 각종의 다양한 인터커넥트는 본 명세서에서 기술된 주제로부터 잠재적으로 혜택을 받을 수 있다. 예들 들어, 다른 예들 중에서, 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect (PCI) Express (PCIe)) 인터커넥트 패브릭 아키텍처 및 퀵패스 인터커넥트(QuickPath Interconnect (QPI)) 패브릭 아키텍처는 다른 예들 중에서, 본 명세서에서 기술된 하나 이상의 원리에 따라서 잠재적으로 개선될 수 있다.
도 1은 한 세트의 컴포넌트들을 상호접속시키는 포인트-투-포인트 링크로 구성된 패브릭의 일 실시예가 도시된다. 시스템(100)은 제어기 허브(115)에 연결된 프로세서(105) 및 시스템 메모리(110)를 포함한다. 프로세서(105)는 마이크로프로세서, 호스트 프로세서, 임베디드 프로세서, 코-프로세서, 또는 여타 프로세서와 같은 임의의 프로세싱 요소를 포함할 수 있다. 프로세서(105)는 프론트-사이드 버스(front-side bus (FSB))(106)를 통해 제어기 허브(115)에 연결된다. 일 실시예에서, FSB(106)는 아래에서 기술되는 바와 같이 직렬 포인트-투-포인트 인터커넥트이다. 다른 실시예에서, 링크(106)는 다양한 인터커넥트 표준을 준수하는 직렬의 다양한 인터커넥트 아키텍처를 포함한다.
시스템 메모리(110)는 시스템(100) 내 디바이스들에 의해 액세스 가능한 랜덤 액세스 메모리(RAM), 비-휘발성(non-volatile (NV)) 메모리, 또는 여타 메모리와 같은 임의의 메모리 디바이스를 포함한다. 시스템 메모리(110)는 메모리 인터페이스(116)를 통해 제어기 허브(115)에 연결된다. 메모리 인터페이스의 예는 더블-데이터 레이트(a double-data rate (DDR)) 메모리 인터페이스, 듀얼-채널 DDR 메모리 인터페이스, 및 다이나믹 RAM(DRAM) 메모리 인터페이스를 포함한다.
일 실시예에서, 제어기 허브(115)는 PCI 인터커넥트 계층에서와 같은 루트 허브, 루트 콤플렉스, 또는 루트 제어기를 포함할 수 있다. 제어기 허브(115)의 예는 칩셋, 메모리 제어기 허브(a memory controller hub (MCH)), 노스브릿지, 인터커넥트 제어기 허브(an interconnect controller hub (ICH)), 사우스브릿지, 및 루트 제어기/허브를 포함한다. 종종 칩셋이라는 용어는 물리적으로 별개인 두 개의 제어기 허브, 예를 들면 인터커넥트 제어기 허브(ICH)에 연결된 메모리 제어기 허브(MCH)를 지칭하기도 한다. 본 발명의 시스템은 종종 프로세서(105)와 함께 집적된 MCH를 포함하지만, 제어기(115)는 아래에서 설명되는 것과 유사한 방식으로 I/O 디바이스와 통신한다는 것을 주목하여야 한다. 일부 실시예에서, 옵션으로 피어-투-피어 라우팅이 루트 콤플렉스(115)를 통해 지원된다.
여기서, 제어기 허브(115)는 직렬 링크(119)를 통해 스위치/브릿지(120)에 연결된다. 인터페이스/포트(117 및 121)라고도 불리는 입력/출력 모듈(117 및 121)은 제어기 허브(115)와 스위치(120) 사이의 통신을 제공하는 계층화된 프로토콜 스택을 포함/구현할 수 있다. 일 실시예에서, 복수의 디바이스가 스위치(120)에 연결될 수 있다.
스위치/브릿지(120)는 패킷/메시지를 디바이스(125)로부터 업스트림으로, 즉 루트 콤플렉스를 향한 계층 위쪽의 제어기 허브(115)로 라우팅하며 다운스트림으로, 즉 루트 제어기로부터 계층 아래쪽으로, 프로세서(105) 또는 시스템 메모리(110)로부터 디바이스(125)로 라우팅한다. 일 실시예에서, 스위치(120)는 복수의 가상 PCI-투-PCI 브릿지 디바이스의 로직 어셈블리라고 지칭된다. 디바이스(125)는 I/O 디바이스, 네트워크 인터페이스 제어기(a Network Interface Controller (NIC)), 애드-인 카드, 오디오 프로세서, 네트워크 프로세서, 하드-드라이브, 저장 디바이스, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 이동식 저장 디바이스, 파이어와이어 디바이스, 범용 직렬 버스(a UniversaI SeriaI Bus (USB)) 디바이스, 스캐너, 및 기타 입력/출력 디바이스와 같은 전자 시스템에 연결되는 임의의 내부 또는 외부 디바이스나 컴포넌트를 포함한다. 종종 PCIe에 대한 방언으로, 이를 테면 디바이스는 엔드포인트라고 지칭된다. 비록 구체적으로 도시되지 않을지라도, 디바이스(125)는 레거시 또는 다른 버전의 디바이스를 지원하거나 그러한 디바이스에 의해 지원되는 패브릭을 상호접속시키는 브릿지(예를 들면, PCIe 대 PCI/PCI-X 브릿지)를 포함할 수 있다.
그래픽 가속기(130) 또한 직렬 링크(132)를 통해 제어기 허브(115)에 연결될 수 있다. 일 실시예에서, 그래픽 가속기(130)는 ICH에 연결된 MCH에 연결된다. 그러면 스위치(120) 및 이에 따른 I/O 디바이스(125)는 ICH에 연결된다. I/O 모듈(131 및 118) 또한 그래픽 가속기(130)와 제어기 허브(115) 사이에서 통신하는 계층화된 프로토콜 스택을 구현한다. 앞에서 MCH의 설명과 유사하게, 그래픽 제어기 또는 그래픽 가속기(130) 자체는 프로세서(105) 내에 통합될 수 있다.
도 2를 참조하면, 계층화된 프로토콜 스택의 실시예가 도시된다. 계층화된 프로토콜 스택(200)은 QPI 스택, PCIe 스택, 차세대 고성능 컴퓨팅 인터커넥트(a next generation high performance computing interconnect (HPI)) 스택, 또는 다른 계층화된 스택과 같은 임의 형태의 계층화된 통신 스택을 포함할 수 있다. 일 실시예에서, 프로토콜 스택(200)은 트랜잭션 계층(205), 링크 계층(210), 및 물리 계층(220)을 포함할 수 있다, 도 1에서 인터페이스(117, 118, 121, 122, 126, 및 131)와 같은 인터페이스가 통신 프로토콜 스택(200)으로서 대표될 수 있다. 통신 프로토콜 스택이라는 표현은 프로토콜 스택을 구현/포함하는 모듈 또는 인터페이스라고도 지칭될 수 있다.
패킷은 컴포넌트들 사이에서 정보를 통신하는데 사용될 수 있다. 패킷은 트랜잭션 계층(205) 및 데이터 링크 계층(210)에서 형성되어 정보를 전송 컴포넌트로부터 수신 컴포넌트로 전달한다. 전송된 패킷이 다른 계층들을 통해 흐르기 때문에, 패킷은 패킷을 그러한 계층들에서 처리하는데 사용되는 부가적인 정보로 확장된다. 수신 측에서, 역 처리가 수행되고 패킷은 이들의 물리 계층(220) 표현으로부터 데이터 링크 계층(210) 표현으로 변환되며 최종적으로 (트랜잭션 계층 패킷의 경우) 수신 디바이스의 트랜잭션 계층(205)에 의해 처리될 수 있는 형태로 변환된다.
일 실시예에서, 트랜잭션 계층(205)은 디바이스의 프로세싱 코어와 인터커넥트 아키텍처, 이를 테면 데이터 링크 계층(210) 및 물리 계층(220) 사이에서 인터페이스를 제공할 수 있다. 이와 관련하여, 트랜잭션 계층(205)의 주요 기능은 패킷(즉, 트랜잭션 계층 패킷(transaction layer packets) 또는 TLPs)의 조립과 해체를 포함할 수 있다. 트랜잭션 계층(205)은 또한 TLP에 대하여 크레딧-기반 플로우 제어(Credit-based flow control)를 관리할 수 있다. 일부 실시예에서, 스플릿 트랜잭션(split transactions), 즉 다른 예들 중에서, 타겟 디바이스가 응답에 필요한 데이터를 수집하는 동안 링크로 하여금 다른 트래픽을 전달하게 해주는, 요청과 응답이 시간에 의해 분리되어 있는 트랜잭션이 이용될 수 있다.
크레딧-기반 플로우 제어는 인터커넥트 패브릭을 이용하는 가상 채널 및 네트워크를 실현하기 위해 사용될 수 있다. 일 예에서, 디바이스는 트랜잭션 계층(205)에서 각각의 수신 버퍼마다 초기의 크레딧 수량을 광고할 수 있다. 도 1에서 제어기 허브(115)와 같은 링크의 반대편에 있는 외부 디바이스는 각각의 TLP에 의해 소비된 크레딧의 개수를 카운트할 수 있다. 트랜잭션은 그 트랜잭션이 크레딧 한계치를 초과하지 않으면 전송될 수 있다. 응답을 수신하면, 크레딧 수량이 복구된다. 그러한 크레딧 체계의 장점 중 한 가지 예는, 다른 잠재적인 장점들 중에서, 크레딧 제한에 처해지지 않으면, 크레딧 반환의 지연이 성능에 영향을 미치지 않는다는 것이다.
일 실시예에서, 네 개의 트랜잭션 어드레스 공간은 구성 어드레스 공간, 메모리 어드레스 공간, 입력/출력 어드레스 공간, 및 메시지 어드레스 공간을 포함할 수 있다. 메모리 공간 트랜잭션은 데이터를 메모리-매핑된 위치로/로부터 전달하는 판독 요청 및 기록 요청 중 하나 이상을 포함한다. 일 실시예에서, 메모리 공간 트랜잭션은 두 가지 상이한 어드레스 포맷, 예를 들면, 32-비트 어드레스와 같이 짧은 어드레스 포맷, 또는 64-비트 어드레스와 같이 긴 어드레스 포맷을 이용할 수 있다. 구성 공간 트랜잭션은 인터커넥트에 접속된 각종 디바이스의 구성 공간에 액세스하는데 사용될 수 있다. 구성 공간에 대한 트랜잭션은 판독 요청 및 기록 요청을 포함할 수 있다. 메시지 공간 트랜잭션(또는 간단히 메시지)는 또한 인터커넥트 에이전트들 간의 대역-내(in-band) 통신을 지원하는 것으로 정의될 수 있다. 그러므로, 일 예의 실시예에서, 트랜잭션 계층(205)은 패킷 헤더/패이로드(206)를 조립할 수 있다.
이제 도 3을 참조하면, 트랜잭션 계층 패킷 디스크립터(a transaction layer packet descriptor)의 일 예의 실시예가 도시된다. 일 실시예에서, 트랜잭션 디스크립터(300)는 트랜잭션 정보를 전달하기 위한 메커니즘일 수 있다. 이와 관련하여, 트랜잭션 디스크립터(300)는 시스템에서 트랜잭션의 식별을 지원한다. 다른 잠재적인 용도는 디폴트 트랜잭션 순서 및 트랜잭션의 채널과의 연계의 트랙킹 수정을 포함한다. 예를 들어, 트랜잭션 디스크립터(300)는 전역 식별자(global identifier) 필드(302), 속성 필드(304) 및 채널 식별자 필드(306)를 포함할 수 있다. 도시된 예에서, 전역 식별자 필드(302)는 국부 트랜잭션 식별자(local transaction identifier) 필드(308) 및 소스 식별자 필드(310)을 포함하는 것으로 도시된다. 일 실시예에서, 전역 식별자 필드(302)는 모든 미처리 요청에 고유하다.
일 구현예에 따르면, 국부 트랜잭션 식별자 필드(308)는 요청 에이전트에 의해 생성되는 필드이며, 그 요청 에이전트에게 완료를 요구하는 모든 미처리 요청에 고유할 수 있다. 뿐만 아니라, 이 예에서, 소스 식별자(310)는 인터커넥트 계층 내에서 요청 에이전트를 고유하게 식별한다. 따라서, 소스 ID(310)와 함께, 국부 트랜잭션 식별자(308) 필드는 계층 도메인 내 트랜잭션의 전역적인 식별을 제공한다.
속성 필드(304)는 트랜잭션의 특성 및 관계를 명시한다. 이와 관련하여, 속성 필드(304)는 트랜잭션의 디폴트 처리의 수정을 허용하는 부가 정보를 제공하는데 잠재적으로 사용된다. 일 실시예에서, 속성 필드(304)는 우선순위 필드(312), 예약 필드(314), 순서 필드(316), 및 노-스누프(no-snoop) 필드(318)를 포함한다. 여기서, 우선순위 서브-필드(312)는 트랜잭션에 우선순위를 할당하기 위하여 개시자에 의해 수정될 수 있다. 예약 속성 필드(314)는 미래를 위해 예약되어 있거나 또는 벤더-정의(vendor-defined) 용도로 남겨 놓는다. 우선순위 또는 보안 속성을 이용하는 가능한 사용 모델은 예약 속성 필드를 이용하여 구현될 수 있다.
이 예에서, 순서 속성 필드(316)는 디폴트 순서 룰(default ordering rules)을 수정할 수 있는 순서의 타입을 전달하는 옵션 정보를 공급하기 위해 사용될 수 있다. 일 예의 구현예에 따르면, "0"라는 순서 속성은 디폴트 순서 룰(default ordering rules)을 적용한다는 것을 나타내며, "1"이라는 순서 속성은 완화된 순서(relaxed ordering)를 나타내며, 기록(writes)은 동일한 방향으로 기록을 나아가게 할 수 있으며, 판독 완료(read completions)는 동일한 방향으로 기록을 나아가게 할 수 있다. 스누프 속성 필드(318)는 트랜잭션이 스누프되는지를 결정하기 위해 사용된다. 도시된 바와 같이, 채널 ID 필드 필드(306)는 트랜잭션이 연관되어 있는 채널을 식별한다.
다시 도 2의 설명을 참조하면, 데이터 링크 계층(210)이라고도 불리는, 링크 계층(210)은 트랜잭션 계층(205)과 물리 계층(220) 사이에서 중간 단으로서 역할을 할 수 있다. 일 실시예에서, 데이터 링크 계층(210)의 기능은 링크 상의 두 컴포넌트 사이에서 트랜잭션 계층 패킷(TLP)을 교환하기 위한 신뢰 있는 메커니즘을 제공하는 것이다. 데이터 링크 계층(210)의 일 측은 트랜잭션 계층(205)에 의해 조립된 TLP를 받고, 패킷 시퀀스 식별자(211), 즉 식별 번호 또는 패킷 번호를 적용하고, 오류 검출 코드, 즉 CRC(212)를 계산하고 적용하여, 수정된 TLP를 물리 계층(220)에 전하여 물리 디바이스를 지나 외부 디바이스로 전송한다.
일 예에서, 물리 계층(220)은 패킷을 물리적으로 외부 디바이스로 전송하기 위해 논리 서브블록(221) 및 전기 서브블록(222)을 포함한다. 여기서, 논리 서브블록(221)은 물리 계층(221)의 "디지털" 기능의 역할을 수행한다. 이와 관련하여, 논리 서브블록은 물리 서브블록(222)에 의한 전송을 위해 송출 정보를 준비하는 송신 부분, 및 수신된 정보를 식별하고 준비한 다음 이를 링크 계층(210)으로 전달하는 수신기 부분을 포함할 수 있다.
물리 블록(222)은 송신기 및 수신기를 포함한다. 송신기는 논리 서브블록(221)에 의해 심볼을 공급받고, 송신기는 이를 직렬화하고 외부 디바이스로 전송한다. 수신기는 외부 디바이스로부터 직렬화된 심볼을 공급받고 수신된 신호를 비트-스트림으로 변환한다. 비트-스트림은 역직렬화되고 논리 서브블록(221)으로 공급된다. 일 예의 실시예에서, 8b/10b 전송 코드가 사용되고, 10-비트 심볼이 송신/수신된다. 여기서, 패킷을 프레임(223)으로 구성하기 위해 특수한 심볼이 사용된다. 게다가, 일 예에서, 수신기는 또한 수신하는 직렬 스트림으로부터 복구되는 심볼 클럭을 제공한다.
앞에서 언급한 바와 같이, 비록 트랜잭션 계층(205), 링크 계층(210), 및 물리 계층(220)이 (PCIe 프로토콜 스택과 같은) 프로토콜 스택의 특정 실시예에 관하여 설명되었지만, 계층화된 프로토콜 스택은 그것으로 제한되지 않는다. 실제로, 임의의 계층화된 프로토콜이 포함되고/구현될 수 있고 본 명세서에서 논의된 특징을 채택할 수 있다. 일 예로서, 계층화된 프로토콜로서 표현되는 포트/인터페이스는 (1) 패킷을 조립하는 제 1 계층, 즉 트랜잭션 계층과, 패킷을 순서화하는 제 2 계층, 즉 링크 계층과, 패킷을 전송하는 제 3 계층, 즉 물리 계층을 포함할 수 있다. 특정 예로서, 본 명세서에서 기술된 바와 같이, 고성능의 인터커넥트 계층화된 프로토콜이 이용된다.
다음으로 도 4를 참조하면, 직렬 포인트-투-포인트 패브릭의 일 예의 실시예가 도시된다. 직렬 포인트-투-포인트 링크는 직렬 데이터를 전송하기 위한 임의의 전송 경로를 포함할 수 있다. 도시된 실시예에서, 링크는 두 개의 저전압의 차동 구동된 신호 쌍들, 즉 전송 쌍(406/411) 및 수신 쌍(412/407)을 포함할 수 있다. 따라서, 디바이스(405)는 데이터를 디바이스(410)로 전송하는 전송 로직(406) 및 데이터를 디바이스(410)로부터 수신하는 수신 로직(407)을 포함한다. 다시 말해서, 두 개의 전송 경로, 즉 경로(416 및 417), 및 두 개의 수신 경로, 즉 경로(418 및 419)가 링크의 일부 구현에 포함된다.
전송 경로는 전송 회선, 구리 회선, 광 회선, 무선 통신 채널, 적외선 통신 링크, 또는 기타 통신 경로와 같이 데이터를 전송하기 위한 임의의 경로를 말한다. 두 디바이스, 이를 테면 디바이스(405)와 디바이스(410) 사이의 접속은 링크, 이를 테면 링크(415)라고 지칭된다. 링크는 하나의 레인(lane) - 각각의 레인은 한 세트의 상이한 신호 쌍(하나의 쌍은 전송용, 하나의 쌍은 수신용)을 나타냄 - 을 지원할 수 있다. 대역폭을 조정하기 위해, 링크는 xN으로 표기된 복수의 레인들을 묶을 수 있으며, 여기서 N은 임의의 지원된 링크 폭으로, 이를 테면 1, 2, 4, 8, 12, 32, 64, 또는 그 보다 넓다.
차동 쌍은 레인(416 및 417)과 같이 차동 신호를 전송하는 두 개의 전송 경로를 지칭할 수 있다. 예로서, 회선(416)이 저전압 레벨에서 고전압 레벨로 토글할 때, 즉, 라이징 에지일 때, 회선(417)은 하이 로직 레벨에서 로우 로직 레벨로, 즉 하강 에지로 진행한다. 차동 신호는 잠재적으로 더 양호한 신호 무결성(signal integrity), 즉 다른 예의 장점들 중에서, 크로스-커플링, 전압 오버슈트/언더슈트, 링잉(ringing)과 같은 더 우수한 전기적 특성을 보여준다. 이것은 더 우수한 타이밍 윈도우를 가능하게 해주며, 이는 통신 주파수를 더 빠르게 해줄 수 있다.
일 실시예에서, 신규의 고성능 인터커넥트(High Performance Interconnect (HPI))가 제공된다. HPI는 차세대 캐시-코히어런트, 링크-기반 인터커넥트를 포함할 수 있다. 일 예로서, HPI는 PCIe 또는 다른 인터커넥트 프로토콜이 프로세서, 가속기, 및 I/O 디바이스 등을 접속시키는데 전형적으로 사용되는 시스템을 포함하여, 워크스테이션 또는 서버와 같은 고성능 컴퓨팅 플랫폼에서 이용될 수 있다. 그러나, HPI는 그것으로 제한되지 않는다. 그 대신, HPI는 본 출원에서 기술된 임의의 시스템이나 플랫폼에서 이용될 수 있다. 뿐만 아니라, 개발된 개개의 사상은 다른 인터커넥트 및 플랫폼, 이를 테면 PCIe, MIPI, QPI 등에 적용될 수 있다.
일 예의 구현예에서, 복수의 디바이스를 지원하기 위하여, HPI는 명령어 세트 아키텍처 관용성(Instruction Set Architecture (ISA) agnostic)을 포함할 수 있다(즉, HPI는 복수의 상이한 디바이스들에서 구현되는 것이 가능할 수 있다). 다른 시나리오에서, HPI는 바로 프로세서 또는 가속기가 아닌 고성능 I/O 디바이스를 접속시키는데도 이용될 수 있다. 예를 들면, 고성능 PCIe 디바이스는 적절한 변환 브릿지를 통해 HPI에 (즉, HPI대 PCIe) 연결될 수 있다. 더욱이, HPI 링크는 다양한 방식으로(예를 들면, 스타, 링, 메시 등), 프로세서와 같은 많은 HPI 기반 디바이스에 의해 이용될 수 있다. 도 5는 복수의 잠재적 멀티-소켓 구성의 일 예의 구현예를 도시한다. 도시된 바와 같이, 2-소켓 구성(505)은 두 개의 HPI 링크를 포함할 수 있으나, 다른 구현예에서, 하나의 HPI 링크가 이용될 수 있다. 토폴로지가 더 큰 경우, 다른 부가적이거나 대체적인 특징들 중에서, 식별자(ID)가 할당 가능하고 몇 가지 형태의 가상 경로가 존재하는 한 임의의 구성이 이용될 수 있다. 도시된 바와 같이, 네 개의 소켓 구성(510)은 각 프로세서로부터 다른 하나의 프로세스로의 HPI 링크를 갖고 있다. 그러나 구성(515)에서 도시된 여덟 소켓 구현예에서, 매 소켓이 HPI 링크를 통해 서로 직접 접속되는 것은 아니다. 그러나, 만일 가상 경로 또는 채널이 프로세서들 사이에서 존재하면, 그 구성이 지원된다. 지원된 프로세서들의 범위는 기본 도메인에서 2-32를 포함한다. 다른 예들 중에서, 노드 제어기들 사이에 다른 인터커넥트 또는 복수의 도메인을 사용하여 프로세서를 더 많게 할 수 있다.
HPI 아키텍처는 몇몇 예에서, (코히어런트, 논-코히어런트, 및 옵션의, 여타 메모리 기반 프로토콜의) 프로토콜 계층들, 라우팅 계층, 링크 계층, 및 물리 계층을 포함하는 계층화된 프로토콜 아키텍처의 정의를 포함한다. 뿐만 아니라, HPI는 다른 예들 중에서, (전력 제어 유닛(power control units (PCUs))과 같은) 전력 관리자, 테스트 및 디버그 용 디자인(design for test and debug (DFT)), 장애 관리, 레지스터, 보안에 관련된 개선된 것을 더 포함할 수 있다. 도 6은 일 예의 HPI 계층화된 프로토콜 스택의 실시예를 도시한다. 일부 구현예에서, 도 6에 도시된 계층들 중 적어도 일부는 옵션일 수 있다. 각각의 계층은 그 자체의 그래뉴러리티의 레벨 또는 정보의 퀀텀(quantum of information)을 처리한다(프로토콜 계층(605a,b)은 패킷(630)을 처리하고, 링크 계층(610a,b)은 플릿(flits)(635)을 처리하며, 물리 계층(605a,b)은 피트(phits)(640)를 처리한다). 일부 실시예에서, 구현예에 따라서 패킷은 부분적인 플릿, 단일의 플릿, 또는 복수의 플릿을 포함할 수 있다는 것을 주목하자.
제 1의 예로서, 피트(640)의 폭은 링크 폭 대 비트의 1대1 매핑을 포함한다(예를 들면, 20 비트 링크 폭은 20 비트의 피트를 포함한다. 기타 등등). 플릿은 184, 192 또는 200 비트와 같이 더 큰 크기를 가질 수 있다. 만일 피트(640)가 20 비트이고 플릿(635)의 크기가 184 비트이면, 하나의 플릿(635)을 전송하기 위해 피트(640)를 분수로(예를 들면, 다른 예들 중에서, 184 비트의 플릿(635)을 전송하려면 20 비트로 9.2 피트 또는 192 비트 플릿을 전송하려면 20 비트로 9.6으로) 처리한다는 것을 주목하자. 물리 계층에서 기본 링크의 폭은 변할 수 있다는 것을 주목하자. 예를 들면, 방향 당 레인의 개수는 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 등을 포함할 수 있다. 일 실시예에서, 링크 계층(610a,b)은 복수의 상이한 트랜잭션을 단일 플릿 내에 넣을 수 있으며, 하나 또는 복수의 헤더(예를 들면, 1, 2, 3, 4)가 플릿 내에 넣어질 수 있다. 일 예에서, HPI는 헤더들을 대응하는 슬롯들로 나누어서 플릿 내 복수의 메시지들이 여러 노드들을 향해 전달되게 할 수 있다.
일 실시예에서, 물리 계층(605a,b)은 (전기 또는 광 등의) 물리적 매체를 통한 고속의 정보 전달의 역할을 담당할 수 있다. 물리 링크는 계층(605a 및 605b)과 같은 두 개의 링크 계층 엔티티들 사이의 포인트-투-포인트일 수 있다. 링크 계층(610a,b)은 상위 계층으로부터 물리 계층(605a,b)을 이끌어 낼 수 있으며 데이터(뿐만 아니라 요청)를 신뢰 있게 전달하는 역량을 제공하고 직접적으로 접속된 두 엔티티들 사이에서 플로우 제어를 관리한다. 링크 계층은 또한 물리적 채널을 복수의 가상 채널 및 메시지 클래스로 가상화하는 역할을 담당할 수 있다. 프로토콜 계층(620a,b)은 링크 계층(610a,b)에 의존하여 프로토콜 메시지를 적절한 메시지 클래스 및 가상 채널로 매핑한 다음 이를 물리 계층(605a,b)으로 전달하여 물리 링크를 가로질러 전송한다. 링크 계층(610a,b)은 다른 예들 중에서, 요청, 스누프, 응답, 라이트백, 논-코히어런트 데이터와 같은 복수의 메시지를 지원할 수 있다.
도 6에 도시된 바와 같이, HPI의 물리 계층(605a,b)(또는 PHY)은 전기 계층(즉, 두 컴포넌트를 접속시키는 전기 전도체) 위 그리고 링크 계층(610a,b)의 아래에서 구현될 수 있다. 물리 계층 및 대응하는 로직은 각각의 에이전트에서 상주할 수 있으며 (예를 들면, 링크의 양측의 디바이스 상에서) 서로 분리되어 있는 두 에이전트(A 및 B)의 링크 계층들을 접속시킨다. 로컬 및 원격 전기 계층은 물리적 매체(예를 들면, 와이어, 전도체, 광학 매체 등)에 의해 접속된다. 일 실시예에서, 물리 계층(65a,b)은 두 가지 주요한 단계, 즉 초기화 및 동작을 가지고 있다. 초기화 동안, 접속은 링크 계층에 불투명하며 시그널링은 시간 제한 상태(timed states)와 핸드쉐이크 이벤트의 조합을 포함할 수 있다. 동작 동안, 접속은 링크 계층에 투명하며 시그널링은 일정 속도로 진행되며, 이 때 모든 레인이 함께 단일 링크로서 동작한다. 동작 단계 동안, 물리 계층은 플릿을 에이전트 A에서 에이전트 B로 그리고 에이전트 B에서 에이전트 A로 전달한다. 접속은 또한 링크라고 지칭되기도 하며 플릿 및 현재 구성(예를 들면, 폭)의 제어/상태를 링크 계층과 교환하면서 링크 계층으로부터 매체, 폭 및 속도를 포함하는 몇 가지 물리적인 양태를 이끌어 낸다. 초기화 단계는 하위 단계, 예를 들면 폴링(Polling), 구성(Configuration)을 포함한다. 동작 단계 또한 하위 단계(예를 들면, 링크 전력 관리 상태)를 포함한다.
일 실시예에서, 링크 계층(610a,b)은 두 프로토콜 또는 라우팅 엔티티들 사이에서 신뢰할 수 있는 데이터 전송을 제공하기 위해 구현될 수 있다. 링크 계층은 프로토콜 계층(620a,b)으로부터 물리 계층(605a,b)을 이끌어 낼 수 있고 두 프로토콜 에이전트(A, B) 사이의 플로우 제어를 책임질 수 있으며, 가상 채널 서비스를 프로토콜 계층(메시지 클래스) 및 라우팅 계층(가상 네트워크)에 제공할 수 있다. 프로토콜 계층(620a,b)과 링크 계층(610a,b) 사이의 인터페이스는 통상적으로 패킷 레벨에서 수행될 수 있다. 일 실시예에서, 링크 계층에서 가장 작은 전송 단위는 192 비트 또는 일부 다른 단위 값과 같은 명시된 비트 수를 가진 플릿이라고 지칭된다. 링크 계층(610a,b)은 물리 계층(605a,b)에 의존하여 물리 계층(605a,b)의 전송 단위(피트)를 링크 계층(610a,b)의 전송 단위(플릿)로 프레이밍한다. 게다가, 링크 계층(610a,b)은 논리적으로 두 부분, 즉 송신자 및 수신자로 갈라질 수 있다. 한 엔티티에서 송신자/수신자 쌍은 다른 하나의 엔티티 상의 송신자/수신자 쌍에 접속될 수 있다. 플로우 제어는 종종 플릿 및 패킷의 두 가지를 기반으로 하여 수행된다. 오류 검출 및 정정 또한 잠재적으로 플릿 레벨 기반으로 수행된다.
일 실시예에서, 라우팅 계층(615a,b)은 근원지로부터 목적지로 HPI 트랜잭션을 라우팅하는 유연하고 분산된 방법을 제공할 수 있다. 이 방식은 복수의 토폴로지에 필요한 라우팅 알고리즘이 각각의 라우터에서 프로그램 가능 라우팅 테이블을 통해 명시될 수 있기 때문에 유연성이 있다(일 실시예에서 프로그래밍은 펌웨어, 소프트웨어, 또는 이들의 조합에 의해 수행된다). 라우팅 기능은 분산될 수 있고, 라우팅은 일련의 라우팅 단계를 통해 이루어질 수 있는데, 각각의 라우팅 단계는 근원지, 중간지, 또는 목적지 라우터에서 테이블 룩업을 통해 정의된다. 근원지에서의 룩업은 HPI 패킷을 HPI 패브릭으로 주입하는데 사용될 수 있다. 중간지 라우터에서의 룩업은 HPI 패킷을 입력 포트로부터 출력 포트로 라우팅하는데 사용될 수 있다. 목적지 포트에서 룩업은 목적지 HPI 프로토콜 에이전트를 목표로 하기 위해 사용될 수 있다. 일부 구현예에서, 라우팅 테이블, 및 그의 라우팅 알고리즘은 사양서에 의해 특별히 정의되어 있지 않기 때문에 라우팅 계층은 빈약(thin)할 수 있다는 것을 주목하여야 한다. 이것은 시스템 구현에 의해 정의되는 유연 플랫폼 아키텍처 토폴로지를 포함하는, 유연성 및 각종 사용 모델의 여지를 남겨 놓는다. 라우팅 계층(615a,b)은 링크 계층(610a,b)에 의존하여 세 개까지의(또는 그 이상의) 가상 네트워크(virtuaI networks (VNs)) - 일 예로, 각 가상 네트워크에서 정의된 여러 메시지 클래스를 가진 두 개의 교착 방지(deadlock free) VNs, VN0 및 VN1 - 의 사용을 제공한다. 공유된 적응적 가상 네트워크(shared adaptive virtuaI network (VNA))는 링크 계층에서 정의될 수 있지만, 다른 특징 및 예들 중에서, 각 메시지 클래스 및 가상 네트워크가 전용의 자원을 갖고 순방향 진행(forward progress)을 보장할 수 있기 때문에, 이러한 적응적 네트워크는 라우팅 개념으로 직접 드러내지 없을 수 있다.
일 실시예에서, HPI는 메모리로부터 데이터의 라인들을 캐싱하는 에이전트를 지원하는 코히어런스 프로토콜 계층(620a,b)을 포함할 수 있다. 메모리 데이터를 캐시하려는 에이전트는 데이터의 라인을 판독하여 자신의 캐시에 로드하기 위해 코히어런트 프로토콜을 사용할 수 있다. 자신의 캐시에서의 데이터의 라인을 수정하려는 에이전트는 데이터를 수정하기 전에 라인의 소유권을 얻기 위해 코히어런스 프로토콜을 사용할 수 있다. 라인을 수정한 후, 에이전트는 외부 요청에 응답하여 라인을 다시 메모리에 기록하거나 라인을 포함할 때까지 그의 캐시 내에 라인을 유지하려는 프로토콜 요건에 따를 수 있다. 끝으로, 에이전트는 외부 요청을 이행하여 그의 캐시에서 라인을 무효화할 수 있다. 프로토콜은 모든 캐싱 에이전트가 따를 수 있는 규칙을 지시함으로써 데이터의 코히어런시(coherency)를 보장한다. 이것은 또한 에이전트가 캐시 없이 메모리 데이터를 일관되게 판독하고 기록하는 수단을 제공한다.
HPI 코히어런스 프로토콜을 이용하여 트랜잭션을 지원하기 위해 두 가지 조건이 실시될 수 있다. 첫째, 프로토콜은 일 예로, 에이전트의 캐시들 내 데이터 사이에서 그리고 이러한 데이터와 메모리 내 데이터 사이에서 어드레스별 기준으로 데이터 일관성(data consistency)을 유지할 수 있다. 비공식적으로, 데이터 일관성은 데이터의 가장 최근 값을 나타내는 에이전트의 캐시 내 데이터의 각각의 유효 라인을 지칭할 수 있고, 코히어런스 프로토콜 패킷에서 전송되는 데이터는 데이터가 전송되었을 당시 데이터의 가장 최근 값을 나타낼 수 있다. 데이터의 어느 유효 카피도 캐시 또는 전송에 존재하지 않을 때, 프로토콜은 가장 최근의 데이터 값이 메모리에 있음을 보장할 수 있다. 둘째, 프로토콜은 요청에 대해 잘 정의된 책임 정도를 제공할 수 있다. 판독에 대한 책임 정도는 데이터가 유용할 때를 나타낼 수 있고, 기록에 대한 책임 정도는 기록된 데이터가 전역적으로 관찰가능하고 후속 판독에 의해 로드될 때를 나타낼 수 있다. 프로토콜은 코히어런트 메모리 공간에서 캐시가능한 요청 및 캐시 불가한(uncacheable (UC)) 요청 모두에 대해 이러한 책임 정도를 지원할 수 있다.
HPI 코히어런스 프로토콜은 또한 에이전트에 의해 코히어런트 메모리 공간 내 어떤 어드레스를 향해 행한 코히어런스 요청의 순방향 진행을 보장할 수 있다. 확실히, 트랜잭션은 적절한 시스템 동작을 위해 결국 이행되고 사라질 수 있다. 일부 실시예에서, HPI 코히어런스 프로토콜은 자원 할당 충돌을 해결하기 위한 재시도의 개념이 없을 수 있다. 따라서, 프로토콜 그 자체는 순환 자원 의존성을 포함하지 않는 것으로 정의될 수 있고 구현은 그 디자인에서 데드록을 초래할 수 있는 의존성을 도입하지 않도록 주의할 수 있다. 또한, 프로토콜은 디자인이 프로토콜 자원으로의 공정한 액세스를 제공할 수 있는 곳을 표시할 수 있다.
논리적으로, 일 실시예에서 HIP 코히어런스 프로토콜은 세 개의 아이템 즉, 코히어런스(또는 캐싱) 에이전트, 홈 에이전트, 및 에이전트들을 접속시키는 HPI 인터커넥트 패브릭을 포함할 수 있다. 코히어런스 에이전트 및 홈 에이전트는 함께 작업하여 인터커넥트를 통해 메시지를 교환함으로써 데이터 일관성을 이룰 수 있다. 링크 계층(610a,b) 및 그의 관련 설명은 본 출원에서 논의되는 코히어런스 프로토콜 요건을 고수하는 방법을 포함하여 인터커넥트 패브릭의 세부사항을 제공할 수 있다. (코히어런스 에이전트와 홈 에이전트로의 분리는 명료하게 하기 위한 것임을 주목할 수 있다. 디자인은 다른 예들 중에서, 소켓 내에 두 가지 타입의 복수의 에이전트를 포함할 수 있거나 또는 심지어 에이전트 거동을 단일 디자인 유닛에 연결할 수 있다).
일 실시예에서, 홈 에이전트는 물리 메모리를 보호하도록 구성될 수 있다. 각각의 홈 에이전트는 코히어런트 메모리 공간의 영역을 책임질 수 있다. 영역들은 단일의 어드레스가 하나의 홈 에이전트에 의해 보호된다는 점에서 중첩되지 않을 수 있으며, 시스템 내 홈 에이전트 영역들은 함께 코히어런트 메모리 공간을 관장하고 있다. 예를 들어, 각각의 어드레스는 적어도 하나의 홈 에이전트에 의해 보호될 수 있다. 그러므로, 일 실시예에서, HPI 시스템의 코히어런트 메모리 공간에서 각각의 어드레스는 정확히 하나의 홈 에이전트에 매핑될 수 있다.
일 실시예에서, HPI 코히어런스 프로토콜에서 홈 에이전트는 코히어런트 메모리 공간에 대한 요청을 서비스하는 역할을 수행할 수 있다. 판독(Rd) 요청에 대하여, 홈 에이전트는 스누프(Snp)를 발생하고, 이들의 응답을 처리하고, 데이터 응답을 송신하고, 완료 응답을 송신할 수 있다. 무효(Inv) 요청에 대하여, 홈 에이전트는 필요한 스누프를 발생하고, 이들의 응답을 처리하고, 완료 응답을 송신할 수 있다. 기록 요청에 대하여, 홈 에이전트는 메모리로의 데이터를 커미트(commit)하고 완료 응답을 송신할 수 있다.
홈 에이전트는 HPI 코히어런스 프로토콜에서 스누프를 제공하고 코히어런스 에이전트로부터의 스누프 응답을 처리할 수 있다. 홈 에이전트는 또한 충돌 해결을 위하여 코히어런스 에이전트로부터 특별한 스누프 응답인 포워드 요청을 처리할 수 있다. 홈 에이전트가 포워드 요청을 수신하면, 포워드 요청을 발생했던 코히어런스 에이전트(즉, 충돌하는 스누프 요청을 검출하였던 에이전트)에게 포워드 응답을 송신할 수 있다. 코히어런스 에이전트는 홈 에이전트로부터의 이러한 포워드 응답 및 완료 응답의 순서를 사용하여 충돌을 해결할 수 있다.
코히어런스 에이전트는 지원되는 코히어런스 프로토콜 요청을 발행할 수 있다. 요청은 코히어런트 메모리 공간 내 어드레스로 발행될 수 있다. RdCur을 제외한 판독 요청(Rd)에 대하여 수신된 데이터는 일치할 수 있다. RdCur 요청에 대한 데이터는 데이터 패킷이 발생되었을 때 (비록 전달 중에 데이터가 유효 기간이 지나버릴 수도 있겠지만) 일치되었을 수 있다. 표 1은 잠재적인 지원된 요청의 예시적인 완전치 않은 목록을 보여준다.
HPI는 MESI 프로토콜의 원리를 이용하는 코히어런시 프로토콜을 지원할 수 있다. 각각의 캐시 라인은 하나 이상의 지원된 상태로 마크(mark)될 수 있다(예를 들면, 캐시 라인에서 코딩될 수 있다). "M" 또는 "수정된(Modified)" 상태는 캐시 라인 값이 메인 메모리 내에 있는 값으로부터 수정되었다는 것을 표시할 수 있다. M-상태에서 라인은 특정 상태에서 존재할 뿐이며 대응하는 캐시 에이전트는 수정된 데이터를 예를 들면, (더 이상 유효하지 않은) 메모리 상태의 임의의 다른 판독을 허용하기 전에, 향후 언젠가 메모리에 다시 기록하라고 요구될 수 있다. 라이트백은 라인을 M-상태에서 E-상태로 천이할 수 있다. "E" 또는 "배타적(Exclusive)" 상태는 캐시 라인이 현재 캐시에서 존재하고 있을 뿐이지만 그의 값은 메인 메모리 내의 값과 일치한다는 것을 표시할 수 있다. E-상태에서 캐시 라인은 판독 요청에 응답하여 언제라도 S-상태로 천이할 수 있거나 라인에 기록함으로써 M-상태로 변경될 수 있다. "S" 또는 "공유된(Shared)" 상태는 캐시 라인이 머신의 다른 캐시들 내에 저장될 수 있고 메인 메모리의 값과 일치하는 값을 갖는 것을 표시할 수 있다. 라인은 언제라도 사용되지 않을 (I-상태로 변경될) 수 있다. "I" 또는 "무효(Invalide)" 상태는 캐시 라인이 무효 또는 미사용 중이라는 것을 표시할 수 있다. 다른 예들 중에서, 특정 공유된 라인 값이 라인을 또한 공유하는 다른 캐시들에게 포워드될 것이라는 것을 표시하는 "F" 또는 "포워드(Forward)" 공유 상태와 같은 다른 상태가 HPI에서 지원될 수 있다.
표 2는 다른 예들 중에서, 스누프, 판독 및 기록 요청을 포함하는, 몇몇 코히어런스 프로토콜 메시지에 포함될 수 있는 예시적인 정보를 포함한다.
스누프 메시지는 홈 에이전트에 의해 발생되고 코히어런스 에이전트를 향해 보내질 수 있다. 스누프(SNP) 가상 채널은 스누프 용도로 사용될 수 있으며, 일 실시예에서 스누프 메시지는 SNP 가상 채널을 사용하는 유일한 메시지이다. 스누프는, 요청 에이전트의 NID, 및 데이터가 스누프로 인해 요청 에이전트로 바로 송신되는 경우에 그 요청을 위해 요청 에이전트가 할당한 RTID를 포함할 수 있다. 일 실시예에서, 스누프는 또한 홈 에이전트가 요청을 처리하기 위해 할당한 HTID를 포함할 수 있다. 스누프를 처리하는 코히어런스 에이전트는 홈 에이전트로 다시 송신하는 스누프 응답 내에 HTID를 포함시킬 수 있다. 일부 예에서, 스누프는 홈 에이전트의 NID를 포함하지 않을 수 있는데, 이것은 목표로 하는 코히어런스 에이전트가 그의 응답을 송신할 때 포함시킨 포함된 어드레스로부터 유도될 수 있기 때문이다. (앞에 "SnpF"가 붙은) 팬아웃 스누프는 라우팅 계층이 팬아웃 영역에 있는 모든 피어들에게 적절한 스누프 메시지를 발생하는 책임을 지고 있기 때문에 목적지 NID를 포함하지 않을 수 있다. 스누프 채널 메시지들의 예시적인 목록은 표 3에 열거된다.
HPI는 또한 논-코히어런트 요청으로서 구현되는 요청과 같은, 어드레스를 향해 발행할 수 있는 논 스누프 요청을 지원할 수 있다. 그러한 요청의 예는 다른 잠재적인 예들 중에서, 메모리로부터 판독 전용 라인을 요청하는 논-스누프 판독, 라인을 메모리에 기록하는 논-스누프 기록, 및 마스크에 따라서 라인을 메모리에 기록하는 기록을 포함할 수 있다.
일 예에서, HPI 코히어런스 프로토콜에서 네 가지의 일반적인 형태의 응답 메시지, 즉 데이터, 완료, 스누프, 및 포워드가 정의될 수 있다. 소정의 데이터 메시지는 추가적인 완료 표시를 전달할 수 있으며 소정의 스누프 응답은 데이터를 전달할 수 있다. 응답 메시지는 RSP 가상 채널을 사용할 수 있으며, 통신 패브릭은 순차적 완료 응답들 및 포워드 응답들 중에서 적절한 메시지 전달 순서를 유지할 수 있다.
표 4는 일 예의 HPI 코히어런스 프로토콜에 의해 지원되는 적어도 몇 가지의 잠재적인 응답 메시지들의 목록을 포함한다.
일 예에서, 데이터 응답은 요청 코히어런스 에이전트를 목표로 할 수 있다. 홈 에이전트는 데이터 응답 중 임의의 응답을 송신할 수 있다. 코히어런스 에이전트는 순차적 완료 표시를 갖지 않은 데이터 응답만을 송신할 수 있다. 또한, 코히어런스 에이전트는 스누프 요청을 처리하는 결과로서만 데이터 응답을 송신하도록 제한될 수 있다. 연결된 데이터 및 완료 응답은 항시 순차적-완료 형식을 가질 수 있으며 통신 패브릭에 의한 포워드 응답 그대로의 순서로 유지될 수 있다.
HPI 코히어런스 프로토콜은 일반적인 비순차적 완료 메시지 및 코히어런스-특정 순차적 완료 메시지를 사용할 수 있다. 홈 에이전트는 코히어런트 요청에 대한 완료 응답을 송신할 수 있으며 완료 응답은 전형적으로 코히어런스 에이전트를 향해 예정될 수 있다. 순차적 완료 응답은 통신 패브릭에 의한 포워드 응답 그대로의 순서대로 유지될 수 있다.
스누프 응답은 코히어런스 에이전트에 의해, 구체적으로는 스누프 요청을 처리한 것에 대한 응답으로 송신될 수 있으며, 스누프 요청을 처리하는 홈 에이전트를 목표로 한다. destNID는 보통 (스누프 요청 내 어드레스로부터 결정되는) 홈 에이전트이며 포함된 TID는 그 요청을 처리하기 위해 할당된 홈 에이전트의 자원의 것이다. 커맨드에서 "Wb"가 붙은 스누프 응답은 수정된 캐시 라인의 묵시적 라이트백의 응답이며, 이러한 응답은 캐시 라인 데이터를 전달할 수 있다. (묵시적 라이트백은 코히어런스 에이전트가 다른 에이전트의 요청으로 인해 만든 것을 포함할 수 있으며, 반면에 다른 요청은 코히어런스 에이전트에 의해 그의 요청 자원들을 이용하여 묵시적으로 만들어진다.)
코히어런스 에이전트는 스누프 요청이 미처리 요청과 충돌할 때 포워드 요청을 발생할 수 있다. 포워드 요청은 스누프를 발생한 홈 에이전트를 목표로 하는데, 이 홈 에이전트는 스누프 요청 내 어드레스로부터 결정된다. 그래서, destNID는 홈 에이전트이다. 포워드 요청은 또한 원래의 요청을 처리하기 위해 할당된 홈 에이전트의 자원의 TID 및 포워드 요청을 발생하는 코히어런스 에이전트의 NID를 포함할 수 있다.
HPI 코히어런스 프로토콜은 단일의 포워드 응답, FwdCnfltO을 지원할 수 있다. 홈 에이전트는 수신한 모든 포워드 요청에 대하여 포워드 응답을 송신하되 포워드 요청의 peerNID 필드 내의 코히어런스 에이전트에게 송신할 수 있다. 포워드 응답은 캐시 라인 어드레스를 전달할 수 있으며 그래서 코히어런스 에이전트는 메시지를 그가 할당한 포워드 자원에 매칭시킬 수 있다. 포워드 응답 메시지는 요청 에이전트의 NID를 전달할 수 있지만, 몇몇 사례에서는 요청 에이전트의 TID를 전달하지 않을 수 있다. 만일 코히어런스 에이전트가 포워드 응답을 위해 캐시-투-캐시 전송을 지원하고자 하면, 스누프를 처리할 때 요청 에이전트의 TID를 저장하여 포워드 요청을 송신할 수 있다. 충돌 해결을 지원하기 위하여, 통신 패브릭은 포워드 응답과 동일한 목적지 코히어런스 에이전트로 그 이전에 송신된 모든 순차적 완료 간의 순서를 유지할 수 있다.
일부 시스템에서, "RTID"가 홈 에이전트 내 자원을 나타내고 캐싱 에이전트가 새로운 코히어런스 요청을 발생할 때 시스템-구성된 풀(pool)로부터의 RTID를 할당한다는 점에서 홈 에이전트 자원은 사전에 할당된다. 그러한 방식은 임의의 특정 캐싱 에이전트가 홈 에이전트에 대하여 가질 수 있는 활성 요청들의 개수를 시스템에 의해 주어진 RTID의 개수로 한정할 수 있고, 이는 캐싱 에이전트들 사이에서 홈 자원을 통계적으로 효과적으로 나눌 수 있게 한다. 다른 잠재적인 문제들 중에서, 그러한 방식은 자원들의 비효율적인 할당이라는 결과를 가져올 수 있으며 요청 처리량을 지원하는 홈 에이전트를 적절하게 크기를 매기는 것은 대형 시스템에서 비현실적일 수 있다. 예를 들어, 그러한 방식은 캐싱 에이전트에게 RTID 풀 관리를 강제할 수 있다. 또한, 일부 시스템에서, 캐싱 에이전트는 홈 에이전트가 트랜잭션을 완전히 처리할 때까지 RTID를 재사용하지 않을 수 있다. 그러나, 홈 에이전트가 모든 처리를 완료할 때까지 기다린다고 해서 반드시 캐싱 에이전트를 저지할 수 있는 것은 아니다. 또한, 다른 문제들 중에서, 프로토콜에서 어떤 흐름은 홈 에이전트 해제 통보 이후 캐싱 에이전트가 RTID를 유지하는 것을 포함할 수 있고, 그래서 그들의 성능을 더 저지하게 된다.
일부 구현예에서, 홈 에이전트는 캐시 에이전트로부터 요청이 도달할 때 그들의 자원을 할당할 수 있게 할 수 있다. 그러한 예에서, 홈 에이전트 자원 관리는 코히어런스 에이전트 로직과 별도로 유지될 수 있다. 일부 구현예에서, 홈 자원 관리 및 코히어런스 에이전트 로직은 적어도 부분적으로 섞여 있을 수 있다. 일부 예에서, 코히어런스 에이전트는 홈 에이전트가 동시에 처리할 수 있는 것 보다 더 많은 홈 에이전트에 대한 미처리 요청을 갖고 있을 수 있다. 예를 들어, HPI는 요청들이 통신 패브릭에서 줄지어 대기하게 할 수 있다. 또한, 자원이 이용 가능해질 때까지 들어오는 요청을 차단하는 홈 에이전트에 의해 야기되는 데드록을 방지하기 위하여, HPI 코히어런스 프로토콜은 활성 트랜잭션들이 확실하게 완료에 도달하도록 하기 위해 다른 메시지들이 차단되는 요청들을 빙 돌아서 진행할 수 있게 보장하도록 구성될 수 있다.
일 예에서, 자원 관리는 요청을 수신하는 에이전트가 그 요청을 처리할 자원을 할당할 수 있게 함으로써 지원될 수 있고, 요청을 보내는 에이전트는 그 요청에 대한 모든 응답에 각각의 자원을 할당한다. HTID는 홈 에이전트가 일부 프로토콜 메시지에 포함된 소정의 요청에 대하여 할당하는 자원을 나타낼 수 있다. 다른 예들 중에서, 스누프 요청 및 포워드 응답 내 (RNID/RTID와 함께) HTID는 홈 에이전트로의 응답뿐만 아니라 요청 에이전트로의 데이터 포워딩을 지원하는데 사용될 수 있다. 또한, HPI는 요청 에이전트가 그의 RTID 자원을 재사용하기에 안전하다고 결정될 때, 순차적 완료(an ordered complete (CmpO))를 조기에(early), 즉 홈 에이전트가 요청을 처리 완료하기 전에 송신하는 기능을 지원할 수 있다. 유사한 RNID/RTID를 가진 스누프들의 일반적인 처리 또한 프로토콜에 의해 정의될 수 있다.
예시적인 일 예에서, 특정 요청의 트래커 상태가 비지(busy)일 때, 디렉토리 상태는 홈 에이전트가 응답을 송신할 수 있을 시기를 결정하는데 사용될 수 있다. 예를 들어, 무효 디렉토리(an Invalid directory) 상태는 어느 미해결 스누프 응답도 없음을 표시하는 RdCur 요청을 제외하고는 응답이 송신되게 할 수 있다. 미지의 디렉토리(Unknown directory) 상태는 모든 피어 에이전트들이 스누프되었고 이들의 모든 응답들이 응답이 송신될 수 있기 전에 수집되었음을 표시할 수 있다. 배타적 디렉토리(Exclusive directory) 상태는 소유자가 스누프될 예정이고 모든 응답들이 응답이 송신되기 전에 수집되었음을 표시할 수 있고, 아니면 만일 요청 에이전트가 소유자이면, 응답은 즉시 송신될 수 있다. 공유된 디렉토리(Shared directory) 상태는 무효화 요청(예를 들면, RdInv* 또는 Inv*)이 모든 피어 에이전트들을 스누프하였고 모든 스누프 응답들을 수집하였음을 명시할 수 있다. 특정 요청의 트래커 상태가 라이트백 버퍼링될 때(WbBuffered), 홈 에이전트는 데이터 응답을 송신할 수 있다. 요청의 트래커 상태가 (홈 에이전트가 이미 데이터 응답을 송신하였음을 표시하는) DataSent 또는 (피어가 라인의 카피를 전송하였음을 표시하는) DataXfrd일 때, 홈 에이전트는 완료 응답을 송신할 수 있다.
앞에서 설명한 것과 같은 예에서, 홈 에이전트는 모든 스누프 응답들이 수집되기 전에 데이터 및 완료 응답을 송신할 수 있다. HPI 인터페이스는 이러한 "조기" 응답을 가능하게 한다. 조기에 데이터 및 완료를 송신할 때, 홈 에이전트는 그가 요청에 할당한 자원을 해제하기 전에 모든 미해결 스누프 응답들을 수집할 수 있다. 또한 홈 에이전트는 모든 스누프 응답들이 수집될 때까지 동일한 어드레스로의 추가적인 표준 요청들을 계속하여 차단할 수 있고, 그런 다음 자원을 해제할 수 있다. 다른 예들 중에서, Busy 또는 WbBuffered 상태로부터 응답 메시지를 송신하는 홈 에이전트는 메시지를 송신하는 (예를 들면 HPI 코히어런스 프로토콜의 정식 사양을 구체화하는 한 세트의 프로토콜 테이블에 포함되어 있는) 서브-액션 테이블을 사용할 수 있으며 디렉토리 상태를 업데이트하는 방법에 관한 서브 액션 테이블을 사용할 수 있다. 일부 사례에서, 조기 완료는 홈 노드에 의해 사전-할당 없이 수행될 수 있다.
일 실시예에서, HPI 코히어런스 프로토콜은 사전-할당되는 홈 자원 및 순차적 요청 채널 중 어느 하나 또는 둘 다의 사용을 생략할 수 있다. 그러한 구현예에서, HPI RSP 통신 채널 상의 특정 메시지는 정렬될 수 있다. 예를 들어, 구체적으로 홈 에이전트로부터 코히어런스 에이전트로 송신될 수 있는 "순차적 완료" 및 "포워드 응답" 메시지가 제공될 수 있다. 홈 에이전트는 모든 코히어런트 판독 및 무효 요청(뿐만 아니라 캐시-코히어런스 충돌에서 포함되지 않은 NonSnpRd 요청과 같은 다른 요청)에 대해 순차적 완료(CmpO 또는 Data_*_CmpO)를 송신할 수 있다.
홈 에이전트는 충돌을 표시하는 포워드 요청(RspCnFlt)을 송신하는 코히어런스 에이전트로 포워드 응답(FwdCnfltO)을 송신할 수 있다. 코히어런스 에이전트는 판독 요청 또는 무효 요청을 가질 때마다 그리고 요청과 동일한 캐시 라인으로 들어오는 스누프 요청을 검출할 때마다 포워드 요청을 발생할 수 있다. 코히어런스 에이전트가 포워드 응답을 수신할 때, 미처리 요청의 현재 상태를 체크하여 원래의 스누프를 처리하는 방법을 결정한다. 홈 에이전트는 포워드 응답을 송신하여 완료(CmpO 또는 Data_*_CmpO)에 따라 정렬되게 할 수 있다. 코히어런스 에이전트는 스누프에 포함된 정보를 이용하여 코히어런스 에이전트가 포워드 응답을 처리하는데 도울 수 있다. 예를 들어, 포워드 응답은 임의의 "타입" 정보 및 어느 RTID도 포함하지 않을 수 있다. 포워드 응답의 특성은 선행 스누프(들)로부터 구한 정보로부터 유도될 수 있다. 또한, 코히어런스 에이전트는 그의 "포워드 자원들" 모두가 포워드 응답을 기다리고 있을 때 미해결 스누프 요청들을 차단할 수 있다. 일부 구현예에서, 각각의 코히어런스 에이전트는 적어도 하나의 포워드 자원을 갖도록 디자인될 수 있다.
일부 구현예에서, 통신 패브릭 요건은 라우팅 계층에 의존할 수 있다. 일 실시예에서, HPI 코히어런스 프로토콜은 라우팅 계층에 특정한 하나의 통신 패브릭 요건을 갖고 있다. 코히어런스 프로토콜은 라우팅 계층에 의거하여 팬아웃 스누프(SnpF* opcodes - Snoop (SNP) Channel Messages")를 코히어런스 에이전트들의 팬아웃 세트에 속한 모든 요청의 피어들에 적절한 스누프들로 전환할 수 있다. 팬아웃 세트는 프로토콜 계층에 의해 공유되는 라우팅 계층의 구성 파라미터이다. 이러한 코히어런스 프로토콜 사양에서, 이것은 홈 에이전트 구성 파라미터로서 기술된다.
전술한 일부 구현예에서, HPI 코히어런스 프로토콜은 네 가지 가상 채널들, 즉 REQ, WB, SNP, and RSP을 이용할 수 있다. 가상 채널들은 종속성 순환(dependency cycles)을 풀고 데드록을 방지하기 위해 사용될 수 있다. 일 실시예에서, 모든 메시지는 중복(duplication) 없이 모든 가상 채널을 통해 전달될 수 있고 순서 요건은 RSP 가상 채널을 통해 전달될 수 있다.
일부 구현예에서, 통신 패브릭은 특정 완료 메시지들 및 FwdCnfltO 메시지 간의 순서를 보존하도록 구성될 수 있다. 완료 메시지들은 CmpO 메시지 및 CmpO가 붙은 임의의 데이터 메시지(Data_*_CmpO)이다. 이러한 메시지들은 모두 함께 "순차적 완료 메시지들"이다. 순차적 완료 응답들과 FwdCnfltO 메시지 간의 개념적인 요건은 FwdCnfltO가 순차적 완료를 "통과"시키지 않는다는 것이다. 보다 구체적으로 말해서, 다른 잠재적인 예들 중에서, 만일 홈 에이전트가 순차적 완료 응답을 송신한 다음 FwdCnfltO 메시지를 송신하고 두 메시지들이 동일한 코히어런스 에이전트를 향해 예정되어 있으면, 통신 패브릭은 FwdCnfltO에 앞서 순차적 완료 응답을 전달한다.
본 명세서에서 프로토콜 흐름의 일부 예들이 기술되었지만, 기술된 예들은 단지 프로토콜에 대한 직관적인 느낌을 주려는 것이며 반드시 프로토콜이 발휘할 수 있는 가능한 모든 시나리오와 거동을 망라하려는 것이 아니라는 것을 인식하여야 한다.
충돌은 하나를 초과하는 코히어런스 에이전트로부터 동일한 캐시-라인 어드레스로의 요청들이 대략 동일한 시간에 발생할 때 발생할 수 있다. 특정 예로서, 충돌은 코히어런스 에이전트의 표준 요청을 위한 스누프가 동일한 어드레스로의 미처리 요청을 가진 피어 코히어런스 에이전트에 도달할 때 발생할 수 있다. 각각의 스누프는 충돌 시 종료할 수 있기 때문에, 단일의 요청은 복수의 충돌을 가질 수 있다. 충돌을 해결하는 것은 홈 에이전트, 코히어런스 에이전트, 그리고 통신 패브릭 사이의 협력적 노력일 수 있다. 그러나, 일차적인 책임은 충돌하는 스누프들을 검출하는 코히어런스 에이전트에 있다.
일 실시예에서, 홈 에이전트, 코히어런스 에이전트, 및 통신 패브릭은 충돌을 성공적으로 해결하는데 조력하도록 구성될 수 있다. 예를 들면, 홈 에이전트는 한번에 어드레스 당 단 하나의 요청에 대해 미해결 스누프들을 가질 수 있고, 그래서 특정 어드레스에 대하여, 홈 에이전트는 단 하나의 요청에 대해 미해결 스누프들을 가질 수 있다. 이것은 서로 충돌하는 두 요청들에 포함하는 경합 조건의 가능성을 배제하도록 작용할 수 있다. 또한 이것은 코히어런스 에이전트가 충돌을 검출하였으나 아직 이를 해결하지 않은 후에는 동일한 어드레스로의 다른 스누프를 보지 않을 것을 보장할 수 있다.
다른 예에서, 코히어런스 에이전트가 활성의 표준 요청과 매칭하는 어드레스를 갖는 스누프를 처리할 때, 코히어런스 에이전트는 포워드 자원을 할당하고 포워드 요청을 홈 에이전트에게 송신할 수 있다. 동일한 어드레스로의 스누프를 수신하는 미해결 표준 요청을 가진 코히어런스 에이전트는 RspCnflt 스누프 응답을 이용하여 응답할 수 있다. 이러한 응답은 홈 에이전트로 보내는 포워드 요청일 수 있다. 메시지는 요청이기 때문에, 이를 송신하기 전에, 코히어런스 에이전트는 자원을 할당하여 홈 에이전트가 송신할 응답을 처리할 수 있다. (몇몇 사례에서, 코히어런스 에이전트는 코히어런스 에이전트가 포워드 자원을 모두 소진했을 때 스누프들이 충돌하는 것을 막아준다.) 코히어런스 에이전트는 포워드 응답을 처리할 때 사용할 충돌 스누프에 관한 정보를 저장할 수 있다. 충돌을 검출한 후 그리고 포워드 응답을 처리할 때까지, 코히어런스 에이전트는 동일한 어드레스로의 다른 스누프를 상관하지 않도록 보장받을 수 있다.
일부 예에서, 홈 에이전트가 포워드 요청을 수신할 때, 홈 에이전트는 스누프 응답을 기록하지 않는다. 그 대신에, 홈 에이전트는 충돌하는 코히어런스 에이전트에게 포워드 응답을 송신할 수 있다. 일 예에서, 포워드 요청(RspCnflt)은 스누프 응답처럼 보이지만 홈 에이전트는 이것을 그렇게 취급하지 않는다. 홈 에이전트는 메시지를 스누프 응답으로서 기록하지 않고, 그 대신 포워드 응답을 송신한다. 구체적으로, 홈 에이전트가 수신하는 매 포워드 요청(RspCnflt) 마다, 홈 에이전트는 포워드 응답(FwdCnfltO)을 요청 코히어런스 에이전트에게 송신한다.
HPI 통신 패브릭은 포워드 응답들 및 홈 에이전트와 목표로 하는 코히어런스 에이전트 사이에서 순차적 완료들을 순서화한다. 따라서 패브릭은 충돌하는 코히어런스 에이전트에서 초기의 충돌을 나중의 충돌과 구별하도록 기능할 수 있다. 시스템-레벨의 관점에서 볼 때, 초기의 충돌은 홈 에이전트가 아직 처리하지 않은 요청에 스누프가 맞닥뜨릴 때 발생하며, 나중의 충돌은 홈 에이전트가 이미 처리한 요청에 스누프가 맞닥뜨릴 때 발생한다. 홈 에이전트의 관점에서 볼 때, 초기의 충돌은 홈 에이전트가 아직 수신하지 않은 또는 처리를 시작하지 않은 요청에 현재 활성중인 요청의 스누프가 맞닥뜨릴 때 발생하고, 나중의 충돌은 이미 처리한 요청에 스누프가 맞닥뜨릴 때 발생한다. 즉, 나중의 충돌은 홈 에이전트가 이미 완료 응답을 송신한 요청과 맞물려 있다. 그래서, 홈 에이전트가 나중의 충돌에 대해 포워드 요청을 수신할 때, 홈 에이전트는 이미 충돌하는 에이전트의 미처리 요청에 대한 완료 메시지를 송신하였을 것이다. 홈 에이전트로부터 코히어런스 에이전트까지의 순서화된 완료 응답들 및 포워드 응답들을 정렬함으로써, 코히어런스 에이전트는 그의 충돌 요청의 처리 상태에 의해 충돌이 초기에 또는 나중에 있었는지를 결정할 수 있다.
코히어런스 에이전트가 포워드 응답을 수신할 때, 코히어런스 에이전트는 그의 충돌하는 요청의 상태를 사용하여 그 충돌이 초기에 또는 나중에 있었는지 그리고 언제 원래 스누프를 처리할지를 결정한다. 통신 패브릭의 정렬 요건 때문에, 충돌하는 요청은 그 충돌이 초기에 또는 나중에 있었는지를 표시한다. 만일 완료가 수신되었다고 요청 상태가 표시하면, 이것은 나중의 충돌이며, 그렇지 않으면 이것은 초기의 충돌이다. 대안으로, 만일 요청이 아직 그의 응답(들)을 기다리고 있는 중이라고 요청 상태가 표시하면, 이것은 초기의 충돌이며, 그렇지 않으면, 이것은 나중의 충돌이다. 충돌의 타입은 언제 스누프를 처리할지를 결정한다. 즉, 코히어런스 에이전트의 관점에서 보면, 초기의 충돌은 스누프가 에이전트의 충돌하는 요청에 앞서 요청을 처리하는 것을 의미하고, 나중의 충돌은 에이전트의 충돌하는 요청 다음에 요청이 처리되는 것을 의미한다. 순서화가 이루어지면, 초기 충돌에 대하여, 코히어런스 에이전트는 즉시 원래의 스누프를 처리하며; 나중의 충돌에 대하여, 코히어런스 에이전트는 충돌하는 요청이 그의 (판독을 위한) 데이터를 수신할 때까지 그리고 그의 프로세서가 스누프를 처리하기 전에 완료된 요청에 의거하여 행동할 기회를 가질 때까지 기다린다. 충돌하는 스누프가 처리될 때, 코히어런스 에이전트는 홈 에이전트가 최종 기록할 스누프 응답을 발생할 것이다.
라이트백 요청을 하는 모든 충돌들은 나중 충돌일 수 있다. 코히어런스 에이전트의 관점에서 나중 충돌은 에이전트의 요청이 스누프의 요청 다음에 처리될 때이다. 이러한 정의에 의하면, 라이트백 요청을 하는 모든 충돌들은 라이트백이 처음에 처리되기 때문에 나중 충돌로서 취급될 수 있다. 그렇지 않으면, 데이터 일치성 및 일관성은 만일 홈 에이전트가 메모리로의 라이트백 커미트 다음에 요청을 처리하였을 경우에는 맞지 않을 수 있다. 라이트백을 가진 모든 충돌들이 나중의 충돌이라 간주되기 때문에, 코히어런스 에이전트는 미해결 라이트백 요청이 완료될 때까지 스누프들이 충돌하지 않도록 구성될 수 있다. 또한, 라이트백은 포워드들이 처리되지 못하게도 할 수 있다. 다른 예들 중에서, 활성 라이트백에 의해 포워드들을 막는 것은 또한 캐시 불가한 저장소들을 지원하기 위한 프로토콜 요건으로서 구현될 수 있다.
코히어런스 에이전트가 그의 캐시를 스누프하는 요청을 수신하면, 코히어런스 에이전트는 코히어런스 프로토콜이 이를 허용할 것인지를 먼저 체크할 수 있고, 그런 다음 스누프를 처리하고 응답을 발생할 수 있다. 하나 이상의 상태 테이블들이 프로토콜 사양을 정의하는 한 세트의 상태 테이블 내에 정의될 수 있다. 하나 이상의 상태 테이블들은 언제 코히어런스 에이전트가 스누프를 처리할지 그리고 코히어런스 에이전트가 캐시를 스누프할지 또는 그 대신 충돌 포워드 요청을 발생할지를 명시할 수 있다. 일 예에서, 코히어런스 에이전트가 스누프를 처리하는 두 가지 조건이 있다. 첫째 조건은 코히어런스 에이전트가 스누프 어드레스로의 REQ 요청(Rd* 또는 Inv*)을 가질 때 그리고 코히어런스 에이전트가 이용 가능한 포워드 자원을 가질 때이다. 이 경우, 코히어런스 에이전트는 포워드 요청(RspCnflt)을 발생하여야 한다. 두 번째 조건은 코히어런스 에이전트가 스누프 어드레스로의 REQ, Wb*, 또는 EvctCln 요청을 가지고 있지 않을 때이다. 상태 테이블은 코히어런스 에이전트가 그러한 각각의 조건에 따라서 어떻게 스누프를 처리하는지를 정의할 수 있다. 일 예에서, 다른 조건 하에서, 코히어런스 에이전트는 포워드 자원이 이용 가능해질 때 까지(제 1 조건) 또는 블록킹 Wb* 또는 EvctCln가 그의 CmpU 응답을 수신할 때까지(제 2 조건) 스누프를 차단할 수 있다. NonSnp* 요청은 스누프 처리에 영향을 미치지 않을 수 있으며 코히어런스 에이전트는 스누프를 어떻게 처리할지 또는 차단할지 결정할 때 NonSnp* 엔트리들을 무시할 수 있다는 것을 주목하자.
포워드 요청을 발생할 때, 코히어런스 에이전트는 포워드 응답에 필요한 자원을 예약할 수 있다. 일 예에서, HPI 코히어런스 프로토콜은 (최소한 한 개 이외의) 최소 개수의 포워드 응답 자원들을 필요로 하지 않을 수 있으며 코히어런스 에이전트가 이용 가능한 어느 포워드 응답 자원도 가지고 있지 않을 때 코히어런스 에이전트로 하여금 스누프를 차단할 수 있게 할 수 있다.
코히어런스 에이전트가 그의 캐시에서 스누프를 처리하는 방법은 스누프 타입과 현재의 캐시 상태에 달려 있을 수 있다. 그러나, 특정 스누프 타입과 캐시 상태에 대해, 많은 허용된 응답이 있을 수 있다. 예를 들면, 다른 예들 중에서, 충돌하지 않는 SnpMigr을 수신하는(또는 SnpMigr 다음에 포워드 응답을 처리하는) 완전 수정된 라인을 가진 코히어런스 에이전트는 다음 중 임의의 것을 수행할 수 있다: 즉, S로 등급을 낮추고, 묵시적 라이트백을 홈에게 송신하고 Data_F를 요청자에게 송신하기; S로 등급을 낮추고, 묵시적 라이트백을 홈에게 송신하기; I로 등급을 낮추고, Data_M을 요청자에게 송신하기; I로 등급을 낮추고, 묵시적 라이트백을 홈에게 송신하고 Data_E를 요청자에게 송신하기; I로 등급을 낮추고, 묵시적 라이트백을 홈에게 송신하기.
HPI 코히어런스 프로토콜은 코히어런스 에이전트로 하여금 부분 마스크를 갖는 수정된 라인을 그의 캐시에 저장하게 한다. 그러나, M 카피들에 대해 모든 로우(row)들은 풀(Full) 또는 엠프티(Empty) 마스크를 필요로 할 수 있다. 일 예에서, HPI 프로토콜은 부분 라인들의 묵시적 라이트백을 제한할 수 있다. 스누프 요청(또는 포워드 응답)으로 인한 부분 M 라인을 내보내고자 하는 코히어런스 에이전트는 먼저 묵시적 라이트백을 시작하고 묵시적 라이트백이 완료될 때까지 스누프(또는 포워드)를 차단할 수 있다.
포워드 응답에 필요한 정보 저장하기: 일 실시예에서, HPI 코히어런스 프로토콜은 코히어런스 에이전트로 하여금 발송 요청 버퍼(outgoing request buffer (ORB))로부터 포워드 응답 정보를 저장하게 한다. 정보를 분리하는 것은 충돌 시 포함되는 엔트리와 무관하게, 응답들이 모두 수집될 때 ORB가 ORB 자원 및 RTID를 해제하게 한다. 상태 테이블들은 포워드 응답을 위해 저장할 정보가 무엇인지 그리고 무슨 조건 하에서 그리 하는지를 명시하기 위해 사용될 수 있다.
HPI 코히어런스 프로토콜에서 포워드 응답은 요청 에이전트의 NID, 및 홈 TID를 포함할 수 있다. 포워드 응답에는 원래 스누프 타입 또는 RTID가 포함되지 않는다. 코히어런스 에이전트는 포워드 응답과 함께 사용하고자 하면 포워드 타입 및 RTID를 저장할 수 있으며, 코히어런스 에이전트는 들어오는 포워드 응답을 적절한 포워드 엔트리와 매칭하기 위해(그리고 홈 NID를 발생하기 위해) 어드레스를 사용할 수 있다. 포워드 타입을 저장하는 것은 옵션일 수 있다. 아무 타입도 저장되지 않으면, 코히어런스 에이전트는 FwdInv 타입을 갖는 것으로서 포워드 응답을 처리할 수 있다. 마찬가지로, RTID를 저장하는 것은 옵션일 수 있으며 코히어런스 에이전트가 포워드 응답을 처리할 때 캐시-투-캐시 전송을 지원할 때만 발생할 수 있을 뿐이다.
앞에서 언급한 바와 같이, 코히어런스 에이전트는 스누프 요청이 미처리 요청과 충돌할 때 포워드 요청을 발생할 수 있다. 포워드 요청은 스누프 요청 내 어드레스로부터 결정될 수 있는 스누프를 발생한 홈 에이전트를 목표로 한다. 그래서, destNID는 홈 에이전트를 식별할 수 있다. 포워드 요청은 또한 원래 요청을 처리하기 위해 할당된 홈 에이전트의 자원의 TID 및 포워드 요청을 발생하는 코히어런스 에이전트의 NID를 포함할 수 있다.
일 실시예에서, 코히어런스 에이전트는 데이터 일관성을 유지하기 위해 라이트백 요청에 대하여 포워드를 차단할 수 있다. 코히어런스 에이전트는 또한 라이트백 요청을 사용하여 캐시 불가한(uncacheable; UC) 데이터를 커미트한 다음 포워드를 처리할 수 있으며 또한 코히어런스 에이전트로 하여금 포워드를 위한 부분적 묵시적 라이트백을 지원하는 프로토콜 대신 부분적 캐시 라인을 라이트백하게 할 수 있다. 실제로, 일 실시예에서, 코히어런스 에이전트는 (비록 M 카피가 풀 또는 엠프티 마스크를 포함하고 있을지라도) 부분적 마스크를 이용하여 수정된 라인을 그의 캐시 내에 저장하도록 허용될 수 있다.
일 예에서, 초기의 충돌은 임의의 요청이 수신되기 전에 미해결 표준 요청에 직면하는 포워드 응답에 의해 해결될 수 있다. 일 예에서, 대응하는 프로토콜 상태 테이블은 표준 요청 엔트리가 그대로 ReqSent 상태에 있는 한 포워드 응답이 처리될 수 있다는 것을 명시할 수 있다. 나중의 충돌은 미처리 요청이 그의 완료 응답을 수신한 이후에 도달하는 포워드 응답에 의해 해결될 수 있다. 이런 일이 일어날 때, 요청은 마무리되었을 것이거나(이미 그의 데이터를 수신하였거나 Inv* 요청이었거나) 또는 엔트리는 그의 RcvdCmp 상태에 있다. 만일 요청이 여전히 그의 데이터를 기다리고 있으면, 코히어런스 에이전트는 그 데이터가 수신(및 사용)될 때까지 포워드를 막고 있어야 한다. 만일 충돌하는 Rd* 또는 Inv * 요청이 마무리되었으면, 포워드 응답은 코히어런스 에이전트가 캐시 라인의 명시적 라이트백을 시작하지 않는 한 처리될 수 있다. 코히어런스 에이전트가 동일 어드레스로의 포워드 응답(또는 스누프 요청)을 가지고 있는 동안 코히어런스 에이전트가 명시적 라이트백을 시작하도록 허가 받을 수 있으며, 그래서 부분적인 라인(예를 들면, 부분적으로 수정된 라인으로 스누프 요청") 또는 캐시 불가한 저장소가 적절하게 메모리로 커미트된다.
도 7을 참조하면, 일 예의 충돌 관리 방식의 제 1 예가 도시된다. 제 1 캐시(또는 코히어런스) 에이전트(705)는 결과적으로 메모리(715)를 판독하게 되는, 데이터의 특정 라인에 대한 판독 요청을 홈 에이전트(710)에 송신할 수 있다. 캐시 에이전트(705)에 의한 판독 요청 직후, 다른 하나의 캐시 에이전트(720)가 동일 라인의 소유권 요청(a request for ownership (RFO))을 한다. 그러나, 홈 에이전트(710)는 캐시 에이전트(720)로부터 RFO를 수신하기 전에 캐시 에이전트(705)로 Data_S_CmpO를 송신하였다. RFO는 스누프(SnpFO)가 캐시 에이전트(705)(는 물론이고 다른 캐시 에이전트들)에게 송신되게 할 수 있으며, 이 스누프는 제 1 캐시 에이전트(705)에 의해 완료 Data_S_CmpO를 수신하기 전에 수신된다. 캐시 에이전트(705)는, 스누프 SnpFO를 수신하면, 그의 원래 판독 요청에서 요청된 메모리의 라인과 관련된 잠재적 충돌을 식별할 수 있고 SnpFO에 응답함으로써 포워드 응답 충돌 메시지(RspCnflt)를 이용하여 홈 에이전트(710)에게 충돌을 통지할 수 있다. 홈 에이전트(710)는 포워드 응답 RspCnflt에 응답하여 포워드 응답(FwdCnfltO)을 송신할 수 있다. 이후 캐시 에이전트(705)는 공유된 데이터 완료 Data_S_CmpO를 수신하고 I 상태에서 S 상태로 천이할 수 있다. 그런 다음 캐시 에이전트(705)에 의해 포워드 응답 FwdCnfltO이 수신될 수 있으며 캐시 에이전트(705)는 포워드 응답 RspCnflt의 송신을 촉발했던 스누프 SnpFO에 기초하여 포워드 응답 메시지 FwdClfltO에 어떻게 응답할지를 결정할 수 있다. 이 예에서, 캐시 에이전트(705)는 예를 들어, 포워드 응답 메시지 FwdClfltO에 대한 응답을 결정하기 위해 프로토콜 상태 테이블을 참고할 수 있다. 도 7의 특정 예에서, 캐시 에이전트(705)는 F-상태로 천이할 수 있으며 Data_S_CompO 메시지에 실려 홈 에이전트(710)로부터 수신한 데이터의 S-카피를 Data_F 메시지에 실어 제 2 캐시 에이전트(720)에게 송신할 수 있다. 제 1 캐시 에이전트(705)는 또한 응답 메시지 RspFwdS를 홈 에이전트(710)에게 송신하여 홈 에이전트(710)에게 제 1 캐시 에이전트가 그의 데이터의 카피를 제 2 캐시 에이전트와 공유하고 있다고 통지할 수 있다.
도 8의 간략화된 흐름도에서 도시된 다른 예시적인 예에서, 제 1 캐시 에이전트(705)는 메모리의 특정 라인의 소유권 요청(RFO)을 홈 에이전트(710)로 송신할 수 있다. 그 직후, 제 2 캐시 에이전트는 M 상태에서 메모리의 동일 라인의 요청으로서 RdInvOwn 메시지를 홈 에이전트(710)로 송신할 수 있다. 제 1 캐시 에이전트(705)로부터의 RFO 메시지와 관련하여, 홈 에이전트(710)는 스누프(SnpFO)를 제 2 캐시 에이전트(720)로 송신할 수 있고, 제 2 캐시 에이전트(720)가 이를 두 RFO 및 RdInvOwn 요청을 받은 메모리의 라인과 관련된 잠재적인 충돌로서 식별할 수 있다. 따라서, 제 2 캐시 에이전트(720)는 포워드 요청 RspCnflt을 홈 에이전트(720)로 송신할 수 있다. 홈 에이전트(720)는 제 2 캐시 에이전트(720)의 포워드 요청에 대해 포워드 응답을 이용하여 응답한다. 제 2 캐시 에이전트(720)는 원래 스누프 SnpFO에 포함된 정보에 기초하여 포워드 응답에 대한 응답을 결정한다. 이 예에서, 제 2 캐시 에이전트(720)는 제 2 캐시 에이전트(720)가 I-상태에 있음을 표시하는 스누프 응답 Rspl으로 응답한다. 홈 에이전트(710)는 스누프 응답 Rspl을 수신하고, 제 1 캐시 에이전트가 E-상태로 천이하게 하는 배타적 데이터 완료(data complete exclusive)(Data_E_CmpO)를 제 1 캐시 에이전트(705)로 송신하는 것이 적절하다고 결정한다. 완료를 송신한 후, 홈 에이전트(710)는 제 2 캐시 에이전트의 RdInvOwn 요청에 대하여 응답을 시작하여, 제 1 캐시 에이전트(705)의 스누프 요청 SnpInvO을 시작할 수 있다. 제 1 캐시 에이전트(705)는 결과적으로 스누프가 제 2 캐시 에이전트(720)에 의해 라인의 배타적 M-상태 카피를 획득하려는 요청이라고 식별할 수 있다. 결과적으로, 제 1 캐시 에이전트(705)는 M 상태로 천이하여 라인의 그의 카피를 (Data_M 메시지와 함께) M-상태 카피로서 제 2 캐시 에이전트(720)로 송신한다. 부가적으로, 제 1 캐시 에이전트(705)는 또한 라인의 카피가 제 2 캐시 에이전트(720)로 송신되었고 또한 제 1 캐시 에이전트가 I-상태로 천이하였다고(카피의 소유권이 제 2 캐시 에이전트(720)로 넘어 갔다고) 표시하는 응답 메시지 RspFwdI를 송신할 수 있다.
다음으로 도 9의 예를 참조하면, 다른 간략화된 플로우차트가 도시된다. 이 예에서, 캐시 에이전트(720)는 데이터를 (예를 들면, InvItoE 메시지를 통해) 수신하지 않고 캐시 불가(UC) 라인의 배타적 소유권을 요청하려 시도한다. 제 1 캐시 에이전트(705)는 E-상태에서 캐시 라인에 대한 완료 메시지(RdInv)를 송신한다. HPI 코히어런스 프로토콜은 만일 요청된 라인이 이미 M 상태에서 캐시되어 있는 경우, 라인이 메모리에 기록된 다음에 제 1 캐시 에이전트(705)의 RdInv에 응답하여 E데이터가 전달될 것이라고 명시할 수 있다. 홈 에이전트(710)는 InvItoE 요청에 대한 완료(CmpO)를 송신하고 RdInv 요청에 기초하여 스누프(SnpInv)를 캐시 에이전트(720)로 송신할 수 있다. 만일 캐시 에이전트(720)가 완료에 앞서 스누프를 수신하면, 캐시 에이전트(720)는 스누프가 그의 배타적 소유권 요청과 동일한 캐시 라인에 관련되어 있음을 식별하고 포워드 요청 RspCnflt을 통해 충돌을 표시할 수 있다. 앞의 예에서와 같이, 홈 에이전트(710)는 포워드 요청에 대하여 포워드 응답(FwdCnfltO)으로 응답하도록 구성될 수 있다. 포워드 응답으로 다수개의 허용 가능한 응답이 허용될 수 있다. 예를 들어, 도 9의 예에서 도시된 바와 같이, 캐시 에이전트(720)는 명시적 라이트백(예를 들면, WbMtoI)을 개시할 수 있으며 명시적 라이트백이 완료(예를 들면, CmpU) 될 때까지 스누프(또는 포워드)를 차단할 수 있다. 이후 캐시 에이전트는 스누프 응답(Rspl)을 완료할 수 있다. 그런 다음 다른 예들 중에서, 홈 에이전트(710)는 제 1 캐시 에이전트(705)의 RdInv 요청을 처리하고 완료 Data_E_CompO를 반환할 수 있다.
도 9의 예와 같이, 캐시 에이전트가 동일 어드레스에 대한 판독 요청 또는 무효 요청을 가지고 있고 또한 부분 수정된 라인(종종 "매립된-M(buried-M)"이라고 지칭됨)을 캐시하였을 때 캐시 에이전트가 스누프를 수신하는 경우의 예에서, 일부 구현예에서, HPI 코히어런스 프로토콜은 에이전트로 하여금 1) 스누프를 방지하고 있는 동안 라인의 명시적 라이트백(부분적)을 수행하거나, 2) 포워드 요청(RspCnflt)을 홈 에이전트로 송신하게 한다. 만일 (1)이 선택되면, 에이전트는 라이트백에 대한 완료를 수신한 다음에 스누프를 처리한다. 만일 (2)가 선택되면, 에이전트는 그의 판독 요청 또는 무효 요청이 아직도 응답을 기다리고 있고 에이전트가 부분 수정된 라인을 아직도 가지고 있는 동안 포워드 응답(FwdCnfltO)을 수신할 것이라는 것이 가능하다. 만일 그것이 그 경우라면, 프로토콜은 에이전트로 하여금 라인의 명시적 라이트백(부분적)을 수행하면서 포워드를 차단하게 한다. 라이트백 동안, 프로토콜은 에이전트가 판독 요청 또는 무효 요청에 대한 응답을 확실하게 수신하지 못하게 한다. (에이전트가 판독 요청 또는 무효 요청을 가지고 있을 때 조차도, 코히어런스 에이전트가 명시적 라이트백을 발생하게 하고 스누프 및 포워드를 차단하게 하는) 전술한 메커니즘은 또한 라이터(writer)가 전역적 확인가능성(global observability)을 획득한 다음에 부분적 또는 UC 기록이 메모리로 발송되도록 보장하는데 사용된다.
코히어런스 에이전트는 부분적/UC 기록에 대하여 두 단계 처리를 사용한다. 첫째, 코히어런스 에이전트는 캐시라인의 소유권을 가지고 있는지를 체크하고 그러하지 않은 경우 프로토콜에서 소유권(무효) 요청을 발생한다. 둘째, 코히어런스 에이전트는 기록을 수행한다. 첫 단계에서, 만일 코히어런스 에이전트가 소유권 요청을 수행하였으면, 그 요청은 그 라인에 대한 타 에이전트의 요청과 충돌할 것이 가능하고, 이는 에이전트가 소유권 요청이 미해결 중인 동안 스누프를 받을 수 있음을 의미한다. 코히어런스 프로토콜 요건에 대하여, 에이전트는 충돌하는 스누프에 대해 포워드 요청을 발행할 것이다. 포워드 응답을 기다리고 있는 동안, 에이전트는 소유권 요청의 완료를 수신할 수 있고, 이는 라인의 소유권을 에이전트에게 부여하여 그 에이전트로 하여금 부분/UC 기록을 위해 라이트백을 개시하게 한다. 이러한 일이 일어나는 동안, 에이전트는 에이전트가 또한 처리할 의무를 갖는 포워드 응답을 수신할 수 있다. 코히어런스 에이전트는 두 가지 행위를 연결하지 않을 수 있다. 그 대신에 코히어런스 에이전트는 포워드를 처리하는 것과 별도로 부분/UC 기록 데이터를 라이트백하고, 라이트백을 먼저 수행한다. 예를 들어, 다른 예들 및 특징들 중에서, 캐시 에이전트는 라이트백 요청을 사용하여 UC 데이터를 커미트한 다음 포워드를 처리하고 부분 캐시 라인을 라이트백한다.
HPI는 다른 예들 중에서, 메인프레임, 서버 시스템, 퍼스널 컴퓨터, 모바일 컴퓨터(예를 들어, 태블릿, 스마트폰, 개인 디지털 시스템 등), 스마트 기기, 게이밍 또는 엔터테인먼트 콘솔 및 셋톱 박스를 비롯한, 임의의 각종 컴퓨팅 디바이스 및 시스템에 포함될 수 있다. 예를 들어, 도 10을 참조하면, 멀티코어 프로세서를 포함하는 컴퓨팅 시스템의 블록도의 실시예가 도시된다. 프로세서(1000)는 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 휴대형 프로세서, 애플리케이션 프로세서, 코-프로세서, 시스템 온 칩(SOC), 또는 기타 디바이스와 같은 임의의 프로세서 또는 프로세싱 디바이스를 포함한다. 일 실시예에서, 프로세서(1000)는 적어도 두 개의 코어 - 코어(1001 및 1002)를 포함하며, 이들 코어는 비대칭 코어 또는 대칭 코어(도시된 실시예)를 포함할 수 있다. 그러나, 프로세서(1000)는 대칭 또는 비대칭일 수 있는 임의 개수의 프로세싱 요소를 포함할 수 있다.
일 실시예에서, 프로세싱 요소는 소프트웨어 스레드를 지원하는 하드웨어 또는 로직을 말한다. 하드웨어 프로세싱 요소의 예는 실행 상태 또는 아키텍처 상태와 같은 프로세서의 상태를 유지할 수 있는 스레드 유닛, 스레드 슬롯, 스레드, 프로세스 유닛, 컨텍스트, 컨텍스트 유닛, 논리 프로세서, 하드웨어 스레드, 코어 및/또는 임의의 다른 요소를 포함한다. 다시 말해서, 일 실시예에서, 프로세싱 요소는 소프트웨어 스레드, 오퍼레이팅 시스템, 애플리케이션 또는 기타 코드와 같은 코드와 독립적으로 연관될 수 있는 임의의 하드웨어를 말한다. 전형적으로 물리적 프로세서 (또는 프로세서 소켓)은 코어 또는 하드웨어 스레드와 같은 임의 개수의 기타 프로세싱 요소들을 잠재적으로 포함하는 집적 회로를 말한다.
코어는 종종 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로에 배치된 로직을 말하며, 여기서 각각의 독립적으로 유지되는 아키텍처 상태는 적어도 일부의 전용된 실행 자원과 연관된다. 코어와 대조적으로, 하드웨어 스레드는 전형적으로 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로에 배치된 임의의 로직을 말하며, 여기서 독립적으로 유지되는 아키텍처 상태는 실행 자원으로의 액세스를 공유한다. 알 수 있는 바와 같이, 어떤 자원이 공유되고 다른 자원이 아키텍처 상태에 전용될 때, 하드웨어 스레드와 코어의 명칭 간의 경계가 겹친다. 그러나 종종, 코어와 하드웨어 스레드는 오퍼레이팅 시스템에 의해 개별적인 논리 프로세서로서 간주되며, 이 경우 오퍼레이팅 시스템은 각 논리 프로세서의 동작을 개별적으로 스케줄할 수 있다.
도 10에 도시된 바와 같이, 물리 프로세서(1000)는 두 개의 코어 - 코어(1001 및 1002)를 포함한다. 여기서, 코어(1001 및 1002)는 대칭 코어인 것으로, 즉, 코어들은 동일한 구성, 기능 유닛, 및/또는 로직을 갖는 것으로 간주된다. 다른 실시예에서, 코어(1001)는 비순차적 프로세서 코어를 포함하는 반면, 코어(1002)는 순차적 프로세서 코어를 포함한다. 그러나, 코어(1001 및 1002)는 네이티브 코어, 소프트웨어 피관리 코어, 네이티브 명령어 세트 아키텍처(Instruction Set Architecture (ISA))를 실행하도록 적응된 코어, 변환된 명령어 세트 아키텍처(ISA)를 실행하도록 적응된 코어, 공통-설계된 코어, 또는 기타 공지된 코어와 같은 임의 형태의 코어로부터 개별적으로 선택될 수 있다. 이기종 코어 환경(즉, 비대칭 코어)에서, 이진 변환과 같은 몇 가지 형태의 변환이 하나 또는 두 코어에서 코드를 스케줄 또는 실행하기 위해 이용될 수 있다. 추가적으로 설명하기 위하여, 코어(1002) 내 유닛들은 도시된 실시예에서 유사한 방식으로 동작하므로, 코어(1001)에서 도시된 기능 유닛들은 아래에서 더 상세히 설명된다.
도시된 바와 같이, 코어(1001)는 하드웨어 스레드 슬롯(1001a 및 1001b)이라고도 지칭될 수 있는 두 개의 하드웨어 스레드(1001a 및 1001b)를 포함한다. 그러므로, 일 실시예에서, 오퍼레이팅 시스템과 같은 소프트웨어 엔티티는 프로세서(1000)를 잠재적으로 네 개의 소프트웨어 스레드를 동시에 실행할 수 있는 네 개의 개별 프로세서, 즉 논리 프로세서 또는 프로세싱 요소로서 프로세서(1000)라고 간주한다. 앞에서 언급한 바와 같이, 제 1 스레드는 아키텍처 상태 레지스터(1001a)와 연관되고, 제 2 스레드는 아키텍처 상태 레지스터(1001b)와 연관되고, 제 3 스레드는 아키텍처 상태 레지스터(1002a)와 연관될 수 있으며, 제 4 스레드는 아키텍처 상태 레지스터(1002b)와 연관될 수 있다. 여기서, 각각의 아키텍처 상태 레지스터(1001a, 1001b, 1002a, 및 1002b)는 앞에서 설명한 것처럼 프로세싱 요소, 스레드 슬롯, 또는 스레드 유닛이라고도 지칭될 수 있다. 도시된 바와 같이, 아키텍처 상태 레지스터(1001a)는 아키텍처 상태 레지스터(1001b) 내에 복제되며, 그래서 논리 프로세서(1001a) 및 논리 프로세서(1001b)에 대한 개개의 아키텍처 상태/컨텍스트가 저장될 수 있다. 코어(1001)에서, 스레드(1001a 및 1001b)에 대한 할당자 및 리네이머(renamer) 블록(1030) 내의 명령어 포인터 및 리네이밍 로직과 같은 다른 더 작은 자원들 또한 복제될 수 있다. 재정렬/리타이어먼트(reorder/retirement) 유닛(1035) 내 리-오더 버퍼, ILTB(1020), 적재/저장 버퍼, 및 큐와 같은 일부 자원들은 파티셔닝을 통해 공유될 수 있다. 범용 내부 레지스터, 페이지-테이블 기반 레지스터(들), 하위 레벨 데이터-캐시 및 데이터-TLB(1051), 실행 유닛(들)(1040), 및 비순차적 유닛의 부분(1035)과 같은 기타 자원들은 잠재적으로 완전히 공유된다.
프로세서(1000)는 종종 완전 공유될 수 있거나, 파티셔닝을 통해 공유될 수 있거나, 프로세싱 요소에 의해/프로세싱 요소에 전용될 수 있는 기타 자원을 포함하기도 한다. 도 10에서, 프로세서의 예시적인 논리 유닛/자원을 가진 전적으로 예시적인 프로세서의 실시예가 도시된다. 프로세서는 이러한 기능적 유닛들 중 임의의 기능적 유닛들을 포함하거나 제외할 수 있을 뿐만 아니라, 도시되지 않은 임의의 다른 공지된 기능적 유닛, 로직, 또는 펌웨어를 포함할 수 있다는 것을 주목하자. 도시된 바와 같이, 코어(1001)는 간소화한 대표적인 비순차적(out-of-order (OOO)) 프로세서 코어를 포함한다. 그러나, 여러 실시예에서 순차적 프로세서가 이용될 수 있다. OOO 코어는 실행될/취할 브랜치들을 예측하는 브랜치 타겟 버퍼(1020) 및 명령어의 어드레스 변환 엔트리를 저장하는 명령어-변환 버퍼(an instruction-translation buffer (I-TLB))(1020)를 포함한다.
코어(1001)는 페치 유닛(1020)에 연결되어 페치된 요소를 디코딩하는 디코드 모듈(1025)를 더 포함한다. 일 실시예에서, 페치 로직은 스레드 슬롯(1001a, 1001b)과 각기 연관된 개개의 시퀀서를 포함한다. 보통 코어(1001)는 프로세서(1000) 상에서 실행가능한 명령어를 정의/명시하는 제 1 ISA와 연관된다. 종종 제 1 ISA의 일부인 머신 코드 명령어는 수행될 명령 또는 연산을 참조/명시하는 명령어(오피코드라고도 지칭됨)의 일부분을 포함한다. 디코드 로직(1025)은 이러한 명령어를 이들의 오피코드로부터 인식하고 디코딩된 명령어를 전달하여 파이프라인에서 제 1 ISA에 의해 정의된 바와 같이 처리하는 회로를 포함한다. 예를 들면, 아래에서 더 상세히 설명하는 바와 같이, 디코더(1025)는 일 실시예에서, 트랜잭션 명령어와 같은 특정 명령어를 인식하도록 설계 또는 적응된 로직을 포함한다. 디코더(1025)에 의한 인식의 결과로서, 아키텍처 또는 코어(1001)는 특정하고, 사전에 정의된 조치를 취하여 적절한 명령어와 연관된 작업을 수행한다. 본 명세서에서 기술된 작업, 블록, 동작, 및 방법 중 임의의 것은 단일 또는 복수의 명령어에 응답하여 수행될 수 있고, 그 중 일부는 신규 또는 이전의 명령어일 수 있다는 것을 주목하는 것이 중요하다. 일 실시예에서, 디코더(1026)는 동일한 ISA(또는 그의 서브세트)를 인식한다는 것을 주목하자. 대안으로, 이기종 코어 환경에서, 디코더(1026)는 제 2 ISA(제 1 ISA의 서브세트 또는 별도의 ISA)를 인식한다.
일 예에서, 할당자 및 리네이머 블록(1030)은 명령어 처리 결과를 저장하는 레지스터 파일과 같이, 자원을 보존하는 할당자를 포함한다. 그러나, 스레드(1001a 및 1001b)는 잠재적으로 비순차적 순서로 실행할 수 있으며, 이 경우 할당자 및 리네이머 블록(1030)은 또한 명령어 결과를 추적하는 재정렬 버퍼와 같은 다른 자원을 갖고 있다. 유닛(1030)은 또한 프로그램/명령어 참조 레지스터를 프로세서(1000) 내부의 다른 레지스터로 리네임하는 레지스터 리네이머를 포함할 수 있다. 재정렬/리타이어먼트 유닛(1035)은 앞에서 언급한 재정렬 버퍼, 적재 버퍼, 및 저장 버퍼와 같이, 비순차적 실행을 지원하고 나중에 비순차적으로 실행된 명령어의 순차적 리타이어먼트를 지원하는 컴포넌트를 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들)(1040)은 실행 유닛들의 명령어/동작을 스케줄하는 스케줄러 유닛을 포함한다. 예를 들면, 부동 소수점 명령은 이용 가능한 부동 소숫점 실행 유닛을 갖는 실행 유닛의 한 포트에서 스케줄된다. 실행 유닛와 연관된 레지스터 파일이 또한 정보 명령어 처리 결과를 저장하기 위해 포함된다. 예시적인 실행 유닛은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 적재 실행 유닛, 저장 실행 유닛, 및 기타 공지된 실행 유닛을 포함한다.
하위 레벨 데이터 캐시 및 데이터 변환 버퍼(D-TLB)(1050)는 실행 유닛(들)(1040)에 연결된다. 데이터 캐시는 잠재적으로 메모리 코히어런시 상태로 유지되는 데이터 오퍼랜드와 같이, 요소에서 최근에 사용된/동작된 것을 저장한다. D-TLB는 물리적 어드레스 변환에 대한 최신의 가상적/선형적인 것을 저장한다. 특정한 예로서, 프로세서는 물리 메모리를 복수의 가상 페이지로 나누는 페이지 테이블 구조를 포함할 수 있다.
여기서, 코어(1001 및 1002)는 온-칩 인터페이스(1010)와 연관된 제 2 레벨 캐시와 같은 상위-레벨 또는 그 이상 레벨의 캐시로의 액세스를 공유한다. 상위-레벨 또는 그 이상 레벨은 실행 유닛(들)으로부터 증가하거나 더 멀어지는 캐시 레벨을 말한다는 것을 주목하자. 일 실시예에서, 상위-레벨 개시는 제 2 또는 제 3 레벨 데이터 캐시와 같이, 프로세서(1000)의 메모리 계층에서 마지막 캐시인 라스트-레벨 데이터 캐시이다. 그러나, 상위 레벨 캐시는 명령어 캐시와 연관될 수 있거나 명령어 캐시를 포함할 수 있으므로, 그렇게 제한되지 않는다. 트레이스 캐시 - 명령어 캐시의 한 형태 - 는 그 대신에 최근에 디코딩된 트레이스를 저장하기 위해 디코더(1025) 뒤에 연결될 수 있다. 여기서, 명령어는 잠재적으로 복수의 마이크로 명령어(마이크로-동작)로 디코딩될 수 있는 매크로-명령어(즉, 디코더에 의해 인식되는 일반 명령어)를 말한다.
도시된 구성에서, 프로세서(1000)는 또한 온-칩 인터페이스 모듈(1010)을 포함한다. 역사적으로, 아래에서 더 상세히 설명되는 메모리 제어기는 프로세서(1000) 외부의 컴퓨팅 시스템에 포함되었다. 이러한 시나리오에서, 온-칩 인터페이스(1010)는 시스템 메모리(1075), (종종 메모리 제어기 허브를 메모리(1075)에 접속시키는 것 및 I/O 제어기 허브를 주변 디바이스에 접속시키는 것을 포함하는) 칩셋, 메모리 제어기 허브, 노스브릿지, 또는 기타 집적 회로와 같이, 프로세서(1000) 외부의 디바이스와 통신한다. 그리고 이러한 시나리오에서, 버스(1005)는 멀티-드롭 버스, 포인트-투-포인트 인터커넥트, 직렬 인터커넥트, 병렬 버스, 코히어런트(예를 들면, 캐시 코히어런트) 버스, 계층화된 프로토콜 아키텍처, 차동 버스, 및 GTL 버스와 같은 임의의 공지된 인터커넥트를 포함할 수 있다.
메모리(1075)는 프로세서(1000)에 전용될 수 있거나 시스템 내 다른 디바이스와 공유될 수 있다. 메모리(1075) 타입의 공통적인 예는 DRAM, SRAM, 비휘발성 메모리(NV 메모리), 및 기타 공지된 저장 디바이스를 포함한다. 디바이스(1080)는 그래픽 가속기, 메모리 제어기 허브에 연결된 프로세서 또는 카드, I/O 제어기 허브에 연결된 데이터 저장소, 무선 송수신기, 플래시 디바이스, 오디오 제어기, 네트워크 제어기, 또는 기타 공지된 디바이스를 포함할 수 있다는 것을 주목하자.
그러나, 최근에 더 많은 로직 및 디바이스가 SOC와 같이 단일 다이 상에 통합되고 있으므로, 이들 디바이스는 각기 프로세서(1000) 상에 통합될 수 있다. 예를 들면, 일 실시예에서, 메모리 제어기 허브는 프로세서(1000)와 동일한 패키지 및/또는 다이 상에 존재한다. 여기서, 코어의 일부분 (온-코어 부분)(1010)은 메모리(1075) 또는 그래픽 디바이스(1080)와 같은 다른 디바이스와 인터페이스하기 위한 하나 이상의 제어기(들)을 포함한다. 그러한 디바이스와 인터페이스하기 위한 인터커넥트 및 제어기를 포함하는 구성은 종종 온-코어(또는 언-코어(un-core) 구성)이라고 지칭하기도 한다. 일 예로서, 온-칩 인터페이스(1010)는 온-칩 통신을 위한 링 인터커넥트 및 오프-칩 통신을 위한 고속의 직렬 포인트-투-포인트 링크(1005)를 포함한다. 그렇지만, SOC 환경에서, 네트워크 인터페이스, 코-프로세서, 메모리(1075), 그래픽 프로세서(1080), 및 임의의 여타 공지된 컴퓨터 디바이스/인터페이스와 같은 더 많은 디바이스들이 단일의 다이 또는 집적된 회로 상에서 통합되어 고기능 및 저전력 소비가 가능한 스몰 폼 팩터를 제공할 수 있다.
일 실시예에서, 프로세서(1000)는 애플리케이션 코드(1076)를 컴파일, 변환, 및/또는 최적화하는 컴파일러, 최적화, 및/또는 변환기 코드(1077)를 실행하여 본 명세서에서 기술된 장치 및 방법을 지원하거나 이들과 인터페이싱할 수 있다. 컴파일러는 종종 소스 텍스트/코드를 타겟 텍스트/코드로 변환하는 프로그램 또는 프로그램의 세트를 포함한다. 보통, 컴파일러를 이용한 프로그램/애플리케이션 코드의 컴파일은 복수의 단계에서 이루어지며 상위-레벨의 프로그래밍 코드를 하위-레벨의 머신 또는 어셈블리 언어 코드로 변환하기 위해 실행된다. 그렇지만, 싱글 패스 컴파일러는 여전히 간단한 컴파일을 위해 이용될 수 있다. 컴파일러는 임의의 공지된 컴파일 기술을 이용할 수 있으며 어휘 분석, 사전처리, 파싱, 시맨틱 분석, 코드 생성, 코드 변환, 및 코드 최적화와 같은 임의의 공지된 컴파일러 동작을 수행할 수 있다.
종종 더 큰 컴파일러가 복수의 단계를 포함하지만, 대부분의 이러한 단계는 종종 두 가지의 일반적인 단계, 즉 (1) 프론트-엔드, 즉 일반적으로 구문론적 처리, 의미론적 처리, 및 일부의 변환/최적화가 발생할 수 있는 프론트-엔드, 및 (2) 백-엔드, 즉 분석, 변환, 최적화, 및 코드 생성이 발생하는 백-엔드 내에 포함된다. 일부 컴파일러는 컴파일러의 프론트-엔드와 백-엔드 간의 서술의 흐릿함을 설명하는 미들이라고 지칭한다. 그 결과로서, 컴파일러의 삽입, 연관, 생성, 또는 기타 동작이라 하는 것은 전술한 단계나 패스 중 임의의 것뿐만 아니라, 컴파일러의 임의의 다른 공지된 단계 또는 패스에서 발생할 수 있다. 예시적인 예로서, 컴파일러는 컴파일의 프론트-엔드 단계에서 호출/동작의 삽입 및 그런 다음 변환 단계 동안 호출/동작의 하위-레벨 코드로의 변환과 같이, 동작, 호출, 함수 등을 잠재적으로 컴파일의 하나 이상의 단계에 삽입한다. 동적 컴파일 동안, 컴파일러 코드 또는 동적 최적화 코드는 그러한 동작/호출을 삽입할 뿐만 아니라 런타임 동안 실행을 위한 코드를 최적화할 수 있다는 것을 주목하자. 특정의 예시적인 예로서, 이진 코드(이미 컴파일된 코드)는 런타임 동안 동적으로 최적화될 수 있다. 여기서, 프로그램 코드는 동적의 최적화 코드, 이진 코드, 또는 이들의 조합을 포함할 수 있다.
컴파일러와 유사한, 이진 변환기와 같은 변환기는 코드를 정적 또는 동적으로 변환하여 코드를 최적화 및/또는 변환한다. 그러므로, 코드, 애플리케이션 코드, 프로그램 코드, 또는 기타 소프트웨어 환경의 실행이라는 것은 (1) 프로그램 코드를 컴파일하기 위해, 소프트웨어 구조를 유지하기 위해, 기타 동작을 수행하기 위해, 코드를 최적화하기 위해, 또는 코드를 변환하기 위해 동적 또는 정적으로 컴파일러 프로그램(들), 최적화 코드 최적화기, 또는 변환기의 실행, (2) 최적화된/컴파일된 애플리케이션 코드와 같은 동작/호출을 포함하는 메인 프로그램 코드의 실행, (3) 라이브러리와 같이, 기타 소프트웨어 관련된 동작을 수행하거나 코드를 최적화하기 위하여 소프트웨어 구조를 유지하는 메인 프로그램 코드와 연관된 기타 프로그램 코드의 실행, 또는 (4) 이들의 조합을 말할 수 있다.
본 발명이 제한된 개수의 실시예에 대해 기술되었지만, 본 기술에서 통상의 지식을 가진 자들에게는 이로부터 다수의 수정과 변경이 인식될 것이다. 첨부의 청구범위는 그러한 모든 수정과 변경이 본 발명의 참 사상과 범위 내에 속하는 것으로 망라하고자 한다.
디자인은 시뮬레이션을 위한 창조에서부터 제조에 이르기까지 여러 단계를 거칠 수 있다. 디자인을 표현하는 데이터는 다수의 방식으로 디자인을 표현할 수 있다. 첫 번째로, 시뮬레이션에서 유용한 것으로서, 하드웨어는 하드웨어 서술 언어 또는 다른 기능적 서술 언어를 이용하여 표현될 수 있다. 또한, 로직 및/또는 트랜지스터 게이트를 가진 회로 레벨 모델은 디자인 프로세서의 일부 단계에서 생성될 수 있다. 뿐만 아니라, 몇몇 단계에서, 대부분의 디자인은 하드웨어 모델로 각종 디바이스의 물리적인 배치를 표현하는 데이터의 레벨에 이른다. 통상의 반도체 제조 기술이 사용되는 경우, 하드웨어 모델을 표현하는 데이터는 집적 회로를 제조하는데 사용되는 마스크 용도의 여러 마스크 층 상에 각종 특징의 존재 또는 부재를 명시하는 데이터일 수 있다. 디자인의 임의의 표현에 있어서, 데이터는 임의의 형태의 머신 판독가능한 매체에 저장될 수 있다. 메모리 또는 디스크와 같은 자기 또는 광 저장소는 정보를 저장하기 위해 변조되거나 그렇지 않고 그러한 정보를 전송하기 위해 생성되는 광 또는 전기파를 통해 전송되는 정보를 저장하는 머신 판독가능한 매체일 수 있다. 코드나 디자인을 표시 또는 전달하는 전기 반송파가 전기 신호의 복사, 버퍼링, 또는 재전송이 수행되는 범위에 이르기까지 전송될 때, 새로운 복사가 이루어진다. 그러므로, 통신 제공자 또는 네트워크 제공자는 유형의 머신-판독가능한 매체 상에, 적어도 일시적으로, 본 발명의 실시예들의 기술을 구현하는 반송파로 인코딩된 정보와 같은 물품을 저장할 수 있다.
본 명세서에서 사용된 모듈은 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 조합을 말한다. 예로서, 모듈은 마이크로컨트롤러에 의해 실행되도록 적응된 코드를 저장하는 비-일시적인 매체와 연관되는 마이크로컨트롤러와 같은 하드웨어를 포함한다. 그러므로, 일 실시예에서, 모듈이라고 언급하는 것은 비-일시적 매체 상에 보유되는 코드를 인식 및/또는 실행하도록 구체적으로 구성된 하드웨어를 말하는 것이다. 뿐만 아니라, 다른 실시예에서, 모듈의 사용은 마이크로컨트롤러에 의해 실행되어 기설정된 동작을 수행하도록 명시적으로 적응된 코드를 포함하는 비-일시적 매체를 말한다. 또한 또 다른 실시예에서 추론될 수 있는 것처럼, (이 예에서) 모듈이라는 용어는 마이크로컨트롤러와 비-일시적 매체의 조합을 말할 수 있다. 종종 떼어져 있는 것처럼 도시되는 모듈 경계는 일반적으로 변하기도 하며 잠재적으로 중첩한다. 예를 들면, 제 1 및 제 2 모듈은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합을 공유하면서, 잠재적으로 일부의 독립적인 하드웨어, 소프트웨어, 또는 펌웨어를 유지할 수 있다. 일 실시예에서, 로직이라는 용어의 사용은 트랜지스터, 레지스터와 같은 하드웨어, 또는 프로그래머블 로직 디바이스와 같은 다른 하드웨어를 포함한다.
일 실시예에서, '로 구성된'이라는 문구의 사용은 지정되거나 결정된 작업을 수행하도록 장치, 하드웨어, 로직, 또는 소자를 배열, 조립, 제조, 판매 제안, 수입 및/또는 설계하는 것을 말한다. 이 예에서, 동작하지 않는 장치 또는 요소는 만일 이것이 지정된 작업을 수행하도록 설계되고, 연결되고, 및/또는 상호접속된다면 그 지정된 작업을 수행하도록 구성된다. 전적으로 예시적인 예로서, 로직 게이트는 동작 중에 0이나 1을 제공할 수 있다. 그러나 인에이블 신호를 클록에 제공'하도록 구성된' 로직 게이트라도 1이나 0을 제공할 수 있는 모든 잠재적인 로직 게이트를 포함하지는 않는다. 그 대신, 로직 게이트는 동작 중에 1이나 0의 출력이 발생하여 클럭을 인에이블시키게 하는 몇 가지 방식으로 연결된 로직 게이트이다. 되풀이하면 '로 구성된'이라는 용어의 사용은 동작을 필요로 하지 않지만, 그 대신 장치, 하드웨어, 및/또는 소자의 잠재한 상태에 초점을 맞추는 것임을 주목하여야 하며, 이 때 잠재적 상태에서 장치, 하드웨어, 및/또는 소자는 장치, 하드웨어, 및/또는 소자가 동작하고 있을 때 특별한 작업을 수행하도록 설계된다.
뿐만 아니라, 일 실시예에서, '하도록', '할 수 있는', 및/또는 '동작 가능한'이라는 문구의 사용은 장치, 로직, 하드웨어, 및/또는 소자를 명시된 방식으로 사용할 수 있게 하는 그런 방법으로 일부 장치, 로직, 하드웨어, 및/또는 소자가 설계된 것을 말한다. 일 실시예에서, 하도록, 할 수 있는, 또는 동작 가능한이라는 용어의 사용은 장치, 로직, 하드웨어, 및/또는 소자의 잠재한 상태를 말하며, 이 때 장치, 로직, 하드웨어, 및/또는 소자는 동작하고 있지 않지만 명시된 방식으로 장치를 사용할 수 있게 하는 그러한 방식으로 설계되어 있다.
본 명세서에서 사용된 바와 같은 값은 개수, 상태, 논리 상태, 또는 이진 논리 상태의 임의의 공지된 표현을 포함한다. 종종, 논리 레벨, 논리 값, 또는 논리 값의 사용은 단순히 이진 논리 상태를 표현하는 1의 값 및 0의 값을 말하기도 한다. 예를 들면, 1은 하이 로직 레벨을 말하며 0은 로우 로직 레벨을 말한다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 저장 셀은 단일의 논리 값이나 여러 논리 값을 보유할 수 있다. 그러나, 컴퓨터 시스템에서 값의 다른 표현이 사용되고 있다. 예를 들면, 십진수 10은 1010이라는 이진 값 및 16진 문자 A로서 표현될 수도 있다. 그러므로, 값은 컴퓨터 시스템에서 보유될 수 있는 정보의 임의의 표현을 포함한다.
더욱이, 상태는 값 또는 값의 부분으로 표현될 수 있다. 예로서, 논리 1과 같은 제 1 값은 디폴트 또는 초기 상태를 표현할 수 있고, 반면 논리 0과 같은 제 2 값은 비-디폴트 상태를 표현할 수 있다. 또한, 일 실시예에서, 리셋 또는 셋이라는 용어는 각기 디폴트 및 갱신된 값이나 상태를 말한다. 예를 들면, 디폴트 값은 잠재적으로 하이 논리 값, 즉 리셋을 포함하며, 반면 갱신된 값은 잠재적으로 로우 논리 값, 즉 셋을 포함한다. 값들의 임의의 조합은 임의의 개수의 상태들을 표현하기 위해 이용될 수 있다.
전술한 방법, 하드웨어, 소프트웨어, 펌웨어 또는 코드 세트의 실시예들은 프로세싱 요소에 의해 실행 가능한 머신-액세스 가능한, 머신 판독가능한, 컴퓨터 액세스 가능한, 또는 컴퓨터 판독가능한 매체 상에 저장된 명령어 또는 코드를 통해 구현될 수 있다. 비-일시적 머신-액세스 가능한/판독 가능한 매체는 컴퓨터 또는 전자 시스템과 같은 머신에 의해 판독가능한 형태의 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 예를 들면, 비-일시적인 머신-액세스 가능한 매체는 스태틱 랜덤 액세스 메모리(RAM) 또는 다이나믹 RAM(DRAM)과 같은 랜덤 액세스 메모리(RAM); ROM; 자기 또는 광 저장 매체; 플래시 메모리 디바이스; 전기 저장 디바이스; 광 저장 디바이스; 음향 저장 디바이스; 일시적(전파된) 신호(예를 들면, 반송파, 적외선 신호, 디지털 신호)로부터 수신된 정보를 보유하기 위한 다른 형태의 저장 디바이스, 등을 포함하며, 이들은 이들로부터 정보를 수신할 수 있는 비-일시적 매체와 구별될 것이다.
본 발명의 실시예들을 수행하는 로직을 프로그램하는데 사용되는 명령어는 DRAM, 캐시, 플래시 메모리, 또는 여타 저장소와 같은 시스템 내 메모리 내에 저장될 수 있다. 뿐만 아니라, 명령어는 네트워크를 통해 또는 다른 컴퓨터-판독가능한 매체에 의해 분산될 수 있다. 그래서 머신-판독가능한 매체는 머신(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘, 즉 이것으로 제한되지 않지만, 플로피 디스켓, 광 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 및 광자기 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거가능한 프로그래머블 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그래머블 판독 전용 메모리(EEPROM), 자기 또는 광 카드, 플래시 메모리, 또는 전기, 광, 음향, 또는 다른 형태의 전파 신호(예를 들면, 반송파, 적외선 신호, 디지털 신호 등)를 통해 인터넷을 거쳐 정보의 전송에 사용되는 유형의 머신-판독가능한 저장소를 포함할 수 있다. 따라서, 컴퓨터-판독가능한 매체는 전자 명령어 또는 정보를 머신(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 저장 또는 전송하기에 적합한 임의의 형태의 유형의 머신-판독가능한 매체를 포함한다.
다음의 예시들은 본 명세서에 따른 실시예들에 관한 것이다. 하나 이상의 실시예들은, 특정 캐시 라인에 대응하는 코히어런스 프로토콜 메시지(a coherence protocol message)를 송신하고, 상기 특정 캐시 라인과 관련된 잠재적 충돌(a potential conflict)을 식별하고, 상기 잠재적 충돌을 식별하도록 홈 에이전트(a home agent)에게 포워드 요청(a forward request)을 송신하는, 장치, 시스템, 머신 판독가능 저장디바이스, 머신 판독가능 매체, 및 방법을 제공할 수 있다.
하나 이상의 예시들은, 상기 특정 캐시 라인에 대응하는 스누프(a snoop)를 수신하는 것을 더 제공할 수 있다.
하나 이상의 예시들은, 상기 요청이 미처리 상태인 동안 상기 스누프가 수신되는 것을 식별하고, 상기 잠재적 충돌은 상기 요청이 미처리 상태인 동안 상기 스누프가 수신된 것을 식별하는 것에 기초하여 식별되는 것을 더 제공할 수 있다.
하나 이상의 예시들은, 상기 포워드 요청에 기초하여 상기 홈 에이전트로부터 포워드 응답을 수신하는 것을 더 제공할 수 있다.
하나 이상의 예시들은, 상기 스누프의 속성에 적어도 부분적으로 기초하여 상기 포워드 응답에 대한 응답을 결정하는 것을 더 제공할 수 있다.
적어도 하나의 예시에서, 상기 스누프는 상기 특정 캐시 라인에 대응하는 다른 에이전트에 의한 다른 코히어런스 프로토콜 메시지에 대응하고, 상기 스누프의 속성은, 상기 다른 에이전트의 식별, 상기 다른 코히어런스 프로토콜 메시지에 포함된 커맨드(a command)의 식별, 및 상기 다른 코히어런스 프로토콜 메시지의 트랜잭션 식별자(a transaction identifier)를 포함한다.
적어도 하나의 예시에서, 상기 포워드 응답에 대한 응답은 스누프 응답을 포함하고, 상기 프로토콜 계층 로직은 또한 상기 코히어런스 프로토콜 메시지에 대한 완료(a completion)를 수신한 이후에 상기 홈 에이전트에게 상기 스누푸 응답을 송신한다.
적어도 하나의 예시에서, 상기 응답은 상기 홈 에이전트에게 스누프 응답을 송신하기 이전에 메모리에 라이트백(a writeback)을 수행하는 것을 포함한다.
적어도 하나의 예시에서, 상기 특정 캐시 라인은 상기 에이전트에서 부분적으로 수정된다.
하나 이상의 예시들은 상기 포워드 응답을 수신한 이후에 완료를 수신하는 것을 더 제공할 수 있다.
하나 이상의 예시들은 상기 포워드 응답을 수신하기 이전에 완료를 수신하는 것을 더 제공할 수 있다.
하나 이상의 예시들은 상기 요청에 대한 응답을 위해 자원을 할당하는 것을 더 제공할 수 있다.
하나 이상의 예시들은 포워드 요청에 대한 포워드 응답을 위해 상기 포워드 자원을 할당하는 것을 더 제공할 수 있다.
하나 이상의 실시예들은, 제 1 캐시 에이전트로부터 제 1 코히어런스 프로토콜 요청을 수신하고, 상기 제 1 코히어런스 프로토콜 요청에 대응하는 스누프 요청을 제 2 캐시 에이전트에 송신하고, 상기 스누프 요청에 대응하는 상기 제 2 캐시 에이전트로부터 포워드 요청을 수신 ― 상기 포워드 요청은 상기 제 1 코히어런스 프로토콜 요청과의 잠재적 충돌을 식별함 ― 하고, 상기 포워드 요청에 응답하여 상기 제 2 캐시 에이전트에게 포워드 응답을 송신하는, 장치, 시스템, 머신 판독가능 저장디바이스, 머신 판독가능 매체, 및 방법을 제공할 수 있다.
하나 이상의 예시들은, 상기 제 2 캐시 에이전트로부터 다른 코히어런스 프로토콜 요청을 수신하는 것을 더 제공할 수 있으며, 상기 제 1 코히어런스 프로토콜 요청 및 상기 다른 코히어런스 프로토콜 요청은 공통 캐시 라인(a common cache line)과 각각 관련된다.
적어도 하나의 예시에서, 상기 다른 코히어런스 프로토콜 요청은, 상기 제 1 코히어런스 프로토콜 요청 이전에 상기 에이전트에 의해 수신되고, 상기 프로토콜 계층 로직은 또한, 상기 다른 코히어런스 프로토콜 요청을 처리하고 상기 다른 코히어런스 프로토콜 요청에 대한 완료 메시지를 반환한다.
하나 이상의 예시들은, 상기 제 2 에이전트로부터 상기 포워드 응답에 대한 응답을 수신하고 상기 포워드 응답에 대한 응답을 수신하면 상기 제 1 코히어런스 프로토콜 요청에 대한 완료를 생성하는 것을 더 제공할 수 있다.
적어도 하나의 예시에서, 상기 에이전트는 홈 에이전트를 포함할 수 있다.
하나 이상의 예시들은, 인터커넥트 패브릭과, 코히어런트 메모리 공간(a coherent memory space)에 대한 요청을 서비스하는 홈 에이전트와, 상기 인터커넥트 패브릭을 통해 상기 홈 에이전트에 통신가능하게 연결되는 캐시 에이전트를 갖는 시스템을 더 제공할 수 있다. 상기 인터커넥트 패브릭은 상기 다른 코히어런스 프로토콜 요청에 대한 완료 및 상기 스누프에 대한 응답의 순서화(ordering)를 보장할 수 있다. 상기 홈 에이전트는 자원들의 세트를 구비하며, 상기 자원들의 세트는 상기 시스템 내 캐시 에이전트들에 사전 할당되지 않는다.
하나 이상의 예시들은, 프로토콜 계층을 포함하는 계층화된 프로토콜 스택을 포함하는 에이전트를 더 제공할 수 있으며, 상기 프로토콜 계층은, 상기 에이전트가 제 1 요청을 수신한 것에 응답하여 상기 제 1 요청을 처리하도록, 홈 에이전트 중재(home agent intervention) 없이, 자원의 할당을 개시하고, 상기 에이전트가 제 2 요청을 전송한 것에 응답하여 상기 제 2 요청에 대한 응답을 처리하도록, 홈 에이전트 중재 없이, 자원의 할당을 개시한다.
적어도 하나의 예시에서, 자원의 할당은 HTID, RNID, RTID, 또는 이들의 조합 중 하나를 포함한다.
적어도 하나의 예시에서, 자원의 할당은, 포워드 응답들 및 스누프 요청들을 처리하기 위한 자원들 중 하나를 포함한다.
하나 이상의 예시들은, 프로토콜 계층을 포함하는 계층화된 프로토콜 스택을 포함하는 에이전트를 더 제공할 수 있고, 상기 프로토콜 계층은, 충돌 해결을 수행하기 위해 순서화된 응답 채널의 사용을 모방(imitate)한다.
하나 이상의 예시들은 프로토콜 계층을 포함하는 계층화된 프로토콜 스택을 포함하는 코히어런스 에이전트를 더 제공할 수 있으며, 상기 프로토콜 계층은 데이터 일관성을 유지하도록 라이트백 요청을 위한 포워드를 차단(block)한다.
적어도 하나의 예시에서, 상기 프로토콜 계층은 상기 포워드를 처리하기 이전에 캐시 불가한 데이터(uncacheable data)를 커미트하도록 라이트백 요청을 개시한다.
적어도 하나의 예시에서, 상기 프로토콜 계층은 또한 부분 캐시 라인의 명시적 라이트백(explicit writeback)을 지원한다.
본 명세서 전체에서 "일 실시예" 또는 실시예"라는 언급은 실시예와 관련하여 기술된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되어 있다는 것을 의미한다. 그래서, 본 명세서의 여러 곳에서 "일 실시예에서" 또는 "실시예에서"라는 문구의 출현은 반드시 동일한 실시예를 언급하는 것은 아니다. 뿐만 아니라, 특정한 특징, 구조, 또는 특성은 하나 이상의 실시예들에서 임의의 적절한 방식으로 조합될 수 있다.
전술한 명세서에서, 상세한 설명은 특정한 예시적인 실시예를 참조하여 제공되었다. 그러나, 첨부의 청구범위에서 진술되는 바와 같이 본 발명의 폭넓은 정신 및 범주를 벗어나지 않으면서 다양한 수정 및 변경이 이루어질 수 있다는 것이 분명할 것이다. 따라서, 명세서와 도면은 제한적인 의미라기보다 오히려 예시적인 의미로 간주된다. 뿐만 아니라, 실시예 및 다른 예시적인 언어의 전술한 사용은 반드시 동일한 실시예 또는 동일한 예를 언급하는 것이 아니고, 상이하고 구별되는 실시예는 물론이고 잠재적으로 동일한 실시예를 언급할 수 있다.
Claims (30)
- 프로토콜 회로를 구비한 장치로서,
상기 프로토콜 회로는,
특정 어드레스와 관련된 스누프 요청을 수신하고,
특정 코히어런스 에이전트가 상기 특정 어드레스에 대해 충돌 요청을 갖는다고 결정하고,
충돌을 통지하기 위해 또다른 코히어런스 에이전트에 포워드 요청을 전송하는
장치.
- 제 1 항에 있어서,
상기 프로토콜 회로는 판독 요청 또는 무효 요청으로서 동일 캐시 라인에 대한 인입 스누프 요청들의 검출에 응답하여 포워드 요청을 전송하는
장치.
- 제 1 항에 있어서,
상기 또다른 코히어런스 에이전트는 홈 에이전트를 포함하는
장치.
- 제 1 항에 있어서,
상기 충돌 요청은 상기 스누프 요청 수신시 아직 미처리 상태에 있는 상기 특정 코히어런스 에이전트에 의한 상기 특정 어드레스에 대한 특정 요청을 포함하는
장치.
- 제 1 항에 있어서,
상기 특정 코히어런스 에이전트는 또한 상기 포워드 요청에 기반하여 상기 또다른 코히어런스 에이전트로부터 포워드 응답을 수신하는
장치.
- 제 5 항에 있어서,
상기 특정 코히어런스 에이전트는 또한 상기 스누프 요청의 속성에 적어도 부분적으로 기반하여 상기 포워드 응답에 대한 응답을 결정하는
장치. - 제 6 항에 있어서,
상기 또다른 코히어런스 에이전트는 제 2 코히어런스 에이전트를 포함하며, 상기 스누프 요청은 상기 특정 어드레스에 관련된 제3 코히어런스 에이전트에 의한 또다른 코히어런스 프로토콜 메시지에 대응하며, 상기 스누프 요청의 속성은 상기 제3 코히어런스 에이전트의 식별자, 상기 또다른 코히어런스 프로토콜 메시지 내에 포함된 명령의 식별자, 및 상기 또다른 코히어런스 프로토콜 메시지의 트랜잭션 식별자를 포함하는
장치.
- 제 6 항에 있어서,
상기 포워드 응답은 완료가 수신된 이후에 전송되며, 상기 또다른 코히어런스 에이전트는 홈 에이전트를 포함하는
장치.
- 제 6 항에 있어서,
상기 응답은 상기 또다른 코히어런스 에이전트에 스누프 응답을 전송하기 전에 메모리에 라이트백을 수행하는 것을 포함하는
장치.
- 제 9 항에 있어서,
상기 특정 어드레스와 관련된 특정 캐시 라인은 상기 특정 코히어런스 에이전트에서 부분적으로 수정되는
장치.
- 제 5 항에 있어서,
상기 프로토콜 회로는 또한 상기 포워드 응답을 수신한 이후 완료를 수신하는
장치.
- 제 5 항에 있어서,
상기 프로토콜 회로는 또한 상기 포워드 응답을 수신하기 전에 완료를 수신하는
장치.
- 제 1 항에 있어서,
상기 프로토콜 회로는 또한 상기 포워드 요청에 대한 포워드 자원을 할당하는
장치.
- 제 13 항에 있어서,
상기 프로토콜 회로는 상기 특정 코히어런스 에이전트가 상기 스누프 요청에 응답하기 위한 이용가능 포워드 자원을 갖는지 여부를 결정하는
장치.
- 제 14 항에 있어서,
상기 프로토콜 회로는 또한 이용가능한 포워드 자원들이 불충분할 경우 상기 스누프 요청을 차단하는
장치.
- 제 13 항에 있어서,
상기 프로토콜 회로는 또한 상기 포워드 요청에 대한 포워드 응답을 위한 포워드 자원을 유지하는
장치.
- 제 1 항에 있어서,
상기 포워드 요청은 명령 필드, 목적지 노드 식별자 필드, 홈 트랜잭션 식별자 필드, 및 피어 노드 식별자 필드를 포함하는
장치.
- 특정 어드레스를 참조하는 스누프 요청을 수신하는 스누프 수신기와,
코히어런스 에이전트가 상기 특정 어드레스와 매칭하는 어드레스에 대한 활성 요청을 갖는다고 결정하기 위한 충돌 식별자와,
충돌 포워드 요청을 생성하기 위한 응답 생성기―상기 충돌 포워드 요청은 명령 필드, 목적지 노드 식별자 필드, 홈 트랜잭션 식별자 필드, 및 피어 노드 식별자 필드를 포함함―와,
상기 스누프 요청에 관련된 충돌을 식별하기 위해 포워드 요청을 홈 에이전트에 전송하는 송신기와,
상기 포워드 요청에 대한 응답을 위한 포워드 자원을 유지하는 자원 관리자와,
상기 홈 에이전트로부터 포워드 응답을 수신하는 응답 수신기를 포함하되,
상기 포워드 응답은 상기 스누프 요청과 관련된 트랜잭션 식별자를 식별하는
장치
- 프로토콜 회로를 구비한 장치로서,
상기 프로토콜 회로는
코히어런스 에이전트로부터 스누프 요청과 관련되는 충돌 포워드 요청을 수신하고,
상기 충돌 포워드 요청에 대한 포워드 응답을 생성―상기 포워드 응답은 상기 코히어런스 에이전트의 노드 식별자(NID)와, 상기 스누프 요청과 관련된 홈 에이전트와 관련된 홈 에이전트 트랜잭션 식별자(TID)를 포함함―하고,
상기 코히어런스 에이전트에 상기 포워드 응답을 전송하는
장치.
- 제 19 항에 있어서,
상기 홈 에이전트의 홈 에이전트 디렉토리는 상기 충돌 포워드 요청에 응답하여 변경되지 않는
장치.
- 제 19 항에 있어서,
상기 충돌 포워드 요청은 상기 코히어런스 에이전트의 노드 식별자를 포함하는
장치.
- 제 21 항에 있어서,
상기 충돌 포워드 요청은 홈 트랜잭션 식별자 필드를 더 포함하는
장치.
- 컴퓨팅 디바이스의 블럭의 코히어런스 에이전트에서, 특정 어드레스와 관련된 스누프 요청을 수신하는 단계와,
상기 코히어런스 에이전트가 상기 특정 어드레스에 대해 충돌 요청을 갖는다고 결정하는 단계와,
충돌을 식별하기 위해 또다른 코히어런스 에이전트에 포워드 요청을 전송하는 단계를 포함하는
방법.
- 제 23 항에 있어서,
상기 또다른 코히어런스 에이전트로부터 상기 포워드 요청에 대한 포워드 응답을 수신하는 단계를 더 포함하는
방법.
- 제 24 항에 있어서,
상기 포워드 응답에 대한 응답을 결정하는 단계와,
상기 포워드 응답과 관련된 스누프 응답을 상기 또다른 코히어런스 에이전트에 전송하는 단계를 더 포함하는
방법.
- 제 23 항에 있어서,
상기 포워드 요청에 대해 수신된 응답을 위한 포워드 자원을 유지하는 단계를 더 포함하는
방법. - 적어도 제 1 인스트럭션 세트를 인식하는 제 1 프로세서와 상기 제 1 인스트럭션과는 상이한 제 2 인스트럭션 세트를 인식하는 제 2 프로세서 사이에서 인터페이스하기 위한 제어기―상기 제어기는 복수의 레인을 포함한 링크에 결합하기 위한 인터페이스 로직을 포함함―와,
상기 인터페이스 로직을 포함하되,
상기 인터페이스 로직은,
특정 어드레스에 관련된 스누프 요청을 수신하고,
특정 코히어런스 에이전트가 상기 특정 어드레스에 대해 충돌 요청을 갖는다고 결정하고,
충돌을 통지하기 위해 또다른 코히어런스 에이전트에 포워드 요청을 전송하는
장치.
- 상호접속 패브릭과,
홈 에이전트와,
상기 상호접속 패브릭을 통해 상기 홈 에이전트에 통신가능하게 결합되는 코히어런스 에이전트를 포함하되,
상기 코히어런스 에이전트는,
특정 어드레스에 관련된 스누프 요청을 수신하고,
상기 코히어런스 에이전트가 상기 특정 어드레스에 대해 충돌 요청을 갖는다고 결정하고,
충돌을 식별하기 위해 상기 상호접속 패브릭을 통해 상기 홈 에이전트에 포워드 요청을 전송하는
시스템.
- 제 28 항에 있어서,
상기 홈 에이전트는,
또다른 코히어런스 에이전트로부터 또다른 코히어런스 프로토콜 요청을 수신하고,
상기 또다른 코히어런스 프로토콜 요청에 대응하는 상기 스누프 요청을 상기 코히어런스 에이전트에 전송하고,
상기 포워드 요청을 수신하고,
상기 포워드 요청에 응답하여 포워드 응답을 상기 코히어런스 에이전트에 전송하고,
상기 충돌 요청에 대한 완료를 생성하고,
상기 또다른 코히어런스 프로토콜 요청에 대한 완료를 생성하는
시스템. - 제 28 항에 있어서,
상기 홈 에이전트는 자원의 세트를 포함하되, 상기 자원의 세트는 상기 시스템 내의 코히어런스 에이전트들에 사전 할당되지 않은
시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261717091P | 2012-10-22 | 2012-10-22 | |
US61/717,091 | 2012-10-22 | ||
PCT/US2013/032670 WO2014065876A1 (en) | 2012-10-22 | 2013-03-15 | High performance interconnect coherence protocol |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157007216A Division KR101700261B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 코히어런스 프로토콜 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170012581A true KR20170012581A (ko) | 2017-02-02 |
KR101828756B1 KR101828756B1 (ko) | 2018-02-12 |
Family
ID=50485278
Family Applications (27)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157007221A KR101686359B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020157007216A KR101700261B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 코히어런스 프로토콜 |
KR1020177000908A KR101815180B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 코히어런스 프로토콜 |
KR1020167034124A KR101831550B1 (ko) | 2012-10-22 | 2013-03-15 | 다중슬롯 링크 계층 플릿에서의 제어 메시징 |
KR1020187004227A KR101861312B1 (ko) | 2012-10-22 | 2013-03-15 | 다중슬롯 링크 계층 플릿에서의 제어 메시징 |
KR1020167035979A KR101815173B1 (ko) | 2012-10-22 | 2013-03-15 | 코히어런스 프로토콜 테이블 |
KR1020177018159A KR101985120B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020147033103A KR101847943B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 상호연결 물리 계층 |
KR1020177018169A KR101905055B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020157007228A KR101686360B1 (ko) | 2012-10-22 | 2013-03-15 | 다중슬롯 링크 계층 플릿에서의 제어 메시징 |
KR1020157007208A KR101691756B1 (ko) | 2012-10-22 | 2013-03-15 | 코히어런스 프로토콜 테이블 |
KR1020167034107A KR101755005B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020177000400A KR101754890B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020177009525A KR101772037B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 상호연결 물리 계층 |
KR1020157007231A KR101696124B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020157007232A KR101700545B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 코히어런스 프로토콜 |
KR1020147027189A KR101598746B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 상호연결 물리 계층 |
KR1020177001836A KR101828756B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 코히어런스 프로토콜 |
KR1020157010316A KR101681509B1 (ko) | 2012-10-22 | 2013-03-16 | 다중슬롯 링크층 플릿 |
KR1020167010386A KR101861452B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020177000322A KR101815178B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020147032656A KR101599852B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020157007226A KR101695340B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020187012101A KR101912074B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020147027297A KR101615908B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020157007215A KR101642086B1 (ko) | 2012-10-22 | 2013-03-28 | 고성능 인터커넥트 링크 계층 |
KR1020167019481A KR101689998B1 (ko) | 2012-10-22 | 2013-03-28 | 고성능 인터커넥트 링크 계층 |
Family Applications Before (17)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157007221A KR101686359B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020157007216A KR101700261B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 코히어런스 프로토콜 |
KR1020177000908A KR101815180B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 코히어런스 프로토콜 |
KR1020167034124A KR101831550B1 (ko) | 2012-10-22 | 2013-03-15 | 다중슬롯 링크 계층 플릿에서의 제어 메시징 |
KR1020187004227A KR101861312B1 (ko) | 2012-10-22 | 2013-03-15 | 다중슬롯 링크 계층 플릿에서의 제어 메시징 |
KR1020167035979A KR101815173B1 (ko) | 2012-10-22 | 2013-03-15 | 코히어런스 프로토콜 테이블 |
KR1020177018159A KR101985120B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020147033103A KR101847943B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 상호연결 물리 계층 |
KR1020177018169A KR101905055B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020157007228A KR101686360B1 (ko) | 2012-10-22 | 2013-03-15 | 다중슬롯 링크 계층 플릿에서의 제어 메시징 |
KR1020157007208A KR101691756B1 (ko) | 2012-10-22 | 2013-03-15 | 코히어런스 프로토콜 테이블 |
KR1020167034107A KR101755005B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020177000400A KR101754890B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020177009525A KR101772037B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 상호연결 물리 계층 |
KR1020157007231A KR101696124B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 물리 계층 |
KR1020157007232A KR101700545B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 인터커넥트 코히어런스 프로토콜 |
KR1020147027189A KR101598746B1 (ko) | 2012-10-22 | 2013-03-15 | 고성능 상호연결 물리 계층 |
Family Applications After (9)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157010316A KR101681509B1 (ko) | 2012-10-22 | 2013-03-16 | 다중슬롯 링크층 플릿 |
KR1020167010386A KR101861452B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020177000322A KR101815178B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020147032656A KR101599852B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020157007226A KR101695340B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020187012101A KR101912074B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020147027297A KR101615908B1 (ko) | 2012-10-22 | 2013-03-27 | 고성능 인터커넥트 물리 계층 |
KR1020157007215A KR101642086B1 (ko) | 2012-10-22 | 2013-03-28 | 고성능 인터커넥트 링크 계층 |
KR1020167019481A KR101689998B1 (ko) | 2012-10-22 | 2013-03-28 | 고성능 인터커넥트 링크 계층 |
Country Status (9)
Country | Link |
---|---|
US (20) | US9378171B2 (ko) |
EP (2) | EP3410304B1 (ko) |
JP (2) | JP6139689B2 (ko) |
KR (27) | KR101686359B1 (ko) |
CN (26) | CN104380269B (ko) |
BR (1) | BR112015006432A2 (ko) |
DE (14) | DE112013005086T5 (ko) |
RU (2) | RU2599971C2 (ko) |
WO (11) | WO2014065878A1 (ko) |
Families Citing this family (210)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104081722B (zh) * | 2012-01-13 | 2018-05-22 | 英特尔公司 | SoC构造中的高效对等通信支持 |
US8943255B2 (en) * | 2012-05-29 | 2015-01-27 | Lsi Corporation | Methods and structure for accounting for connection resets between peripheral component interconnect express bridges and host devices |
US9355058B2 (en) | 2012-10-22 | 2016-05-31 | Intel Corporation | High performance interconnect physical layer |
CN104380269B (zh) | 2012-10-22 | 2018-01-30 | 英特尔公司 | 高性能互连相干协议 |
US9280507B2 (en) | 2012-10-22 | 2016-03-08 | Intel Corporation | High performance interconnect physical layer |
US9479196B2 (en) | 2012-10-22 | 2016-10-25 | Intel Corporation | High performance interconnect link layer |
US9367474B2 (en) * | 2013-06-12 | 2016-06-14 | Apple Inc. | Translating cache hints |
US20150006962A1 (en) * | 2013-06-27 | 2015-01-01 | Robert C. Swanson | Memory dump without error containment loss |
CN104579605B (zh) * | 2013-10-23 | 2018-04-10 | 华为技术有限公司 | 一种数据传输方法及装置 |
US9325449B2 (en) | 2013-12-06 | 2016-04-26 | Intel Corporation | Lane error detection and lane removal mechanism to reduce the probability of data corruption |
US9397792B2 (en) | 2013-12-06 | 2016-07-19 | Intel Corporation | Efficient link layer retry protocol utilizing implicit acknowledgements |
US9306863B2 (en) * | 2013-12-06 | 2016-04-05 | Intel Corporation | Link transfer, bit error detection and link retry using flit bundles asynchronous to link fabric packets |
JP6221717B2 (ja) * | 2013-12-12 | 2017-11-01 | 富士通株式会社 | ストレージ装置、ストレージシステム及びデータ管理プログラム |
WO2015099724A1 (en) * | 2013-12-26 | 2015-07-02 | Intel Corporation | Pci express enhancements |
CN105765544B (zh) * | 2013-12-26 | 2019-04-09 | 英特尔公司 | 多芯片封装链路 |
US9594719B2 (en) | 2014-02-03 | 2017-03-14 | Valens Semiconductor Ltd. | Seamless addition of high bandwidth lanes |
US9628382B2 (en) | 2014-02-05 | 2017-04-18 | Intel Corporation | Reliable transport of ethernet packet data with wire-speed and packet data rate match |
CN105095147B (zh) * | 2014-05-21 | 2018-03-13 | 华为技术有限公司 | 片上网络的Flit传输方法及装置 |
RU2608881C2 (ru) | 2014-05-28 | 2017-01-25 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для управления турборежимом |
US9696920B2 (en) | 2014-06-02 | 2017-07-04 | Micron Technology, Inc. | Systems and methods for improving efficiencies of a memory system |
US9619214B2 (en) | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
US9571465B1 (en) * | 2014-09-18 | 2017-02-14 | Amazon Technologies, Inc. | Security verification by message interception and modification |
US9904645B2 (en) * | 2014-10-31 | 2018-02-27 | Texas Instruments Incorporated | Multicore bus architecture with non-blocking high performance transaction credit system |
US10082538B2 (en) * | 2014-11-14 | 2018-09-25 | Cavium, Inc. | Testbench builder, system, device and method |
US9665505B2 (en) | 2014-11-14 | 2017-05-30 | Cavium, Inc. | Managing buffered communication between sockets |
US9870328B2 (en) * | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Managing buffered communication between cores |
US20160173398A1 (en) * | 2014-12-12 | 2016-06-16 | Intel Corporation | Method, Apparatus And System For Encoding Command Information In a Packet-Based Network |
US9921768B2 (en) * | 2014-12-18 | 2018-03-20 | Intel Corporation | Low power entry in a shared memory link |
US9444551B2 (en) * | 2014-12-19 | 2016-09-13 | Intel Corporation | High performance optical repeater |
US10025746B2 (en) * | 2014-12-20 | 2018-07-17 | Intel Corporation | High performance interconnect |
US9740646B2 (en) * | 2014-12-20 | 2017-08-22 | Intel Corporation | Early identification in transactional buffered memory |
US9632862B2 (en) * | 2014-12-20 | 2017-04-25 | Intel Corporation | Error handling in transactional buffered memory |
US9785556B2 (en) * | 2014-12-23 | 2017-10-10 | Intel Corporation | Cross-die interface snoop or global observation message ordering |
US20160188519A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Corporation | Method, apparatus, system for embedded stream lanes in a high-performance interconnect |
CN104536929A (zh) * | 2015-01-14 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 一种物理层初始化方法及客户端 |
US9998434B2 (en) * | 2015-01-26 | 2018-06-12 | Listat Ltd. | Secure dynamic communication network and protocol |
US20160285624A1 (en) * | 2015-03-26 | 2016-09-29 | Intel Corporation | Pseudorandom bit sequences in an interconnect |
US9946676B2 (en) | 2015-03-26 | 2018-04-17 | Intel Corporation | Multichip package link |
US9639276B2 (en) * | 2015-03-27 | 2017-05-02 | Intel Corporation | Implied directory state updates |
US10282315B2 (en) | 2015-03-27 | 2019-05-07 | Cavium, Llc | Software assisted hardware configuration for software defined network system-on-chip |
US9720838B2 (en) | 2015-03-27 | 2017-08-01 | Intel Corporation | Shared buffered memory routing |
US9619396B2 (en) * | 2015-03-27 | 2017-04-11 | Intel Corporation | Two level memory full line writes |
US9760515B2 (en) | 2015-04-06 | 2017-09-12 | Qualcomm Incorporated | Shared control of a phase locked loop (PLL) for a multi-port physical layer (PHY) |
US10417128B2 (en) | 2015-05-06 | 2019-09-17 | Oracle International Corporation | Memory coherence in a multi-core, multi-level, heterogeneous computer architecture implementing hardware-managed and software managed caches |
US20160353357A1 (en) * | 2015-05-27 | 2016-12-01 | Qualcomm Incorporated | Methods and systems for multiplexed communication in dense wireless environments |
EP3297220B1 (en) * | 2015-06-10 | 2019-04-17 | Huawei Technologies Co. Ltd. | Signal transmission method, controller and signal transmission system |
US9697145B2 (en) * | 2015-06-12 | 2017-07-04 | Apple Inc. | Memory interface system |
US20160371222A1 (en) * | 2015-06-22 | 2016-12-22 | Qualcomm Incorporated | COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER |
US10089275B2 (en) | 2015-06-22 | 2018-10-02 | Qualcomm Incorporated | Communicating transaction-specific attributes in a peripheral component interconnect express (PCIe) system |
KR102485999B1 (ko) * | 2015-07-01 | 2023-01-06 | 삼성전자주식회사 | 마스터-사이드 필터를 포함하는 캐시 코히런트 시스템과 이를 포함하는 데이터 처리 시스템 |
US9692589B2 (en) * | 2015-07-17 | 2017-06-27 | Intel Corporation | Redriver link testing |
CN107924378B (zh) * | 2015-07-30 | 2020-12-18 | 瓦伦斯半导体有限责任公司 | 高带宽通道的无缝添加 |
JP6674085B2 (ja) * | 2015-08-12 | 2020-04-01 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US9990291B2 (en) * | 2015-09-24 | 2018-06-05 | Qualcomm Incorporated | Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols |
US20200244397A1 (en) * | 2015-09-26 | 2020-07-30 | Intel Corporation | Stream identifier lane protection |
US9720439B2 (en) | 2015-09-26 | 2017-08-01 | Intel Corporation | Methods, apparatuses, and systems for deskewing link splits |
CN112612731B (zh) * | 2015-09-26 | 2024-09-03 | 英特尔公司 | 多芯片封装链路错误检测 |
DE112015006953T5 (de) | 2015-09-26 | 2018-06-14 | Intel Corporation | Training einer gültigen lane |
US10671476B2 (en) * | 2015-09-26 | 2020-06-02 | Intel Corporation | In-band margin probing on an operational interconnect |
GB2543745B (en) * | 2015-10-15 | 2018-07-04 | Advanced Risc Mach Ltd | An apparatus and method for operating a virtually indexed physically tagged cache |
US10198384B2 (en) | 2016-03-01 | 2019-02-05 | Qorvo Us, Inc. | One wire bus to RFFE translation system |
US10128964B2 (en) | 2016-03-10 | 2018-11-13 | Qualcomm Incorporated | Multiphase preamble data sequences for receiver calibration and mode data signaling |
US9779028B1 (en) | 2016-04-01 | 2017-10-03 | Cavium, Inc. | Managing translation invalidation |
CN105933286B (zh) * | 2016-04-05 | 2019-08-02 | 浪潮电子信息产业股份有限公司 | 一种验证协议的方法及装置 |
RU2643620C2 (ru) * | 2016-05-11 | 2018-02-02 | федеральное государственное автономное образовательное учреждение высшего образования "Санкт-Петербургский политехнический университет Петра Великого" (ФГАОУ ВО "СПбПУ") | Способ планирования задач предобработки данных Интернета Вещей для систем анализа |
US10713202B2 (en) * | 2016-05-25 | 2020-07-14 | Samsung Electronics Co., Ltd. | Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports |
US10503641B2 (en) * | 2016-05-31 | 2019-12-10 | Advanced Micro Devices, Inc. | Cache coherence for processing in memory |
US11144691B2 (en) * | 2016-06-02 | 2021-10-12 | Siemens Industry Software Inc. | Virtual Ethernet mutable port group transactor |
TWI613547B (zh) * | 2016-06-16 | 2018-02-01 | 新漢股份有限公司 | 具有pci-e增強器的電腦系統,及其pci-e增強器的設定方法 |
US10103837B2 (en) * | 2016-06-23 | 2018-10-16 | Advanced Micro Devices, Inc. | Asynchronous feedback training |
US10484361B2 (en) * | 2016-06-30 | 2019-11-19 | Intel Corporation | Systems, methods, and apparatuses for implementing a virtual device observation and debug network for high speed serial IOS |
US10303605B2 (en) * | 2016-07-20 | 2019-05-28 | Intel Corporation | Increasing invalid to modified protocol occurrences in a computing system |
US10929059B2 (en) | 2016-07-26 | 2021-02-23 | MemRay Corporation | Resistance switching memory-based accelerator |
US10379904B2 (en) * | 2016-08-31 | 2019-08-13 | Intel Corporation | Controlling a performance state of a processor using a combination of package and thread hint information |
RU2016137176A (ru) * | 2016-09-16 | 2018-03-19 | Оракл Интернэйшнл Корпорейшн | Связывание преобразованного исходного кода с первоначальным исходным кодом с помощью метаданных |
US10255181B2 (en) * | 2016-09-19 | 2019-04-09 | Qualcomm Incorporated | Dynamic input/output coherency |
WO2018057039A1 (en) * | 2016-09-26 | 2018-03-29 | Hewlett-Packard Development Company, L. | Update memory management information to boot an electronic device from a reduced power mode |
US10846258B2 (en) * | 2016-09-30 | 2020-11-24 | Intel Corporation | Voltage modulated control lane |
US10152446B2 (en) * | 2016-10-01 | 2018-12-11 | Intel Corporation | Link-physical layer interface adapter |
CN108121842B (zh) * | 2016-11-30 | 2021-04-27 | 深圳市中兴微电子技术有限公司 | 多处理器系统芯片的低功耗工作方式的验证方法和装置 |
CN106527576A (zh) * | 2016-12-01 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种pcie设备的时钟分离设计方法和系统 |
TWI610179B (zh) * | 2016-12-07 | 2018-01-01 | 慧榮科技股份有限公司 | 主機裝置與資料傳輸速率控制方法 |
CN108170370B (zh) | 2016-12-07 | 2021-01-26 | 慧荣科技股份有限公司 | 数据储存装置与数据传输速率控制方法 |
TWI633777B (zh) * | 2016-12-13 | 2018-08-21 | 威盛電子股份有限公司 | 傳輸介面晶片以及其測試方法 |
KR20180071598A (ko) | 2016-12-20 | 2018-06-28 | 주식회사 포스코 | 중장비 위치 추적 시스템 |
KR101946135B1 (ko) * | 2017-01-11 | 2019-02-08 | 울산과학기술원 | 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법 |
US11159636B2 (en) * | 2017-02-08 | 2021-10-26 | Arm Limited | Forwarding responses to snoop requests |
US11182315B2 (en) | 2017-02-10 | 2021-11-23 | Intel Corporation | Apparatuses, methods, and systems for hardware control of processor performance levels |
US10572434B2 (en) | 2017-02-27 | 2020-02-25 | International Business Machines Corporation | Intelligent certificate discovery in physical and virtualized networks |
US10784986B2 (en) | 2017-02-28 | 2020-09-22 | Intel Corporation | Forward error correction mechanism for peripheral component interconnect-express (PCI-e) |
CN107491407B (zh) * | 2017-07-03 | 2019-07-12 | 西安空间无线电技术研究所 | 基于fpga内serdes的自适应高速传输系统 |
US11030126B2 (en) * | 2017-07-14 | 2021-06-08 | Intel Corporation | Techniques for managing access to hardware accelerator memory |
US11249808B2 (en) * | 2017-08-22 | 2022-02-15 | Intel Corporation | Connecting accelerator resources using a switch |
CN107678854A (zh) * | 2017-08-31 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种解决计算机缓存一致性冲突的方法 |
US10474611B2 (en) | 2017-09-19 | 2019-11-12 | International Business Machines Corporation | Aligning received bad data indicators (BDIS) with received data on a cross-chip link |
CN107589698B (zh) * | 2017-09-20 | 2021-05-25 | 友达光电股份有限公司 | 应用于物联网中的感测装置及控制方法 |
US20190095273A1 (en) * | 2017-09-27 | 2019-03-28 | Qualcomm Incorporated | Parity bits location on i3c multilane bus |
US10963035B2 (en) * | 2017-10-11 | 2021-03-30 | Qualcomm Incorporated | Low power PCIe |
WO2019100238A1 (zh) * | 2017-11-22 | 2019-05-31 | 深圳市大疆创新科技有限公司 | 一种断链恢复的方法及飞行器 |
CN107894963B (zh) * | 2017-11-27 | 2021-07-27 | 上海兆芯集成电路有限公司 | 用于系统单芯片的通信控制器与通信方法 |
US10466911B2 (en) * | 2017-12-18 | 2019-11-05 | Western Digital Technologies, Inc. | Method using logical based addressing for latency reduction |
US10853212B2 (en) * | 2018-01-08 | 2020-12-01 | Intel Corporation | Cross-talk generation in a multi-lane link during lane testing |
WO2019140049A1 (en) * | 2018-01-10 | 2019-07-18 | Lumeova, Inc. | Method, devices and system for wireless communication channels fso |
US20190227971A1 (en) * | 2018-01-23 | 2019-07-25 | Qualcomm Incorporated | Architecture for consolidating multiple sources of low-bandwidth data over a serial bus |
US20190294777A1 (en) * | 2018-03-26 | 2019-09-26 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Systems and methods for managing access to host computing devices by external devices |
US10534881B2 (en) * | 2018-04-10 | 2020-01-14 | Advanced Micro Devices, Inc. | Method of debugging a processor |
US20190042455A1 (en) * | 2018-05-04 | 2019-02-07 | Intel Corporation | Globally addressable memory for devices linked to hosts |
CN108563510B (zh) * | 2018-05-04 | 2021-07-13 | 湖南大学 | 面向e级计算的体系结构感知优化方法 |
US20190356412A1 (en) * | 2018-05-16 | 2019-11-21 | Qualcomm Incorporated | Fast termination of multilane double data rate transactions |
CN108762747B (zh) * | 2018-05-30 | 2022-02-18 | 郑州云海信息技术有限公司 | 数据处理方法以及计算机设备 |
WO2019237130A1 (en) * | 2018-06-04 | 2019-12-12 | Lightfleet Corporation | Routing and control protocol for high-performance interconnect fabrics |
CN110609866B (zh) * | 2018-06-15 | 2023-08-11 | 伊姆西Ip控股有限责任公司 | 用于协商事务的方法、设备和计算机程序产品 |
US10693589B2 (en) * | 2018-06-18 | 2020-06-23 | Huawei Technologies Co., Ltd. | Serdes with jitter injection self stress mechanism |
US11301160B2 (en) * | 2018-06-20 | 2022-04-12 | Genesys Telecommunications Laboratories, Inc. | System and method for a replication protocol in a real-time statistical engine |
CN109144943A (zh) * | 2018-06-26 | 2019-01-04 | 深圳市安信智控科技有限公司 | 基于高速串行通道互连的计算芯片与存储器芯片组合系统 |
GB2575294B8 (en) * | 2018-07-04 | 2022-07-20 | Graphcore Ltd | Host Proxy On Gateway |
US10841355B2 (en) * | 2018-07-13 | 2020-11-17 | Apple Inc. | Methods and apparatus for streaming media conversion with reduced buffering memories |
CN113039732A (zh) | 2018-09-06 | 2021-06-25 | 诺基亚通信公司 | Acqi解码置信度检测 |
US10541841B1 (en) * | 2018-09-13 | 2020-01-21 | Advanced Micro Devices, Inc. | Hardware transmit equalization for high speed |
CN109558122B (zh) * | 2018-11-29 | 2022-08-19 | 湖南国科微电子股份有限公司 | 一种提升物理层兼容性的系统与方法 |
TWI706257B (zh) * | 2018-12-13 | 2020-10-01 | 新唐科技股份有限公司 | 匯流排系統 |
US10761939B1 (en) * | 2018-12-13 | 2020-09-01 | Amazon Technologies, Inc. | Powering-down or rebooting a device in a system fabric |
US10771189B2 (en) * | 2018-12-18 | 2020-09-08 | Intel Corporation | Forward error correction mechanism for data transmission across multi-lane links |
KR102165860B1 (ko) * | 2018-12-31 | 2020-10-14 | 성균관대학교산학협력단 | 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치 |
US10599601B1 (en) | 2019-01-16 | 2020-03-24 | Qorvo Us, Inc. | Single-wire bus (SuBUS) slave circuit and related apparatus |
US11099991B2 (en) | 2019-01-24 | 2021-08-24 | Vmware, Inc. | Programming interfaces for accurate dirty data tracking |
US11068400B2 (en) * | 2019-01-24 | 2021-07-20 | Vmware, Inc. | Failure-atomic logging for persistent memory systems with cache-coherent FPGAs |
US11940483B2 (en) | 2019-01-31 | 2024-03-26 | Tektronix, Inc. | Systems, methods and devices for high-speed input/output margin testing |
DE112020000640T5 (de) | 2019-01-31 | 2021-11-25 | Tektronix, Inc. | Systeme, Verfahren und Vorrichtungen für Hochgeschwindigkeits-Eingangs-/Ausgangs-Margin-Tests |
US10713209B2 (en) * | 2019-02-08 | 2020-07-14 | Intel Corporation | Recalibration of PHY circuitry for the PCI Express (PIPE) interface based on using a message bus interface |
US10802966B2 (en) * | 2019-02-14 | 2020-10-13 | International Business Machines Corporation | Simultaneous, non-atomic request processing within an SMP environment broadcast scope for multiply-requested data elements using real-time parallelization |
US11637657B2 (en) | 2019-02-15 | 2023-04-25 | Intel Corporation | Low-latency forward error correction for high-speed serial links |
US11099905B2 (en) | 2019-02-26 | 2021-08-24 | International Business Machines Corporation | Efficient remote resource allocation within an SMP broadcast scope maintaining fairness between operation types |
US11249837B2 (en) | 2019-03-01 | 2022-02-15 | Intel Corporation | Flit-based parallel-forward error correction and parity |
US20220147614A1 (en) * | 2019-03-05 | 2022-05-12 | Siemens Industry Software Inc. | Machine learning-based anomaly detections for embedded software applications |
CN109947551B (zh) * | 2019-03-19 | 2021-04-23 | 中南大学 | 一种多轮次任务分配方法、边缘计算系统及其存储介质 |
US11055221B2 (en) * | 2019-03-22 | 2021-07-06 | Samsung Electronics Co., Ltd. | Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory |
EP3723345A1 (en) * | 2019-04-10 | 2020-10-14 | ABB Schweiz AG | Aggregating server and method for forwarding node data |
US10698842B1 (en) * | 2019-04-10 | 2020-06-30 | Xilinx, Inc. | Domain assist processor-peer for coherent acceleration |
IT201900005822A1 (it) * | 2019-04-15 | 2020-10-15 | Phoenix Ict S R L S | Adattore di periferiche general purpose per computer |
US11119958B2 (en) | 2019-04-18 | 2021-09-14 | Qorvo Us, Inc. | Hybrid bus apparatus |
US11226924B2 (en) | 2019-04-24 | 2022-01-18 | Qorvo Us, Inc. | Single-wire bus apparatus supporting slave-initiated operation in a master circuit |
CN110138761B (zh) * | 2019-05-09 | 2021-10-15 | 豪威触控与显示科技(深圳)有限公司 | 基于mipi协议的设备间通信方法及设备拓扑结构 |
US11296994B2 (en) | 2019-05-13 | 2022-04-05 | Intel Corporation | Ordered sets for high-speed interconnects |
JP7259537B2 (ja) * | 2019-05-16 | 2023-04-18 | オムロン株式会社 | 情報処理装置 |
US10802967B1 (en) * | 2019-06-28 | 2020-10-13 | Intel Corporation | Partial write management in a multi-tiled compute engine |
US11144469B2 (en) * | 2019-07-02 | 2021-10-12 | Microsoft Technology Licensing, Llc | Per-tenant incremental outward distributed proactive caching |
US11444829B2 (en) * | 2019-09-09 | 2022-09-13 | Intel Corporation | Link layer communication by multiple link layer encodings for computer buses |
US11271860B1 (en) * | 2019-11-15 | 2022-03-08 | Xilinx, Inc. | Compressed tag coherency messaging |
CN114651426B (zh) * | 2019-11-20 | 2023-08-18 | 三菱电机株式会社 | 光通信装置及通信系统 |
US11740958B2 (en) | 2019-11-27 | 2023-08-29 | Intel Corporation | Multi-protocol support on common physical layer |
RU2738955C1 (ru) * | 2019-11-27 | 2020-12-21 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Томский государственный университет систем управления и радиоэлектроники" (ТУСУР) | Способ трёхкратного резервирования межсоединений |
US10983942B1 (en) | 2019-12-11 | 2021-04-20 | Qorvo Us, Inc. | Multi-master hybrid bus apparatus |
US11132321B2 (en) * | 2020-02-26 | 2021-09-28 | Quanta Computer Inc. | Method and system for automatic bifurcation of PCIe in BIOS |
US20230081394A1 (en) * | 2020-02-28 | 2023-03-16 | Arizona Board Of Regents On Behalf Of Arizona State University | A software-defined board support package (sw-bsp) for stand-alone reconfigurable accelerators |
US11115176B1 (en) * | 2020-03-04 | 2021-09-07 | Qualcomm Incorporated | System and method for adjusting clock-data timing in a multi-lane data communication link |
US11126585B1 (en) | 2020-03-09 | 2021-09-21 | Western Digital Technologies, Inc. | Data storage device with improved interface transmitter training |
US11886312B2 (en) | 2020-04-07 | 2024-01-30 | Intel Corporation | Characterizing error correlation based on error logging for computer buses |
CN111400232B (zh) * | 2020-04-10 | 2024-01-16 | 芯启源(上海)半导体科技有限公司 | 一种基于数据位宽展开的scramble与descramble硬件实现方法 |
US11288225B2 (en) | 2020-04-14 | 2022-03-29 | Western Digital Technologies, Inc. | Adapting transmitter training behavior based upon assumed identity of training partner |
US11309013B2 (en) | 2020-04-29 | 2022-04-19 | Samsung Electronics Co., Ltd. | Memory device for reducing resources used for training |
US11513981B2 (en) * | 2020-04-29 | 2022-11-29 | Dell Products L.P. | PCIe link management without sideband signals |
LU101767B1 (en) * | 2020-05-05 | 2021-11-05 | Microsoft Technology Licensing Llc | Recording a memory value trace for use with a separate cache coherency protocol trace |
US11586446B1 (en) * | 2020-05-20 | 2023-02-21 | Marvell Asia Pte Ltd | System and methods for hardware-based PCIe link up based on post silicon characterization |
US11263137B2 (en) * | 2020-05-27 | 2022-03-01 | Arm Limited | Core-to-core cache stashing and target discovery |
US12061562B2 (en) * | 2020-05-29 | 2024-08-13 | Netlist, Inc. | Computer memory expansion device and method of operation |
US20210013999A1 (en) * | 2020-06-04 | 2021-01-14 | Intel Corporation | Latency-Optimized Mechanisms for Handling Errors or Mis-Routed Packets for Computer Buses |
WO2021247766A1 (en) * | 2020-06-05 | 2021-12-09 | William David Schwaderer | Shapeshift data encryption methods and systems |
KR102254337B1 (ko) * | 2020-06-22 | 2021-05-21 | 한양대학교 산학협력단 | Dc-밸런싱을 고려한 pam4 5b3q 코딩 방법 및 장치 |
US12056029B2 (en) | 2020-07-27 | 2024-08-06 | Intel Corporation | In-system validation of interconnects by error injection and measurement |
US11360906B2 (en) * | 2020-08-14 | 2022-06-14 | Alibaba Group Holding Limited | Inter-device processing system with cache coherency |
US11362939B2 (en) | 2020-08-31 | 2022-06-14 | Micron Technology, Inc. | Flow control for a multiple flow control unit interface |
US11580044B2 (en) * | 2020-08-31 | 2023-02-14 | Micron Technology, Inc. | Network credit return mechanisms |
US11588745B2 (en) | 2020-08-31 | 2023-02-21 | Micron Technology, Inc. | Early credit return for credit-based flow control |
CN112134859B (zh) * | 2020-09-09 | 2021-07-06 | 上海沈德医疗器械科技有限公司 | 一种基于arm架构的聚焦超声治疗设备控制方法 |
US12061232B2 (en) | 2020-09-21 | 2024-08-13 | Tektronix, Inc. | Margin test data tagging and predictive expected margins |
DE102021121105A1 (de) * | 2020-09-28 | 2022-03-31 | Samsung Electronics Co., Ltd. | Intelligente ablagespeichervorrichtung |
TWI783293B (zh) * | 2020-11-09 | 2022-11-11 | 瑞昱半導體股份有限公司 | 訊號傳輸裝置識別方法與訊號處理系統 |
US11409677B2 (en) | 2020-11-11 | 2022-08-09 | Qorvo Us, Inc. | Bus slave circuit and related single-wire bus apparatus |
TWI809570B (zh) | 2020-11-24 | 2023-07-21 | 美商泰克特洛尼克斯公司 | 用於高速輸入/輸出裕度測試的系統、方法和裝置 |
US11489695B2 (en) | 2020-11-24 | 2022-11-01 | Qorvo Us, Inc. | Full-duplex communications over a single-wire bus |
CN112579479B (zh) * | 2020-12-07 | 2022-07-08 | 成都海光微电子技术有限公司 | 在维护缓存一致性时维护事务次序的处理器及其方法 |
US20220182098A1 (en) * | 2020-12-09 | 2022-06-09 | Texas Instruments Incorporated | Low power digital modes for duty-cycled integrated transceivers |
US11636037B2 (en) | 2020-12-21 | 2023-04-25 | Nxp Usa, Inc. | Methods and apparatuses involving radar system data paths |
CN112953556A (zh) * | 2021-02-05 | 2021-06-11 | 南京大学 | 基于斐波那契数列的抗串扰互联的编解码器及编码方法 |
CN112631989A (zh) * | 2021-03-08 | 2021-04-09 | 南京蓝洋智能科技有限公司 | 一种小芯片间、芯片间、小芯片与芯片间的数据传输方法 |
US11431649B1 (en) * | 2021-03-26 | 2022-08-30 | Arm Limited | Interconnect resource allocation |
CN113019479A (zh) * | 2021-03-31 | 2021-06-25 | 中国人民解放军空军军医大学 | 一种用于模拟井下工作环境的试验箱 |
IT202100008723A1 (it) | 2021-04-08 | 2022-10-08 | Phoenix ICT | Sistema per la gestione in sicurezza dei documenti digitali |
US11789658B2 (en) | 2021-04-13 | 2023-10-17 | SK Hynix Inc. | Peripheral component interconnect express (PCIe) interface system and method of operating the same |
KR102668564B1 (ko) | 2021-06-01 | 2024-05-24 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102518317B1 (ko) | 2021-04-13 | 2023-04-06 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
US20220327074A1 (en) * | 2021-04-13 | 2022-10-13 | SK Hynix Inc. | PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME |
TWI773395B (zh) * | 2021-06-22 | 2022-08-01 | 慧榮科技股份有限公司 | 記憶體控制器與連結識別方法 |
CN113971143B (zh) * | 2021-10-22 | 2023-12-05 | 展讯半导体(成都)有限公司 | 一种内存控制器、物联网芯片及电子设备 |
US11755494B2 (en) * | 2021-10-29 | 2023-09-12 | Advanced Micro Devices, Inc. | Cache line coherence state downgrade |
US12092689B2 (en) | 2021-12-08 | 2024-09-17 | Qorvo Us, Inc. | Scan test in a single-wire bus circuit |
US11706048B1 (en) | 2021-12-16 | 2023-07-18 | Qorvo Us, Inc. | Multi-protocol bus circuit |
CN114510268B (zh) * | 2021-12-24 | 2022-09-20 | 中国人民解放军战略支援部队航天工程大学 | 一种基于gpu实现下变频中单精度浮点数累积误差控制方法 |
US20220342840A1 (en) * | 2021-12-30 | 2022-10-27 | Intel Corporation | Die-to-die interconnect |
US20220327084A1 (en) * | 2021-12-30 | 2022-10-13 | Intel Corporation | Die-to-die interconnect protocol layer |
US11907132B2 (en) | 2022-03-23 | 2024-02-20 | International Business Machines Corporation | Final cache directory state indication |
US11726660B1 (en) * | 2022-04-15 | 2023-08-15 | Dell Products L.P. | Techniques for flexible physical drive expansion using a loop back connection |
US12038853B2 (en) * | 2022-04-22 | 2024-07-16 | Western Digital Technologies, Inc. | Reducing link up time in PCIe systems |
CN114942814B (zh) * | 2022-06-01 | 2023-07-11 | 咪咕视讯科技有限公司 | 页面组件的聚焦方法、系统、终端设备及介质 |
US11880686B2 (en) * | 2022-06-16 | 2024-01-23 | Ampere Computing Llc | Devices transferring cache lines, including metadata on external links |
CN115099356B (zh) * | 2022-07-11 | 2024-08-09 | 大连理工大学 | 工业不平衡数据分类方法、装置、电子设备及存储介质 |
CN115238619B (zh) * | 2022-09-20 | 2023-06-27 | 北京数字光芯集成电路设计有限公司 | 数字芯片的子模块后仿真方法和系统 |
US11914473B1 (en) * | 2022-10-20 | 2024-02-27 | Micron Technology, Inc. | Data recovery using ordered data requests |
KR102712015B1 (ko) * | 2024-01-03 | 2024-09-30 | 주식회사 메타씨앤아이 | 디스플레이 장치에 사용되는 직렬 인터페이스 회로 장치 및 이를 제어하는 방법 |
Family Cites Families (273)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4228496A (en) | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US4191941A (en) | 1978-04-03 | 1980-03-04 | Rca Corporation | Switch matrix for data transfers |
US4716523A (en) | 1985-06-14 | 1987-12-29 | International Business Machines Corporation | Multiple port integrated DMA and interrupt controller and arbitrator |
US5537640A (en) * | 1988-12-30 | 1996-07-16 | Intel Corporation | Asynchronous modular bus architecture with cache consistency |
NZ232223A (en) * | 1989-01-27 | 1993-03-26 | British Telecomm | Alternate burst communication for cordless phones re-established after channel failure |
US4959833A (en) * | 1989-03-08 | 1990-09-25 | Ics Electronics Corporation | Data transmission method and bus extender |
CA2045756C (en) * | 1990-06-29 | 1996-08-20 | Gregg Bouchard | Combined queue for invalidates and return data in multiprocessor system |
AU665521B2 (en) * | 1990-10-03 | 1996-01-11 | Thinking Machines Corporation | Parallel computer system |
US5222062A (en) | 1991-10-03 | 1993-06-22 | Compaq Computer Corporation | Expandable communication system with automatic data concentrator detection |
US5434993A (en) * | 1992-11-09 | 1995-07-18 | Sun Microsystems, Inc. | Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories |
EP0600626A1 (en) * | 1992-11-13 | 1994-06-08 | Cyrix Corporation | Coherency for write-back cache in a system designed for write-through cache |
US5325360A (en) * | 1992-12-09 | 1994-06-28 | National Semiconductor Corporation | Controllable PCM state machine user interface |
US5394555A (en) * | 1992-12-23 | 1995-02-28 | Bull Hn Information Systems Inc. | Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory |
US5432775A (en) | 1993-12-03 | 1995-07-11 | Advanced Micro Devices, Inc. | Auto negotiation system for a communications network |
US5551005A (en) * | 1994-02-25 | 1996-08-27 | Intel Corporation | Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches |
US5572703A (en) * | 1994-03-01 | 1996-11-05 | Intel Corporation | Method and apparatus for snoop stretching using signals that convey snoop results |
US5383143A (en) | 1994-03-30 | 1995-01-17 | Motorola, Inc. | Self re-seeding linear feedback shift register (LFSR) data processing system for generating a pseudo-random test bit stream and method of operation |
EP0706138A1 (en) * | 1994-10-03 | 1996-04-10 | International Business Machines Corporation | Alternating data valid control signals for high performance data transfer |
EP0707269A1 (en) * | 1994-10-11 | 1996-04-17 | International Business Machines Corporation | Cache coherence network for a multiprocessor data processing system |
DE69628493T2 (de) * | 1995-03-31 | 2004-05-19 | Sun Microsystems, Inc., Santa Clara | Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert |
EP0735487B1 (en) * | 1995-03-31 | 2001-10-31 | Sun Microsystems, Inc. | A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system |
US5898826A (en) * | 1995-11-22 | 1999-04-27 | Intel Corporation | Method and apparatus for deadlock-free routing around an unusable routing component in an N-dimensional network |
US5983326A (en) * | 1996-07-01 | 1999-11-09 | Sun Microsystems, Inc. | Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode |
CN1179043A (zh) * | 1996-09-20 | 1998-04-15 | 摩托罗拉公司 | Tdm/tdma系统中离散可变的时隙宽度 |
US5991819A (en) * | 1996-12-03 | 1999-11-23 | Intel Corporation | Dual-ported memory controller which maintains cache coherency using a memory line status table |
US6249520B1 (en) * | 1997-10-24 | 2001-06-19 | Compaq Computer Corporation | High-performance non-blocking switch with multiple channel ordering constraints |
US6052760A (en) * | 1997-11-05 | 2000-04-18 | Unisys Corporation | Computer system including plural caches and utilizing access history or patterns to determine data ownership for efficient handling of software locks |
US5987056A (en) * | 1997-11-13 | 1999-11-16 | Lsi Logic Corporation | PN sequence hopping method and system |
US6163608A (en) * | 1998-01-09 | 2000-12-19 | Ericsson Inc. | Methods and apparatus for providing comfort noise in communications systems |
US6345339B1 (en) * | 1998-02-17 | 2002-02-05 | International Business Machines Corporation | Pseudo precise I-cache inclusivity for vertical caches |
US6334172B1 (en) * | 1998-02-17 | 2001-12-25 | International Business Machines Corporation | Cache coherency protocol with tagged state for modified values |
US6141733A (en) * | 1998-02-17 | 2000-10-31 | International Business Machines Corporation | Cache coherency protocol with independent implementation of optimized cache operations |
US6631448B2 (en) * | 1998-03-12 | 2003-10-07 | Fujitsu Limited | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol |
US7471075B2 (en) | 1998-04-17 | 2008-12-30 | Unique Technologies, Llc | Multi-test Arc fault circuit interrupter tester |
US6430188B1 (en) * | 1998-07-08 | 2002-08-06 | Broadcom Corporation | Unified table for L2, L3, L4, switching and filtering |
ES2194287T3 (es) * | 1998-09-30 | 2003-11-16 | Cit Alcatel | Metodo y disposicion para transicion entre un estado de baja potencia y un estado de plena otencia en un sistema de comunicacion. |
GB2342823B (en) * | 1998-10-16 | 2000-11-29 | Marconi Comm Ltd | Communication system |
US6526481B1 (en) * | 1998-12-17 | 2003-02-25 | Massachusetts Institute Of Technology | Adaptive cache coherence protocols |
US6393529B1 (en) * | 1998-12-21 | 2002-05-21 | Advanced Micro Devices, Inc. | Conversation of distributed memory bandwidth in multiprocessor system with cache coherency by transmitting cancel subsequent to victim write |
US6556634B1 (en) * | 1999-02-10 | 2003-04-29 | Ericsson, Inc. | Maximum likelihood rake receiver for use in a code division, multiple access wireless communication system |
US6185250B1 (en) * | 1999-03-10 | 2001-02-06 | Lucent Technologies Inc. | Training of level learning modems |
WO2000074306A2 (en) | 1999-05-28 | 2000-12-07 | Basic Resources, Inc. | Wireless transceiver network employing node-to-node data messaging |
US6487621B1 (en) * | 1999-08-17 | 2002-11-26 | Compaq Information Technologies Group, L.P. | Architecture, system and method for ensuring an ordered transaction on at least one of a plurality of multi-processor buses that experience a hit-to-modified snoop cycle |
KR100566289B1 (ko) * | 1999-09-03 | 2006-03-30 | 삼성전자주식회사 | 데이타 링크 맵을 이용한 브이5.2 계층 2의 비활성화 제어 방법 및 장치 |
US7010607B1 (en) * | 1999-09-15 | 2006-03-07 | Hewlett-Packard Development Company, L.P. | Method for training a communication link between ports to correct for errors |
US6754185B1 (en) * | 1999-09-27 | 2004-06-22 | Koninklijke Philips Electronics N.V. | Multi link layer to single physical layer interface in a node of a data communication system |
US6674720B1 (en) * | 1999-09-29 | 2004-01-06 | Silicon Graphics, Inc. | Age-based network arbitration system and method |
US6751698B1 (en) * | 1999-09-29 | 2004-06-15 | Silicon Graphics, Inc. | Multiprocessor node controller circuit and method |
US6763034B1 (en) * | 1999-10-01 | 2004-07-13 | Stmicroelectronics, Ltd. | Connection ports for interconnecting modules in an integrated circuit |
US6320406B1 (en) | 1999-10-04 | 2001-11-20 | Texas Instruments Incorporated | Methods and apparatus for a terminated fail-safe circuit |
US6665832B1 (en) * | 2000-03-31 | 2003-12-16 | Qualcomm, Incorporated | Slotted mode decoder state metric initialization |
US6865231B1 (en) * | 2000-06-20 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | High-speed interconnection adapter having automated crossed differential pair correction |
US6961347B1 (en) * | 2000-06-20 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | High-speed interconnection link having automated lane reordering |
US7124252B1 (en) * | 2000-08-21 | 2006-10-17 | Intel Corporation | Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system |
US6668335B1 (en) | 2000-08-31 | 2003-12-23 | Hewlett-Packard Company, L.P. | System for recovering data in a multiprocessor system comprising a conduction path for each bit between processors where the paths are grouped into separate bundles and routed along different paths |
US6892319B2 (en) | 2000-09-08 | 2005-05-10 | Hewlett-Packard Development Company, L.P. | Method for verifying abstract memory models of shared memory multiprocessors |
US7327754B2 (en) | 2000-09-28 | 2008-02-05 | Teridian Semiconductor, Corp. | Apparatus and method for freezing the states of a receiver during silent line state operation of a network device |
US7596139B2 (en) * | 2000-11-17 | 2009-09-29 | Foundry Networks, Inc. | Backplane interface adapter with error control and redundant fabric |
US7236490B2 (en) * | 2000-11-17 | 2007-06-26 | Foundry Networks, Inc. | Backplane interface adapter |
EP1211837A1 (en) * | 2000-12-04 | 2002-06-05 | Telefonaktiebolaget Lm Ericsson | Unequal error protection in a packet transmission system |
EP1217613A1 (fr) * | 2000-12-19 | 2002-06-26 | Koninklijke Philips Electronics N.V. | Reconstitution de trames manquantes ou mauvaises en téléphonie cellulaire |
US6859864B2 (en) * | 2000-12-29 | 2005-02-22 | Intel Corporation | Mechanism for initiating an implicit write-back in response to a read or snoop of a modified cache line |
US20020161975A1 (en) * | 2001-02-23 | 2002-10-31 | Zilavy Daniel V. | Cache to cache copying of clean data |
US7231500B2 (en) * | 2001-03-22 | 2007-06-12 | Sony Computer Entertainment Inc. | External data interface in a computer architecture for broadband networks |
US6987947B2 (en) | 2001-10-30 | 2006-01-17 | Unwired Technology Llc | Multiple channel wireless communication system |
US20030093632A1 (en) * | 2001-11-12 | 2003-05-15 | Intel Corporation | Method and apparatus for sideband read return header in memory interconnect |
US6941425B2 (en) * | 2001-11-12 | 2005-09-06 | Intel Corporation | Method and apparatus for read launch optimizations in memory interconnect |
US7227845B2 (en) * | 2001-12-11 | 2007-06-05 | Motorola, Inc. | Method and apparatus for enabling a communication resource reset |
US7117311B1 (en) * | 2001-12-19 | 2006-10-03 | Intel Corporation | Hot plug cache coherent interface method and apparatus |
US7030737B2 (en) | 2002-03-01 | 2006-04-18 | Hewlett-Packard Development Company, L.P. | Apparatus, system, and method for indicating a level of network activity |
US7200186B2 (en) | 2002-03-14 | 2007-04-03 | Intel Corporation | Methods and apparatus for reducing power usage of a transmitter and receiver coupled via a differential serial data link |
US7334047B1 (en) * | 2002-03-18 | 2008-02-19 | Cisco Technology, Inc. | Method and system for selective link state advertisement blocking over a data network area |
US7653790B2 (en) * | 2002-05-13 | 2010-01-26 | Glasco David B | Methods and apparatus for responding to a request cluster |
US7020729B2 (en) * | 2002-05-16 | 2006-03-28 | Intel Corporation | Protocol independent data transmission interface |
US6973545B2 (en) * | 2002-06-28 | 2005-12-06 | Sun Microsystems, Inc. | System with a directory based coherency protocol and split ownership and access right coherence mechanism |
US20040028074A1 (en) * | 2002-07-26 | 2004-02-12 | Gary Huff | Physical layer device with line state encoding |
US7093172B2 (en) * | 2002-08-07 | 2006-08-15 | Broadcom Corporation | System and method for determining on-chip bit error rate (BER) in a communication system |
US8037224B2 (en) * | 2002-10-08 | 2011-10-11 | Netlogic Microsystems, Inc. | Delegating network processor operations to star topology serial bus interfaces |
US7720135B2 (en) * | 2002-11-07 | 2010-05-18 | Intel Corporation | System, method and device for autonegotiation |
US7505486B2 (en) * | 2002-11-19 | 2009-03-17 | Hewlett-Packard Development Company, L.P. | Degradable network data path transmission scheme |
US7203853B2 (en) * | 2002-11-22 | 2007-04-10 | Intel Corporation | Apparatus and method for low latency power management on a serial data link |
US20040174570A1 (en) | 2002-12-02 | 2004-09-09 | Plunkett Richard Thomas | Variable size dither matrix usage |
US6892283B2 (en) * | 2002-12-05 | 2005-05-10 | International Business Machines Corporation | High speed memory cloner with extended cache coherency protocols and responses |
US7525989B2 (en) * | 2002-12-16 | 2009-04-28 | Intel Corporation | System, method and device for time slot status messaging among SONET nodes |
US6922756B2 (en) * | 2002-12-19 | 2005-07-26 | Intel Corporation | Forward state for use in cache coherency in a multiprocessor system |
US7047475B2 (en) * | 2003-02-04 | 2006-05-16 | Hewlett-Packard Development Company, L.P. | CRC encoding scheme for conveying status information |
US7535836B2 (en) * | 2003-02-12 | 2009-05-19 | Broadcom Corporation | Method and system to provide word-level flow control using spare link bandwidth |
GB2399722A (en) * | 2003-03-21 | 2004-09-22 | Sony Uk Ltd | Data communication synchronisation |
US7464307B2 (en) * | 2003-03-25 | 2008-12-09 | Intel Corporation | High performance serial bus testing methodology |
US7426597B1 (en) * | 2003-05-07 | 2008-09-16 | Nvidia Corporation | Apparatus, system, and method for bus link width optimization of a graphics system |
US7136953B1 (en) | 2003-05-07 | 2006-11-14 | Nvidia Corporation | Apparatus, system, and method for bus link width optimization |
US7792118B2 (en) * | 2003-06-19 | 2010-09-07 | Polytechnic University | Switch module memory structure and per-destination queue flow control for use in a switch |
US7577727B2 (en) * | 2003-06-27 | 2009-08-18 | Newisys, Inc. | Dynamic multiple cluster system reconfiguration |
US20050027876A1 (en) * | 2003-07-29 | 2005-02-03 | Toshitomo Umei | Data transmission method, data transmission system, and data transmission apparatus |
CN1320464C (zh) * | 2003-10-23 | 2007-06-06 | 英特尔公司 | 用于维持共享高速缓存一致性的方法和设备 |
US7146284B2 (en) * | 2003-11-07 | 2006-12-05 | Texas Instruments Incorporated | Method of testing phase lock loop status during a Serializer/Deserializer internal loopback built-in self-test |
US8606946B2 (en) * | 2003-11-12 | 2013-12-10 | Qualcomm Incorporated | Method, system and computer program for driving a data signal in data interface communication data link |
US8090857B2 (en) * | 2003-11-24 | 2012-01-03 | Qualcomm Atheros, Inc. | Medium access control layer that encapsulates data from a plurality of received data units into a plurality of independently transmittable blocks |
US7440468B2 (en) * | 2003-12-11 | 2008-10-21 | International Business Machines Corporation | Queue management of a global link control byte in an input/output subsystem |
US8009563B2 (en) * | 2003-12-19 | 2011-08-30 | Broadcom Corporation | Method and system for transmit scheduling for multi-layer network interface controller (NIC) operation |
US7631118B2 (en) | 2003-12-31 | 2009-12-08 | Intel Corporation | Lane to lane deskewing via non-data symbol processing for a serial point to point link |
JP4005974B2 (ja) * | 2004-01-09 | 2007-11-14 | 株式会社東芝 | 通信装置、通信方法、および通信システム |
US7856534B2 (en) * | 2004-01-15 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Transaction references for requests in a multi-processor network |
US7177987B2 (en) * | 2004-01-20 | 2007-02-13 | Hewlett-Packard Development Company, L.P. | System and method for responses between different cache coherency protocols |
US7620696B2 (en) * | 2004-01-20 | 2009-11-17 | Hewlett-Packard Development Company, L.P. | System and method for conflict responses in a cache coherency protocol |
US8176259B2 (en) * | 2004-01-20 | 2012-05-08 | Hewlett-Packard Development Company, L.P. | System and method for resolving transactions in a cache coherency protocol |
US20050172091A1 (en) * | 2004-01-29 | 2005-08-04 | Rotithor Hemant G. | Method and an apparatus for interleaving read data return in a packetized interconnect to memory |
US20050262250A1 (en) * | 2004-04-27 | 2005-11-24 | Batson Brannon J | Messaging protocol |
US7210000B2 (en) * | 2004-04-27 | 2007-04-24 | Intel Corporation | Transmitting peer-to-peer transactions through a coherent interface |
US7716409B2 (en) * | 2004-04-27 | 2010-05-11 | Intel Corporation | Globally unique transaction identifiers |
US20050240734A1 (en) * | 2004-04-27 | 2005-10-27 | Batson Brannon J | Cache coherence protocol |
CN101902434A (zh) * | 2004-04-30 | 2010-12-01 | 夏普株式会社 | 无线通信系统 |
US7957428B2 (en) * | 2004-05-21 | 2011-06-07 | Intel Corporation | Methods and apparatuses to effect a variable-width link |
US7313712B2 (en) | 2004-05-21 | 2007-12-25 | Intel Corporation | Link power saving state |
US20060041696A1 (en) * | 2004-05-21 | 2006-02-23 | Naveen Cherukuri | Methods and apparatuses for the physical layer initialization of a link-based system interconnect |
US8046488B2 (en) | 2004-05-21 | 2011-10-25 | Intel Corporation | Dynamically modulating link width |
US7219220B2 (en) * | 2004-05-21 | 2007-05-15 | Intel Corporation | Methods and apparatuses for resetting the physical layers of two agents interconnected through a link-based interconnection |
CN1700639A (zh) * | 2004-05-21 | 2005-11-23 | 华为技术有限公司 | 导出和导入无线局域网鉴别与保密基础结构证书信息方法 |
US20060041715A1 (en) * | 2004-05-28 | 2006-02-23 | Chrysos George Z | Multiprocessor chip having bidirectional ring interconnect |
US7467358B2 (en) * | 2004-06-03 | 2008-12-16 | Gwangju Institute Of Science And Technology | Asynchronous switch based on butterfly fat-tree for network on chip application |
US7295618B2 (en) * | 2004-06-16 | 2007-11-13 | International Business Machines Corporation | Automatic adaptive equalization method and system for high-speed serial transmission link |
US7436836B2 (en) * | 2004-06-30 | 2008-10-14 | Cisco Technology, Inc. | Method and apparatus for detecting support for a protocol defining supplemental headers |
US8161429B1 (en) * | 2004-08-20 | 2012-04-17 | Altera Corporation | Methods and apparatus for initializing serial links |
KR100579053B1 (ko) | 2004-08-26 | 2006-05-12 | 삼성전자주식회사 | 스마트 카드와 메모리 카드간의 멀티 인터페이스 방법 및멀티 인터페이스 카드 |
US20060047862A1 (en) * | 2004-09-02 | 2006-03-02 | International Business Machines Corporation | Automatic hardware data link initialization |
US9727468B2 (en) * | 2004-09-09 | 2017-08-08 | Intel Corporation | Resolving multi-core shared cache access conflicts |
US7191255B2 (en) * | 2004-10-27 | 2007-03-13 | Intel Corporation | Transaction layer link down handling for PCI express |
CN100384118C (zh) * | 2004-11-03 | 2008-04-23 | 上海贝尔阿尔卡特股份有限公司 | 处理通用成帧规程帧的方法和装置 |
US7738484B2 (en) * | 2004-12-13 | 2010-06-15 | Intel Corporation | Method, system, and apparatus for system level initialization |
US7761719B2 (en) | 2005-03-28 | 2010-07-20 | Akros Silicon Inc. | Ethernet module |
JP4791530B2 (ja) * | 2005-04-13 | 2011-10-12 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 電子デバイス及びフロー制御方法 |
US7613864B2 (en) * | 2005-04-22 | 2009-11-03 | Sun Microsystems, Inc. | Device sharing |
US7564904B2 (en) | 2005-05-03 | 2009-07-21 | Texas Instruments Incorporated | Apparatus for and method of detection of powered devices over a network |
US7539801B2 (en) * | 2005-05-27 | 2009-05-26 | Ati Technologies Ulc | Computing device with flexibly configurable expansion slots, and method of operation |
US7694060B2 (en) * | 2005-06-17 | 2010-04-06 | Intel Corporation | Systems with variable link widths based on estimated activity levels |
US7620694B2 (en) * | 2005-09-27 | 2009-11-17 | Intel Corporation | Early issue of transaction ID |
US7633877B2 (en) | 2005-11-18 | 2009-12-15 | Intel Corporation | Method and apparatus for meeting compliance for debugging and testing a multi-speed, point-to-point link |
US20070239922A1 (en) * | 2005-12-09 | 2007-10-11 | Horigan John W | Technique for link reconfiguration |
US7924708B2 (en) * | 2005-12-13 | 2011-04-12 | Intel Corporation | Method and apparatus for flow control initialization |
US7606981B2 (en) * | 2005-12-19 | 2009-10-20 | Intel Corporation | System and method for reducing store latency |
CN1996782B (zh) * | 2005-12-26 | 2010-05-05 | 中兴通讯股份有限公司 | 一种空域自适应链路的天线选择指示方法 |
US7430628B2 (en) * | 2006-01-10 | 2008-09-30 | Kabushiki Kaisha Toshiba | System and method for optimized allocation of shared processing resources |
US7543115B1 (en) * | 2006-01-11 | 2009-06-02 | Intel Corporation | Two-hop source snoop based cache coherence protocol |
US7512741B1 (en) * | 2006-01-11 | 2009-03-31 | Intel Corporation | Two-hop source snoop based messaging protocol |
JP4572169B2 (ja) * | 2006-01-26 | 2010-10-27 | エヌイーシーコンピュータテクノ株式会社 | マルチプロセッサシステム及びその動作方法 |
US9390015B2 (en) * | 2006-03-16 | 2016-07-12 | International Business Machines Corporation | Method for performing cacheline polling utilizing a store and reserve instruction |
US7783959B2 (en) * | 2006-03-23 | 2010-08-24 | Intel Corporation | Apparatus and method for reduced power consumption communications over a physical interconnect |
US7681093B2 (en) * | 2006-03-31 | 2010-03-16 | Intel Corporation | Redundant acknowledgment in loopback entry |
US7743129B2 (en) | 2006-05-01 | 2010-06-22 | International Business Machines Corporation | Methods and arrangements to detect a failure in a communication network |
US20070260615A1 (en) * | 2006-05-08 | 2007-11-08 | Eran Shen | Media with Pluggable Codec |
US7721050B2 (en) * | 2006-06-30 | 2010-05-18 | Intel Corporation | Re-snoop for conflict resolution in a cache coherency protocol |
US7536515B2 (en) * | 2006-06-30 | 2009-05-19 | Intel Corporation | Repeated conflict acknowledgements in a cache coherency protocol |
US7506108B2 (en) * | 2006-06-30 | 2009-03-17 | Intel Corporation | Requester-generated forward for late conflicts in a cache coherency protocol |
JP2010500641A (ja) * | 2006-08-08 | 2010-01-07 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 電子装置及び通信同期方法 |
US7986718B2 (en) | 2006-09-15 | 2011-07-26 | Itron, Inc. | Discovery phase in a frequency hopping network |
US7600080B1 (en) * | 2006-09-22 | 2009-10-06 | Intel Corporation | Avoiding deadlocks in a multiprocessor system |
GB2443465A (en) * | 2006-11-06 | 2008-05-07 | Fujitsu Ltd | Communication systems |
CN101715575A (zh) * | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
WO2008087579A2 (en) * | 2007-01-15 | 2008-07-24 | Koninklijke Philips Electronics N.V. | Method of generating low peak-to-average power ratio ( papr) binary preamble sequences for ofdm systems |
DE102007007136B3 (de) | 2007-02-09 | 2008-08-28 | Siemens Ag | Radelektronik und Verfahren zum Betreiben einer Radelektronik |
US8428175B2 (en) * | 2007-03-09 | 2013-04-23 | Qualcomm Incorporated | Quadrature modulation rotating training sequence |
US7978635B2 (en) | 2007-03-21 | 2011-07-12 | Qualcomm Incorporated | H-ARQ acknowledgment detection validation by re-decoding |
EP1973254B1 (en) * | 2007-03-22 | 2009-07-15 | Research In Motion Limited | Device and method for improved lost frame concealment |
KR20100018085A (ko) * | 2007-05-08 | 2010-02-16 | 인터디지탈 테크날러지 코포레이션 | 피기백 긍정 ack/부정 ack 필드 표시자 및 폴링 표시자를 제공하기 위한 방법 및 장치 |
US7827357B2 (en) * | 2007-07-31 | 2010-11-02 | Intel Corporation | Providing an inclusive shared cache among multiple core-cache clusters |
US7899111B2 (en) | 2007-08-07 | 2011-03-01 | Intel Corporation | Link interface technique including data indicator symbols |
US20090063889A1 (en) * | 2007-09-05 | 2009-03-05 | Faisal Dada | Aligning data on parallel transmission lines |
US20090125363A1 (en) * | 2007-10-22 | 2009-05-14 | Nokia Siemens Networks Oy | Method, apparatus and computer program for employing a frame structure in wireless communication |
EP2063581A1 (en) * | 2007-11-20 | 2009-05-27 | STMicroelectronics (Grenoble) SAS | Transferring a stream of data between first and second electronic devices via a network on-chip |
US8392663B2 (en) * | 2007-12-12 | 2013-03-05 | Mips Technologies, Inc. | Coherent instruction cache utilizing cache-op execution resources |
US8179901B2 (en) * | 2008-02-11 | 2012-05-15 | Vitesse Semiconductor Corporation | System and method for squelching a recovered clock in an ethernet network |
WO2009108205A1 (en) | 2008-02-29 | 2009-09-03 | Hewlett-Packard Development Company, L.P. | Modular system and retractable assembly for electronic devices |
DE102008012979A1 (de) * | 2008-03-06 | 2009-09-10 | Gip Ag | Verfahren und Programm zum Bereitstellen von Datenkohärenz in Netzwerken |
US7492807B1 (en) | 2008-04-07 | 2009-02-17 | International Business Machines Corporation | Pseudo-random bit sequence (PRBS) synchronization for interconnects with dual-tap scrambling devices and methods |
US9037768B2 (en) * | 2008-04-28 | 2015-05-19 | Hewlett-Packard Development Company, L.P. | Virtual-interrupt-mode interface and method for virtualizing an interrupt mode |
US8762652B2 (en) * | 2008-04-30 | 2014-06-24 | Freescale Semiconductor, Inc. | Cache coherency protocol in a data processing system |
CN101599811B (zh) * | 2008-06-02 | 2011-04-06 | 华为技术有限公司 | 一种数据处理装置,通信设备以及数据处理方法 |
US7769048B2 (en) | 2008-06-25 | 2010-08-03 | Intel Corporation | Link and lane level packetization scheme of encoding in serial links |
US8201069B2 (en) * | 2008-07-01 | 2012-06-12 | International Business Machines Corporation | Cyclical redundancy code for use in a high-speed serial link |
US8205045B2 (en) * | 2008-07-07 | 2012-06-19 | Intel Corporation | Satisfying memory ordering requirements between partial writes and non-snoop accesses |
US8250311B2 (en) * | 2008-07-07 | 2012-08-21 | Intel Corporation | Satisfying memory ordering requirements between partial reads and non-snoop accesses |
CN101325461B (zh) * | 2008-07-25 | 2011-04-27 | 浙江大学 | 基于无速率码的认知无线电通信链路的建立和维护方法 |
CN102210143B (zh) * | 2008-09-08 | 2014-12-31 | 三星电子株式会社 | 设计用于接收移动/手持信号的数字电视接收机中的子频道获取 |
US9119165B2 (en) * | 2009-09-10 | 2015-08-25 | Nextnav, Llc | Coding in a wide area positioning system (WAPS) |
CA2736768A1 (en) * | 2008-09-10 | 2010-03-18 | Commlabs, Inc. | Wide area positioning system |
US8265071B2 (en) * | 2008-09-11 | 2012-09-11 | Juniper Networks, Inc. | Methods and apparatus related to a flexible data center security architecture |
CN101430664B (zh) * | 2008-09-12 | 2010-07-28 | 中国科学院计算技术研究所 | 一种多处理器系统及Cache一致性消息传输方法 |
EP2173066B1 (en) | 2008-10-01 | 2012-05-16 | STMicroelectronics Srl | Method of exchanging information in a Network-on-Chip communication network, corresponding Network-on-Chip communication network and computer program product |
WO2010096122A1 (en) * | 2008-10-29 | 2010-08-26 | Adapteva Incorporated | Mesh network |
KR100988809B1 (ko) * | 2008-11-06 | 2010-10-20 | 주식회사 하이닉스반도체 | 반도체 메모리 장치 및 출력인에이블 신호 생성 방법 |
US8706479B2 (en) * | 2008-11-14 | 2014-04-22 | Broadcom Corporation | Packet loss concealment for sub-band codecs |
CN101437033B (zh) * | 2008-12-16 | 2012-07-11 | 杭州华三通信技术有限公司 | 一种支持可变速率的方法和网络设备 |
US8300571B2 (en) * | 2008-12-17 | 2012-10-30 | Viasat, Inc. | Start of frame correlation for physical layer header synchronization |
US8799582B2 (en) * | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US8026726B2 (en) * | 2009-01-23 | 2011-09-27 | Silicon Image, Inc. | Fault testing for interconnections |
KR101598093B1 (ko) * | 2009-02-02 | 2016-02-26 | 엘지전자 주식회사 | 송/수신 시스템 및 데이터 처리 방법 |
KR20100092353A (ko) * | 2009-02-12 | 2010-08-20 | 엘지전자 주식회사 | 트래픽 암호화 키 관리방법 및 장치 |
WO2010096969A1 (zh) * | 2009-02-27 | 2010-09-02 | 华为技术有限公司 | 无源光网络中发送上行传送帧的方法及设备 |
KR101133256B1 (ko) * | 2009-02-27 | 2012-04-09 | 한국과학기술원 | 시그니처 정보를 이용한 물리계층에서의 타임스탬프 처리장치 및 그 방법 |
US20100228922A1 (en) | 2009-03-09 | 2010-09-09 | Deepak Limaye | Method and system to perform background evictions of cache memory lines |
US8401400B2 (en) * | 2009-03-10 | 2013-03-19 | Tyco Electronics Subsea Communications Llc | Detection of data in signals with data pattern dependent signal distortion |
CN101854331A (zh) * | 2009-04-02 | 2010-10-06 | 天际微芯(北京)科技有限公司 | 训练序列结构及训练方法 |
US9690625B2 (en) * | 2009-06-16 | 2017-06-27 | Oracle America, Inc. | System and method for out-of-order resource allocation and deallocation in a threaded machine |
US8335911B2 (en) * | 2009-05-21 | 2012-12-18 | Oracle America, Inc. | Dynamic allocation of resources in a threaded, heterogeneous processor |
US8199759B2 (en) | 2009-05-29 | 2012-06-12 | Intel Corporation | Method and apparatus for enabling ID based streams over PCI express |
CN101561794B (zh) * | 2009-06-05 | 2012-07-04 | 威盛电子股份有限公司 | 通用串行总线装置 |
US8239704B2 (en) * | 2009-06-12 | 2012-08-07 | Cray Inc. | Global clock via embedded spanning tree |
WO2010147264A1 (en) * | 2009-06-16 | 2010-12-23 | Lg Electronics Inc. | Method of exchanging messages and transmitting and receiving devices |
US8782347B2 (en) * | 2009-06-26 | 2014-07-15 | Intel Corporation | Controllably exiting an unknown state of a cache coherency directory |
US20100332877A1 (en) | 2009-06-30 | 2010-12-30 | Yarch Mark A | Method and apparatus for reducing power consumption |
US8831666B2 (en) * | 2009-06-30 | 2014-09-09 | Intel Corporation | Link power savings with state retention |
CN101695193A (zh) * | 2009-09-27 | 2010-04-14 | 上海华为技术有限公司 | 一种下行数据发送和下行数据接收的方法和装置 |
US8799586B2 (en) | 2009-09-30 | 2014-08-05 | Intel Corporation | Memory mirroring and migration at home agent |
US8327228B2 (en) * | 2009-09-30 | 2012-12-04 | Intel Corporation | Home agent data and memory management |
US8819305B2 (en) * | 2009-11-16 | 2014-08-26 | Intel Corporation | Directly providing data messages to a protocol layer |
US8621128B2 (en) | 2009-12-04 | 2013-12-31 | St-Ericsson Sa | Methods and systems for reliable link startup |
US9100809B2 (en) * | 2009-12-21 | 2015-08-04 | Julia Olincy Olincy | Automatic response option mobile system for responding to incoming texts or calls or both |
US8301813B2 (en) * | 2009-12-24 | 2012-10-30 | Ati Technologies Ulc | Method and device for disabling a higher version of a computer bus and interconnection protocol for interoperability with a device compliant to a lower version of the computer bus and interconnection protocol |
US20120227045A1 (en) | 2009-12-26 | 2012-09-06 | Knauth Laura A | Method, apparatus, and system for speculative execution event counter checkpointing and restoring |
US8804960B2 (en) * | 2010-02-22 | 2014-08-12 | International Business Machines Corporation | Implementing known scrambling relationship among multiple serial links |
US8892820B2 (en) * | 2010-03-19 | 2014-11-18 | Netapp, Inc. | Method and system for local caching of remote storage data |
US8473567B2 (en) | 2010-03-29 | 2013-06-25 | Intel Corporation | Generating a packet including multiple operation codes |
US8514885B2 (en) * | 2010-03-30 | 2013-08-20 | International Business Machines Corporation | Using variable length packets to embed extra network control information |
US8539260B2 (en) * | 2010-04-05 | 2013-09-17 | Intel Corporation | Method, apparatus, and system for enabling platform power states |
CN101867401B (zh) * | 2010-05-04 | 2013-11-20 | 西安交通大学 | 一种遮挡躲避的60GHz多天线系统及其信号处理方法 |
CN102238623B (zh) * | 2010-05-06 | 2014-04-09 | 中兴通讯股份有限公司 | 加快无线链路控制窗口状态应答的方法及基站子系统 |
JP2011248814A (ja) * | 2010-05-31 | 2011-12-08 | Nec Corp | PCIExpressリンクエラー検出及び自動復旧機能を備えたデバイス |
US9448938B2 (en) * | 2010-06-09 | 2016-09-20 | Micron Technology, Inc. | Cache coherence protocol for persistent memories |
CN101867452B (zh) | 2010-06-10 | 2013-07-17 | 国网电力科学研究院 | 一种电力专用串行实时总线的通信方法 |
KR101323055B1 (ko) * | 2010-06-17 | 2013-10-29 | 엘지디스플레이 주식회사 | 내부 디스플레이 포트 인터페이스 테스트 방법 및 장치 |
CN102315917B (zh) * | 2010-07-06 | 2014-12-17 | 瑞昱半导体股份有限公司 | 一种用于信号传输的省电方法及装置 |
US8402295B2 (en) * | 2010-07-09 | 2013-03-19 | Qualcomm Incorporated | Techniques employing flits for clock gating |
CN102377608B (zh) * | 2010-08-12 | 2014-07-09 | 盛科网络(苏州)有限公司 | 物理层故障模拟系统及方法 |
US8656115B2 (en) * | 2010-08-20 | 2014-02-18 | Intel Corporation | Extending a cache coherency snoop broadcast protocol with directory information |
WO2012038546A1 (en) | 2010-09-23 | 2012-03-29 | St-Ericsson Sa | Multi-lane data transmission de-skew |
US9104793B2 (en) * | 2010-09-24 | 2015-08-11 | Intel Corporation | Method and system of adapting communication links to link conditions on a platform |
US8751714B2 (en) | 2010-09-24 | 2014-06-10 | Intel Corporation | Implementing quickpath interconnect protocol over a PCIe interface |
US9146610B2 (en) | 2010-09-25 | 2015-09-29 | Intel Corporation | Throttling integrated link |
US8805196B2 (en) * | 2010-09-30 | 2014-08-12 | Teradyne, Inc. | Electro-optical communications link |
JP5597104B2 (ja) * | 2010-11-16 | 2014-10-01 | キヤノン株式会社 | データ転送装置及びその制御方法 |
CN102142987B (zh) * | 2010-12-09 | 2014-01-08 | 浪潮(北京)电子信息产业有限公司 | 一种高速串行总线设备及其传输数据的方法 |
JP2012146041A (ja) * | 2011-01-11 | 2012-08-02 | Hitachi Ltd | 計算機装置及び信号伝送方法 |
JP2012155650A (ja) * | 2011-01-28 | 2012-08-16 | Toshiba Corp | ルータ及びメニーコアシステム |
EP2482196B1 (en) * | 2011-01-31 | 2016-06-29 | Canon Kabushiki Kaisha | Image processing apparatus, printing apparatus and controlling method in image processing apparatus |
US8924672B2 (en) * | 2011-02-08 | 2014-12-30 | Infineon Technologies Ag | Device with processing unit and information storage |
US8756378B2 (en) * | 2011-02-17 | 2014-06-17 | Oracle International Corporation | Broadcast protocol for a network of caches |
US8824489B1 (en) * | 2011-04-26 | 2014-09-02 | Marvell International Ltd. | Physical layer (PHY) devices for use in automotive and industrial applications |
US9189424B2 (en) | 2011-05-31 | 2015-11-17 | Hewlett-Packard Development Company, L.P. | External cache operation based on clean castout messages |
US8868955B2 (en) | 2011-07-01 | 2014-10-21 | Intel Corporation | Enhanced interconnect link width modulation for power savings |
US8788890B2 (en) * | 2011-08-05 | 2014-07-22 | Apple Inc. | Devices and methods for bit error rate monitoring of intra-panel data link |
US8514889B2 (en) * | 2011-08-26 | 2013-08-20 | Sonics, Inc. | Use of common data format to facilitate link width conversion in a router with flexible link widths |
US9208110B2 (en) * | 2011-11-29 | 2015-12-08 | Intel Corporation | Raw memory transaction support |
WO2013085501A1 (en) | 2011-12-07 | 2013-06-13 | Intel Corporation | Multiple transaction data flow control unit for high-speed interconnect |
CN103188059A (zh) | 2011-12-28 | 2013-07-03 | 华为技术有限公司 | 快速通道互联系统中数据包重传方法、装置和系统 |
CN102571571A (zh) * | 2011-12-28 | 2012-07-11 | 南京邮电大学 | 一种应用于时延容忍网络的多层次有效路由方法 |
CN102594745B (zh) * | 2011-12-29 | 2015-02-04 | 东南大学 | 单载波频域均衡系统中的同步方法及其实现电路 |
US8892269B2 (en) | 2012-03-30 | 2014-11-18 | Intel Corporation | Power down and quick start of thermal sensor |
CN102685128B (zh) * | 2012-05-09 | 2015-09-30 | 东南大学 | 一种基于状态机的协议构造方法 |
US9875204B2 (en) | 2012-05-18 | 2018-01-23 | Dell Products, Lp | System and method for providing a processing node with input/output functionality provided by an I/O complex switch |
US8856573B2 (en) * | 2012-06-27 | 2014-10-07 | Intel Corporation | Setting a number (N) of fast training sequences (FTS) automatically to an optimal value |
US9280504B2 (en) | 2012-08-24 | 2016-03-08 | Intel Corporation | Methods and apparatus for sharing a network interface controller |
US8984313B2 (en) | 2012-08-31 | 2015-03-17 | Intel Corporation | Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator |
US8935578B2 (en) | 2012-09-29 | 2015-01-13 | Intel Corporation | Method and apparatus for optimizing power and latency on a link |
US8996757B2 (en) * | 2012-09-29 | 2015-03-31 | Intel Corporation | Method and apparatus to generate platform correctable TX-RX |
US9003091B2 (en) | 2012-10-18 | 2015-04-07 | Hewlett-Packard Development Company, L.P. | Flow control for a Serial Peripheral Interface bus |
US9479196B2 (en) * | 2012-10-22 | 2016-10-25 | Intel Corporation | High performance interconnect link layer |
US9600431B2 (en) | 2012-10-22 | 2017-03-21 | Intel Corporation | High performance interconnect physical layer |
US9280507B2 (en) * | 2012-10-22 | 2016-03-08 | Intel Corporation | High performance interconnect physical layer |
CN104380269B (zh) | 2012-10-22 | 2018-01-30 | 英特尔公司 | 高性能互连相干协议 |
WO2014133527A1 (en) | 2013-02-28 | 2014-09-04 | Intel Corporation | Leveraging an enumeration and/or configuration mechanism of one interconnect protocol for a different interconnect protocol |
US9436244B2 (en) * | 2013-03-15 | 2016-09-06 | Intel Corporation | Adaptive control loop protection for fast and robust recovery from low-power states in high speed serial I/O applications |
CN105765544B (zh) * | 2013-12-26 | 2019-04-09 | 英特尔公司 | 多芯片封装链路 |
US9946676B2 (en) * | 2015-03-26 | 2018-04-17 | Intel Corporation | Multichip package link |
-
2013
- 2013-03-15 CN CN201380016955.XA patent/CN104380269B/zh active Active
- 2013-03-15 CN CN201380049066.3A patent/CN104737147B/zh active Active
- 2013-03-15 US US13/976,971 patent/US9378171B2/en active Active
- 2013-03-15 CN CN201710038234.9A patent/CN106815151B/zh active Active
- 2013-03-15 WO PCT/US2013/032699 patent/WO2014065878A1/en active Application Filing
- 2013-03-15 WO PCT/US2013/032670 patent/WO2014065876A1/en active Application Filing
- 2013-03-15 US US13/976,954 patent/US20140201463A1/en not_active Abandoned
- 2013-03-15 CN CN201710038141.6A patent/CN106776364B/zh active Active
- 2013-03-15 DE DE112013005086.2T patent/DE112013005086T5/de active Pending
- 2013-03-15 CN CN201810011011.8A patent/CN108055214B/zh active Active
- 2013-03-15 KR KR1020157007221A patent/KR101686359B1/ko active IP Right Grant
- 2013-03-15 CN CN201410582176.2A patent/CN104391816B/zh active Active
- 2013-03-15 KR KR1020157007216A patent/KR101700261B1/ko active IP Right Grant
- 2013-03-15 KR KR1020177000908A patent/KR101815180B1/ko active IP Right Grant
- 2013-03-15 DE DE112013004105.7T patent/DE112013004105T5/de active Pending
- 2013-03-15 DE DE112013003723.8T patent/DE112013003723B4/de active Active
- 2013-03-15 KR KR1020167034124A patent/KR101831550B1/ko active Application Filing
- 2013-03-15 CN CN201380049212.2A patent/CN104769570B/zh active Active
- 2013-03-15 KR KR1020187004227A patent/KR101861312B1/ko active IP Right Grant
- 2013-03-15 CN CN201380049203.3A patent/CN104969206B/zh active Active
- 2013-03-15 CN CN201710043763.8A patent/CN107045479B/zh active Active
- 2013-03-15 KR KR1020167035979A patent/KR101815173B1/ko active IP Right Grant
- 2013-03-15 CN CN201710093224.5A patent/CN107015924B/zh active Active
- 2013-03-15 KR KR1020177018159A patent/KR101985120B1/ko active IP Right Grant
- 2013-03-15 KR KR1020147033103A patent/KR101847943B1/ko active IP Right Grant
- 2013-03-15 KR KR1020177018169A patent/KR101905055B1/ko active IP Right Grant
- 2013-03-15 KR KR1020157007228A patent/KR101686360B1/ko active IP Right Grant
- 2013-03-15 WO PCT/US2013/032601 patent/WO2014065873A1/en active Application Filing
- 2013-03-15 WO PCT/US2013/032709 patent/WO2014065880A1/en active Application Filing
- 2013-03-15 CN CN201810337297.9A patent/CN108614783B/zh active Active
- 2013-03-15 CN CN201380049199.0A patent/CN104969207A/zh active Pending
- 2013-03-15 DE DE112013007751.5T patent/DE112013007751B3/de active Active
- 2013-03-15 WO PCT/US2013/032708 patent/WO2014065879A1/en active Application Filing
- 2013-03-15 KR KR1020157007208A patent/KR101691756B1/ko active IP Right Grant
- 2013-03-15 DE DE112013005093.5T patent/DE112013005093T5/de active Pending
- 2013-03-15 KR KR1020167034107A patent/KR101755005B1/ko active IP Right Grant
- 2013-03-15 WO PCT/US2013/032651 patent/WO2014065875A1/en active Application Filing
- 2013-03-15 KR KR1020177000400A patent/KR101754890B1/ko active IP Right Grant
- 2013-03-15 CN CN201380049062.5A patent/CN104756097B/zh active Active
- 2013-03-15 US US13/976,960 patent/US9418035B2/en not_active Expired - Fee Related
- 2013-03-15 KR KR1020177009525A patent/KR101772037B1/ko active IP Right Grant
- 2013-03-15 CN CN202010633738.7A patent/CN111737167B/zh active Active
- 2013-03-15 CN CN201711159546.1A patent/CN108228495B/zh active Active
- 2013-03-15 JP JP2015537687A patent/JP6139689B2/ja active Active
- 2013-03-15 DE DE112013005090.0T patent/DE112013005090T5/de active Pending
- 2013-03-15 WO PCT/US2013/032690 patent/WO2014065877A1/en active Application Filing
- 2013-03-15 KR KR1020157007231A patent/KR101696124B1/ko active IP Right Grant
- 2013-03-15 DE DE112013002069.6T patent/DE112013002069B4/de active Active
- 2013-03-15 KR KR1020157007232A patent/KR101700545B1/ko active IP Right Grant
- 2013-03-15 CN CN201710043551.XA patent/CN106681938B/zh active Active
- 2013-03-15 KR KR1020147027189A patent/KR101598746B1/ko active IP Right Grant
- 2013-03-15 CN CN201380016998.8A patent/CN104335196B/zh active Active
- 2013-03-15 DE DE112013004094.8T patent/DE112013004094B4/de active Active
- 2013-03-15 KR KR1020177001836A patent/KR101828756B1/ko active IP Right Grant
- 2013-03-15 BR BR112015006432A patent/BR112015006432A2/pt not_active IP Right Cessation
- 2013-03-16 US US14/437,612 patent/US9753885B2/en active Active
- 2013-03-16 CN CN201380055335.7A patent/CN104737142B/zh active Active
- 2013-03-16 WO PCT/US2013/032718 patent/WO2014065881A1/en active Application Filing
- 2013-03-16 EP EP18185062.9A patent/EP3410304B1/en active Active
- 2013-03-16 KR KR1020157010316A patent/KR101681509B1/ko active IP Right Grant
- 2013-03-16 EP EP13848818.4A patent/EP2909728A4/en not_active Withdrawn
- 2013-03-27 RU RU2014145179/08A patent/RU2599971C2/ru active
- 2013-03-27 RU RU2014138917/08A patent/RU2579140C1/ru active
- 2013-03-27 CN CN201710067578.2A patent/CN107102960B/zh active Active
- 2013-03-27 KR KR1020167010386A patent/KR101861452B1/ko active IP Right Grant
- 2013-03-27 CN CN201810095156.0A patent/CN108132892B/zh active Active
- 2013-03-27 WO PCT/US2013/034153 patent/WO2014065882A1/en active Application Filing
- 2013-03-27 KR KR1020177000322A patent/KR101815178B1/ko active IP Right Grant
- 2013-03-27 DE DE112013005104.4T patent/DE112013005104T5/de active Pending
- 2013-03-27 KR KR1020147032656A patent/KR101599852B1/ko active IP Right Grant
- 2013-03-27 CN CN201380049075.2A patent/CN104995614B/zh active Active
- 2013-03-27 KR KR1020157007226A patent/KR101695340B1/ko active IP Right Grant
- 2013-03-27 CN CN201710243776.XA patent/CN107092565B/zh active Active
- 2013-03-27 CN CN201410751146.XA patent/CN104536933B/zh active Active
- 2013-03-27 WO PCT/US2013/034188 patent/WO2014065883A1/en active Application Filing
- 2013-03-27 DE DE112013002090.4T patent/DE112013002090T5/de active Pending
- 2013-03-27 DE DE112013007752.3T patent/DE112013007752B3/de active Active
- 2013-03-27 DE DE201311002880 patent/DE112013002880T5/de active Pending
- 2013-03-27 KR KR1020187012101A patent/KR101912074B1/ko active IP Right Grant
- 2013-03-27 KR KR1020147027297A patent/KR101615908B1/ko active IP Right Grant
- 2013-03-27 CN CN201380017285.3A patent/CN104487958B/zh active Active
- 2013-03-28 CN CN201380016778.5A patent/CN104303166B/zh active Active
- 2013-03-28 KR KR1020157007215A patent/KR101642086B1/ko active IP Right Grant
- 2013-03-28 DE DE112013001360.6T patent/DE112013001360B4/de active Active
- 2013-03-28 KR KR1020167019481A patent/KR101689998B1/ko active IP Right Grant
- 2013-03-28 WO PCT/US2013/034341 patent/WO2014065884A1/en active Application Filing
- 2013-03-28 DE DE112013007767.1T patent/DE112013007767B3/de active Active
- 2013-03-28 CN CN201711267378.8A patent/CN107968756B/zh active Active
- 2013-10-22 US US14/060,191 patent/US9626321B2/en active Active
-
2014
- 2014-11-12 US US14/538,897 patent/US20150067207A1/en not_active Abandoned
- 2014-11-26 US US14/554,532 patent/US20150081984A1/en not_active Abandoned
-
2016
- 2016-06-27 US US15/193,697 patent/US9892086B2/en active Active
- 2016-08-15 US US15/237,291 patent/US9916266B2/en active Active
- 2016-12-28 US US15/393,153 patent/US10248591B2/en active Active
- 2016-12-29 US US15/393,577 patent/US20170109286A1/en not_active Abandoned
-
2017
- 2017-04-27 JP JP2017088878A patent/JP6423040B2/ja active Active
- 2017-08-31 US US15/692,613 patent/US10204064B2/en active Active
- 2017-11-22 US US15/821,401 patent/US10216661B2/en active Active
-
2018
- 2018-03-12 US US15/918,895 patent/US10380046B2/en active Active
-
2019
- 2019-02-25 US US16/285,035 patent/US20190391939A1/en not_active Abandoned
- 2019-07-29 US US16/525,454 patent/US10909055B2/en active Active
-
2020
- 2020-07-23 US US16/937,499 patent/US11269793B2/en active Active
- 2020-12-25 US US17/134,242 patent/US11741030B2/en active Active
-
2021
- 2021-12-20 US US17/556,853 patent/US20220114122A1/en active Pending
-
2023
- 2023-07-05 US US18/347,236 patent/US20240012772A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101828756B1 (ko) | 고성능 인터커넥트 코히어런스 프로토콜 | |
US11657015B2 (en) | Multiple uplink port devices | |
US12099458B2 (en) | Pooled memory address translation | |
US10268583B2 (en) | High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier | |
KR101848379B1 (ko) | 공유 메모리 링크 내의 저전력 진입 | |
CN107924380B (zh) | 使用业务类别分配高速缓存的方法、装置和系统 | |
US10120774B2 (en) | Coherence protocol tables | |
US10754808B2 (en) | Bus-device-function address space mapping | |
US10061707B2 (en) | Speculative enumeration of bus-device-function address space | |
WO2017151267A1 (en) | Flattening portal bridge | |
US20220004439A1 (en) | Cluster identifier remapping for asymmetric topologies |
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 |