KR20160074393A - 기입-전용 프로세서간 리셋 동기화를 위한 방법 및 장치 - Google Patents

기입-전용 프로세서간 리셋 동기화를 위한 방법 및 장치 Download PDF

Info

Publication number
KR20160074393A
KR20160074393A KR1020150162147A KR20150162147A KR20160074393A KR 20160074393 A KR20160074393 A KR 20160074393A KR 1020150162147 A KR1020150162147 A KR 1020150162147A KR 20150162147 A KR20150162147 A KR 20150162147A KR 20160074393 A KR20160074393 A KR 20160074393A
Authority
KR
South Korea
Prior art keywords
peer
processing unit
indication
reset
memory
Prior art date
Application number
KR1020150162147A
Other languages
English (en)
Other versions
KR101775459B1 (ko
Inventor
마이클 버거
키 우이 리
무케시 카타리아
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20160074393A publication Critical patent/KR20160074393A/ko
Application granted granted Critical
Publication of KR101775459B1 publication Critical patent/KR101775459B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Multi Processors (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

기입-전용 프로세서간 리셋 동기화를 수행하기 위한 방법 및 장치가 본 명세서에 개시된다. 일 실시예에서, 프로세싱 유닛은: 정보를 제2 프로세싱 유닛에 송신하는 통신 유닛; 리셋 동기화 정보 및 메시지 정보를 저장하는 메모리; 및 메모리 내에 세팅된 비트 지시들에 기초하여 자신과 제2 프로세싱 유닛 사이에 기입-전용 리셋 동기화를 수행하는 프로세싱 로직을 포함한다.

Description

기입-전용 프로세서간 리셋 동기화를 위한 방법 및 장치{METHOD AND APPARATUS FOR WRITE-ONLY INTER-PROCESSOR RESET SYNCHRONIZATION}
본 발명의 실시예들은 이종 프로세싱 코어들 간의 통신 분야와 관련되고; 더 구체적으로, 본 발명의 실시예들은 기입-전용 통신을 이용하여 서로 통신하는 프로세싱 유닛들(예를 들어, 프로세서 코어들, 지적 재산권(IP) 코어들, 기타 등등) 사이의 리셋 동기화와 관련된다.
프로세서간 통신(IPC)은 상이한 프로세서 코어들(예를 들어, 상이한 이종 프로세서 코어들)에서 실행하는 프로세스들 간에 데이터를 교환하는 데 종종 사용된다. 이러한 프로세스들은 상이한 프로세싱 코어들 또는 스레드들을 이용하여 중앙 프로세싱 유닛(CPU) 또는 시스템-온-칩(SOC) 상에서 실행되는 프로그램들로부터 유래할 수 있다. 프로세스들이 개별적으로 실행될 수 있더라도, 그들은 서로 간에 정보를 통신할 필요가 있을 수 있다.
IPC 통신은 프로세스들이 통신 프로토콜들에 따라 실행되고 있는 프로세싱 코어들 또는 유닛들의 인터페이스들을 이용하여 수행된다. 때때로, 통신 프로토콜들은 프로세싱 코어들 또는 유닛이 피어-투-피어 통신을 이용하여 통신하도록 한다. IPC 통신에 사용되는 통신 프로토콜들은 정보의 교환을 용이하게 하기 위해 판독 및 기입 동작들을 종종 포함한다.
다른 피어와 IPC 통신 중인 피어들 중 하나가 리셋 또는 디세이블될 것일 때 문제가 발생한다. 피어는 예를 들어, 자신의 전원이 꺼질 때 디세이블될 수 있다. 이것이 발생할 때, 하나의 피어는 다른 피어가 리셋되고 있거나, 또는 디세이블되는 것을 알기 어렵다. 그러한 경우에, 제1 피어는 제2 피어로부터의 정보를 기다리고 있을 수 있고, 이것은 제1 피어가 끝없이 제2 피어로부터의 응답을 기다리고 있는 상태로 들어가게 유발할 수 있으며, 그에 의해 제1 피어의 기다림 또는 제1 피어에 의한 경험적 타임아웃으로 이어진다(이것은 일부 경우들에서 잘못될 수 있음). 게다가, 이것은 제2 피어가 재-초기화되지만 자신의 정황을 잃어버린 상황을 야기할 수 있고, 제1 피어는 제2 피어가 상이한 상태에 있다는 잘못된 가정하에(예를 들어, 제1 피어가 세션이 진행 중이라고 믿는 반면에, 제2 피어는 자신의 어떠한 개념도 잃어버림) 메시지들을 계속해서 전송한다. 상태의 마찬가지의 미스매치가 다른 방향에서도 발생할 수 있다. 마침내, 많은 경우들에서 메시지들이 단위적이 아니기 때문에(예를 들어, 일련의 레지스터 기입들로 구성됨), 제1 피어가 비-단위적 메시지를 전송하고 제2 피어가 중간에 리셋을 겪었다면, 제1 피어가 계속해서 메시지들을 파퓰레이트하는 동안, 리셋 자체는 제2 피어의 메시지 레지스터들의 리셋을 포함할 것이고, 제2 피어가 손상된 메시지를 수신하기에 이르는 것이 가능하다. 이것은, 특히 타임아웃 또는 재시도들이 제1 피어가 다른 피어는 가용적이지 않다고 결론 내리게 야기할 경우들에서, 제1 피어가 제2 피어로부터 자신의 상태에 관한 정보를 판독하는 판독 동작들을 이용할 수 있고 판독 동작들에 대한 응답에 기초하여 제2 피어가 가용적이지 않은지 또는 리셋을 겪었는지 결정할 수 있다면, 회피될 수 있다.
판독 동작들이 허용될 때 피어들 간에 통신 리셋 정보가 핸들링하기에 더 용이해지지만, 판독 동작들은 바람직하지 않은 다른 문제들을 제시한다. 예를 들어, 피어의 코어가 리셋되거나 또는 디세이블되고 있을 때(예를 들어, 저전력 상태로 들어가는 것에 기인하여 디세이블됨), 이러한 동작들은 예를 들어, 코어의 격리로 인해 판독의 실패를 초래할 수 있다. 또한, 판독들을 포함하는 통신 프로토콜은 상이한 기저의 버스들 및/또는 구조들을 가로질러 이동하기가 더 어려울 수 있다.
그러므로, 판독 동작들을 포함하지 않는 피어들 간의 통신 프로토콜을 이용하는 것이 바람직할 수 있다. 그러나, 피어들이 기입 동작들을 통해서만 통신하는 상황들에서는, 다른 피어가 리셋을 겪거나 또는 달리 비가용적으로 된 것을 알지 못한다는 문제가 남아있다.
본 발명은 아래에 제공되는 상세한 설명으로부터 그리고 본 발명의 다양한 실시예들의 첨부 도면들로부터 더 충분히 이해될 것이지만, 이들은 본 발명을 특정 실시예들로 한정하는 것으로 간주되지 않아야 하고, 단지 설명 및 이해를 위한 것일 뿐이다.
도 1은 기입-전용 통신 프로토콜을 이용하여 서로 통신할 수 있는 두 개의 프로세싱 요소들을 도시한다.
도 2는 리셋 동기화 프로세스의 일 실시예의 흐름도이다.
도 3 및 도 4는 리셋 동기화에서 리더와 팔로워에 의해 각각 수행되는 동작들의 더 상세한 흐름도들이다.
도 5는 시스템 온-칩(SOC) 설계의 실시예를 도시한다.
도 6은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 실시예를 도시한다.
다음의 설명에서, 많은 상세사항들이 본 발명의 더 충분한 설명을 제공하기 위해 기재된다. 그러나, 이러한 특정 상세사항들 없이도 본 발명이 실시될 수 있음이 통상의 기술자에게 명백할 것이다. 다른 경우들에서는, 본 발명을 모호하게 하는 것을 피하기 위해, 공지된 구조들 및 디바이스들은 상세히 도시되지 않고, 블록도 형태로 도시된다.
기입-전용 방법을 이용하는 피어들로서만 통신하는 한 쌍의 프로세싱 요소들(예를 들어, 지적 재산권(IP) 코어들, 프로세서 코어들, 프로세서들, 시스템-온-칩 프로세싱 코어들, 동일 보드 상의 집적 회로들 또는 디바이스들(신뢰할 만한 기저 통신 버스를 가짐), 기타 등등) 사이에 리셋 동작들을 동기화하는 방법 및 장치가 기술된다. 본 명세서에서 설명되는 기법들은 각각의 프로세싱 요소가, 자신의 피어가 리셋으로 들어가고 있거나, 리셋으로부터 나오고 있거나, 디세이블되고 있거나, 또는 달리 비가용적으로 되고 있거나(영구적으로, 또는 시스템이 저전력 상태로 들어가서 프로세싱 요소가 기능하지 않기 때문에), 또는 통신만을 리셋하고 있는 상태로 들어가는 것을 검출할 수 있게 한다. 피어들이 오직 기입 동작들을 이용하여 서로 통신하기 때문에, 각각의 프로세싱 요소는 자신의 피어가 프로세싱 요소로부터 마지막 트랜젝션을 수신했는지, 프로세싱 요소들이 그들 사이의 통신 채널의 재설정을 여전히 동기화할 수 있는지를 알 수 없다.
도 1은 기입-전용 통신 프로토콜(두 개의 프로세싱 요소들 간의 통신이 기입 동작들의 이용을 통해서만 발생함)을 이용하는 피어들로서 서로 통신할 수 있는 두 개의 프로세싱 요소들을 도시한다.
도 1을 참조하면, 프로세싱 유닛들(101, 102)(예를 들어, 프로세서 코어들, 지적 재산권(IP) 코어들, 전용 프로세싱 유닛들, 기타 등등)은 서로 통신하는 피어들이다. 프로세싱 유닛들(101, 102) 각각은 동일한 집적 회로(IC) 또는 상이한 IC들에 있을 수 있다. 프로세싱 유닛들(101, 102) 각각은 비동기적으로 리셋에 들어갈 수 있거나, 리셋으로부터 나올 수 있거나, 디세이블될 수 있거나, 비가용적으로 될 수 있거나, 또는 그들 사이의 통신 채널, 통신 채널(103)을 리셋할 수 있다.
일 실시예에서, 통신 채널(103)은 프로세서간 통신 채널이다. 통신 채널(103)은 정보(예를 들어, 요청들, 상태, 기타 등등) 및 다른 메시지들을 프로세싱 유닛들(101, 102) 사이에 교환하기 위한 것이다.
프로세싱 유닛(101)은 본 명세서에서 설명되는 리셋 동기화 동작들을 포함한, 시스템 내의 그들의 지정된 기능과 연관된 동작들을 수행하기 위한 프로세싱 로직(101A), 및 통신 채널(103)을 이용하여, 프로세싱 유닛(102)과 같은, 하나 이상의 다른 프로세싱 유닛들과 통신(예를 들어, 송신)하는 하드웨어 엔드포인트 로직(101B)을 포함한다. 유사하게, 프로세싱 유닛(102)은 본 명세서에서 설명되는 리셋 동기화 동작들을 포함한, 시스템 내의 그들의 지정된 기능과 연관된 동작들을 수행하기 위한 프로세싱 로직(102A), 및 통신 채널(103)을 이용하여, 프로세싱 유닛(101)과 같은, 하나 이상의 다른 프로세싱 유닛들과 통신(예를 들어, 송신)하는 하드웨어 엔드포인트 로직(102B)을 포함한다. 더 구체적으로, 프로세싱 로직(101A)과 프로세싱 로직(101B)은 메모리(101C) 내에 세팅된 비트 지시들에 기초하여 그 자체와 제2 프로세싱 유닛 사이의 기입-전용 리셋 동기화에 대한 동작들을 수행한다. 대안적인 실시예에서, 프로세싱 유닛(101, 102)은 하드웨어 엔드포인트 유닛을 갖지 않고, 그 대신에 모든 하드웨어 동작들(예를 들어 다른 피어들에의 기입들, 기타 등등)은 소프트웨어 또는 펌웨어에 의해 에뮬레이트된다는 것을 유의한다.
각각의 프로세싱 유닛들(101, 102)은 자신의 피어들로부터 지시들(예를 들어, 비트들)의 집합을 저장하는 메모리를 포함한다. 다시 말하면, 프로세싱 유닛(101)은 프로세싱 유닛(102)으로부터 유래한 비트들(비트 지시들)을 저장하는 메모리(101C)(예를 들어, 제어 상태 레지스터(CSR))와 같은, 메모리를 포함한다. 마찬가지로, 프로세싱 유닛(102)은 프로세싱 유닛(101)으로부터 유래한 비트들을 저장하는 메모리(102C)(예를 들어, CSR)와 같은, 메모리를 포함한다. 일 실시예에서, 프로세싱 유닛은 자신의 피어의 메모리(예를 들어, CSR) 내의 비트들에 대해 1로-세팅할 수 있거나, 또는 그 자신의 메모리(예를 들어, CSR)에 저장된 비트들에 대해 1로-클리어할 수 있다. 즉, 프로세싱 유닛(101)은 프로세싱 유닛(102)의 메모리(102C) 내의 이러한 비트들 각각을 세팅할 수 있고, 그 역도 성립한다. 1로-세팅(또는 1로-클리어)됨으로써, 피어가 동일한 지시(비트 지시)를 여러번 전송하더라도, 프로세싱 유닛은 단지 이것을 단일 지시로서 인지할 것이다. 하나의 피어가 비트들을 세팅하고 일방이 동일 메모리의 비트들을 클리어하게 하는 것은 소정의 메모리(CSR)를 갱신할 때 어느 일방이 타방으로부터의 갱신들을 덮어쓰기하는 것을 방지하기 위해 중요하다.
대안적인 실시예들에서, 비트 지시들은 1로-세트 및 제로로-클리어, 또는 제로로-세트 및 1로-클리어, 또는 제로로-세트 및 제로로-클리어일 수 있다는 것을 유의한다.
일 실시예에서, 지시들의 집합은 프로세싱 유닛이 리셋 동기화 프로토콜과 무관한 트랜젝션들을 더 이상 통신 채널(103)을 통해 송신하지 않을 것이고 자신의 통신 상태를 리셋했다는 지시를 포함한다. 이것은 프로세싱 유닛 자체가 리셋을 겪었거나 또는 리셋으로부터 나왔으나 리셋을 겪을 경우들을 포함한다. 일 실시예에서, 이 지시는 의무적이고, 프로세싱 유닛들 중 하나 또는 양쪽에 의해 지원되어야 한다.
일 실시예에서, 지시들의 집합은 프로세싱 유닛이 리셋 동기화 프로토콜과 무관한 임의의 미처리된 착신 메시지들을 폐기했거나 또는 드롭했다는 지시를 포함한다. 일 실시예에서, 이 지시는 의무적이고, 프로세싱 유닛들 중 하나 또는 양쪽에 의해 지원되어야 한다.
일 실시예에서, 지시들의 집합은, 프로세싱 유닛이 위에서 논의된 두 개 모두의 지시가 설정되었음을 피어에게 지시하고, 위에서 세팅된 지시들 중 하나만을 다시 세팅함으로써 구별하도록 피어에게 요청하는 지시를 포함한다. 이러한 경우에, 프로세싱 유닛이 어느 것이 피어에 의해 다시 세팅되는지 결정할 수 있도록, 프로세싱 유닛은 2개의 지시들을 클리어한다.
리셋 동기화 프로토콜의 일부로서, 프로세싱 유닛들(101, 102)은 그들이 있는 리셋 페이즈 상태와 같은 통지들을 서로 전송하기 위해 뿐만 아니라, 통신 채널(103)을 리셋하는 것에 대해 취해진 동작들을 다른 프로세싱 유닛에게 통지하기 위해 지시들을 이용한다. 일 실시예에서, 프로세싱 유닛은 피어 프로세싱 유닛과 핸드세이크를 계속하지 않고 리셋으로 들어가거나 또는 디세이블되고, 단지 제1 지시(예를 들어, 비트)를 세팅하고 셧다운할 필요만 있다. 리셋되거나 또는 또는 디세이블되기 전에 애크놀로지먼트(ACK) 또는 추가의 통신이 프로세싱 유닛에 의해 필요로 되지 않는다.
프로세싱 유닛들(101, 102)에서, 하드웨어 엔드포인트 로직(101A, 101B)은 통신 유닛들이다. 일 실시예에서, 이러한 유닛들은 다른 프로세싱 유닛들의 지시들의 세팅(예를 들어, 비트 지시들)을 포함한, 정보 및 메시지들을 다른 프로세싱 유닛들에 전송하는 것을 다룬다. 일 실시예에서, 이러한 유닛들은 프로세싱 로직이 본 명세서에서 설명된 동작들을 행할 수 있도록 하기 위해, 리셋 동기화 지시가 자신의 메모리 내에서 세팅되었을 때 프로세싱 로직에 대해 인터럽트들을 생성하는 것뿐만 아니라, 도어벨들 및 인터럽트들을 다룬다.
일 실시예에서, 리셋 동기화 프로토콜의 일부로서, 양쪽 프로세싱 유닛들(101, 102)은 일시적으로 그들의 발송 트래픽을 디세이블하고, 양쪽 프로세싱 유닛들은 다른 프로세싱 유닛(자신의 피어)으로부터, 자신의 발송 트래픽이 일시적으로 디세이블된다는 지시를 수신하고, 각각의 프로세싱 유닛은 다른 프로세싱 유닛으로부터의 임의의 잔여 착신 트래픽을 클리어하고(리셋 동기화 프로세스에 있어서 이 시점에서 새로운 트래픽이 발생하지 않도록), 그 후 통신을 재개한다.
하나 이상의 실시예들에서, 본 명세서에서 설명되는 기법들은 다음과 같다: (거짓 긍정들/거짓 부정들을 가질 수 있고 복잡한 재시도 로직으로 이어질 수 있는) 타임아웃들/재시도들로 구성되는 사용은 없다; 소정의 프로세싱 요소와 자신의 피어 사이에 인터리빙되는 리셋들뿐만 아니라 소정의 프로세싱 코어의 리셋들 내의 리셋들은 특수 로직 없이 다루어질 수 있다; 통신을 재개하기 전에 스테일(stale) 메시지들이 드롭된다; 프로세싱 요소가 통신을 시작하고 그동안 자신의 피어가 유효한 착신 메시지들을 우연히 드롭하는 상황들이 회피된다; "교착상태들"이 회피된다(즉, 프로세싱 요소가 자신의 피어를 끝없이 기다리는 상태에 도달하지 않음); "무한반복들(livelocks)"이 회피된다(즉, 프로토콜은, 끝없는 채널 리셋 "핑퐁들"이 프로세싱 요소들 사이에 발생하는 상태에 절대로 도달하지 않는데, 그러한 "핑퐁들"은 통신 채널이 안정한 가동 상태에 도달하는 것을 방해할 수 있고, 교착상태들과는 대조적으로, 프로토콜을 형성할 때 검출하기가 훨씬 더 어렵다); 어느 프로세싱 요소든 자신의 피어로부터 애크놀로지먼트(ACK)를 기다리지 않고 리셋으로 비동기적으로 들어갈 수 있다(많은 경우들에서 프로세싱 요소 리셋 발생은 프로세싱 요소가 불량한 상태에 있음을 의미하거나, 또는 워치도그 만료가 발생한 것을 의미하기 때문에, 비지일 수 있는 피어에 대한 의존성으로 인하여 프로세싱 요소의 리셋을 지연하는 것은 바람직하지 않다); 복잡한 프로토콜 교환을 수반하지 않고(그리고 능숙한 드라이버를 필요로 하지 않고) 프로세싱 요소가 디세이블된 것(즉, 더 이상의 통신이 불가능함)을 피어에게 지시하는 간단한 방법이 있으며, 이것은 IP에 대한 서비스 거부(DoS)의 경우에 보안을 돕고 - 그것이 능숙한 드라이버 없이 그것이 디세이블된 것을 자신의 피어들에게 용이하게 지시할 수 있는 한 -, 이것은 피어들이 피어의 TCB를 증가시키지 않고 DoS를 검출하는 것을 허용한다(예를 들어, 동작이 간단하다면, 그것은 IP의 ROM으로부터 용이하게 수행될 수 있다); 다양한 경우들(리셋에 들어감, 리셋으로부터 나옴, 디세이블되고 있음, 통신 채널만을 리셋함)이 상이한 핸드세이크들을 필요로 하지 않는다(간결성을 위해); 양방의 프로세싱 요소들은 임의의 미리 정의된 리셋 탈출 순서에 대한 제약의 강요 없이, 가동되고 결국 서로를 발견하게 되도록 보장된다.
프로토콜의 실시예들이 아래에서 더 상세히 설명된다.
도 2는 리셋 동기화 프로세스의 일 실시예의 흐름도이다. 프로세스는 하드웨어(회로, 전용 로직, 기타 등등), 소프트웨어, 펌웨어(예컨대 범용 컴퓨터 시스템 또는 전용 머신 상에서 실행됨), 또는 이 세 개의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행된다. 일 실시예에서, 프로세스는 통신하기 위해 기입 동작들만을 이용하는 두 개의 피어(프로세싱 유닛들) - 하나는 "리더"로 지정되고 하나는 "팔로워"로 지정됨 -에 의해 수행된다. 리더와 팔로워의 이용은 대칭성을 파괴한다(피어들 사이의 끝없는 "핑퐁들"을 회피하기 위해). 일 실시예에서, 이것은 프로세싱 유닛 페어당 고정된 지정이다. 프로세싱 유닛들 각각이 리셋 동기화를 비동기적으로 시작할 수 있지만, 일단 시작했으면, 팔로워는, 동기화가 완료될 때까지, 자신의 스테이지가 리더를 앞지르지 않도록 보장한다.
도 2에서, 원숫자들은 일 실시예에서 동작들의 순서상의 제약들을 지시한다. 일부 경우들에서(예를 들어, "*" 및 "**"와 함께 나타낸 숫자)는, 어느 동작들이 먼저 발생하는지에 대한 제약이 없다. 또한, 게이트들은, 일부 경우들에서 프로세싱 유닛(피어)은, 어떤 내부 조건이 충족되었고, 그리고 다른 피어가 피어의 조건이 충족된 것에 관하여 프로세싱 유닛에 알리는 경우에만, 다음 동작으로 진행할 수 있는, "AND" 조건들을 반영한다.
도 2를 참조하면, 리더의 프로세싱 로직(제1 피어)이 리셋 페이즈 1로 들어가는데, 거기서 리셋 프로세스의 제1 페이즈가 시작하고, 자신이 리셋 페이즈 1(프로세싱 블록 201)로 들어갔다는 것을 팔로워(제2 피어)에게 통지한다. 일 실시예에서, 리더는 팔로워의 제어 상태 레지스터(CSR)에 비트를 설정함으로써, 자신이 리셋 페이즈 1에 들어갔다는 것을 팔로워에게 통지한다. 일 실시예에서, 리더가 리셋 페이즈 1에 들어갔다는 것을 지시하기 위해 리더는 팔로워의 CSR에 비트 0을 세팅한다.
리더가 리셋 페이즈 1 동작들을 완료했다고 팔로워에게 통지함으로써, 리더는, 자신이 리셋에 더 이상 있지 않을 때까지, 프로세서간 통신(IPC)을 통해 팔로워와 통신할 수 없다는 것을 지시한다. 또한 리더는, 팔로워가 IPC 레지스터 값의(예를 들어, CSR 비트의 값을 통하여) 유효성에 관한 임의의 보장을 제공했었다면, 팔로워가 더 이상 자신에 강요되지 않음을 팔로워에게 지시했다. 예를 들어, 팔로워가 전력 게이팅 오버라이드 보장(즉, 전력 게이팅(즉, 전력 턴오프)이 발생하는 것을 방지하기 위한 보장)을 제공하는 것이었다면, 팔로워는 리더가 리셋 페이즈 1에 들어갔을 때 전력 게이팅 오버라이드를 수행하도록 리더에게 더 이상 강요되지 않는다. 게다가, 리더는 리셋 페이즈 1에 들어감으로써, 리더가 팔로워에게 제공했던 임의의 IPC 레지스터 유효성 보장이 있었다면, 리더는 더 이상 그러한 보장을 제공하지 않을 것임을 팔로워에게 지시했다. 더욱이, 리더는 리셋 페이즈 1에 들어감으로써, 이 시점으로부터 앞으로 팔로워에게 임의의 새로운 PG-관련 요청들 또는 상태 정보를 더 이상 전송하지 않을 것임을 지시했다. 마지막으로, 리셋 페이즈 1에 들어감으로써, 리더는, 이전에 리더로부터 팔로워에게 전송되었던 임의의 잔여 IPC 메시지가 폐기되어야 하고, 리더가 이 시점으로부터 앞으로 팔로워에게 임의의 새로운 IPC 메시지들을 전송하지 않을 것임을 지시한다.
자신이 리셋 페이즈 1 동작들(예를 들어, 팔로워의 CSR에 비트 0을 세팅)을 완료했다고 팔로워에게 통지하기 전 또는 후에, 팔로워는 리더에게, 팔로워가 리셋 페이즈 1 동작들(프로세싱 블록 202)을 완료했다고 통지할 수 있다. 일 실시예에서, 팔로워는 리더의 제어 상태 레지스터(CSR)에 비트를 세팅함으로써, 리더에게, 자신이 리셋 페이즈 1 동작들을 완료했다는 것을 통지한다. 일 실시예에서, 팔로워가 리셋 페이즈 1 동작들을 완료했다는 것을 지시하기 위해 팔로워는 리더의 CSR에 비트 0을 세팅한다. 리더가 그러하듯이, 팔로워가 리셋 페이즈 1 동작들을 완료했다는 것을 리더에게 통지함으로써, 팔로워는 리셋에 더 이상 있지 않을 때까지 프로세서간 통신(IPC)을 통해 리더와 통신할 수 없을 것임을 지시한다. 또한 팔로워는, 리더가 IPC 레지스터 값의(예를 들어, CSR 비트의 값을 통하여) 유효성에 관하여 임의의 보장을 제공했었다면, 리더가 더 이상 자신에 강요되지 않는다는 것을 리더에게 지시했다. 예를 들어, 리더가 PG 오버라이드 보장을 제공하는 것이었다면, 리더는 팔로워가 리셋 페이즈 1에 들어갔기 때문에 그러한 보장을 팔로워에게 더 이상 제공할 것이 요구되지 않는다. 게다가, 팔로워는 리셋 페이즈 1에 들어감으로써, 팔로워가 리더에게 제공했던 임의의 IPC 레지스터 유효성 보장이 있었다면, 팔로워가 더 이상 자신에 강요되지 않는다는 것을 리더에게 지시한다. 더욱이, 리셋 페이즈 1에 들어감으로써, 이 시점으로부터 앞으로 리더에게 임의의 새로운 PG-관련 요청들 또는 상태 정보를 더 이상 전송하지 않을 것임을 지시했다. 마지막으로, 리셋 페이즈 1에 들어감으로써, 팔로워는 이전에 팔로워로부터 리더에게 전송되었던 임의의 잔여 IPC 메시지가 폐기되어야 하고, 팔로워가 이 시점으로부터 앞으로 리더에게 임의의 새로운 IPC 메시지들을 전송하지 않을 것임을 지시한다.
리더는 리셋 페이즈 1에 있은 후에 리셋 페이즈 2에 들어갈 수 있다. 시험은 리더와 팔로워 둘 다가 리셋 페이즈 1 동작들(프로세싱 블록 211)을 완료했다는 것을 서로에게 지시했는지 결정한다. 즉, 리더는 리더가 리셋 페이즈 2에 들어가기 전에 팔로워가 리셋 페이즈 1 동작들을 완료하기를 기다린다. 리더와 팔로워 둘 다가 리셋 페이즈 1 동작들을 수행했다면, 리셋 동기화 프로세스는 프로세싱 블록 203으로 천이하여, 거기서 리더는 리셋 페이즈 2 동작들을 수행하고 자신이 리셋 페이즈 2 동작들을 완료했다는 것을 지시한다. 일 실시예에서, 리더는 팔로워의 CSR에 비트를 세팅함으로써 리셋 페이즈 2 동작들을 완료했다는 것을 팔로워에게 지시한다. 일 실시예에서, 리더가 리셋 페이즈 2에 들어갔다는 것을 팔로워에게 지시하기 위해, 리더는 팔로워의 CSR에 비트 1을 세팅한다. 리셋 페이즈 2 동작들은 팔로워로부터 리더에게 전송되었던 임의의 잔여 IPC 메시지들 및 임의의 PG-관련 요청 및 상태 정보를 리더가 드롭하는 것으로 구성된다.
팔로워는 리더가 리셋 페이즈 2에 들어간 후까지 그렇게 하지 않는다는 것을 유의한다.
프로세싱 로직은 팔로워가 리셋 페이즈 1 동작들을 완료했고(그리고 자신이 그렇게 했다는 것을 리더에게 통지했고), 리더가 리셋 페이즈 2 동작들을 완료했는지 시험한다(프로세싱 블록 212). 만약 그렇다면, 프로세스는 프로세싱 블록 204로 천이하여, 거기서 팔로워가 리셋 페이즈 2로 들어간다. 팔로워는 리셋 페이즈 2 동작들을 수행하고, 리더의 CSR에 비트를 세팅함으로써 자신이 리셋 페이즈 2 동작들을 완료했다는 것을 리더에게 통지한다. 일 실시예에서, 팔로워는 리더의 CSR 내에 비트 1을 세팅함으로써 자신이 리셋 페이즈 2 동작들을 완료했다고 리더에게 통지한다. 팔로워는 리더로부터 팔로워에게 전송되었던 임의의 잔여 IPC 메시지들 및 PG-관련 요청 및 상태 정보를 드롭한 후에 자신이 리셋 페이즈 2를 완료했다는 것을 리더에게 통지한다.
팔로워가 리셋 페이즈 2 동작들을 완료한 후에, 팔로워는 가동 페이즈에 들어갈 수 있고, 대역내 IPC 메시지들을 수신하기 시작할 수 있다(프로세싱 블록 207). 이것은 팔로워가 더 이상 임의의 메시지들을 드롭하지 않을 것임을 의미한다.
리셋 페이즈 1과 2로의 진입에 관하여 리더와 팔로워 사이의 교환은 온전히 IPC 채널을 리셋하기 위한 것이고, 반드시 리더 및/또는 팔로워를 전체적으로 리셋하기 위한 것은 아니라는 점이 반복해서 강조되어야 한다. 즉, 리더가 리셋 동작을 겪고 있을 수 있는 동안, 팔로워는 그 자체가 리셋되도록 요구되지 않고, 단지 그 둘 사이의 채널만 리셋된다. 동일한 내용이, 팔로워가 리셋을 겪고 있고 리더와 팔로워가 단지 그들 사이에 채널만을 리셋할 필요가 있을 때, 성립한다.
그 후에, 리더에서의 프로세싱 로직은 리더와 팔로워가 둘 다 리셋 페이즈 2 동작들(프로세싱 블록 213)을 완료했는지 시험한다. 만약 그렇다면, 리더 프로세스는 프로세싱 블록 205로 천이하여, 거기서 리더는 대역내 IPC 메시지들을 전송 및 수신하기 시작할 수 있고, 리더가 제1 대역내 IPC 메시지를 전송하게 함으로써(프로세싱 블록 206) 리더와 팔로워 사이에 IPC 통신이 발생할 수 있다.
대역내 IPC 메시지들을 전송 및 수신하기 시작하고 제1 IPC 메시지를 전송하는 이러한 동작들은, 팔로워가 프로세싱 블록 207에서 대역내 IPC 메시지들을 수신하기 시작할 수 있을 시간 전이나 또는 그 시간 후에 발생할 수 있다는 것을 유의한다. 그러나, 팔로워는 이미 리더로부터 제1 대역내 IPC 메시지를 수신한 때까지는, 자신이 리셋 페이즈 2를 빠져나온 후 IPC 메시지를 전송할 수 없다.
팔로워에서의 프로세싱 로직은 프로세싱 블록 214에 나타낸 바와 같이, 제1 IPC 메시지가 리더로부터 전송되었는지 그리고 팔로워가 대역내 IPC 메시지들을 수신하기 시작할 수 있는지 둘 다를 시험한다. 만약 그렇다면, 팔로워는 대역내 IPC 메시지들을 전송 및 수신하기 시작할 수 있다(프로세싱 블록 208).
도 3과 도 4는 리셋 동기화에서 리더와 팔로워에 의해 각각 수행되는 동작들의 더 상세한 흐름도들이다. 프로세스는 하드웨어(회로, 전용 로직, 기타 등등), 소프트웨어(예컨대 범용 컴퓨터 시스템 또는 전용 머신 상에서 실행됨), 펌웨어, 또는 이 세개의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행된다.
도 3을 참조하면, 리더에 의해 수행되는 프로세스는 초기화(301)에서 시작한다. 초기화(301) 동안, 리더의 프로세싱 로직은 양쪽 도어벨들로부터의 인터럽트들을 디세이블하고, 그리고 CSR로부터의 인터럽트들을 디세이블한다(프로세싱 블록 302). 일 실시예에서, 착신 도어벨은, 피어로부터의 메시지가 데이터 레지스터들에서의 소비를 위해 준비된 것을 지시하기 위해 사용된 제2 별개의 레지스터라는 것을 유의한다. 피어가 메시지 데이터를 기입하는 것을 마칠 때, 그것은 도어벨에 기입하고(예를 들어, "비지" 비트라고 불리는 비트를 세팅), 이것은 인터럽트를 유발한다. 발신 도어벨은 피어에서의 착신 도어벨을 반영하는 제3 별개의 레지스터이다. 일 실시예에서, 프로세싱 로직이 데이터를 피어에 기입하고, 자신의 도어벨(예를 들어, 비지 비트)을 세팅할 때, 프로세싱 유닛은 이것을 그 자신의 발신 도어벨 레지스터를 통해 행하고, 이것은 피어의 착신 도어벨 레지스터에서 비지 비트가 세팅되게 유발한다. 피어가 메시지를 레지스터들로부터 퇴출시키는 것을 마칠 때, 자신의 착신 도어벨 레지스터의 비지 비트를 클리어하며, 이것은 프로세싱 유닛의 발신 도어벨 레지스터에 다시 반영되고, 인터럽트를 유발한다. 발신 도어벨 레지스터에서의 비지 비트의 이 클리어링은 자신이 이제 이전의 메시지의 덮어쓰기의 염려 없이 새로운 메시지를 전송할 수 있다는 것을 프로세싱 유닛에 지시하는 것이다.
일 실시예에서, CSR로부터의 인터럽트들은, CSR에 상이한 비트들이 세팅되었다는 것을 코어의 프로세싱 로직에 통지하는 하드웨어 엔드포인트 로직으로부터의 인터럽트들이다.
그 후, 리더의 프로세싱 로직은 내부 상태들에 대응하는 CSR 비트들(예를 들어, 팔로워가 리셋 페이즈 1 동작들을 완료했는지의 지시, 팔로워가 리셋 페이즈 2 동작들을 완료했는지의 지시, 및 다른 CSR 비트들)을 클리어하고, 리더의 메모리 내의 모든 펌웨어(FW) 먼저-입력 먼저-출력 버퍼들(FIFO들) 내의 발신 메시지들을 클리어하고, FIFO들 내의 모든 착신 메시지들을 소비하거나 드롭하고, CSR 비트를 1로-클리어하여 어느 리셋 페이즈 상태에 리더가 현재 상주하는지를 결정하기 위해 팔로워가 리더에게 질의했다는 것을 지시하고, 리더가 리셋 페이즈 1의 동작들(프로세싱 블록 303)을 완료했다는 것을 지시하는 지시를 팔로워 내에 세팅한다. 일 실시예에서, 이 지시는 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시로서 도 3에서 지칭된다.
그 후 프로세스는 프로세싱 블록 304로 천이하여, 거기서 프로세싱 로직은 리더가 리셋 또는 전원차단되고 있는지 시험한다. 만약 그렇다면, 프로세스는 종료한다. 그렇지 않다면, 프로세스는 프로세싱 블록 305로 천이하여, 거기서 프로세싱 로직이 CSR로부터의 인터럽트들을 인에이블한다. CSR 인터럽트들을 인에이블한 후, 프로세스는 리셋 페이즈 1 대기 상태(310)로 천이한다.
리셋 페이즈 1 대기 상태(310)에서, 프로세싱 로직은 CSR 레지스터 내의 어떤 비트가 세팅되었고 아직 핸들링되지 않았다는 것을 지시하는 CSR 인터럽트가 발생하기를 기다린다. CSR 인터럽트가 발생할 때, 프로세스는 프로세싱 블록 311로 천이하여, 거기서 프로세싱 로직이 CSR 인터럽트를 클리어하고, CSR 값들을 분석을 위해 로컬 변수 저장소에 복사한다. 그 후 리더 내의 프로세싱 로직은 팔로워가 리셋 페이즈 1 동작들 및 리셋 페이즈 2 동작들 양방을 모두 완료했음을 지시했는지 시험한다(프로세싱 블록 312). 이것은 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들이 세팅되는지 확인함으로써 행해진다. 그들이 둘 다 세팅된다면, 프로세스는 프로세싱 블록 313으로 천이하여, 거기서 프로세싱 로직이 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들 둘 다를 클리어하고, 팔로워가 상주하는 리셋 페이즈 상태에 관해 팔로워에게 질의한다. 팔로워의 상태를 질의하기 위해, 리더 내의 프로세싱 로직은 팔로워 내에 지시를 세팅한다. 일 실시예에서, 이것은 팔로워의 CSR 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 세팅함으로써 행해진다. 그렇게 한 후, 프로세스는 프로세싱 블록 318로 천이한다.
프로세싱 블록 318에서, 리더 내의 프로세싱 로직은 팔로워가 현재 상주하는 리셋 페이즈에 관해 리더가 팔로워에 의해 질의되었는지 결정한다. 일 실시예에서, 이것은 리더가 메모리 내의 자신의 CSR 복사 내의 자신의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 확인함으로써 수행된다. 만약 그렇다면, 프로세싱 로직은 자신의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 클리어하고, 페이즈 1인, 자신의 현재 리셋 페이즈를 피어에게 통지한다(프로세싱 블록 319). 일 실시예에서, 리더는 팔로워의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시에 대응하는 CSR 비트를 세팅함으로써 자신의 리셋 페이즈 상태의 팔로워에게 통지한다. 그 후, 프로세스는 리셋 페이즈 1의 대기 상태(310)로 천이한다. 프로세싱 블록 318을 다시 참조하면, 리더가 현재 상주하는 현재 상태에 관해 팔로워가 질의하지 않았다면, 프로세싱 블록은 리셋 페이즈 1의 대기 상태(310)로 천이한다.
프로세싱 블록 312를 다시 참조하면, IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들 중 어느 것도 세팅되지 않는다면, 프로세스는 프로세싱 블록 314로 천이하여, 거기서 프로세싱 로직은 팔로워가 리셋 페이즈 1 동작들을 완료했는지 시험한다. 일 실시예에서, 이것은 팔로워가 리셋 페이즈 1 동작들을 완료했다는 것을 지시하는 리더의 CSR 지시 내에 팔로워에 의해 세팅되었던 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시의 복사를 확인함으로써 행해진다. 만약 그렇다면, 프로세스는 프로세싱 블록 315로 천이하여, 거기서 리더 내의 프로세싱 로직이 자신의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시들을 클리어하고, 리더가 리셋 페이즈 1 동작들을 완료했다는 것을 팔로워에게 지시한다. 일 실시예에서, 리더는 팔로워의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시를 세팅함으로써, 자신이 리셋 페이즈 1 동작들을 완료했다는 것을 팔로워에게 지시한다. 그 후, 프로세스는 프로세싱 블록 330으로 천이한다.
프로세싱 블록 330에서, 리더 내의 프로세싱 로직은 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들을 제외한 자신의 CSR 내의 모든 비트 지시들 및 착신 도어벨을 클리어하고, 옵션적으로 하나 이상의 커스텀 비트(custom bit)를 (그들의 역할에 의존하여) 클리어한다. 일 실시예에서, 이들은 CSR 내의 정보(비트들)를 유효화하기 위한 유효성 프로토콜에 사용되는, 그리고 프로세싱 유닛 쌍들이 그들 사이에 전달할 수 있고 각각의 쌍에 특정적인 간단한 메시지들에 대해 사용되는, 비트들을 포함한다. 프로세싱은 또한 팔로워의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 세팅하여, 리더가 리셋 페이즈 2 동작들을 완료했다는 것을 팔로워에게 통지한다. 그 후, 프로세스는 리셋 페이즈 2의 대기 상태(320)로 천이한다.
프로세싱 블록 314를 다시 참조하면, 팔로워가 리셋 페이즈 1 동작들을 완료했다는 지시가 없다면, 리더 내의 프로세싱 로직은 팔로워가 리셋 페이즈 2 동작들을 완료했는지 확인한다(프로세싱 블록 316). 일 실시예에서, 이것은 리더의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 확인함으로써 행해진다. 그 비트가 팔로워에 의해 세팅되었다면, 일 실시예에서, 리더는 그 자신의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 및 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트들을 클리어하고, 리더가 리셋 페이즈 1 동작들을 완료했다는 것을 팔로워에게 지시하기 위해 팔로워의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시를 세팅하고(프로세싱 블록 317), 그 후 리셋 페이즈 1의 대기 상태(310)로 천이한다.
팔로워가 프로세싱 블록 316에서 결정된 바와 같이 리셋 페이즈 2 동작들을 완료하지 않았다면, 프로세스는 프로세싱 블록 318로 천이하여, 거기서 프로세싱 로직은 팔로워가 리더의 리셋 페이즈 상태를 요청했는지 시험한다. 일 실시예에서, 팔로워가 자신의 리셋 페이즈 상태를 요청했는지 결정하기 위해, 리더는 자신의 CSR로부터의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 확인한다. 팔로워가 그렇게 했다면, 프로세싱 로직은 요청을 클리어하고, 자신이 리셋 페이즈 1 동작들을 완료했다는 것을 팔로워에게 통지한다. 일 실시예에서, 요청은 자신의 CSR 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 클리어함으로써 클리어된다. 일 실시예에서, 리더는 팔로워의 CSR 레지스터 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시를 세팅함으로써 자신의 리셋 페이즈 상태를 팔로워에게 통지한다. 일단 이것이 완료되었다면, 프로세스는 리셋 페이즈 1의 대기 상태(310)로 천이한다.
리셋 페이즈 2의 대기 상태(320)에서, 프로세싱 로직은 CSR 레지스터 내의 어떤 비트가 세팅되었고 아직 핸들링되지 않았다는 것을 지시하는 CSR 인터럽트가 발생하기를 기다린다. CSR 인터럽트가 발생할 때, 프로세스는 프로세싱 블록 321로 천이하여, 거기서 프로세싱 로직이 CSR 인터럽트를 클리어하고, CSR 값들을 분석을 위해 로컬 변수 저장소에 복사한다.
프로세싱 로직은 팔로워가 리셋 페이즈 1 동작들 및 리셋 페이즈 2 동작들 양방을 모두 완료했음을 지시했는지 시험한다(프로세싱 블록 322). 이것은 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들이 세팅되는지 확인함으로써 행해진다. 그들이 둘 다 세팅된다면, 프로세싱은 프로세싱 블록 323으로 천이하여, 거기서 프로세싱 로직이 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들 둘 다를 클리어하고, 팔로워가 현재 어느 상태에 존재하는지 결정하기 위해 팔로워에게 질의한다. 일 실시예에서, 이것은 리더가 팔로워의 CSR 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 세팅함으로써 행해진다. 그렇게 한 후, 프로세스는 프로세싱 블록 328로 천이한다.
프로세싱 블록(328)에서, 프로세싱 로직은 리더가 현재 어떤 리셋 페이즈에 있는지에 관해 팔로워에 의해 질의되었는지 시험한다. 일 실시예에서, 이것은 리더가 자신의 CSR 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 확인함으로써 수행된다. 질의되었다면, 프로세싱 로직은 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 클리어하고, 자신이 리셋 페이즈 2 동작들(프로세싱 블록 329)을 완료했다는 것을 팔로워에게 통지한다. 일 실시예에서, 리더는 팔로워 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE2 비트 지시에 대응하는 CSR 비트를 세팅함으로써 자신이 리셋 페이즈 2 동작들을 완료했다는 것을 팔로워에게 통지한다. 그 후, 프로세스는 리셋 페이즈 2의 대기 상태(320)로 천이한다. 리더가 자신의 현재 리셋 페이즈 상태에 관해 질의되지 않았다면, 프로세스는 리셋 페이즈 2의 대기 상태(320)로 복귀한다.
프로세싱 블록 322를 다시 참조하면, IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들 중 어느 것도 세팅되지 않으면, 프로세스는 프로세싱 블록 324로 천이하여, 거기서 프로세싱 로직은 팔로워가 리셋 페이즈 1에 있는지 그리고 리셋 페이즈 2로 천이할 필요가 있는지 시험한다. 일 실시예에서, 이것은 팔로워가 리셋 페이즈 1 동작들을 완료했다는 것을 지시하는 리더의 CSR 내에 팔로워에 의해 세팅되는 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시를 리더가 확인하는 것에 의해 행해진다. 만약 그렇다면, 프로세스는 프로세싱 블록 325로 천이하여, 거기서 리더 내의 프로세싱 로직이 필로워에 의해 세팅된 자신의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시, 및 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 클리어하고, 리더가 리셋 페이즈 2 동작들을 완료했다고 팔로워에게 지시한다. 일 실시예에서, 리더는 팔로워의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 세팅함으로써 자신이 리셋 페이즈 2 동작들을 완료했다는 것을 팔로워에게 지시한다. 그 후에, 프로세스는 리셋 페이즈 2의 대기 상태(320)로 천이한다.
프로세싱 블록 324를 다시 참조하면, 팔로워가 리셋 페이즈 1에 있지 않다면, 리더 내의 프로세싱 로직은 팔로워가 리셋 페이즈 2 동작들을 완료했는지 시험한다(프로세싱 블록 326). 일 실시예에서, 이것은 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 확인함으로써 수행된다. 프로세싱 로직이 팔로워가 리셋 페이즈 2 동작들을 완료했다고 결정하면, 프로세싱 로직은 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 클리어하고, 프로세싱 블록 340으로 천이하여, 거기서 프로세싱 로직이 리더가 어느 리셋 페이즈 상태에 있는지 팔로워가 문의했는지 확인한다. 리더가 어느 리셋 페이즈 상태에 있는지 팔로워가 문의하지 않았다면, 리더는 가동 페이즈(350)로 이동한다. 팔로워가 리더의 리셋 페이즈 상태를 문의했다면, 프로세싱 로직은 요청을 클리어하고, 자신이 리셋 페이즈 2 동작들(프로세싱 블록 341)을 완료했다는 것을 피어에게 통지한다. 일 실시예에서, 요청은 리더가 팔로워의 CSR 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 클리어함으로써 클리어된다. 일 실시예에서, 리더는 팔로워의 CSR 레지스터 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 세팅함으로써 자신이 있는 리셋 페이즈 상태를 팔로워에게 통지한다. 그 후, 프로세스는 가동 페이즈(350)의 시작으로 천이한다.
블록 326을 다시 참조하면, 프로세싱 로직이 팔로워가 리셋 페이즈 2 동작들을 완료하지 않았다고 결정하면, 프로세스는 블록 328로 천이하여, 거기서 프로세싱 로직이 리더가 어느 리셋 페이즈 상태에 있는지 팔로워가 문의했는지 확인한다. 그렇지 않았다면, 프로세스는 리셋 페이즈 2의 대기 상태(320)로 천이한다. 팔로워가 문의했다면, 프로세스는 프로세싱 블록 329로 천이하여, 거기서 프로세싱 로직이 요청을 클리어하고, 자신이 리셋 페이즈 2 동작들(프로세싱 블록 329)을 완료했다는 것을 피어에게 통지한다. 일 실시예에서, 요청은 리더가 팔로워의 CSR 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 클리어함으로써 클리어된다. 일 실시예에서, 리더는 팔로워의 CSR 레지스터 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 세팅함으로써 자신이 있는 리셋 페이즈 상태를 팔로워에게 통지한다. 그 후, 프로세스는 리셋 페이즈 2의 시작(320)으로 천이한다.
도 4는 팔로워에 의해 수행되는 프로세스이다. 도 4를 참조하면, 리더에 의해 수행되는 프로세스는 초기화(401)에서 시작한다. 초기화(401) 동안, 팔로워의 프로세싱 로직은 양쪽 도어벨들로부터의 인터럽트들을 디세이블하고 그리고 자신의 CSR로부터의 인터럽트들도 디세이블한다(프로세싱 블록 402). 일 실시예에서, CSR로부터의 인터럽트들은 자신의 CSR에 상이한 비트들이 세팅되었다는 것을 코어의 프로세싱 로직에 통지하는 하드웨어 엔드포인트 로직으로부터의 인터럽트들이다.
그 후, 팔로워의 프로세싱 로직은 내부 상태들에 대응하는 CSR 비트들(예를 들어, 리더가 리셋 페이즈 1 동작들을 완료했는지의 지시, 리더가 리셋 페이즈 2 동작들을 완료했는지의 지시, 다른 CSR 비트들)을 클리어하고, 팔로워의 메모리 내의 모든 펌웨어(FW) 먼저-입력 먼저-출력 버퍼들(FIFO들) 내의 발신 메시지들을 클리어하고, FIFO들 내의 모든 착신 메시지들을 소비하거나 드롭하고, CSR 비트를 1로-클리어하여, 어느 리셋 페이즈 상태에 팔로워가 현재 상주하는지를 결정하기 위해 리더가 팔로워에게 질의했다는 것을 지시하고, 팔로워가 리셋 페이즈 1 동작들을 완료했다는 것을 지시하는 지시를 리더 내에 세팅한다(프로세싱 블록 403). 일 실시예에서, 이 지시는 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시로서 도 4에서 지칭된다.
그 후 프로세스는 프로세싱 블록 404로 천이하여, 거기서 프로세싱 로직은 팔로워가 리셋 또는 전원차단되고 있는지 시험한다. 만약 그렇다면, 프로세스는 종료한다. 그렇지 않다면, 프로세스는 프로세싱 블록 405로 천이하여, 거기서 프로세싱 로직은 자신의 CSR로부터의 인터럽트들을 인에이블한다. CSR 인터럽트들을 인에이블한 후, 프로세스는 리셋 페이즈 1 대기 상태(410)로 천이한다.
리셋 페이즈 1(410)에서, 프로세싱 로직은 CSR 레지스터 내의 어떤 비트가 세팅되었고 아직 핸들링되지 않았다는 것을 지시하는 CSR 인터럽트가 발생하기를 기다린다. CSR 인터럽트가 발생할 때, 프로세스는 프로세싱 블록 411로 천이하여, 거기서 프로세싱 로직이 CSR 인터럽트를 클리어하고, CSR 값들을 분석을 위해 로컬 변수 저장소에 복사한다. 그 후 팔로워 내의 프로세싱 로직은 리더가 리셋 페이즈 1 동작들 및 리셋 페이즈 2 동작들 양방을 모두 완료했음을 지시했는지 시험한다(프로세싱 블록 412). 이것은 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들이 팔로워의 CSR 내에 세팅되는지 확인함으로써 행해진다. 그들이 둘 다 세팅된다면, 프로세스는 프로세싱 블록 413으로 천이하여, 거기서 프로세싱 로직이 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들 둘 다를 클리어하고, 리더가 상주하는 리셋 페이즈 상태에 관해 리더에게 질의한다. 리더의 리셋 페이즈 상태를 질의하기 위해, 팔로워 내의 프로세싱 로직은 리더 내에 지시를 세팅한다. 일 실시예에서, 이것은 리더의 CSR 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 세팅함으로써 행해진다. 그렇게 한 후, 프로세스는 프로세싱 블록 418로 천이한다.
프로세싱 블록 418에서, 팔로워 내의 프로세싱 로직은 팔로워가 자신의 리셋 페이즈 상태에 관해 리더에 의해 질의되었는지 결정한다. 일 실시예에서, 이것은 팔로워가 자신의 CSR 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 확인함으로써 수행된다. 만약 그렇다면, 프로세싱 로직은 자신의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 클리어하고, 리셋 페이즈 1인, 자신의 현재 리셋 페이즈를 리더에게 통지한다(프로세싱 블록 419). 일 실시예에서, 팔로워는 리더의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시에 대응하는 CSR 비트를 세팅함으로써 자신의 리셋 페이즈 상태의 리더에게 통지한다. 그 후, 프로세스는 리셋 페이즈 1의 대기 상태(410)로 천이한다. 프로세싱 블록 418을 다시 참조하면, 리더가 팔로워에게 자신의 현재 리셋 페이즈 상태에 관해 질의하지 않았다면, 프로세스는 리셋 페이즈 1의 대기 상태(410)로 천이한다.
프로세싱 블록 412를 다시 참조하면, IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 지시들 중 어느 것도 세팅되지 않는다면, 프로세스는 프로세싱 블록 414로 천이하여, 거기서 프로세싱 로직은 리더가 리셋 페이즈 1 동작들을 완료했는지 시험한다. 일 실시예에서, 이것은 리더가 리셋 페이즈 1 동작들을 완료했다는 것을 지시하는 팔로워의 CSR 지시 내에 리더에 의해 세팅된 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시를 팔로워가 확인함으로써 행해진다. 리더가 리셋 페이즈 1 동작들을 완료했다고 팔로워가 결정하면, 프로세스는 프로세싱 블록 415로 천이하여, 거기서 팔로워 내의 프로세싱 로직이 자신의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시들을 클리어하고, 팔로워가 리셋 페이즈 1 동작들을 완료했다는 것을 리더에게 지시한다. 일 실시예에서, 팔로워는 리더의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1 비트 지시를 세팅함으로써, 자신이 리셋 페이즈 1 동작들을 완료했다는 것을 리더에게 지시한다. 그 후, 프로세스는 리셋 페이즈 1의 대기 상태(410)로 천이한다.
프로세싱 블록 414를 다시 참조하면, 리더가 리셋 페이즈 1에 있지 않다면, 팔로워 내의 프로세싱 로직은 리더가 리셋 페이즈 2 동작들을 완료했는지 시험한다(프로세싱 블록 416). 일 실시예에서, 이것은 리더에 의해 세팅된 팔로워의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 팔로워가 확인함으로써 행해진다. 그렇다면, 프로세싱 로직은 팔로워의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 클리어하고(프로세싱 블록 417), 그 후 프로세스는 프로세싱 블록 420으로 천이한다.
프로세싱 블록 420에서, 팔로워 내의 프로세싱 로직은 IPC_PEER_COMP_ACTIONS_RST_PHASE1 및 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시들을 제외한 자신의 CSR 내의 모든 비트 지시들 및 착신 도어벨을 클리어하고, 옵션적으로 앞서 설명된, 하나 이상의 커스텀 비트(custom bit)를 (그들의 역할에 의존하여) 클리어한다. 프로세싱 로직은 또한 팔로워가 리셋 페이즈 2 동작들을 완료했다는 것을 리더에게 통지하기 위해 리더의 CSR 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE2 비트 지시를 세팅한다. 그 후, 프로세스는 가동 페이즈(421)로 천이한다. 팔로워가 가동 페이즈에 있더라도, 일 실시예에서, 리더는 팔로워가 메시지를 전송할 수 있기 전에 제1 대역내 메시지를 전송해야 한다는 것을 유의한다. 일 실시예에서, 리더는 더미 메시지를 제1 메시지로서 전송한다. 이것은 팔로워가 메시지 전송을 시작하게 해준다. 이것은, 팔로워가 먼저 메시지를 전송하고, 리셋을 겪고, 리더가 그에 관해 전혀 알지 못한 채 다시 가동 페이즈에 도달하는 코너 경우를 방지하기 위한 것이다.
프로세싱 블록 416을 다시 참조하면, 리더가 리셋 페이즈 2에 있지 않다고 팔로워가 결정하면, 프로세스는 프로세싱 블록 418로 천이하여, 거기서 프로세싱 로직은 리더가 팔로워의 리셋 페이즈 상태를 요청했는지 시험한다. 일 실시예에서, 팔로워는 리더가 팔로워의 리셋 페이즈 상태를 요청했는지 결정하기 위해 자신의 CSR로부터의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 확인한다. 그렇다면, 팔로워 내의 프로세싱 로직은 요청을 클리어하고, 자신이 리셋 페이즈 1 동작들을 완료했다는 것을 리더에게 통지한다. 일 실시예에서, 팔로워는 자신의 CSR 레지스터 내의 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 비트 지시를 클리어함으로써 요청을 클리어한다. 일 실시예에서, 팔로워는 리더 CSR 레지스터 내의 IPC_PEER_COMP_ACTIONS_RST_PHASE1을 세팅함으로써 자신의 리셋 페이즈 상태를 리더에게 통지한다. 일단 이것이 완료되었다면, 프로세스는 리셋 페이즈 1의 대기 상태(410)로 천이한다.
그러므로, 본 명세서에서 기술된 실시예들은 다음 중 하나 이상을 포함한다: 리셋들 또는 인터리브 리셋들 내의 리셋들에 대한 특수한 경우들을 핸들링하기, 모든 스테일 메시지들을 드롭하기, 유효한 메시지들의 드롭을 회피하기, 교착상태들을 회피하기, 무한반복들을 회피하기, 임의의 프로세싱 유닛에 의한 비동기식 리셋 진입을 허용하기, 디세이블링 및/또는 비가용성의 간단한 지시들, 프로세싱 유닛 리셋, 디세이블링, 프로세싱 유닛 비가용성 및/또는 통신 채널만의 리셋, 및 미리 정의된 리셋 탈출 순서를 강요하지 않고 발견에 대한 균일한 핸들링.
또한 리셋 동기화를 위한 판독들은 전술한 문제들로 인해 회피된다. 마찬가지로, 타임아웃들 및/또는 재시도들이 또한 전술한 물제들로 인해 회피된다.
도 5는 본 발명에 따른 시스템 온-칩(SOC) 설계의 실시예를 도시한다. 구체적인 설명 예로서, SOC(500)는 사용자 장비(UE) 내에 포함된다. 일 실시예에서, UE는 핸드헬드 전화, 스마트폰, 태블릿, 초박형 노트북, 광대역 어댑터를 가진 노트북, 또는 임의의 다른 유사한 통신 디바이스와 같은 최종 사용자가 통신에 사용하는 임의의 디바이스를 지칭한다. 종종, UE는 사실상 GSM 네트워크 내의 이동국(MS)에 잠재적으로 대응하는 기지국 또는 노드에 접속한다.
일 실시예에서, SOC(500)는 2개의 코어, 즉 506 및 507을 포함한다. 이상의 논의와 유사하게, 코어들(506, 507)은 예컨대 Intel® Architecture Core™ 기반 프로세서, AMD(Advanced Micro Devices, Inc.) 프로세서, MIPS 기반 프로세서, ARM 기반 프로세서 설계, 또는 이들의 고객은 물론 이들의 사용권자들 또는 채택자들과 같은 명령어 세트 아키텍처(Instruction Set Architecture)에 부합할 수 있다. 코어들(506, 507)은 시스템(500)의 다른 부분들과 통신하기 위해 버스 인터페이스 유닛(509) 및 L2 캐시(510)와 연관되는 캐시 제어(508)에 결합된다. 상호접속부(510)는 설명되는 본 발명의 하나 이상의 양태를 잠재적으로 구현하는 IOSF, AMBA 또는 본 명세서에서 논의된 다른 상호접속부와 같은 온-칩 상호접속부를 포함한다.
인터페이스(510)는 예컨대 가입자 식별 모듈(SIM) 카드와 인터페이스하기 위한 SIM(530), SOC(500)를 초기화 및 부팅하기 위해 코어들(506, 507)에 의해 실행될 부트 코드를 유지하기 위한 부트 ROM(535), 외부 메모리(예를 들어, DRAM(560))와 인터페이스하기 위한 SDRAM 제어기(540), 비휘발성 메모리(예로서, 플래시(565))와 인터페이스하기 위한 플래시 제어기(545), 주변 장치들과 인터페이스하기 위한 주변 장치 제어(550)(예를 들어, 직렬 주변 장치 인터페이스), 입력(예를 들어, 터치 인에이블드 입력)을 디스플레이 및 수신하기 위한 비디오 코덱(520) 및 비디오 인터페이스(525), 그래픽 관련 계산들을 수행하기 위한 GPU(515) 등과 같은 다른 컴포넌트들에의 통신 채널들을 제공한다. 이러한 인터페이스들 중 임의의 것은 본 명세서에서 설명된 발명의 양태들을 포함할 수 있다.
그 외에도, 시스템은 예컨대 블루투스 모듈(570), 3G 모뎀(575), GPS(585), 및 WiFi(585)와 같은 통신을 위한 주변 장치들을 예시한다. 전술한 바와 같이, UE는 통신용 라디오를 포함한다는 점에 유의한다. 결과적으로, 이러한 주변 장치 통신 모듈들은 모두가 필요한 것은 아니다. 그러나, UE에는, 외부 통신을 위한 어떤 형태의 라디오가 포함될 것이다.
도 6은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 실시예를 도시한다. 도 6을 참조하면, 프로세서(600)는 예컨대 마이크로프로세서, 임베디드 프로세서, 디지털 신호 처리기(DSP), 네트워크 프로세서, 핸드헬드 프로세서, 애플리케이션 프로세서, 코프로세서, 시스템 온-칩(SOC), 또는 코드를 실행하는 다른 디바이스와 같은 임의의 프로세서 또는 프로세싱 디바이스를 포함한다. 일 실시예에서, 프로세서(600)는 비대칭 코어들 또는 대칭 코어들(예시된 실시예)을 포함할 수 있는 적어도 2개의 코어 즉, 코어들(601 및 602)을 포함한다. 그러나, 프로세서(600)는 대칭 또는 비대칭일 수 있는 임의의 개수의 프로세싱 요소들을 포함할 수 있다.
일 실시예에서, 프로세싱 요소는 소프트웨어 스레드를 지원하기 위한 하드웨어 또는 로직을 지칭한다. 하드웨어 프로세싱 요소들의 예들은 다음을 포함한다: 스레드 유닛, 스레드 슬롯, 스레드, 프로세스 유닛, 콘텍스트, 콘텍스트 유닛, 로직 프로세서(logical processor), 하드웨어 스레드, 코어, 및/또는 예컨대 실행 상태 또는 아키텍처 상태와 같은 프로세서의 상태를 유지할 수 있는 임의의 다른 요소. 다시 말하면, 일 실시예에서, 프로세싱 요소는, 예컨대 소프트웨어 스레드, 운영 체제, 애플리케이션과 같은 코드, 또는 다른 코드와 독립적으로 연관될 수 있는 임의의 하드웨어를 지칭한다. 물리적 프로세서(또는 프로세서 소켓)는 전형적으로, 예컨대 코어들 또는 하드웨어 스레드들과 같은 임의의 개수의 다른 프로세싱 요소들을 잠재적으로 포함하는 집적 회로를 지칭한다.
코어는 종종 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 배치되는 로직을 지칭하며, 각각의 독립적으로 유지되는 아키텍처 상태는 적어도 어떤 전용 실행 리소스들과 연관된다. 코어들과는 대조적으로, 하드웨어 스레드는 일반적으로, 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 배치되는 임의의 로직을 지칭하며, 독립적으로 유지된 아키텍처 상태들은 실행 리소스들에 대한 액세스를 공유한다. 알 수 있는 바와 같이, 특정 리소스들이 공유되고 다른 리소스들은 아키텍처 상태에 전용될 때, 하드웨어 스레드와 코어의 명명법 간의 경계가 중첩된다. 그럼에도 종종, 코어 및 하드웨어 스레드는 운영 체제에 의해 개별적인 로직 프로세서들로서 보여지며, 운영 체제는 각각의 로직 프로세서 상의 동작들을 개별적으로 스케줄링할 수 있다.
도 6에 도시된 바와 같은, 물리적 프로세서(600)는 2개의 코어 즉, 코어들(601, 602)을 포함한다. 여기서, 코어(601, 602)는 대칭 코어들 즉, 동일 구성들, 기능 유닛들 및/또는 로직을 갖는 코어들로 간주된다. 다른 실시예에서, 코어(601)는 비순차적(out-of-order) 프로세서 코어를 포함하는 반면에, 코어(602)는 순차적(in-order) 프로세서 코어를 포함한다. 그러나, 코어들(601, 602)은 예컨대 네이티브 코어(native core), 소프트웨어에 의해 관리되는 코어, 네이티브 명령어 세트 아키텍처(ISA)를 실행하도록 적응되어 있는 코어, 변환된 명령어 세트 아키텍처(ISA)를 실행하도록 구성되어 있는 코어, 공동 설계된 코어(co-designed core), 또는 다른 공지된 코어와 같은 임의의 타입의 코어로부터 개별적으로 선택될 수 있다. 이종 코어 환경(즉, 비대칭 코어들)에서, 예컨대 바이너리 변환(binary translation)과 같은 어떤 형태의 변환이 하나의 코어 또는 양쪽 코어들 상에서 코드를 스케줄링하거나 또는 실행하는 데 이용될 수 있다. 논의를 더 하기 위해, 코어(601)에 예시되어 있는 기능 유닛들이 아래에서 더 상세히 기술되는데, 이는 코어(602) 내의 유닛들은 도시된 실시예에서 유사한 방식으로 동작하기 때문이다.
도시된 바와 같이, 코어(601)는 두 개의 하드웨어 스레드들(601a, 601b)을 포함하는데, 이들은 또한 하드웨어 스레드 슬롯들(601a, 601b)로서 지칭될 수 있다. 그러므로, 운영 체제와 같은 소프트웨어 엔티티들은, 일 실시예에서 잠재적으로 프로세서(600)를 네 개의 분리된 프로세서들 즉, 네 개의 소프트웨어 스레드들을 동시에 실행할 수 있는 네 개의 로직 프로세서들 또는 프로세싱 요소들로서 본다. 전술한 바와 같이, 제1 스레드는 아키텍처 상태 레지스터들(601a)과 연관되고, 제2 스레드는 아키텍처 상태 레지스터들(601b)과 연관되며, 제3 스레드는 아키텍처 상태 레지스터들(602a)과 연관될 수 있고, 제4 스레드는 아키텍처 상태 레지스터들(602b)과 연관될 수 있다. 여기서, 아키텍처 상태 레지스터들(601a, 601b, 602a, 및 602b) 각각은, 전술한 바와 같이, 프로세싱 요소들, 스레드 슬롯들, 또는 스레드 유닛들로서 지칭될 수 있다. 예시된 바와 같이, 아키텍처 상태 레지스터들(601a)은 아키텍처 상태 레지스터들(601b)에 복제되므로, 로직 프로세서(601a) 및 로직 프로세서(601b)에 대해 개별 아키텍처 상태들/콘텍스트들이 저장될 수 있다. 코어(601)에서, 스레드들(601a, 601b)에 대해 할당기 및 이름 변경기 블록(allocator and renamer block)(630) 내의 이름 변경 로직 및 명령어 포인터들과 같은 다른 보다 작은 리소스들이 또한 복제될 수 있다. 재순서/리타이어먼트 유닛(reorder/retirement unit)(635)의 재순서 버퍼들, ILTB(620), 로드/저장 버퍼들, 및 큐들과 같은 일부 리소스들은 파티셔닝을 통해 공유될 수 있다. 범용 내부 레지스터들, 페이지-테이블 베이스 레지스터(들), 저-레벨 데이터-캐시 및 데이터-TLB(615), 실행 유닛(들)(640), 및 비순차 유닛(635)의 부분들과 같은 다른 리소스들은 잠재적으로 완전히 공유된다.
프로세서(600)는 완전히 공유될 수 있거나, 파티셔닝을 통해 공유될 수 있거나, 또는 프로세싱 요소들에 의해/프로세싱 요소들에 전용될 수 있는 다른 리소스들을 종종 포함한다. 도 6에서, 프로세서의 예시적 로직 유닛들/리소스들을 가진 순전히 예시적 프로세서의 실시예가 도시된다. 프로세서는 이들 기능 유닛들 중 임의의 것을 포함할 수 있거나 생략할 수 있을 뿐만 아니라 도시되지 않은 임의의 기타 알려진 기능 유닛들, 로직, 또는 펌웨어를 포함할 수 있다는 것을 유의한다. 예시된 바와 같이, 코어(601)는 단순화되고, 대표적인 비순차적(out-of-order, OOO) 프로세서 코어를 포함한다. 그러나 비순차적 프로세서는 상이한 실시예들에서 이용될 수 있다. OOO 코어는 실행되고/취해질 브랜치들을 예측하는 브랜치 타겟 버퍼(620), 및 명령어들에 대한 어드레스 변환 엔트리들을 저장하는 명령어-변환 버퍼(I-TLB)(620)를 포함한다.
코어(601)는 페치된 요소들을 디코딩하기 위해 페치 유닛(fetch unit)(620)에 결합된 디코드 모듈(625)을 더 포함한다. 일 실시예에서, 페치 로직은 스레드 슬롯들(601a, 601b)과 각각 연관된 개별적인 시퀀서들을 포함한다. 통상적으로 코어(601)는, 프로세서(600) 상에서 실행 가능한 명령어들을 정의/특정하는 제1 ISA와 연관된다. 종종 제1 ISA의 일부인 머신 코드 명령어들은, 수행될 명령어 또는 연산을 참조하는/특정하는 명령어의 일부(오피코드(opcode)라고 지칭함)를 포함한다. 디코드 로직(625)은 그들의 오피코드들로부터 이러한 명령어들을 인식하고, 제1 ISA에 의해 정의된 바와 같이 프로세싱을 위해, 디코딩된 명령어들을 파이프라인으로 전달하는 회로를 포함한다. 예를 들어, 아래에 더 상세히 논의되는 바와 같이, 일 실시예에서, 디코더들(625)은 트랜잭션 명령어와 같은 특정 명령어들을 인식하도록 설계 또는 적응되는 로직을 포함한다. 디코더들(625)에 의한 인식의 결과로서, 아키텍처 또는 코어(601)는 적절한 명령어와 연관된 작업들을 수행하기 위해 특정의 미리 정의된 조치들을 취한다. 본 명세서에서 설명되는 태스크들, 블록들, 동작들, 및 방법들 중 임의의 것은 단일 또는 다중 명령어에 응답하여 수행될 수 있고; 이들 중 몇몇은 신(new) 또는 구(old) 명령어들일 수 있다는 점에 주목하는 것이 중요하다. 디코더들(626)이, 일 실시예에서, 동일한 ISA(또는 그것의 서브세트)를 인식한다는 것을 유의한다. 대안적으로, 이종 코어 환경에서, 디코더들(626)은 제2 ISA(제1 ISA의 서브세트 또는 별개의 ISA)를 인식한다.
일 예에서, 할당기 및 이름 변경기 블록(630)은 명령어 프로세싱 결과들을 저장하는 레지스터 파일들과 같은, 리소스들을 예약하는 할당기를 포함한다. 그러나, 스레드들(601a, 601b)은 잠재적으로 비순차 실행이 가능하며, 할당기 및 이름 변경기 블록(630)은 또한 명령어 결과들을 추적하는 재순서 버퍼들과 같은 다른 리소스들을 예약한다. 유닛(630)은 또한 프로그램/명령어 참조 레지스터들을 프로세서(600) 내부의 다른 레지스터들로 이름 변경하는 레지스터 이름 변경기를 포함할 수 있다. 재순서/리타이어먼트 유닛(635)은, 비순차 실행 및 비순차 실행된 명령어들의 추후의 순차 리타이어먼트를 지원하기 위해 전술한 재순서 버퍼들, 로드 버퍼들, 및 저장 버퍼들과 같은 컴포넌트들을 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들) 블록(640)은 실행 유닛들 상의 명령어들/동작을 스케줄링하는 스케줄러 유닛을 포함한다. 예를 들어, 부동 소수점 명령어는 이용 가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트 상에서 스케줄링된다. 실행 유닛들과 연관된 레지스터 파일들이 또한 정보 명령어 프로세싱 결과들을 저장하기 위해 포함된다. 예시적 실행 유닛들은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛, 및 다른 알려진 실행 유닛들을 포함한다.
저 레벨 데이터 캐시 및 데이터 변환 버퍼(D-TLB)(650)는 실행 유닛(들)(640)에 결합된다. 데이터 캐시는 메모리 일관성 상태들에 잠재적으로 유지되는, 데이터 피연산자들과 같은 최근에 사용된/연산된 요소들을 저장하는 것이다. D-TLB는 최근의 가상/선형 대 물리 주소 변환들을 저장하는 것이다. 특정 예로서, 프로세서는 물리 메모리를 복수의 가상 페이지들로 분할하는(break) 페이지 표 구조를 포함할 수 있다.
여기서, 코어들(601, 602)은 온-칩 인터페이스(610)와 연관된 제2 레벨 캐시와 같은 상위 레벨 또는 퍼더-아웃(further-out) 캐시에의 액세스를 공유한다. 상위 레벨 또는 퍼더-아웃이란 실행 유닛(들)으로부터의 증가하거나 더 멀어지는 캐시 레벨들을 지칭한다는 것을 유의한다. 일 실시예에서, 상위 레벨 캐시는, 예컨대 제2 또는 제3 레벨 데이터 캐시와 같은 마지막 레벨 데이터 캐시 - 프로세서(600) 상의 메모리 계층 구조에서의 마지막 캐시 -이다. 그러나, 상위 레벨 캐시는 이렇게 한정되는 것은 아니고, 명령어 캐시와 연관될 수 있거나 또는 이를 포함할 수 있다. 최근에 디코딩된 트레이스들을 저장하기 위해 디코더(625) 후에 트레이스 캐시 - 일 타입의 명령어 캐시 -가 대신 결합될 수 있다. 여기서, 명령어는 잠재적으로 매크로-명령어(즉, 디코더들에 의해 인식되는 범용 명령어)를 잠재적으로 지칭하는데, 이것은 다수의 마이크로 명령어들(마이크로 연산들)로 디코딩할 수 있다.
도시된 구성에서, 프로세서(600)는 또한 온-칩 인터페이스 모듈(610)을 포함한다. 역사적으로, 아래에서 더 상세히 설명되는 메모리 제어기는 프로세서(600) 외부의 컴퓨팅 시스템에 포함되었다. 이러한 시나리오에서, 온-칩 인터페이스(610)는, 시스템 메모리(675), (메모리(675)에 접속하는 메모리 제어기 허브, 및 주변 디바이스들을 접속하는 I/O 제어기 허브를 종종 포함하는) 칩셋, 메모리 제어기 허브, 노스브릿지(northbridge), 또는 다른 집적 회로와 같은 프로세서(600) 외부의 디바이스들과 통신하는 것이다. 그리고 이러한 시나리오에서, 버스(605)는 멀티-드롭(multi-drop) 버스, 점대점(point-to-point) 상호접속부, 직렬 상호접속부, 병렬 버스, 일관성(coherent)(예컨대, 캐시 일관성(cache coherent)) 버스, 계층화된 프로토콜 아키텍처, 차동 버스, 및 GTL 버스와 같은 임의의 공지된 상호접속부를 포함할 수 있다.
메모리(675)는 프로세서(600)에 전용될 수 있거나 시스템 내의 다른 디바이스들과 공유될 수 있다. 메모리(675)의 타입들의 통상적인 예들은 DRAM, SRAM, 비휘발성 메모리(NV 메모리), 및 다른 공지된 저장 디바이스들을 포함한다. 디바이스(680)는 메모리 제어기 허브에 결합된 그래픽 가속기, 프로세서 또는 카드, I/O 제어기 허브에 결합된 데이터 저장소, 무선 송수신기, 플래시 디바이스, 오디오 제어기, 네트워크 제어기 또는 다른 알려진 디바이스를 포함할 수 있다는 것을 유의한다.
그러나 최근에, SOC와 같은 단일 다이 상에 더 많은 로직 및 디바이스들이 집적됨에 따라, 이러한 디바이스들 각각은 프로세서(600) 상에 통합될 수 있다. 예를 들어, 일 실시예에서 메모리 제어기 허브는 프로세서(600)와 동일한 패키지 및/또는 다이 상에 있다. 여기서, 코어(610)의 일부(온-코어 부분)는 메모리(675) 또는 그래픽 디바이스(680)와 같은 다른 디바이스들과 인터페이싱하기 위한 하나 이상의 제어기(들)를 포함한다. 그러한 디바이들과 인터페이스하는 상호접속부 및 제어기들을 포함하는 구성은 종종 온-코어(또는 언-코어(un-core) 구성)라고 지칭된다. 예로서, 온-칩 인터페이스(610)는 온-칩 통신을 위한 링 상호접속부(ring interconnect), 및 오프-칩(off-chip) 통신을 위한 고속 직렬 점-대-점 링크(605)를 포함한다. 그러나, SOC 환경에서, 네트워크 인터페이스, 코-프로세서, 메모리(675), 그래픽 프로세서(680), 및 임의의 다른 공지된 컴퓨터 디바이스들/인터페이스와 같은 훨씬 더 많은 디바이스들이 단일 다이 또는 집적 회로 상에 통합될 수 있어서 높은 기능성과 낮은 전력 소비를 갖는 소형 폼팩터를 제공할 수 있다. 프로세서 코어들을 포함하는, 이러한 디바이스들은 통신을 위해 본 명세서에서 기술된 상호접속부(예를 들어, 통신 채널(103), IPC 통신 채널, 기타 등등)를 이용할 수 있다.
제1 예시적 실시예에서, 장치는: 기입 동작들을 이용하여 피어-투-피어 통신으로 서로 통신하는 한 쌍의 프로세싱 유닛들을 포함하고, 상기 한 쌍의 프로세싱 유닛들 각각은 상기 한 쌍의 프로세싱 유닛들 중의 하나의 프로세싱 유닛으로부터 상기 한 쌍의 프로세싱 유닛들의 프로세싱 유닛들 중의 다른 프로세싱 유닛으로 정보를 전송하는 통신 유닛; 리셋 동기화 정보 및 메시지 정보를 저장하는 메모리; 및 프로세싱 로직 - 상기 프로세싱 로직은 자신과 상기 다른 프로세싱 유닛 사이에 상기 메모리에 설정된 비트 지시들에 기초하여 기입-전용 리셋 동기화를 수행함 - 을 포함한다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 메모리는 비트들의 집합에 대한 저장소를 포함하고, 상기 비트들의 집합 중의 하나 이상의 비트는, 상기 다른 프로세싱 유닛에 의해 세팅된, 리셋 동기화에 관한 지시를 나타내고, 상기 비트들의 집합 중의 하나 이상의 비트는, 상기 다른 프로세싱 유닛에 의해 전송된, 리셋 동기화에 무관한 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 비트들의 집합 중의 제1 비트는 상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 더 이상의 트랜잭션들을 송신하지 않을 것이라는 지시인 것을 포함할 수 있다.
다른 예시적 실시예에서, 이 실시예의 주제는 옵션적으로, 상기 비트들의 집합 중의 제2 비트는 리셋 동기화와 무관한 상기 하나의 프로세싱 유닛으로부터 전송된 미처리된 메시지들을 폐기했다는 지시인 것을 포함할 수 있다.
다른 예시적 실시예에서, 이 실시예의 주제는 옵션적으로, 상기 비트들의 집합 중의 제3 비트는, 상기 제1 비트와 상기 제2 비트 중 어느 것이 최후에 세팅되었는지에 기초하여 상기 제1 비트와 상기 제2 비트에 대해 이루어진 세팅 간의 차이를 구별하라는 상기 다른 프로세싱 유닛으로부터 상기 하나의 프로세싱 유닛으로의 요청인 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 하나의 프로세싱 유닛의 상기 프로세싱 로직은: 상기 하나의 프로세싱 유닛이 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 상기 다른 프로세싱 유닛 내에 세팅하고, 리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 다른 프로세싱 유닛에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하고, 상기 제2 지시의 판독에 응답하여, 상기 다른 프로세싱 유닛으로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하고, 상기 하나의 프로세싱 유닛이 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제3 지시를 상기 다른 프로세싱 유닛 내에 세팅하고, 상기 하나의 프로세싱 유닛으로부터 수신된 리셋 동기화와 무관한 상기 메모리 내에 저장된 착신 메시지 정보를 클리어했다는 것을 지시하는, 상기 다른 프로세싱 유닛에 의해 세팅된 제4 지시를 상기 메모리로부터 판독하고, 상기 다른 프로세싱 유닛과의 통신을 재개함에 의해, 자신과 상기 다른 프로세싱 유닛과 사이에 리셋을 동기화하는 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 다른 프로세싱 유닛의 상기 프로세싱 로직은: 상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 상기 제1 프로세싱 유닛 내에 세팅하고, 리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 하나의 프로세싱 유닛에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하고, 상기 다른 프로세싱 유닛으로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 상기 하나의 프로세싱 유닛이 클리어했다는 것을 지시하는, 상기 하나의 프로세싱 유닛에 의해 세팅된 제3 지시를 상기 메모리로부터 판독하고, 상기 제3 지시의 판독에 응답하여, 상기 하나의 프로세싱 유닛으로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하고, 상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제4 지시를 상기 하나의 프로세싱 유닛 내에 세팅하고, 상기 하나의 프로세싱 유닛으로부터 적어도 하나의 착신 메시지를 수신한 후에 상기 하나의 프로세싱 유닛과 통신을 재개함에 의해, 상기 다른 프로세싱 유닛과 상기 하나의 프로세싱 유닛 사이에 리셋을 동기화하는 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 자신의 발신 트래픽을 디세이블했다는 상기 제2 지시를 수신할 때, 상기 하나의 프로세싱 유닛은 자신의 현재의 리셋 동기화 상태를 상기 다른 프로세싱 유닛에 다시 보고하는 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 하나의 프로세싱 유닛이 리셋 동기화와 무관한 자신의 발신 트래픽을 디세이블했다는 지시를 수신할 때, 상기 다른 프로세싱 유닛은 자신의 현재의 리셋 동기화 상태를 상기 하나의 프로세싱 유닛에 다시 보고하는 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 한 쌍의 프로세싱 유닛들은 집적 회로 내의 프로세싱 코어들인 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 한 쌍의 프로세싱 유닛들은 하나의 집적 회로의 일부가 아닌 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 상기 하나의 프로세싱 유닛은 상기 다른 프로세싱 유닛 내의 제어 상태 레지스터(CSR) 레지스터 내에 비트를 기입함으로써 상기 다른 프로세싱 유닛 내에 상기 비트 지시들을 세팅하는 것을 포함할 수 있다.
다른 예시적 실시예에서, 제1 예시적 실시예의 주제는 옵션적으로, 현재 저장되어 있는 상기 메시지 정보는 메시지, 피어-관련 요청 정보, 및 피어-관련 상태 정보 중 하나 이상을 포함하는 것을 포함할 수 있다.
제2 예시적 실시예에서, 기입 동작들을 이용하여 통신하는 제1 피어와 제2 피어 사이에 리셋을 동기화하는 방법은: 상기 제1 피어에 대해, 상기 제1 피어가 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 제2 프로세싱 유닛 내에 세팅하는 단계, 리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 제2 피어에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하는 단계, 상기 제2 지시를 판독하는 것에 응답하여, 상기 제2 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하는 단계, 상기 제1 피어가 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제3 지시를 통신 유닛을 이용하여 상기 제2 피어 내에 세팅하는 단계, 상기 제1 피어로부터 수신된 리셋 동기화와 무관한 상기 메모리 내에 저장된 착신 메시지 정보를 클리어했다는 것을 지시하는, 상기 제2 피어에 의해 세팅된 제4 지시를 상기 메모리로부터 판독하는 단계, 및 상기 제2 피어와의 통신을 재개하는 단계를 포함를 포함한다.
다른 예시적 실시예에서, 제2 예시적 실시예의 주제는 옵션적으로, 상기 제2 피어에 대해, 상기 제2 피어가 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 상기 제1 피어 내에 세팅하는 단계, 리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 제1 피어에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하는 단계, 상기 제2 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 임의의 메시지 정보를 클리어했다는 것을 지시하는, 상기 제1 피어에 의해 세팅된 제3 지시를 상기 메모리로부터 판독하는 단계, 상기 제3 지시의 판독에 응답하여, 상기 제1 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하는 단계, 상기 제2 피어가 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제4 지시를 통신 유닛을 이용하여 상기 제1 피어 내에 세팅하는 단계, 및 상기 제1 피어로부터 적어도 하나의 착신 메시지를 수신한 후에 상기 제1 피어와 통신을 재개하는 단계를 포함할 수 있다.
다른 예시적 실시예에서, 제2 예시적 실시예의 주제는 옵션적으로, 상기 제1 피어 및 제2 피어 중 하나 또는 둘 다가 리셋 동기화와 무관한 피어의 발신 트래픽이 디세이블되었다는 보고를 수신한 후에 현재 리셋 동기화 상태를 상기 다른 피어에 보고하는 단계를 포함할 수 있다.
다른 예시적 실시예에서, 제2 예시적 실시예의 주제는 옵션적으로, 상기 제1 피어 및 제2 피어 중 하나가 상기 제1 피어 및 제2 피어 중 다른 하나으로부터 수신된 현재 저장되어 있는 메시지 정보를 클리어하는 단계를 포함할 수 있다.
다른 예시적 실시예에서, 제2 예시적 실시예의 주제는 옵션적으로, 상기 제1 지시, 제2 지시, 제3 지시, 또는 제4 지시 중 임의의 하나를 세팅하는 단계는 상기 제1 피어 또는 제2 피어 각각 내의 제어 상태 레지스터(CSR) 레지스터 내에 비트를 기입하는 단계를 포함할 수 있다.
다른 예시적 실시예에서, 제2 예시적 실시예의 주제는 옵션적으로, 상기 현재 저장되어 있는 메시지 정보는 메시지, 피어-관련 요청 정보, 및 피어-관련 상태 정보 중 하나 이상을 포함하는 것을 포함할 수 있다.
다른 예시적 실시예에서, 제2 예시적 실시예의 주제는 옵션적으로, 리셋 동기화 동안 상기 제1 피어와 상기 제2 피어 중 하나 또는 둘 다에 의해 하나 이상이 리셋되는 경우에 리셋 동기화를 유지하는 단계를 포함할 수 있다.
다른 예시적 실시예에서, 이 예시적 실시예의 주제는 옵션적으로, 상기 하나 이상의 리셋은 피어들 둘다에 의한 인터리빙된 또는 동시의 리셋들을 포함하는 것을 포함할 수 있다.
제3 예시적 실시예에서, 제품은 제1 피어 및 제2 피어에 의해 실행될 때, 상기 제1 피어 및 제2 피어로 하여금 기입 동작들을 이용하여 서로 통신하는 상기 제1 피어와 상기 제2 피어 사이에 리셋을 동기화하는 방법을 수행하게 하는 명령어들을 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체를 갖고, 상기 방법은: 상기 제1 피어에 대해, 상기 제1 피어가 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 제2 프로세싱 유닛 내에 세팅하는 단계, 리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 제2 피어에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하는 단계, 상기 제2 지시를 판독하는 것에 응답하여, 상기 제2 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하는 단계, 상기 제1 피어가 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제3 지시를 통신 유닛을 이용하여 상기 제2 피어 내에 세팅하는 단계, 상기 제1 피어로부터 수신된 리셋 동기화와 무관한 상기 메모리 내에 저장된 착신 메시지 정보를 클리어했다는 것을 지시하는, 상기 제2 피어에 의해 세팅된 제4 지시를 상기 메모리로부터 판독하는 단계, 및 상기 제2 피어와의 통신을 재개하는 단계를 포함한다.
다른 예시적 실시예에서, 제3 예시적 실시예의 주제는 옵션적으로, 상기 방법은: 상기 제2 피어에 대해, 상기 제2 피어가 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 상기 제1 피어 내에 세팅하는 단계, 리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 제1 피어에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하는 단계, 상기 제2 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어했다는 것을 지시하는, 상기 제1 피어에 의해 세팅된 제3 지시를 상기 메모리로부터 판독하는 단계, 상기 제3 지시의 판독에 응답하여, 상기 제1 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하는 단계, 상기 제2 피어가 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제4 지시를 상기 통신 유닛을 이용하여 상기 제1 피어 내에 세팅하는 단계, 및 상기 제1 피어로부터 적어도 하나의 착신 메시지를 수신한 후에 상기 하나의 프로세싱 유닛과 통신을 재개하는 단계를 더 포함하는 것을 포함할 수 있다.
다른 예시적 실시예에서, 제3 예시적 실시예의 주제는 옵션적으로, 상기 방법은 상기 제1 피어 및 제2 피어 중 하나 또는 둘 다가, 리셋 동기화와 무관한 다른 피어의 발신 트래픽이 디세이블되었다는 보고를 수신할 때 현재 리셋 동기화 상태를 상기 다른 피어에 다시 보고하는 단계를 더 포함하는 것을 포함할 수 있다.
다른 예시적 실시예에서, 제2 예시적 실시예의 주제는 옵션적으로, 상기 방법은 상기 제1 피어 및 제2 피어 중 하나 또는 둘 다가 상기 제1 피어 및 제2 피어 중 다른 하나으로부터 수신된 현재 저장되어 있는 메시지 정보를 클리어하는 단계를 더 포함하는 것을 포함할 수 있다.
상세한 설명의 일부 부분들은 본 명세서에서 컴퓨터 메모리 내의 데이터 비트들에 대한 연산들의 알고리즘들 및 심볼 표현들에 관하여 제시된다. 이들 알고리즘 설명들 및 표현들은, 데이터 프로세싱 기술 분야의 통상의 기술자가 그들의 작업의 본질을 그 기술 분야의 다른 통상의 기술자에게 가장 효과적으로 전달하기 위해 이용되는 수단이다. 여기서 그리고 일반적으로, 알고리즘은 원하는 결과를 야기하는 단계들의 일관성 있는 시퀀스라고 생각된다. 단계들은 물리량들의 물리적인 조작을 요구하는 것들이다. 일반적으로, 반드시 그러하지는 않지만, 이러한 양들은 저장, 전송, 결합, 비교, 및 달리 조작이 가능한 전기 또는 자기 신호의 형태를 취한다. 주로 통상적인 사용의 이유 때문에, 이 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들, 또는 등등으로 지칭하는 것이 때로는 편리한 것으로 밝혀졌다.
그러나, 이러한 용어들 및 유사한 용어들 모두가 적절한 물리적 양들과 연관되는 것이며, 이러한 양들에 적용되는 단지 편리한 레이벨들일 뿐이라는 점을 명심해야 한다. 다음의 논의로부터 명백한 바와 같이, 특별히 달리 기술되지 않는 한, 본 설명 전체에 걸쳐서, 예컨대 "처리" 또는 "계산" 또는 "연산" 또는 "결정" 또는 "디스플레이" 등과 같은 용어들을 사용하는 논의는, 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자) 양들로서 표현된 데이터를 조작하고 이 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장소, 송신 또는 디스플레이 디바이스들 내의 물리 양들으로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 동작들 및 프로세스들을 지칭한다.
또한 본 명세서에서 기술되는 실시예들은 또한 본 명세서에서 동작들을 수행하기 위한 장치와 관련된다. 이러한 장치는 필요한 목적들을 위해 특별히 구성될 수 있거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 작동되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 그러한 컴퓨터 프로그램은 예컨대 컴퓨터 시스템 버스에 각각 결합되는 플로피 디스크들, 광 디스크들, CD-ROM들 및 광자기 디스크들을 포함하는 임의 타입의 디스크, 판독 전용 메모리들(ROM들), 랜덤 액세스 메모리들(RAM들), EPROM들, EEPROM들, 자기 또는 광학 카드들, 또는 전자 명령어들을 저장하기에 적합한 임의의 타입의 매체와 같은, 그러나 이에 한정되지 않는 컴퓨터 판독가능 저장 매체 내에 저장될 수 있다.
본 명세서에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련되지는 않는다. 다양한 범용 시스템들이 본 명세서에서의 교시들에 따라 프로그램들과 함께 사용될 수 있거나, 또는 요구되는 방법 단계들을 수행하도록 더욱 특수화된 장치를 구성하는 것이 편리함을 입증할 수 있다. 각종의 이러한 시스템들에 대해 요구되는 구조는 아래의 설명으로부터 나타날 것이다. 또한, 본 발명은 임의의 특별한 프로그래밍 언어를 참조하여 기술되는 것은 아니다. 다양한 프로그래밍 언어들이 본 명세서에 기술된 본 발명의 교시들을 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
머신 판독가능 매체는 머신(예를 들면, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장 또는 송신하는 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독가능 매체는 판독 전용 메모리("ROM"); 랜덤 액세스 메모리("RAM"); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 디바이스들; 기타 등등을 포함한다.
위의 설명을 읽은 후에 이 기술 분야의 통상의 기술자에게는 본 발명의 많은 변형들 및 변경들이 의심 없이 명확해질 것이지만, 예시적으로 도시되고 설명된 임의의 특정 실시예는 한정적인 것으로 간주되는 것을 의도하지 않는다는 것을 이해할 것이다. 따라서, 다양한 실시예들의 상세 사항들에 대한 참조들은 본 발명에 핵심적인 것으로 간주되는 그러한 특징들만을 언급하는 청구항들의 범위를 제한하도록 의도되지 않는다.

Claims (25)

  1. 장치로서:
    기입 동작들을 이용하여 피어-투-피어 통신으로 서로 통신하는 한 쌍의 프로세싱 유닛들을 포함하고, 상기 한 쌍의 프로세싱 유닛들 각각은:
    상기 한 쌍의 프로세싱 유닛들 중의 하나의 프로세싱 유닛으로부터 상기 한 쌍의 프로세싱 유닛들 중의 다른 프로세싱 유닛으로 정보를 전송하는 통신 유닛;
    리셋 동기화 정보 및 메시지 정보를 저장하는 메모리; 및
    프로세싱 로직 - 상기 프로세싱 로직은 자신과 상기 다른 프로세싱 유닛 사이에 상기 메모리에 설정된 비트 지시들에 기초하여 기입-전용 리셋 동기화를 수행함 -
    을 포함하는, 장치.
  2. 제1항에 있어서,
    상기 메모리는 비트들의 집합에 대한 저장소를 포함하고, 상기 비트들의 집합 중의 하나 이상의 비트는, 상기 다른 프로세싱 유닛에 의해 세팅된, 리셋 동기화에 관한 지시를 나타내고, 상기 비트들의 집합 중의 하나 이상의 비트는, 상기 다른 프로세싱 유닛에 의해 전송된, 리셋 동기화에 무관한 것인, 장치.
  3. 제2항에 있어서,
    상기 비트들의 집합 중의 제1 비트는 상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 더 이상의 트랜잭션들을 송신하지 않을 것이라는 지시인, 장치.
  4. 제3항에 있어서,
    상기 비트들의 집합 중의 제2 비트는 상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 상기 하나의 프로세싱 유닛으로부터 전송된 미처리된 메시지들을 폐기했다는 지시인, 장치.
  5. 제4항에 있어서,
    상기 비트들의 집합 중의 제3 비트는, 상기 제1 비트와 상기 제2 비트 중 어느 것이 최후에 세팅되었는지에 기초하여 상기 제1 비트와 상기 제2 비트에 대해 이루어진 세팅 간의 차이를 구별하라는 상기 다른 프로세싱 유닛으로부터 상기 하나의 프로세싱 유닛으로의 요청인, 장치.
  6. 제4항에 있어서,
    상기 하나의 프로세싱 유닛의 상기 프로세싱 로직은:
    상기 하나의 프로세싱 유닛이 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 상기 다른 프로세싱 유닛 내에 세팅하고,
    리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 다른 프로세싱 유닛에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하고,
    상기 제2 지시의 판독에 응답하여, 상기 다른 프로세싱 유닛으로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하고,
    상기 하나의 프로세싱 유닛이 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제3 지시를 상기 다른 프로세싱 유닛 내에 세팅하고,
    상기 하나의 프로세싱 유닛으로부터 수신된 리셋 동기화와 무관한 상기 메모리 내에 저장된 착신 메시지 정보를 클리어했다는 것을 지시하는, 상기 다른 프로세싱 유닛에 의해 세팅된 제4 지시를 상기 메모리로부터 판독하고, 또한 상기 다른 프로세싱 유닛과의 통신을 재개함으로써 자신과 상기 다른 프로세싱 유닛 사이에 리셋을 동기화하는, 장치.
  7. 제4항에 있어서,
    상기 다른 프로세싱 유닛의 상기 프로세싱 로직은:
    상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 제1 프로세싱 유닛 내에 세팅하고,
    리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 하나의 프로세싱 유닛에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하고,
    상기 다른 프로세싱 유닛으로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 상기 하나의 프로세싱 유닛이 클리어했다는 것을 지시하는, 상기 하나의 프로세싱 유닛에 의해 세팅된 제3 지시를 상기 메모리로부터 판독하고,
    상기 제3 지시의 판독에 응답하여, 상기 하나의 프로세싱 유닛으로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하고,
    상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제4 지시를 상기 하나의 프로세싱 유닛 내에 세팅하고,
    상기 하나의 프로세싱 유닛으로부터 적어도 하나의 착신 메시지를 수신한 후에 상기 하나의 프로세싱 유닛과 통신을 재개함으로써 상기 다른 프로세싱 유닛과 상기 하나의 프로세싱 유닛 사이에 리셋을 동기화하는, 장치.
  8. 제6항에 있어서,
    상기 다른 프로세싱 유닛이 리셋 동기화와 무관한 자신의 발신 트래픽을 디세이블했다는 상기 제2 지시를 수신할 때, 상기 하나의 프로세싱 유닛은 자신의 현재의 리셋 동기화 상태를 상기 다른 프로세싱 유닛에 다시 보고하는, 장치.
  9. 제7항에 있어서,
    상기 하나의 프로세싱 유닛이 리셋 동기화와 무관한 자신의 발신 트래픽을 디세이블했다는 지시를 수신할 때, 상기 다른 프로세싱 유닛은 자신의 현재의 리셋 동기화 상태를 상기 하나의 프로세싱 유닛에 다시 보고하는, 장치.
  10. 제1항에 있어서,
    상기 한 쌍의 프로세싱 유닛들은 집적 회로 내의 프로세싱 코어들인, 장치.
  11. 제1항에 있어서,
    상기 한 쌍의 프로세싱 유닛들은 하나의 집적 회로의 일부가 아닌, 장치.
  12. 제1항에 있어서,
    상기 하나의 프로세싱 유닛은 상기 다른 프로세싱 유닛 내의 제어 상태 레지스터(CSR) 레지스터 내에 비트를 기입함으로써 상기 다른 프로세싱 유닛 내에 상기 비트 지시들을 세팅하는, 장치.
  13. 제6항에 있어서,
    현재 저장되어 있는 상기 메시지 정보는 메시지, 피어-관련 요청 정보, 및 피어-관련 상태 정보 중 하나 이상을 포함하는, 장치.
  14. 기입 동작들을 이용하여 통신하는 제1 피어와 제2 피어 사이에 리셋을 동기화하는 방법으로서,
    상기 제1 피어에 대해,
    상기 제1 피어가 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 제2 프로세싱 유닛 내에 세팅하는 단계,
    리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 제2 피어에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하는 단계,
    상기 제2 지시를 판독하는 것에 응답하여, 상기 제2 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하는 단계,
    상기 제1 피어가 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제3 지시를 통신 유닛을 이용하여 상기 제2 피어 내에 세팅하는 단계,
    상기 제1 피어로부터 수신된 리셋 동기화와 무관한 상기 메모리 내에 저장된 착신 메시지 정보를 클리어했다는 것을 지시하는, 상기 제2 피어에 의해 세팅된 제4 지시를 상기 메모리로부터 판독하는 단계, 및
    상기 제2 피어와의 통신을 재개하는 단계
    를 포함하는, 방법.
  15. 제14항에 있어서,
    상기 제2 피어에 대해,
    상기 제2 피어가 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 상기 제1 피어 내에 세팅하는 단계,
    리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 제1 피어에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하는 단계,
    상기 제2 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어했다는 것을 지시하는, 상기 제1 피어에 의해 세팅된 제3 지시를 상기 메모리로부터 판독하는 단계,
    상기 제3 지시의 판독에 응답하여, 상기 제1 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하는 단계,
    상기 제2 피어가 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제4 지시를 상기 통신 유닛을 이용하여 상기 제1 피어 내에 세팅하는 단계, 및
    상기 제1 피어로부터 적어도 하나의 착신 메시지를 수신한 후에 상기 제1 피어와 통신을 재개하는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서,
    상기 제1 피어 및 제2 피어 중 하나 또는 둘 다가, 리셋 동기화와 무관한 다른 피어의 발신 트래픽이 디세이블되었다는 보고를 상기 다른 피어로부터 수신한 후에 현재 리셋 동기화 상태를 상기 다른 피어에 다시 보고하는 단계를 더 포함하는, 방법.
  17. 제15항에 있어서,
    상기 제1 피어 및 제2 피어 중 하나가 상기 제1 피어 및 제2 피어 중 다른 하나로부터 수신된 현재 저장되어 있는 메시지 정보를 클리어하는 단계를 더 포함하는, 방법.
  18. 제15항에 있어서,
    상기 제1 지시, 제2 지시, 제3 지시, 또는 제4 지시 중 임의의 하나를 세팅하는 단계는 상기 제1 피어 또는 제2 피어 각각 내의 제어 상태 레지스터(CSR) 레지스터 내에 비트를 기입하는 단계를 포함하는, 방법.
  19. 제15항에 있어서,
    상기 현재 저장되어 있는 메시지 정보는 메시지, 피어-관련 요청 정보, 및 피어-관련 상태 정보 중 하나 이상을 포함하는, 방법.
  20. 제15항에 있어서,
    리셋 동기화 동안 상기 제1 피어와 상기 제2 피어 중 하나 또는 둘 다에 의해 하나 이상이 리셋되는 경우에 리셋 동기화를 유지하는 단계를 더 포함하는, 방법.
  21. 제14항에 있어서,
    상기 하나 이상의 리셋은 피어들 둘다에 의한 인터리빙된 또는 동시의 리셋들을 포함하는, 방법.
  22. 제1 피어 및 제2 피어에 의해 실행될 때, 상기 제1 피어 및 제2 피어로 하여금 기입 동작들을 이용하여 서로 통신하는 상기 제1 피어와 상기 제2 피어 사이에 리셋을 동기화하는 방법을 수행하게 하는 명령어들을 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체를 가진 제품으로서, 상기 방법은:
    상기 제1 피어에 대해,
    상기 제1 피어가 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 제2 프로세싱 유닛 내에 세팅하는 단계,
    리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 제2 피어에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하는 단계,
    상기 제2 지시를 판독하는 것에 응답하여, 상기 제2 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하는 단계,
    상기 제1 피어가 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제3 지시를 통신 유닛을 이용하여 상기 제2 피어 내에 세팅하는 단계,
    상기 제1 피어로부터 수신된 리셋 동기화와 무관한 상기 메모리 내에 저장된 착신 메시지 정보를 클리어했다는 것을 지시하는, 상기 제2 피어에 의해 세팅된 제4 지시를 상기 메모리로부터 판독하는 단계, 및
    상기 제2 피어와의 통신을 재개하는 단계
    를 포함하는, 제품.
  23. 제22항에 있어서,
    상기 방법은:
    상기 제2 피어에 대해,
    상기 제2 피어가 리셋 동기화와 무관한 발신 트래픽을 디세이블했다는 것을 지시하는 제1 지시를 상기 제1 피어 내에 세팅하는 단계,
    리셋 동기화와 무관한 자신의 발신 트래픽이 디세이블되었다는, 상기 제1 피어에 의해 세팅된 제2 지시를 상기 메모리로부터 판독하는 단계,
    상기 제2 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어했다는 것을 지시하는, 상기 제1 피어에 의해 세팅된 제3 지시를 상기 메모리로부터 판독하는 단계,
    상기 제3 지시의 판독에 응답하여, 상기 제1 피어로부터 수신되고 리셋 동기화와 무관한 상기 메모리 내에 저장된 메시지 정보를 클리어하는 단계,
    상기 제2 피어가 리셋 동기화와 무관한 잔여 착신 트래픽을 클리어했다는 것을 지시하는 제4 지시를 상기 통신 유닛을 이용하여 상기 제1 피어 내에 세팅하는 단계, 및
    상기 제1 피어로부터 적어도 하나의 착신 메시지를 수신한 후에 상기 하나의 프로세싱 유닛과 통신을 재개하는 단계를 더 포함하는, 제품.
  24. 제23항에 있어서,
    상기 방법은, 상기 제1 피어 및 제2 피어 중 하나 또는 둘 다가, 리셋 동기화와 무관한 다른 피어의 발신 트래픽이 디세이블되었다는 보고를 수신하는 경우에 현재 리셋 동기화 상태를 상기 다른 피어에 다시 보고하는 단계를 더 포함하는, 제품.
  25. 제23항에 있어서,
    상기 방법은, 상기 제1 피어 및 제2 피어 중 하나 또는 둘 다가 상기 제1 피어 및 제2 피어 중 다른 하나로부터 수신된 현재 저장되어 있는 메시지 정보를 클리어하는 단계를 더 포함하는, 제품.
KR1020150162147A 2014-12-18 2015-11-18 기입-전용 프로세서간 리셋 동기화를 위한 방법 및 장치 KR101775459B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/576,019 US9678808B2 (en) 2014-12-18 2014-12-18 Method and apparatus for write-only inter-processor reset synchronization
US14/576,019 2014-12-18

Publications (2)

Publication Number Publication Date
KR20160074393A true KR20160074393A (ko) 2016-06-28
KR101775459B1 KR101775459B1 (ko) 2017-09-06

Family

ID=54557254

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150162147A KR101775459B1 (ko) 2014-12-18 2015-11-18 기입-전용 프로세서간 리셋 동기화를 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US9678808B2 (ko)
EP (1) EP3035202B1 (ko)
KR (1) KR101775459B1 (ko)
CN (1) CN105718418B (ko)
TW (1) TWI599893B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025741B2 (en) 2016-01-13 2018-07-17 Samsung Electronics Co., Ltd. System-on-chip, mobile terminal, and method for operating the system-on-chip

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154785A (en) 1998-07-17 2000-11-28 Network Equipment Technologies, Inc. Inter-processor communication system
CN102077181B (zh) * 2008-04-28 2014-07-02 惠普开发有限公司 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统
US8930676B2 (en) 2010-12-22 2015-01-06 Via Technologies, Inc. Master core discovering enabled cores in microprocessor comprising plural multi-core dies
US8782451B2 (en) * 2010-12-22 2014-07-15 Via Technologies, Inc. Power state synchronization in a multi-core processor

Also Published As

Publication number Publication date
EP3035202B1 (en) 2019-08-21
TW201633175A (zh) 2016-09-16
US20160179585A1 (en) 2016-06-23
US9678808B2 (en) 2017-06-13
EP3035202A1 (en) 2016-06-22
CN105718418B (zh) 2019-06-28
CN105718418A (zh) 2016-06-29
KR101775459B1 (ko) 2017-09-06
TWI599893B (zh) 2017-09-21

Similar Documents

Publication Publication Date Title
US10909055B2 (en) High performance interconnect physical layer
US10324882B2 (en) High performance interconnect link state transitions
US10120809B2 (en) Method, apparatus, and system for allocating cache using traffic class
EP3866020B1 (en) Flexible on-die fabric interface
US10560081B2 (en) Method, apparatus, system for centering in a high performance interconnect
US11762802B2 (en) Streaming fabric interface
US20160188519A1 (en) Method, apparatus, system for embedded stream lanes in a high-performance interconnect
US20160012010A1 (en) Method, apparatus and system for modular on-die coherent interconnect
KR101775459B1 (ko) 기입-전용 프로세서간 리셋 동기화를 위한 방법 및 장치

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