KR20230098610A - 시스템 온 칩(soc들)을 위한 향상된 내구성 - Google Patents

시스템 온 칩(soc들)을 위한 향상된 내구성 Download PDF

Info

Publication number
KR20230098610A
KR20230098610A KR1020237017703A KR20237017703A KR20230098610A KR 20230098610 A KR20230098610 A KR 20230098610A KR 1020237017703 A KR1020237017703 A KR 1020237017703A KR 20237017703 A KR20237017703 A KR 20237017703A KR 20230098610 A KR20230098610 A KR 20230098610A
Authority
KR
South Korea
Prior art keywords
data
cache
external memory
trigger signal
response
Prior art date
Application number
KR1020237017703A
Other languages
English (en)
Other versions
KR102656509B1 (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 KR20230098610A publication Critical patent/KR20230098610A/ko
Application granted granted Critical
Publication of KR102656509B1 publication Critical patent/KR102656509B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/02System on chip [SoC] design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

런타임 글로벌 푸시-퍼시스턴스(runtime global push to persistence)를 갖는 시스템 온 칩은 캐시를 갖는 데이터 프로세서, 외부 메모리 인터페이스, 및 마이크로시퀀서를 포함한다. 외부 메모리 인터페이스는 캐시에 결합되고 외부 메모리에 결합되도록 적응된다. 캐시는 외부 메모리에 저장하기 위해 외부 메모리 인터페이스에 데이터를 제공한다. 마이크로시퀀서는 데이터 프로세서에 결합된다. 트리거 신호에 응답하여, 마이크로시퀀서는 캐시가 외부 메모리로의 송신을 위해 데이터를 외부 메모리 인터페이스에 발송함으로써 데이터를 플러시하게 한다.

Description

시스템 온 칩(SOC들)을 위한 향상된 내구성
컴퓨터 시스템들은 일시적으로 종료(shut down)되거나 전원이 꺼지는 경우가 종종 발생한다. 예를 들어, 컴퓨터 시스템이 동작하고 있는 건물 또는 가정에 대한 전력은 절전(brownout), 정전(blackout), 또는 자연 재해로 인해 전력 손실을 겪을 수 있다. 더욱이, 컴퓨터 시스템의 전원 공급 장치 자체가 고장날 수 있다. 컴퓨터 시스템을 종료시키는 또 다른 이벤트 범주는 컴퓨터 시스템을 "록업("lock up)"하고 사용자가 수동으로 리셋하도록 요구하는 애플리케이션 프로그램 또는 운영 체제 고장이다. 때때로 컴퓨터를 종료해야 하는 조건이 예상될 수 있으며 종료 전에 중요한 데이터가 보존될 수 있다. 그러나, 수정되었지만 영구 메모리(persistent memory)(예를 들어, 비휘발성 메모리, 배터리 백업 메모리, 하드 디스크 드라이브 등)에 아직 저장되지 않은 임의의 데이터는 전력 손실 또는 리셋으로 인해 손실될 것이다. 이러한 예상치 못한 데이터 손실로부터 보호하기 위해, 애플리케이션 프로그램들은 때때로 데이터 파일들을 영구 메모리에 주기적으로 저장하고, 운영 체제들은 이러한 이벤트들 중 하나가 검출된 후에 컴퓨터가 종료되기 전에 중요한 데이터를 저장하기 위해 개입할 수 있다.
현대의 데이터 프로세서들은 빈번하게 사용되는 데이터에 대한 빠른 액세스를 허용하여 컴퓨터 시스템 성능을 향상시키기 위해 캐시들, 즉 데이터 프로세서에 밀접하게 결합된 정적 랜덤 액세스 메모리(static random access memory;SRAM)와 같은 고속 메모리를 일상적(routinely)으로 사용한다. 애플리케이션 프로그램이 캐시에 할당된 데이터를 수정할 때, 데이터 프로세서는 전형적으로 캐시가 다른 데이터를 위한 공간을 만들고 업데이트된 복사본을 메모리에 다시 기록할 때까지 복사본을 수정된("더티(dirty)") 형태로 캐시에 유지한다. 종료를 필요로 하는 이벤트가 종료 전에 적절한 시간 내에 발생하면, 애플리케이션 프로그램 또는 운영 체제는 캐시로부터 영구 메모리로 임의의 더티 데이터를 "플러시"(즉, 다시 기록)할 수 있으며, 이에 의해 중요 데이터에 대한 업데이트들이 보존되고 전역적으로(globally) 관찰가능하므로, 컴퓨터 시스템이 나중에 재시작될 때 사용자의 작업이 손실 없이 복원될 수 있다.
시스템 온 칩(SOC들)은 단일 집적 회로 칩 상에서 다양한 데이터 프로세서들, 캐시들, 큐들(queues), 상호접속 회로들의 다수의 층들, 및 입력/출력 주변기기들을 조합한다. 딥 서브 마이크론 반도체 제조 프로세스 기술의 출현으로, SOC들은 점점 더 복잡해지고, 몇몇 데이터 프로세서 코어들, 캐시들의 다수의 층들, 및 고도로 버퍼링된 상호접속 패브릭들을 포함할 수 있어서, 이들 SOC들 상에서 실행되는 애플리케이션 프로그램들 및 운영 체제들이, SOC의 세부사항들에 대한 지식을 갖기 위해 애플리케이션 소프트웨어 또는 운영 체제를 재기록할 필요 없이 그들의 내부 데이터가 내구성있는 것을 보장하는 것을 어렵게 한다.
도 1은 종래 기술에 공지된 데이터 프로세싱 시스템을 블록도 형태로 예시한다.
도 2는 일부 실시예들에 따른 런타임 글로벌 푸시-퍼시스턴스(runtime global push to persistence)를 갖는 데이터 프로세싱 시스템의 하이 레벨 추상적 개념을 블록도 형태로 예시한다.
도 3은 일부 실시예들에 따른 런타임 글로벌 푸시-퍼시스턴스를 갖는 예시적인 시스템 온 칩(SOC)을 갖는 데이터 프로세싱 시스템을 블록도 형태로 예시한다.
도 4는 일부 실시예들에 따른 런타임 글로벌 푸시-퍼시스턴스를 갖는 SOC를 갖는 다른 데이터 프로세싱 시스템을 블록도 형태로 예시한다.
도 5는 일부 실시예들에 따른 SOC에서 유용한 런타임 프로세스의 흐름도를 예시한다.
도 6은 일부 실시예들에 따른 도 5의 런타임 글로벌 푸시-퍼시스턴스 프로세스를 수행하는 도 4의 SOC를 도시하는 데이터 프로세싱 시스템을 블록도 형태로 예시한다.
도 7은 일부 실시예들에 따른 런타임 글로벌 푸시-퍼시스턴스를 갖는 SOC를 갖는 또 다른 데이터 프로세싱 시스템을 블록도 형태로 예시한다.
도 8은 도 4 및 도 7의 SOC들에서 유용한 종단 이벤트 트리거 생성 회로를 블록도 형태로 예시한다.
도 9는 도 4 및 도 7의 SOC들에서 유용한 비종단 이벤트 트리거 생성 회로를 블록도 형태로 예시한다.
하기의 설명에서, 상이한 도면들에서의 동일한 참조 번호들의 사용은 유사하거나 동일한 아이템들을 지시한다. 달리 언급되지 않는 한, 단어 "결합된" 및 그의 관련된 동사 형태들은 당업계에 공지된 수단에 의한 직접적인 연결 및 간접적인 전기 연결 둘 모두를 포함하며, 달리 언급되지 않는 한, 직접적인 연결에 대한 임의의 설명은 적합한 형태의 간접적인 전기 연결을 사용하는 대안적인 실시예들도 암시한다.
아래에서 상세히 설명되는 바와 같이, 런타임 글로벌 푸시-퍼시스턴스(runtime global push to persistence)를 갖는 시스템 온 칩은 캐시를 갖는 데이터 프로세서, 외부 메모리 인터페이스, 및 마이크로시퀀서를 포함한다. 외부 메모리 인터페이스는 캐시에 결합되고 외부 메모리에 결합되도록 적응된다. 캐시는 외부 메모리에 저장하기 위해 외부 메모리 인터페이스에 데이터를 제공한다. 마이크로시퀀서는 데이터 프로세서에 결합된다. 트리거 신호에 응답하여, 마이크로시퀀서는 캐시가 외부 메모리로의 송신(transmission)을 위해 데이터를 외부 메모리 인터페이스에 발송(send)함으로써 데이터를 플러시하게 한다.
런타임 글로벌 푸시-퍼시스턴스를 갖는 데이터 프로세싱 시스템은 시스템 온 칩 및 상기 시스템 온 칩에 결합된 외부 메모리를 포함한다. 시스템 온 칩은 캐시를 갖는 데이터 프로세서, 외부 메모리 인터페이스, 및 마이크로시퀀서를 포함한다. 데이터 프로세서는 명령어들을 실행하는 것에 응답하여 캐시 내의 데이터를 선택적으로 수정한다. 외부 메모리 인터페이스는 캐시에 결합되고 외부 메모리에 결합되도록 적응된다. 캐시는 외부 메모리에 저장하기 위해 수정된 데이터를 외부 메모리 인터페이스에 선택적으로 제공한다. 마이크로시퀀서는 데이터 프로세서 및 캐시에 결합되고, 트리거 신호에 응답하여, 마이크로시퀀서는 외부 메모리로의 송신을 위해 수정된 데이터를 외부 메모리 인터페이스에 발송함으로써 캐시가 수정된 데이터를 플러시하게 한다.
데이터 패브릭을 통해 외부 메모리 인터페이스에 결합된 캐시를 갖는 데이터 프로세서를 포함하는 시스템 온 칩에서 런타임 글로벌 푸시-퍼시스턴스를 제공하기 위한 방법은 트리거 신호를 수신하는 단계를 포함한다. 상기 트리거 신호를 수신하는 것에 응답하여, 데이터 프로세서는 정지된다. 더티 데이터(Dirty data)는 대응하는 제1 기록 요청들을 데이터 패브릭에 발송함으로써 캐시로부터 플러시된다. 모든 계류중(pending)인 기록 요청들은 상기 계류중인 기록 요청들을 외부 영구 메모리에 발송함으로써 데이터 패브릭으로부터 플러시된다. 데이터 프로세서와 상기 외부 영구 메모리 사이에 핸드셰이크(handshake)가 제공되어, 런타임 글로벌 푸시-퍼시스턴스를 설정한다.
도 1은 종래 기술에 공지된 데이터 프로세싱 시스템(100)을 블록도 형태로 예시한다. 데이터 프로세싱 시스템(100)은 일반적으로 데이터 프로세서(110) 및 외부 메모리(120)를 포함한다. 데이터 프로세서(110)는 "IFU"로 라벨링된 명령어 페치 유닛(111), "EU"로 라벨링된 실행 유닛(112), 캐시(113), "MC"로 라벨링된 메모리 제어기(115), 및 물리적 인터페이스 회로("PHY")(116)를 포함한다. 외부 메모리(120)는 일반적으로 플러시(FLUSH) 명령어(122)를 포함하는 애플리케이션 프로그램(121)을 저장하기 위한 제1 부분, 및 "NVM"으로 라벨링된 비휘발성 메모리(123)를 포함한다.
데이터 프로세서(110)는 본 개시의 관련 동작을 이해하는데 중요하지 않은 잘 알려진 동작들을 갖는 컴포넌트를 포함하며, 더 이상 논의되지 않을 것이다. 데이터 프로세서의 컴포넌트들은 다양한 신호들의 교환을 위해 함께 연결되지만, 도 1은 공지된 데이터 프로세서들의 문제들의 이해와 관련된 신호 흐름의 하나의 세트만을 도시한다.
캐시(113)는 태그 부분, 데이터 부분, 및 상태 부분으로 분할되는 라인들의 세트를 포함한다. 태그 부분은 캐시(113)가 메모리 어드레스의 비트들의 서브세트를 사용하여 캐시 라인들 중에서 액세스된 캐시 라인을 신속하게 인덱싱하고 발견하는 것을 돕는다. 데이터 필드는 TAG에 의해 표시되는 캐시 라인에 대응하는 데이터를 저장한다. 상태(STATUS) 필드는 라인 상태에 대한 정보를 캐시에 저장하여 시스템이 상이한 형태의 메인 메모리에 추가하여 다수의 프로세서들 및 연관된 캐시를 포함하는 복잡한 데이터 프로세싱(complex data processing) 환경에서 데이터 코히어런시(coherency)를 유지할 수 있도록 한다. 몇몇 알려진 캐시 코히어런시 프로토콜들이 있지만, 캐시(113)는 캐시 라인이 수정됨(Modified), 소유됨(Owned), 배타적(Exclusive), 공유됨(Shared), 및/또는 무효임(Invalid)을 각각 표시하는 M, O, E, S, 및 I 상태 비트들을 저장하는 소위 "MOESI" 프로토콜을 구현한다. 도 1에 도시된 바와 같이, 더티 데이터를 표시하는 상태는 도 1의 캐시 라인(114)에 대해 도시된 바와 같이 I = 0 및 M = 1인 상태이다.
데이터 프로세싱 시스템(100)은 데이터가 내구성 있는 것을 보장하기 위한 공지된 기술을 구현한다. 애플리케이션 프로그램(121)의 실행 동안, 명령어 페치 유닛(instruction fetch unit)(111)은 애플리케이션 프로그램(121)으로부터 "플러시(FLUSH)" 커맨드를 페치한다. 명령어 페치 유닛(111)은 결국 실행을 위해 플러시(FLUSH) 커맨드를 실행 유닛(112)에 전달한다. 플러시(FLUSH) 커맨드에 응답하여, 실행 유닛(112)은 캐시(113)로 하여금 그의 모든 더티 데이터를 외부 메모리(120)에 플러시하게 한다. 그것은 유효한 캐시 라인들을 순환하고 그들을 비휘발성 메모리(123)에 기록하는 내부 상태 머신을 가짐으로써 그렇게 할 수 있거나, 또는 실행 유닛(112) 자체가 모든 캐시 라인들을 검사하고 더티 캐시 라인들의 콘텐츠를 비휘발성 메모리(123)에 기록할 수 있다. 어느 하나의 기술을 사용하여, 캐시(113)는 데이터의 업데이트된 복사본을 갖는 캐시 라인 정보를 메모리 제어기(115)에 제공하며, 이는 결국 데이터를 PHY(116)를 통해 외부 데이터 버스로 비휘발성 메모리(123)에 제공한다.
도 1에 도시된 기술에는 몇 가지 문제점 또는 한계가 있다. 첫째, 애플리케이션 프로그램에 의존하여 플러시(FLUSH) 동작을 개시하고, 애플리케이션 프로그램은 데이터 프로세서(110)의 하드웨어 능력들을 인식해야 한다. 또한, 데이터 프로세싱 시스템(100)이, 하나의 메모리 풀을 형성하는 분산 메모리를 사용하여 다수의 프로세서들 사이에서 데이터가 교환되는 다수의 프로세서들을 구현하는 경우, 모든 프로세서들은 그들의 캐시들을 플러시하고 상이한 애플리케이션 스레드들 사이에서 직렬화를 강제하여, 신뢰성 있는 백업 및 복원 지점을 보장해야 하며, 이는 소프트웨어 동작에 실질적인 지장(disruption)을 야기할 수 있다. 상이한 프로세싱 엘리먼트들 사이의 통신을 위한 복잡한 데이터 패브릭들을 갖는 시스템 온 칩들(SOC들)과 같은 더 크고 더 복잡한 시스템들에서, 시스템의 모든 기록들이 가시 메모리(visible memory)로 전파되는데 걸리는 시간량을 예측하는 것은 어려워진다. 따라서 이 알려진 시스템은 필요할 때 시스템에서 데이터 가시성(visibility) 및 내구성(durability)을 보장하기 위해 부적합한 것으로 보인다.
도 2는 일부 실시예들에 따른 런타임 글로벌 푸시-퍼시스턴스를 갖는 데이터 프로세싱 시스템(200)의 하이 레벨 추상적 개념을 블록도 형태로 예시한다. 도 2에 도시된 바와 같이, 데이터 프로세싱 시스템(200)은 프로세서(210 및 220), 부착된 가속기(230), 및 메모리 시스템(240)을 포함한다. 프로세서(210)는 연관된 캐시(211)를 갖고 프로세서(220), 가속기(230), 및 메모리 시스템(240)에 연결된다. 메모리 시스템(240)은 제1 티어 또는 "티어 0" 메모리(241) 및 제2 티어 또는 "티어 1" 메모리(242)를 포함하는 2개의 티어의 메모리를 포함한다. 하나의 예에서, 티어 0 메모리(241)는 비휘발성 메모리와 같은 영구 메모리이고, 티어 1 메모리(242)는 고속 동적 랜덤 액세스 메모리(DRAM)와 같은 휘발성 메모리이다. 특정 환경에서 데이터 프로세싱 시스템(200)은 캐시(211, 222) 및 가속기(230)의 더티 데이터가 메모리 시스템(240)으로 이동되어 전역적으로 관찰 가능하게 되는 런타임 글로벌 푸시-퍼시스턴스 동작을 수행하는 것이 바람직할 것이다. 아래에서 더 상세히 설명되는 바와 같이, 런타임 글로벌 푸시-퍼시스턴스의 필요성을 나타내는 이벤트에 응답하여, 프로세서들(210 및 220)은 그들의 캐시들(211 및 221)의 더티 데이터가 각각 메모리 시스템(240)으로 푸시되게 한다. 도 2에 도시된 바와 같이, 캐시(211)는 경로들(212 및 213) 각각을 통해 메모리(241) 및 메모리(242)에 더티 데이터를 푸시하고, 캐시(221)는 경로들(222 및 223) 각각을 통해 메모리(241) 및 메모리(242)에 더티 데이터를 푸시하고, 가속기(230)는 경로들(232 및 233) 각각을 통해 프로세서(210)를 통해 메모리(241) 및 메모리(242)에 더티 데이터를 간접적으로 푸시할 것이다. 또한, 데이터 통신 패브릭들, 버퍼들, 메모리 제어기들 등에서의 모든 "인-플라이트(in-flight)" 메모리 동작들은 전체 시스템의 데이터 내구성을 달성하기 위해 런타임 글로벌 푸시-퍼시스턴스의 일부로서 완료된다.
도 3은 일부 실시예들에 따른 런타임 글로벌 푸시-내구성(durability) 또는 퍼시스턴스를 갖는 예시적인 시스템 온 칩(SOC)(310)을 갖는 데이터 프로세싱 시스템(300)을 블록도 형태로 예시한다. 데이터 프로세싱 시스템(300)은 일반적으로 SOC(210) 및 메모리 시스템(380)을 포함한다. SOC(310)는 CPU 컴플렉스(320), 패브릭(330), 입력/출력(I/O) 제어기들(340)의 세트, 통합 메모리 제어기(UMC)(350), 코히어런트 네트워크 계층 인터페이스(CNLI)(360), 및 글로벌 메모리 인터페이스(GMI) 제어기(370)를 포함한다. CPU 컴플렉스(310)는 하나 이상의 CPU 코어를 포함하고, 각각은 모든 CPU 코어들 사이에 공유된 공유 캐시를 갖는 하나 이상의 전용 내부 캐시를 갖는다. 패브릭(330)은 코히어런트 마스터(331), 입력/출력 메모리 슬레이브(IOM들)(333), 전력/인터럽트 제어기(334), 코히어런트 AMD 소켓 익스텐더(CAKE)(335), 코히어런트 슬레이브(336), ACM(337), 및 코히어런트 슬레이브(338)를 포함하고, 이들 모두는 패브릭 수송 계층(transport layer)(332)을 통해 상호접속된다. I/O 제어기들(340)은 PCIe(Peripheral Component Interconnect Express) 등과 같은 프로토콜들을 위한 다양한 제어기들 및 그들의 물리적 계층 인터페이스 회로들을 포함한다. UMC(350)는 DDR(double data rate) 및/또는 영구 스토리지(persistent storage)("NVDIMM-P") 메모리들을 갖는 비휘발성 듀얼 인라인 메모리 모듈과 같은 외부 메모리로의 버스의 효율적인 활용을 위해 커맨드 버퍼링, 재순서화(re-ordering), 및 타이밍 적격성(eligibility) 시행을 수행한다. CNLI(360)는 트래픽을 외부 코히어런트 메모리 디바이스들로 라우팅한다. GMI 제어기(370)는 메모리 맵 내의 모든 프로세서들에 가시적인 그들 자신의 부착 스토리지를 갖는 다른 SOC들에 대해 칩간 통신을 수행한다. 메모리 시스템(380)은 UMC(350)에 연결된 DDR/NVDIMM-P 메모리(381) 및 CNLI(360)에 연결된 CXL(Computer Express Link) 디바이스(382)를 포함한다.
SOC(310)는 다양한 데이터 프로세서, 메모리, 및 I/O 컴포넌트들을 인-프로세스(in-process) 기록 트랜잭션들을 위한 다양한 스토리지 지점들과 연결하는 데 사용되는 패브릭(330)의 복잡성(complexity)을 도시하는 예시적인 SOC이다. 예를 들어, 코히어런트 슬레이브 블록들(336 및 338)은 다양한 메모리 채널들을 지원하고 코히어런시 및 트랜잭션 순서화, 나중에 설명될 런타임 글로벌 푸시-퍼시스턴스를 시행한다. 예시적인 실시예에서, 이들은 코히어런시 및 어드레스 충돌을 추적하고, 예를 들어, 256개의 미해결 트랜잭션을 지원한다.
도 4는 일부 실시예들에 따른 런타임 글로벌 푸시-퍼시스턴스를 갖는 SOC(410)를 갖는 다른 데이터 프로세싱 시스템(400)을 블록도 형태로 예시한다. 데이터 프로세싱 시스템(400)은 SOC(410)와 메모리 시스템(490)을 포함한다. SOC(410)는 일반적으로 프로세서 계층(420), 상호접속 패브릭(430), 코히어런트 네트워크 계층 인터페이스(CNLI) 회로(440), 통합 메모리 제어기(UMC)(450), 데이터 입력/출력 블록(460), 물리적 인터페이스 계층(470), 마이크로시퀀서(480), 및 메모리 시스템(490)을 포함한다.
프로세서 계층(420)은 CPU 컴플렉스(421), "CCM"으로 라벨링된 캐시 코히어런트 메모리(422), 및 전력/인터럽트 제어기(423)를 포함한다. CPU 컴플렉스(421)는 각각이 전형적으로 그들 자신의 전용 내부 캐시들을 가질 하나 이상의 CPU 코어들을 포함한다. 일부 실시예들에서, 전용 내부 캐시들은 제1 레벨 1(L1) 캐시 및 L1 캐시에 연결된 제2 레벨(L2) 캐시 둘 모두를 포함한다. CPU 컴플렉스(421) 내의 각각의 프로세서 코어 또는 코어들의 최저 레벨 캐시들은 CCM(422)에 대한 인터페이스들을 갖는다. 각각의 CPU 코어가 전용 내부 L1 및 L2 캐시들을 갖는 일부 실시예들에서, CCM(422)은 CPU 컴플렉스(421) 내의 모든 프로세서들 사이에서 공유되는 제3 레벨(L3) 캐시이다. 전력/인터럽트 제어기(423)는 레지스터 값들 및 설정들 그리고 SOC(410) 내의 회로들에 대한 인터럽트들 및 리셋들과 같은 시그널링 이벤트들을 수신하기 위한 양방향 연결을 가지며, 또한 전용 또는 특수 목적 버스들을 통해 SOC(410) 내의 다른 엘리먼트들에 직접 연결할 수 있다.
상호접속 패브릭(430)은 패브릭 수송 계층(transport layer)(431), "IOMS"로 라벨링된 입력/출력(I/O) 마스터/슬레이브 제어기(432), "IOHUB"로 라벨링된 I/O 허브(433), PCIe(peripheral component interconnect express) 제어기(434), "ACM"으로 라벨링된 가속기 제어기(435)를 위한 캐시 코히어런트 상호접속, 및 각각 "CS"로 라벨링된 코히어런트 슬레이브 회로들(436 및 437)을 포함한다. 패브릭 수송 계층(431)은 CCM(422)의 다운스트림 포트에 연결된 업스트림 포트, 전력/인터럽트 제어기(423)에 연결된 업스트림 포트 및 4개의 다운스트림 포트를 포함한다. IOMS(432)는 패브릭 수송 계층(431)의 제1 다운스트림 포트에 연결된 업스트림 포트, 및 다운스트림 포트를 갖는다. I/O 허브(433)는 IOMS(432)의 다운스트림 포트에 연결된 업스트림 포트, 및 다운스트림 포트를 갖는다. PCIe 컨트롤러(434)는 IOHUB(433)의 다운스트림 포트에 연결된 업스트림 포트, 및 다운스트림 포트를 갖는다. ACM(435)은 패브릭 수송 계층(431)의 제2 다운스트림 포트에 연속된 업스트림 포트, 및 "CXL.cache"로 라벨링된 CXL 캐시 트랜잭션들을 통신하기 위한 다운스트림 포트를 갖는다. CS(436)는 패브릭 수송 계층(431)의 제3 다운스트림 포트에 연결된 업스트림 포트, 및 "CXL.mem"으로 라벨링된 CXL 메모리 트랜잭션들을 통신하기 위한 다운스트림 포트를 갖는다. CS(437)는 패브릭 수송 계층(431)의 제4 다운스트림 포트에 연결된 업스트림 포트, 및 다운스트림 포트를 갖는다. IOMS(432)는 입력/출력 디바이스 액세스들을 위한 하이 레벨 제어기이고, 메모리 어드레스들을 I/O 디바이스들에 재매핑하기 위한 입력/출력 메모리 관리 유닛(IOMMU)을 포함할 수 있다. IOHUB(433)는 I/O 액세스를 위한 스토리지 디바이스이다. PCIe 제어기(434)는 PCIe 프로토콜에 따라 I/O 액세스들을 수행하고 딥 PCIe 패브릭 내의 PCIe 스위치들, 브리지들 및 디바이스들의 딥 계층 구조들을 허용한다. CPU 컴플렉스(421) 내의 하나 이상의 프로세서들 상에서 실행되는 펌웨어와 함께 PCIe 제어기(434)는 PCIe 루트 컴플렉스를 형성할 수 있다. ACM 제어기(435)는 통신 링크를 통해 하나 이상의 외부 프로세싱 가속기들로부터 캐시 코히어런시 요청들을 수신하고 이행한다. ACM 제어기(435)는 SOC(410) 또는 다른 가속기들에 부착된 메모리에 대한 메모리 액세스 요청들을 만들고 이행하기 위해 CXL 프로토콜 메모리 트랜잭션 유형들(도 6 참조)의 전체 세트를 사용할 능력을 갖는 전체 CXL 마스터 에이전트를 인스턴스화한다. CS(436 및 437)는 CS(436)가 CXL 트래픽을 라우팅하고 CS(437)가 로컬 메모리 트래픽을 라우팅하는 CPU 컴플렉스(421)로부터 개시된 다른 메모리 액세스 요청을 라우팅한다.
CNLI 회로(440)는 ACM(435)의 다운스트림 포트에 연결된 제1 업스트림 포트, CS(436)의 다운스트림 포트에 연결된 제2 업스트림 포트, 및 다운스트림 포트를 갖는다. CNLI 회로(440)는 CXL 패브릭에 대한 네트워크 계층 프로토콜 활동들을 수행한다.
UMC(450)는 CS(437)의 다운스트림 포트에 연결된 업스트림 포트, 및 물리적 인터페이스 회로(도4 미도시)를 통해 외부 메모리에 연결하기 위한 다운스트림 포트를 갖는다. UMC(450)는 UMC(450)의 다운스트림 포트와 DDR 및/또는 NVDIMM-P 메모리들 사이의 버스의 효율적인 활용을 위해 커맨드 버퍼링, 재순서화 및 타이밍 적격성 시행을 수행한다.
데이터 입력/출력 블록(460)은 상호접속 블록(461) 및 462-466으로 라벨링된 디지털 I/O("DXIO") 제어기 세트를 포함한다. DXIO 제어기(462 내지 466)는 경우에 따라 PCIe 또는 CXL 트랜잭션과 관련된 데이터 링크 계층 프로토콜 기능을 수행한다. DXIO 제어기(462)는 PCIe 링크와 연관되고, 그 출력과 PCIe 링크 사이에 별개의 PCIe 호환 가능 물리적 인터페이스 회로를 갖는다(도 4에 도시되지 않음).
물리적 인터페이스 회로들(PHY들)(470)은 4개의 개별 PHY 회로(471-474)를 포함하고, 각각은 각각의 DXIO 제어기와 SOC(410)의 각각의 I/O 포트 사이에 연결되고 상이한 외부 CXL 디바이스에 연결하도록 적응된다. PHY들(471-474)은 CXL 통신 프로토콜에 따라 물리적 계층 인터페이스 기능들을 수행한다.
마이크로시퀀서(480)는 "종단 이벤트 트리거(TERMINAL EVENT TRIGGER)"로 라벨링된 신호를 수신하기 위한 제1 입력, "비종단 이벤트 트리거(NON-TERMINAL EVENT TRIGGER)"로 라벨링된 신호를 수신하기 위한 제2 입력, 및 아래에서 추가로 설명될 제어 신호들을 제공하기 위해 SOC(410) 내의 다양한 회로들에 연결된 다중 신호 출력 포트를 갖는다. SOC(410)는 종단 이벤트 트리거(TERMINAL EVENT TRIGGER) 및 비종단 이벤트 트리거(NON-TERMINAL EVENT TRIGGER) 신호들을 생성하는 회로들을 포함한다. 이러한 회로들은 도 4에 도시되지 않았지만 아래에서 더 설명될 것이다.
메모리 시스템(490)은 CXL MEM Device 0으로 동작하는 PHY(471)의 다운스트림 포트에 연결되는 메모리(491), CXL MEM Device 1로 동작하는 PHY(471)의 다운스트림 포트에 연결되는 메모리(492), PHY(473)의 다운스트림 포트에 연결되는 CXL 가속기 코히어런트 마스터 제어기(ACM)(493), PHY(474)의 다운스트림 포트에 연결되는 CXL ACM(494) 및 UMC(450)의 다운스트림 포트에 연결되는 DDR(Double Data Rate) DRAM/NVDIMM-P 메모리(495) 형태의 스토리지 클래스 메모리를 포함한다.
명백한 바와 같이, SOC(410)와 같은 현재 세대 SOC들의 데이터 인터페이스 및 분산 메모리 계층구조는 매우 복잡하고, 계층화되고, 분산된다. 이러한 복잡한 상호접속 패브릭은 본 명세서에 설명된 기술들에 의해 해결되는 데이터 프로세싱 시스템에서 런타임 글로벌 푸시-퍼시스턴스를 지원하기 위한 과제들을 제시한다.
마이크로시퀀서(480)는 런타임 글로벌 푸시-퍼시스턴스 요건들을 인식하고 그에 응답하는 작업으로부터 애플리케이션 소프트웨어, 운영 체제, 또는 시스템 펌웨어를 오프로드하는 하드웨어 제어기이다. 첫째, 이는 SOC(410) 내의 모든 캐시들이 업데이트된 콘텐츠를 메모리에 기록함으로써 그들의 더티 데이터를 플러시하게 한다. 플러시는 SOC(410) 내의 각각의 캐시 내의 각각의 라인의 상태를 검사하고 더티 캐시 라인들이 메모리에 기록되게 선택적으로 하는 마이크로시퀀서(480) 상에서 실행되는 펌웨어에 의해, 또는 바람직하게는 모든 캐시 라인들을 검사하고 더티 데이터를 포함하는 캐시 라인들을 메인 메모리에 기록함으로써 더티 데이터를 자동으로 플러시하게 하는 캐시들 각각에 대한 명시적 하드웨어 신호에 의해 달성될 수 있다. 캐시 방식별 더티(Dirty) 표시는 캐시 플러시의 프로세스 속도를 높일 수 있다. 더티(Dirty) 표시가 지워지는 이러한 캐시 방식은 캐시 플러시 프로세스에 의해 건너뛸 수 있다.
둘째, 마이크로시퀀서(480)는 상호접속 패브릭(430) 또는 다른 인터페이스 회로들 내의 어딘가에 존재하는 각각의 인-플라이트(in-flight) 메모리 기록 트랜잭션이 완료되어 상호접속 패브릭 내의 임의의 버퍼 지점을 통해 외부 영구 메모리로 드레인되게 한다. 일 예에서, 패브릭 수송 계층(431)은 메모리 시스템에 판독 및 기록 커맨드들을 저장하는 버퍼를 가질 수 있다. 트리거 신호에 응답하여, 마이크로시퀀서(480)는 패브릭 수송 계층(431)으로 하여금 메모리 시스템에 모든 기록들을 푸시하게 하고 그들이 임의의 판독들을 통과하게 한다. 다른 예에서, UMC(450)는 DRAM 기록들을 그의 내부 커맨드 큐에 저장한다. 런타임 푸시-퍼시스턴스 트리거에 응답하여, 마이크로시퀀서(480)는 UMC(450)로 하여금 임의의 계류중인 판독들에 대해 동작하지 않고 모든 기록들을 메모리에 발송하게 하면서, 폐쇄된 페이지들에 대한 기록들에 비해 개방된 페이지들에 대한 기록들을 조합하기 위한 선호도와 같은 효율성 프로토콜들을 계속 관찰하게 한다.
마이크로시퀀서(480)는 2가지 유형의 트리거에 상이하게 응답한다. 제1 유형의 트리거는 종단 이벤트 트리거이다. 종단 이벤트 트리거는 위험한 리셋 요청, 임박한 전력 고장, 열 과부하 또는 "트립" 조건, 또는 데이터 프로세싱 시스템(400)의 동작을 즉시 종료할 필요성을 나타내는 임의의 다른 조건과 같은 이벤트이다. 종단 이벤트 트리거 조건에 응답하여, 마이크로시퀀서(480)는 2개의 동작을 수행한다. 첫째, 모든 데이터 프로세서의 동작을 정지시킨다. 그런 다음 데이터 패브릭의 모든 캐시 및 버퍼에 커맨딩하여 계류 중인 모든 메모리 트랜잭션을 영구 메모리로 플러시한다. 이러한 방식으로, 마이크로시퀀서(480)는 데이터를 가능한 한 신속하게 영구 비휘발성 메모리에 푸시해야 하기 때문에 낮은 전력 소비보다 속도를 우선시한다.
제2 유형의 트리거는 비종단 이벤트 트리거이다. 비종단 이벤트 트리거는, 특정 어드레스 발생, 낮은 프로세서 활용도를 검출, 특정 시각 발생, 이전 런타임 글로벌 푸시-퍼시스턴스 동작 이후의 특정 경과 시간 검출, 하나 이상의 캐시들에서 특정 레벨의 "더티니스(dirtiness)"를 검출하는 것과 같은 중요하지 않는 이벤트이다. 비종단 이벤트 트리거는 시스템이 주기적으로 저널 로그(journal log), 섀도우 페이징(shadow paging) 등과 같은 매우 중요한 데이터를 외부 영구 메모리에 푸시할 수 있게 한다. 비종단 이벤트 트리거의 경우에, 마이크로시퀀서(480)는 임의의 데이터 프로세서 코어를 정지시키지 않지만, 캐시들로 하여금 데이터 프로세서를 정지시키지 않고 임의의 캐시 내의 모든 더티 데이터를 메모리 인터페이스에 발송하게 하고, 데이터 패브릭이 데이터를 자연스럽게 푸시아웃하게 하고, 리셋 없이 동작을 재개한다. 따라서, 비종단 트리거 이벤트에 응답하여, 마이크로시퀀서(480)는 낮은 전력 소비만을 요구하면서 런타임 글로벌 푸시-퍼시스턴스를 시행한다.
비휘발성 메모리에 "손실" 플래그를 설정함으로써 플랫폼에 의해 식별될 수 있는 퍼시스턴스 손실에 응답하여, 애플리케이션 소프트웨어는 마지막으로 알려진 신뢰될 상태에서 재시작한다, 즉, 애플리케이션 소프트웨어는 체크포인트 롤백(checkpoint rollback) 및 재생을 수행한다. 예를 들어, 일부 구성들에서, "퍼시스턴스 손실" 에러가 로깅되고, 부트 업시, 시스템 기본 입력-출력 시스템(BIOS) 펌웨어는 퍼시스턴스 손실을 식별하고, ACPI(Advanced Configuration and Power Interface) "NFIT" 객체를 통해 보고한다. 다른 실시예들에서, "퍼시스턴스 손실"은 운영 체제가 이벤트에 대해 직접 학습할 수 있도록 로그에 캡처된다.
도 5는 일부 실시예들에 따른 SOC에서 유용한 런타임 글로벌 푸시-퍼시스턴스 프로세스(500)의 흐름도를 예시한다. 런타임 글로벌 푸시-퍼시스턴스 프로세스(500)는, 예를 들어, 트리거 신호를 수신하는 SOC에 의해 표시된 트리거 이벤트에 응답하여 개시된다. 액션 박스(510)에서, 트리거가 종단 이벤트 트리거였다면, 데이터 프로세서는 예를 들어, CPU 코어들의 세트 각각을 정지(stalling)함으로써 정지된다. 액션 박스(520)에서, 더티 데이터에 대한 기록 요청들을 데이터 패브릭에 발송함으로써 캐시 서브시스템으로부터 더티 데이터가 플러시된다. 다음으로, 액션 박스(530)에서, 임의의 CXL ACM 제어기로부터의 더티 데이터는 외부 메모리 인터페이스에 부착된 코히어런트 메모리로부터 플러시된다. 이 액션은 외부 CXL 메모리 디바이스들로부터 온 칩 데이터 패브릭으로 더티 데이터를 판독하는 것을 포함한다. 이 동작이 완료된 후, 액션 박스(540)에서, 런타임 글로벌 푸시-퍼시스턴스 프로세스는 기록 요청들을 외부 영구 메모리에 발송함으로써 데이터 패브릭에서 모든 계류중인 기록 요청들을 플러시한다. 외부 영구 메모리는 예를 들어, CXL 유형 3 메모리 디바이스들(가속기가 없는 CXL 메모리) 또는 NVDIMM-P일 수 있다. 그런 다음, 액션 박스(550)에서, 시스템은 CXL 유형 3 메모리 디바이스들과의 핸드셰이크를 제공한다.
도 6은 일부 실시예에 따라 도 5의 런타임 글로벌 푸시-퍼시스턴스 프로세스(500)를 수행하는 도 4의 SOC(410)를 도시하는 데이터 프로세싱 시스템(600)을 블록도 형태로 예시한다. 데이터 프로세싱 시스템(400)의 다양한 블록들의 참조 번호들은 도 6에 도시되지 않는다. 점선 원(610)에 의해 도시된 제1 단계에서, CPU 컴플렉스(421) 내의 모든 프로세서들이 정지된다. 점선 화살표(620)에 의해 도시된 제2 단계에서, 더티 데이터와 함께 기록 요청들을 데이터 패브릭으로 발송함으로써 더티 데이터가 CPU 컴플렉스(421) 내의 각각의 프로세서의 캐시 서브시스템으로부터 플러시된다. 이들 요청은 패브릭 수송 계층(431)을 통해 흐르고, (메모리가 CXL 메모리 디바이스(491 또는 492)에 매핑되는 경우) CS(436)에 또는 (메모리가 NVDIMM-P(495)에 매핑되는 경우) CS(437)에 저장된다. 제3 단계에서, ACM 캐시(존재하는 경우)로부터의 더티 데이터는 플러시되고, 데이터는 화살표(630)로 도시된 바와 같이 데이터 패브릭을 통해 CS(436) 또는 CS(437)로 발송된다. 제4 단계에서, 데이터 패브릭은 데이터를 CXL 메모리 디바이스(491 또는 492) 또는 NVDIMM-P(495)로 발송함으로써 화살표(640)로 도시된 바와 같이 플러시된다. 마지막으로, SOC(410)는 CXL 프로토콜에 따라 CXL 메모리 디바이스(491 및 492)와의 핸드셰이크를 제공한다.
도 7은 일부 실시예들에 따른, 런타임 글로벌 푸시-퍼시스턴스를 갖는 SOC(710)를 갖는 또 다른 데이터 프로세싱 시스템(700)을 블록도 형태로 예시한다. SOC(710)는 도 4의 SOC(410)보다 더 고도로 통합되고, 각각 "사분면 0", "사분면 1", "사분면 2", 및 "사분면 3"으로 라벨링된 4개의 상당히 자율적인 사분면들(720, 730, 740, 및 750)로 구성된다. 사분면들(720, 730, 740 및 750)은 각각의 DDR 메모리 인터페이스들(722, 732, 742 및 752) 및 외부 캐시 코히어런트 디바이스들(CCD들)(760, 770, 780 및 790)에 대한 인터페이스들을 갖는다. 그러나, SOC(710)는, 비휘발성일 것이고 내구성을 위한 데이터를 저장할 수 있는 CXL 유형 3 부착 스토리지와 같은 외부 CXL 디바이스들에 연결하기 위해 "P0", P1", P2", 및 "P3"으로 라벨링된 공유 포트들의 세트를 갖는다. 더욱이, 임박한 칩 전체 전력 손실 또는 위험한 리셋과 같은 적어도 일부 트리거 이벤트들이 모든 사분면들이 플러시될 것을 요구하기 때문에, 공통 마이크로시퀀서(760)는 공통 칩 전체 데이터 패브릭과 같은 공유된 리소스들 및 사분면 특정 리소스들 둘 모두로부터의 더티 데이터를 플러시함으로써 런타임 글로벌 푸시-퍼시스턴스를 강제하기 위한 제어 신호들을 편리하게 제공한다.
도 8은 도 4의 SOC들(410)에서 유용한 종단 이벤트 트리거 생성 회로(800)를 블록도 형태로 예시한다. 종단 이벤트 트리거 생성 회로(800)는 OR 게이트(810), 인버터(820), OR 게이트(822), 온도 센서(830), 비교기(832), 및 AND 게이트(834)를 포함한다. OR 게이트(810)는 "리셋(RESET)"으로 라벨링된 리셋 신호를 수신하기 위한 제1 입력, "전력 고장(POWER FAILURE)"으로 라벨링된 신호를 수신하기 위한 제2 입력, "열 트립(THERMAL TRIP)"으로 라벨링된 신호를 수신하기 위한 제3 입력, 및 종단 이벤트 트리거(TERMINAL EVENT TRIGGER) 신호를 제공하기 위한 출력을 갖는 3 입력 OR 게이트이다. 인버터(820)는 "전력_양호(POWER_GOOD)"로 라벨링된 신호를 수신하기 위한 입력 및 출력을 갖는다. OR 게이트(822)는 인버터(820)의 출력에 연결된 제1 입력, "드룹_검출(DROOP_DETECTED)"로 라벨링된 신호를 수신하기 위한 제2 입력, 및 전력 고장(POWER FAILURE) 신호를 제공하기 위해 OR 게이트(810)의 제2 입력에 연결된 출력을 갖는다. 온도 센서(830)는 측정된 온도 감지 신호를 제공하기 위한 출력을 갖는다. 비교기(832)는 온도 센서(830)의 출력에 연결된 비반전(non-inverting) 입력, "온도 트립 임계값(TEMPERATURE TRIP THRESHOLD)"으로 라벨링된 값을 수신하기 위한 반전 입력, 및 출력을 갖는다. AND 게이트(834)는 비교기(832)의 출력에 연결된 제1 입력, "열 트립 인에이블(THERMAL TRIP ENABLE)"로 라벨링된 신호를 수신하기 위한 제2 입력, 및 열 트립(THERMAL TRIP) 신호를 제공하기 위한 OR 게이트(810)의 제3 입력에 연결된 출력을 갖는 2 입력 AND 게이트이다.
종단 이벤트 트리거 생성 회로(800)는 리셋 조건, 전력 손실 조건, 또는 열 트립 조건에 응답하여 종단 이벤트 트리거 신호(TERMINAL EVENT TRIGGER SIGNAL)를 제공한다. 리셋 조건들은 예를 들어, 사용자가 리셋 버튼을 누름으로써 야기되는 소프트웨어 리셋 또는 하드웨어 리셋에 의해 생성될 수 있는 리셋(RESET) 신호의 활성화에 의해 표시된다. 전력 손실 조건은 마더보드 또는 시스템 메인 보드로부터의 전력_양호(POWER_GOOD) 신호의 비활성화에 의해 도 8에 도시된 바와 같은 시스템 전력 신호의 활성화에 의해, 또는 전력 공급부에서의 드룹(droop)의 검출과 같은 온 칩(on-chip) 조건에 의해 표시된다. 열 트립 조건은, 인에이블될 때, SOC의 온도가 종단 열 트립 임계값을 초과함을 표시하는 온 칩 온도 센서(830)에 의해 검출된다. 어떤 경우든, 종단 이벤트 트리거 생성 회로(800)는 전체 시스템 종료가 발생하거나 발생할 수 있는 심각한 시스템 조건에 응답하여 종단 이벤트 트리거 신호(TERMINAL EVENT TRIGGER SIGNAL)를 제공한다. 이 경우, 종단 이벤트 트리거 신호(TERMINAL EVENT TRIGGER SIGNAL)의 활성화는 시스템 상태 손실을 피하기 위해 데이터의 보존이 가능한 한 빨리 이루어져야 한다는 것을 마이크로시퀀서에 알릴 것이다.
종단 이벤트 트리거 생성 회로(800)는 종단 이벤트들을 구성하는 대표적인 조건 세트를 도시하지만, 다른 실시예들은 조건들 중 일부만을 검출할 것인 반면, 또 다른 실시예들은 종단 이벤트를 표시하는 다른 조건들을 검출할 것임이 명백해야 한다.
도 9는 도 4의 SOC(410) 및 도 7의 SOC(700)에서 유용한 비종단 이벤트 트리거 생성 회로(900)를 블록도 형태로 예시한다. 비종단 이벤트 트리거 생성 회로(900)는 일반적으로 평가 회로(910), 어드레스 트리거 회로(920), 활동 트리거 회로(930), 시각(time-of-day) 트리거 회로(940), 경과 시간 트리거 회로(950), 및 캐시 더티니스 트리거 회로(960)를 포함한다.
평가 회로(910)는 트리거 신호들을 수신하기 위한 입력 세트, 및 비종단 이벤트 트리거 신호(NON-TERMINAL EVENT TRIGGER SIGNAL)를 제공하기 위한 출력을 포함한다. 평가 회로(910)는 일반적으로 입력들 중 임의의 하나의 활성화에 응답하여 비종단 이벤트 트리거 신호(NON-TERMINAL EVENT TRIGGER SIGNAL)를 활성화한 입력들 사이의 논리 OR(logical-OR) 연산을 구현한다. 설계에 따라, 비종단 이벤트 트리거 신호(NON-TERMINAL EVENT TRIGGER SIGNAL)가 클록 신호의 특정 에지에서만 활성화되고, 예를 들어 런타임 글로벌 푸시-퍼시스턴스 동작의 완료를 표시하는 핸드셰이크 신호에 응답하여 리셋되는 것과 같은 리셋가능한 클록킹된 래치를 또한 가질 수 있다.
어드레스 트리거 회로(920)는 트리거 어드레스 레지스터(921) 및 비교기(922)를 포함한다. 트리거 어드레스 레지스터(921)는 특권 실행(privileged execution) 상태로 프로그래밍가능하고, 저장된 트리거 어드레스를 제공하기 위한 출력을 갖는다. 비교기(922)는 "어드레스(ADDRESS)"로 라벨링된 어드레스 신호를 수신하기 위한 제1 입력, 트리거 어드레스 레지스터(921)의 출력에 연결된 제2 입력, 및 "어드레스 트리거(ADDRESS TRIGGER)"로 라벨링된 신호를 평가 회로(910)의 제1 입력에 제공하기 위한 출력을 갖는 다중 비트 디지털 비교기이다. 어드레스 트리거 회로(920)는 애플리케이션 프로그램 또는 운영 체제가 특정 어드레스에 액세스함으로써 런타임 글로벌 푸시-퍼시스턴스 동작을 트리거할 수 있게 하는 트리거 회로의 간단한 예이다. 다수의 CPU 코어들 및 멀티 스레드 운영 체제들을 갖는 데이터 프로세싱 시스템들에서, 어드레스 트리거 회로(920) 내의 예시적인 회로부는 각각의 CPU 코어에 대해 복제될 것이다.
활동 트리거 회로(930)는 성능 카운터(931) 세트 및 로직 회로(932)를 포함한다. 성능 카운터(931)는 CPU 코어의 활동을 나타내는 활동 신호 세트에 응답하고 각각의 카운터를 사용하여 개별 이벤트를 집계한다. 성능 카운터들(931)은 카운터들의 상태들을 제공하기 위한 출력을 갖는다. 로직 회로(932)는 성능 카운터들(931)의 출력에 연결된 입력, 및 "낮은 활용도(LOW UTILIZATION)"로 라벨링된 신호를 평가 회로(910)의 제2 입력에 제공하기 위한 출력을 갖는다. 도 9에 도시된 예에서, 로직 회로(932)는 어떤 활동들이 중요한 이벤트들을 구성하는지를 결정할 수 있다. 낮은 활용도(LOW UTILIZATION) 신호의 경우에, 로직 회로(932)는 단위 시간당 실행되는 명령어들을 카운트하고, 단위 시간당 실행되는 명령어들이 임계값 미만임을 검출하는 것에 응답하여 낮은 활용도(LOW UTILIZATION) 신호를 활성화할 수 있다. 어드레스 트리거 회로(920)에서와 같이, 예시적인 회로(930)는 멀티 코어 시스템의 각각의 CPU 코어에 대해 복제될 것이다.
시각 트리거 회로(940)는 "RTC"로 라벨링된 실시간 클록 회로(941), 시각 레지스터(942), 및 비교기(943)를 포함한다. RTC(941)는 현재 시각을 나타내는 디지털 카운트 값을 제공하기 위한 출력을 갖는다. 레지스터(942)는 선택된 시각, 예를 들어 오전 4:00을 제공하기 위한 출력을 갖는다. 비교기(943)는 실시간 클록(941)의 출력에 연결된 제1 입력, 레지스터(942)의 출력에 연결된 제2 입력, 및 "TOD"로 라벨링된 시각(time of day) 매치 부호를 평가 회로(910)의 제3 입력에 제공하기 위한 출력을 갖는다. 시각 트리거 회로(940)는 다수의 CPU 코어 시스템의 각각의 CPU 코어에 대해 복제될 필요가 없는 비종단 이벤트의 예이다.
경과 시간 트리거 회로(950)는 타이머(951)를 포함한다. 타이머(951)는 "마지막 트리거(LAST TRIGGER)"로 라벨링된 신호를 수신하기 위한 리셋 입력, "클록(CLOCK)"으로 라벨링된 클록 신호를 수신하기 위한 클록 입력, 및 "다음 트리거(NEXT TRIGGER)"로 라벨링된 신호를 평가 회로(910)의 제4 입력에 제공하기 위한 종단 카운트(TC) 출력을 갖는다. 경과 시간 트리거 회로(950)는 다수의 CPU 코어 시스템의 각각의 CPU 코어에 대해 복제될 필요가 없는 비종단 이벤트의 또 다른 예이다.
캐시 더티니스 트리거 회로(960)는 캐시(961), 인코더(962), 캐시 더티 워터마크(963), 및 비교기(964)를 포함한다. 캐시(961)는 CPU 코어의 캐시이거나 다수의 CPU 코어 간에 공유되는 캐시이다. 도 9에 도시된 예에서, 캐시(961)는 위에서 설명된 MOESI 상태 프로토콜을 구현한다. 인코더(962)는 캐시(961)에 연결된 입력 및 출력을 가지며, 더티인 캐시 라인들의 수를 카운트한다. 로직은 캐시 더티니스 트리거 회로(960)에 도시된 것보다 약간 더 복잡한데, 그 이유는 인코더(961)가 M 비트 세트를 갖는 캐시 라인들의 개수뿐만 아니라 M 비트 세트 및 I 비트 둘 모두가 클리어된 캐시 라인들의 개수를 카운트할 것이기 때문이다. 캐시 더티니스 워터마크 레지스터(963)는 특권 실행 상태로 프로그래밍가능하고 저장된 캐시 더티 워터마크를 제공하기 위한 출력을 갖는다. 비교기(964)는 인코더(962)의 출력에 연결된 양의 입력, 캐시 더티니스 워터마크 레지스터(963)의 출력에 연결된 음의 입력, 및 "캐시 더티(CACHE DIRTY)"로 라벨링된 신호를 제공하기 위해 평가 회로(910)의 제5 입력에 연결된 출력을 갖는다. 비교기(964)는 캐시 더티 워터마크를 초과하는 캐시(961) 내의 더티 라인의 수에 응답하여 활성 로직 상태에서 그 출력을 제공한다. 캐시 더티니스 트리거 회로(960)는 SOC의 각각의 캐시에 대해 복제될 것이다.
비종단 이벤트 트리거 생성 회로(900)는 비종단 이벤트들을 구성하는 대표적인 조건 세트를 도시하지만, 다른 실시예들은 조건들 중 일부만을 검출할 것인 반면, 또 다른 실시예들은 비종단 이벤트를 표시하는 다른 조건들을 검출할 것임이 명백해야 한다. 또한, 평가 회로는 단순한 논리 OR 기능을 구현할 수 있거나, 또는 인자들의 조합에 기초하여 퍼지 로직 평가를 구현할 수 있다.
따라서, 런타임 글로벌 푸시-퍼시스턴스 동작을 구현하는 데이터 프로세싱 시스템, SOC 및 방법이 개시되었다. 이 런타임 동작은 중요한 데이터가 각각의 CPU 코어의 캐시 계층 구조로부터 플러시되게 하고, 그런 다음 온 칩 데이터 패브릭으로부터의 다른 계류중인 동작들로 플러시되고 외부 영구 메모리에 저장되게 한다. 런타임 글로벌 푸시-퍼시스턴스 동작은 중요한 데이터가 보호 및 보존될 수 있게 하고, 데이터 프로세싱 시스템이 갑작스러운 또는 예상치 못한 시스템 고장의 경우에 알려진 동작 지점으로 백업하게 한다. 다양한 실시예들에서 런타임 글로벌 푸시-퍼시스턴스 동작을 트리거할 수 있는 2가지 유형의 동작들, 즉, 종단 이벤트 및 비종단 이벤트가 존재한다. SOC에 의해 지원되는 특정 트리거 이벤트들은 실시예들 사이에서 변할 수 있다.
마이크로시퀀서(480) 및 그의 연관된 트리거 생성 회로들(800 및 900)이 하드웨어 회로들인 것으로 설명되었지만, 그들의 기능들은 하드웨어 및 소프트웨어의 다양한 조합들로 구현될 수 있다. 소프트웨어 컴포넌트들 중 일부는 적어도 하나의 프로세서에 의한 실행을 위해 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있다. 또한, 도 5에 예시된 방법의 일부 또는 전부는 또한 컴퓨터 판독가능 스토리지 매체에 저장되고 적어도 하나의 프로세서에 의해 실행되는 명령어들에 의해 통제될 수 있다. 도 5에 도시된 동작들 각각은 비일시적 컴퓨터 메모리 또는 컴퓨터 판독가능 스토리지 매체에 저장된 명령어들에 대응할 수 있다. 여러 실시예에서, 비일시적 컴퓨터 판독가능 저장 매체는 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리, 또는 다른 비휘발성 메모리 디바이스 또는 디바이스와 같은 솔리드 스테이트 저장 디바이스를 포함한다. 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 판독 가능 명령어는 하나 이상의 프로세서에 의해 해석되고/되거나 실행 가능한 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 다른 명령어 포맷일 수 있다.
SOC(410) 및 마이크로시퀀서(480) 또는 이들의 임의의 부분은 프로그램에 의해 판독되고 집적 회로들을 제조하기 위해 직접 또는 간접적으로 사용될 수 있는 데이터베이스 또는 다른 데이터 구조의 형태로 컴퓨터 액세스 가능한 데이터 구조에 의해 설명되거나 표현될 수 있다.예를 들어, 이러한 데이터 구조는 Verilog 또는 VHDL과 같은 고레벨 설계 언어(HDL)에서의 하드웨어 기능의 거동-레벨 설명 또는 레지스터-전송 레벨(RTL) 설명일 수 있다. 설명은 합성 라이브러리로부터 게이트들의 리스트를 포함하는 네트리스트를 생성하기 위해 설명을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 네트리스트는 집적 회로들을 포함하는 하드웨어의 기능을 또한 나타내는 게이트들의 세트를 포함한다. 이어서 네트리스트는 마스크들에 적용될 기하학적 형상들을 설명하는 데이터 세트를 생성하도록 배치 및 라우팅될 수 있다. 이어서 마스크들은 집적 회로들을 생성하기 위해 다양한 반도체 제조 단계들에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스 가능 저장 매체 상의 데이터베이스는, 원하는 바에 따라, 네트리스트(합성 라이브러리를 갖거나 갖지 않음) 또는 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
특정 실시예들이 설명되었지만, 이러한 실시예들에 대한 다양한 수정들이 당업자에게 명백할 것이다. 예를 들어, 종단 이벤트 트리거 신호 또는 비종단 이벤트 트리거 신호를 생성하는 조건들은 실시예들 사이에서 변할 수 있다. 더욱이, 다양한 실시예들에서, 2개 이상의 조건들의 일치는 트리거 이벤트 신호들을 생성하기 위해 사용될 수 있다. 본 명세서에 설명된 상호접속 프로토콜들은 예시적이며, 다른 실시예들에서 다른 프로토콜들이 사용될 수 있다. 지원되는 SOC 토폴로지 및 캐시 계층 구조들은 다른 실시예들에서 변할 것이다. 더티 캐시 라인들을 표시하기 위해 사용되는 상태 비트들은 또한 다른 실시예들에서 변할 것이다. 본 명세서에 도시되고 설명된 바와 같이, 다양한 회로들이 직접 함께 연결되지만, 다른 실시예들에서, 이들은 다양한 중간 회로들을 통해 간접적으로 연결될 수 있고 신호들은 다양한 전기 및 광학 시그널링 기술들에 의해 회로들 사이에서 송신될 수 있다.
따라서, 첨부된 청구항들에 의해 개시된 실시예들의 범위에 속하는 개시된 실시예들의 모든 수정들을 포함하는 것이 의도된다.

Claims (29)

  1. 런타임 글로벌 푸시-퍼시스턴스(runtime global push to persistence)를 갖는 시스템 온 칩으로서,
    캐시를 갖는 데이터 프로세서;
    상기 캐시에 결합되고 외부 메모리에 결합되도록 적응된 외부 메모리 인터페이스;
    - 상기 캐시는 상기 외부 메모리에 저장하기 위해 상기 외부 메모리 인터페이스에 데이터를 제공함 -; 및
    상기 데이터 프로세서에 결합된 마이크로시퀀서(microsequencer) - 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 외부 메모리로의 송신을 위해 상기 데이터를 상기 외부 메모리 인터페이스로 발송함으로써 상기 캐시가 상기 데이터를 플러시(flush)하게 함 - 를 포함하는, 시스템 온 칩.
  2. 제1항에 있어서,
    상기 데이터 프로세서가 데이터 엘리먼트에 액세스하는 것에 응답하여, 상기 캐시는 상기 캐시 내의 상기 데이터 엘리먼트에 대응하는 캐시 라인을 페치하고 상기 캐시 라인을 수정되지 않은 상태로 상기 캐시에 배치하고;
    상기 데이터 엘리먼트에 대한 기록 액세스에 응답하여, 상기 캐시는 상기 기록 액세스에 따라 상기 데이터 엘리먼트를 수정하고, 상기 캐시 라인을 더티 상태(dirty state)로 배치하고; 및
    상기 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 캐시가 상기 데이터를 플러시하게 하는, 시스템 온 칩.
  3. 제1항에 있어서,
    상기 데이터 프로세서는 플러시 명령어를 디코딩하는 것에 응답하여 상기 외부 메모리로의 송신을 위해 상기 데이터를 상기 외부 메모리 인터페이스로 발송함으로써 상기 캐시가 상기 데이터를 플러시하게 하는, 시스템 온 칩.
  4. 제1항에 있어서,
    상기 데이터 프로세서는 데이터 패브릭을 통해 상기 외부 메모리 인터페이스에 결합되고, 상기 데이터 패브릭은 상기 외부 메모리 인터페이스를 통해 상기 외부 메모리에 대한 기록 요청들을 일시적으로 저장하는 적어도 하나의 버퍼를 포함하고; 및
    상기 데이터 패브릭은 상기 마이크로시퀀서에 더 결합되고, 상기 트리거 신호에 응답하여, 상기 마이크로시퀀서는 추가로 상기 외부 메모리로의 송신을 위해 상기 외부 메모리 인터페이스에 상기 데이터를 발송함으로써 상기 데이터 패브릭이 상기 적어도 하나의 버퍼에 저장된 상기 기록 요청들과 연관된 데이터를 플러시하게 하는, 시스템 온 칩.
  5. 제1항에 있어서,
    상기 트리거 신호는 종단 이벤트 트리거(terminal event trigger) 신호 및 비종단 이벤트 트리거(non-terminal event trigger) 신호 중 하나를 포함하고;
    상기 종단 이벤트 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 외부 메모리로의 송신을 위해 상기 외부 메모리 인터페이스에 상기 데이터를 발송하기 전에 상기 데이터 프로세서를 정지(stall)시키고;
    상기 비종단 이벤트 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 데이터 프로세서를 정지시키지 않고 상기 외부 메모리로의 송신을 위해 상기 데이터를 상기 외부 메모리 인터페이스로 발송하는, 시스템 온 칩.
  6. 제5항에 있어서,
    상기 시스템 온 칩은 전력 고장을 검출하는 것 및 열 트립 조건을 검출하는 것 중 하나에 응답하여 상기 종단 이벤트 트리거 신호를 활성화하는, 시스템 온 칩.
  7. 제5항에 있어서,
    상기 시스템 온 칩은 정상 동작 상태로부터 리셋 상태로의 변경, 이전 트리거 이벤트 이후의 경과 시간, 미리 결정된 시각, 적어도 하나의 성능 카운터의 상태, 및 미리 결정된 어드레스에 대한 액세스를 검출하는 것 중 하나에 응답하여 상기 비종단 이벤트 트리거 신호를 활성화하는, 시스템 온 칩.
  8. 제7항에 있어서,
    상기 시스템 온 칩은 적어도 하나의 성능 카운터의 상기 상태에 응답하여 상기 비종단 이벤트 트리거 신호를 활성화하고, 적어도 하나의 성능 카운터의 상기 상태는 상기 데이터 프로세서의 낮은 활용도를 표시하는, 시스템 온 칩.
  9. 제5항에 있어서,
    상기 시스템 온 칩은 복수의 조건들에 응답하여 상기 비종단 이벤트 트리거 신호를 생성하는, 시스템 온 칩.
  10. 제9항에 있어서,
    상기 복수의 조건들은 적어도 하나의 소프트웨어 스레드의 실행 상태, 및 상기 캐시의 더티니스(dirtiness) 조건 중 적어도 하나를 포함하는, 시스템 온 칩.
  11. 제1항에 있어서,
    상기 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 데이터의 어드레스가 적어도 하나의 어드레스 범위에 대응하는지 여부에 기초하여 상기 캐시로 하여금 수정된 데이터를 선택적으로 플러시하게 하는, 시스템 온 칩.
  12. 런타임 글로벌 푸시-퍼시스턴스(runtime global push to persistence)를 갖는 데이터 프로세싱 시스템으로서,
    시스템 온 칩; 및
    상기 시스템 온 칩에 결합된 외부 메모리를 포함하고,
    상기 시스템 온 칩은,
    캐시를 갖는 데이터 프로세서 - 상기 데이터 프로세서는 명령어들을 실행하는 것에 응답하여 상기 캐시 내의 데이터를 선택적으로 수정함 -;
    상기 캐시 및 상기 외부 메모리에 결합된 외부 메모리 인터페이스;
    - 상기 캐시는 상기 외부 메모리에 저장하기 위해 상기 외부 메모리 인터페이스에 수정된 데이터를 선택적으로 제공함 -; 및
    상기 데이터 프로세서에 결합된 마이크로시퀀서(microsequencer) - 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 데이터 프로세서로 하여금 명령어들의 실행을 정지하게 하고, 이어서 상기 외부 메모리로의 송신을 위해 상기 수정된 데이터를 상기 외부 메모리 인터페이스로 발송함으로써 상기 캐시로부터 상기 수정된 데이터를 플러시하게 함 - 를 포함하는, 데이터 프로세싱 시스템.
  13. 제12항에 있어서,
    상기 외부 메모리는 비휘발성 메모리를 포함하는, 데이터 프로세싱 시스템.
  14. 제12항에 있어서,
    상기 데이터 프로세서가 데이터 엘리먼트에 액세스하는 것에 응답하여, 상기 캐시는 상기 캐시 내의 상기 데이터를 페치하고, 캐시 라인을 수정되지 않은 상태로 상기 캐시에 배치하고;
    상기 데이터 엘리먼트에 대한 기록 액세스에 응답하여, 상기 캐시는 상기 기록 액세스에 따라 상기 데이터 엘리먼트를 수정하고, 상기 데이터 엘리먼트를 수정된 상태로 배치하고,
    상기 마이크로시퀀서는 상기 데이터 프로세서가 상기 수정된 상태에 있는 캐시 라인들만을 플러시함으로써 상기 캐시를 플러시하게 하는, 데이터 프로세싱 시스템.
  15. 제12항에 있어서,
    상기 데이터 프로세서는 또한 플러시 명령어를 디코딩하는 것에 응답하여 상기 수정된 데이터를 상기 외부 메모리로의 송신을 위해 상기 외부 메모리 인터페이스로 발송함으로써 상기 캐시가 상기 수정된 데이터를 플러시하게 하는, 데이터 프로세싱 시스템.
  16. 제12항에 있어서,
    상기 데이터 프로세서는 데이터 패브릭을 통해 상기 외부 메모리 인터페이스에 결합되고, 상기 데이터 패브릭은 상기 외부 메모리로의 송신을 위해 상기 수정된 데이터를 상기 외부 메모리 인터페이스에 발송하기 위한 요청들을 일시적으로 저장하는 적어도 하나의 버퍼를 포함하고;
    상기 데이터 패브릭은 상기 마이크로시퀀서에 더 결합되고, 상기 트리거 신호에 응답하여, 상기 마이크로시퀀서는 추가로, 상기 외부 메모리로의 송신을 위해 상기 수정된 데이터를 상기 외부 메모리 인터페이스에 발송함으로써 상기 데이터 패브릭이 상기 적어도 하나의 버퍼에 저장된 요청들과 연관된 상기 수정된 데이터를 플러시하게 하는, 데이터 프로세싱 시스템.
  17. 제12항에 있어서,
    상기 트리거 신호는 종단 이벤트 트리거(terminal event trigger) 신호 및 비종단 이벤트 트리거(non-terminal event trigger) 신호 중 하나를 포함하고;
    상기 종단 이벤트 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 외부 메모리로의 송신을 위해 상기 외부 메모리 인터페이스에 상기 수정된 데이터를 발송하기 전에 상기 데이터 프로세서를 정지(stall)시키고;
    상기 비종단 이벤트 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 데이터 프로세서를 정지시키지 않고 상기 외부 메모리로의 송신을 위해 상기 수정된 데이터를 상기 외부 메모리 인터페이스로 발송하는, 데이터 프로세싱 시스템.
  18. 제17항에 있어서,
    상기 트리거 신호는 상기 종단 이벤트 트리거 신호를 포함하고, 상기 시스템 온 칩은 전력 고장을 검출하는 것 및 열 트립 조건을 검출하는 것 중 하나에 응답하여 상기 종단 이벤트 트리거 신호를 활성화하는, 데이터 프로세싱 시스템.
  19. 제17항에 있어서,
    상기 트리거 신호는 상기 비종단 이벤트 트리거 신호를 포함하고, 상기 시스템 온 칩은 정상 동작 상태로부터 리셋 상태로의 변경, 이전 트리거 이벤트 이후의 경과 시간, 미리 결정된 시각, 적어도 하나의 성능 카운터의 상태, 및 미리 결정된 어드레스에 대한 액세스를 검출하는 것 중 하나에 응답하여 상기 비종단 이벤트 트리거 신호를 활성화하는, 데이터 프로세싱 시스템.
  20. 제19항에 있어서,
    상기 시스템 온 칩은 적어도 하나의 성능 카운터의 상기 상태에 응답하여 상기 비종단 이벤트 트리거 신호를 생성하고, 적어도 하나의 성능 카운터의 상기 상태는 상기 데이터 프로세서의 낮은 활용도를 표시하는, 데이터 프로세싱 시스템.
  21. 제17항에 있어서,
    상기 트리거 신호는 상기 비종단 이벤트 트리거 신호를 포함하고, 상기 시스템 온 칩은 복수의 조건들에 응답하여 상기 비종단 이벤트 트리거 신호를 생성하는, 데이터 프로세싱 시스템.
  22. 제21항에 있어서,
    상기 복수의 조건들은 적어도 하나의 소프트웨어 스레드의 실행 상태, 및 상기 캐시의 더티니스(dirtiness) 조건 중 적어도 하나를 포함하는, 데이터 프로세싱 시스템.
  23. 제12항에 있어서,
    상기 트리거 신호에 응답하여, 상기 마이크로시퀀서는 상기 수정된 데이터의 어드레스가 적어도 하나의 어드레스 범위에 대응하는지 여부에 기초하여 상기 캐시로 하여금 수정된 데이터를 선택적으로 플러시하게 하는, 데이터 프로세싱 시스템.
  24. 데이터 패브릭을 통해 외부 메모리 인터페이스에 결합된 캐시를 갖는 데이터 프로세서를 포함하는 시스템 온 칩에서 런타임 글로벌 푸시-퍼시스턴스를 제공하는 방법으로서,
    트리거 신호를 수신하는 단계, 및 상기 트리거 신호를 수신하는 것에 응답하여:
    상기 데이터 프로세서를 정지하는 단계;
    대응하는 제1 기록 요청들을 상기 데이터 패브릭에 발송함으로써 상기 캐시로부터 더티 데이터를 플러시하는 단계;
    상기 계류중(pending)인 기록 요청들을 외부 영구 메모리에 발송함으로써 상기 데이터 패브릭으로부터 모든 계류중인 기록 요청들을 플러시하는 단계; 및
    상기 데이터 프로세서와 상기 외부 영구 메모리 사이의 핸드셰이크를 제공하여, 런타임 글로벌 푸시-퍼시스턴스(runtime global push to persistence)를 설정하는 단계를 포함하는, 방법.
  25. 제24항에 있어서,
    상기 캐시로부터 상기 더티 데이터를 플러시하는 단계는,
    상기 데이터 패브릭으로부터 모든 계류중인 기록 요청들을 플러시하기 전에 대응하는 제2 기록 요청들을 상기 데이터 패브릭에 발송함으로써 상기 외부 메모리 인터페이스에 결합된 코히어런트 메모리로부터의 더티 데이터를 플러시하는 단계를 포함하는, 방법.
  26. 제24항에 있어서,
    종단 이벤트 트리거 신호 및 비종단 이벤트 트리거 신호 중 적어도 하나에 응답하여 상기 트리거 신호를 생성하는 단계를 더 포함하는, 방법.
  27. 제26항에 있어서,
    상기 트리거 신호가 상기 종단 이벤트 트리거 신호에 응답하여 생성될 때, 상기 핸드셰이크를 제공한 후에 상기 데이터 프로세서를 리셋하는 단계를 더 포함하는, 방법.
  28. 제26항에 있어서,
    상기 트리거 신호가 상기 비종단 이벤트 트리거 신호에 응답하여 생성될 때, 상기 데이터 프로세서로 하여금 상기 핸드셰이크를 제공한 후에 동작을 재개(resume)하게 하는 단계를 더 포함하는, 방법.
  29. 제26항에 있어서,
    상기 정지를 제어하는 단계, 상기 캐시로부터 더티 데이터를 플러시하는 단계, 상기 데이터 패브릭으로부터 모든 계류중인 기록 요청들을 플러시하는 단계, 및 상기 데이터 프로세서의 마이크로시퀀서를 사용하여 상기 핸드셰이크를 제공하는 단계를 더 포함하는, 방법.
KR1020237017703A 2020-11-11 2021-10-29 시스템 온 칩(soc들)을 위한 향상된 내구성 KR102656509B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/095,229 US11455251B2 (en) 2020-11-11 2020-11-11 Enhanced durability for systems on chip (SOCs)
US17/095,229 2020-11-11
PCT/US2021/057181 WO2022103595A1 (en) 2020-11-11 2021-10-29 Enhanced durability for systems on chip (socs)

Publications (2)

Publication Number Publication Date
KR20230098610A true KR20230098610A (ko) 2023-07-04
KR102656509B1 KR102656509B1 (ko) 2024-04-12

Family

ID=81454514

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237017703A KR102656509B1 (ko) 2020-11-11 2021-10-29 시스템 온 칩(soc들)을 위한 향상된 내구성

Country Status (6)

Country Link
US (1) US11455251B2 (ko)
EP (1) EP4244725A4 (ko)
JP (1) JP7385083B2 (ko)
KR (1) KR102656509B1 (ko)
CN (1) CN116472512A (ko)
WO (1) WO2022103595A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)
WO2024073193A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Selecting between basic and global persistent flush modes
US20240111682A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Runtime Flushing to Persistency in Heterogenous Systems

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100892857B1 (ko) * 2008-07-30 2009-04-15 주식회사 유비콘테크놀로지 시스템온칩의 내부 메모리 장치 및 그 운영방법
KR20130091167A (ko) * 2012-02-07 2013-08-16 삼성전자주식회사 시스템온칩, 이의 동작 방법, 및 상기 시스템온칩를 포함하는 모바일 장치
KR20140056309A (ko) * 2011-08-31 2014-05-09 인텔 코포레이션 프로세서 내로의 지적 재산(ip) 블록들의 통합
KR20150021952A (ko) * 2012-05-24 2015-03-03 쏘닉스, 인크. 네트워크 온 어 칩에 대한 스케일러블 캐시 코히어런스
KR20150112784A (ko) * 2014-03-27 2015-10-07 인텔 코포레이션 분산 그래픽 프로세서 계층 구조의 시스템 일관성
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119485A (en) * 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
JP2005010995A (ja) * 2003-06-18 2005-01-13 Nec Corp マルチプロセッサシステム及びそのライトバックの障害処理方法
JP5163061B2 (ja) * 2007-11-07 2013-03-13 日本電気株式会社 マルチプロセッサシステム、マイクロプロセッサ、及びマイクロプロセッサの障害処理方法
US10509725B2 (en) * 2013-03-08 2019-12-17 Oracle International Corporation Flushing by copying entries in a non-coherent cache to main memory
KR102064890B1 (ko) 2013-10-22 2020-02-11 삼성전자 주식회사 내부 및 외부 메모리를 선택적으로 사용하는 harq 데이터 처리 장치 및 그 처리 방법
US10055352B2 (en) * 2014-03-11 2018-08-21 Amazon Technologies, Inc. Page cache write logging at block-based storage
US10318340B2 (en) 2014-12-31 2019-06-11 Ati Technologies Ulc NVRAM-aware data processing system
US9767041B2 (en) 2015-05-26 2017-09-19 Intel Corporation Managing sectored cache
CN106326061B (zh) * 2015-06-26 2020-06-23 伊姆西Ip控股有限责任公司 高速缓存数据处理方法及设备
US9891695B2 (en) 2015-06-26 2018-02-13 Intel Corporation Flushing and restoring core memory content to external memory
US9996487B2 (en) * 2015-06-26 2018-06-12 Intel Corporation Coherent fabric interconnect for use in multiple topologies
US20170038813A1 (en) * 2015-08-05 2017-02-09 Qualcomm Incorporated System and method for cache aware low power mode control in a portable computing device
US9959075B2 (en) 2015-08-05 2018-05-01 Qualcomm Incorporated System and method for flush power aware low power mode control in a portable computing device
US9760430B2 (en) * 2015-08-28 2017-09-12 Dell Products L.P. System and method for dram-less SSD data protection during a power failure event
US9916247B2 (en) * 2016-02-04 2018-03-13 International Business Machines Corporation Cache management directory where hardware manages cache write requests and software manages cache read requests
US10599503B2 (en) * 2016-07-28 2020-03-24 Dell Products L.P. Triggering power loss protection on solid-state storage devices
US10474583B2 (en) * 2016-07-28 2019-11-12 Dell Products L.P. System and method for controlling cache flush size
US20180336034A1 (en) 2017-05-17 2018-11-22 Hewlett Packard Enterprise Development Lp Near memory computing architecture
US20190129836A1 (en) * 2017-10-27 2019-05-02 Futurewei Technologies, Inc. Computer processing unit (cpu) architecture for controlled and low power save of cpu data to persistent memory
US11016890B2 (en) * 2018-02-05 2021-05-25 Micron Technology, Inc. CPU cache flushing to persistent memory
US20190354482A1 (en) * 2018-05-21 2019-11-21 Microsoft Technology Licensing, Llc Time-based mechanism supporting flush operation
US10885004B2 (en) * 2018-06-19 2021-01-05 Intel Corporation Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss
US10545869B2 (en) * 2018-06-29 2020-01-28 Intel Corporation Power button override for persistent memory enabled platforms
US10915404B2 (en) * 2018-11-02 2021-02-09 Arm Limited Persistent memory cleaning
US10719431B2 (en) * 2018-12-18 2020-07-21 Sap Se Graph based code performance analysis
US10970225B1 (en) * 2019-10-03 2021-04-06 Arm Limited Apparatus and method for handling cache maintenance operations
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush
US11157408B2 (en) * 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US20200136943A1 (en) 2019-12-27 2020-04-30 Intel Corporation Storage management in a data management platform for cloud-native workloads
US11397677B2 (en) * 2020-04-30 2022-07-26 Hewlett Packard Enterprise Development Lp System and method for tracking persistent flushes
US11615022B2 (en) * 2020-07-30 2023-03-28 Arm Limited Apparatus and method for handling accesses targeting a memory
US20210089225A1 (en) * 2020-11-19 2021-03-25 Intel Corporation Adaptive device behavior based on available energy
US20210182187A1 (en) * 2020-12-24 2021-06-17 Intel Corporation Flushing Cache Lines Involving Persistent Memory

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100892857B1 (ko) * 2008-07-30 2009-04-15 주식회사 유비콘테크놀로지 시스템온칩의 내부 메모리 장치 및 그 운영방법
KR20140056309A (ko) * 2011-08-31 2014-05-09 인텔 코포레이션 프로세서 내로의 지적 재산(ip) 블록들의 통합
KR20130091167A (ko) * 2012-02-07 2013-08-16 삼성전자주식회사 시스템온칩, 이의 동작 방법, 및 상기 시스템온칩를 포함하는 모바일 장치
KR20150021952A (ko) * 2012-05-24 2015-03-03 쏘닉스, 인크. 네트워크 온 어 칩에 대한 스케일러블 캐시 코히어런스
KR20150112784A (ko) * 2014-03-27 2015-10-07 인텔 코포레이션 분산 그래픽 프로세서 계층 구조의 시스템 일관성
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)

Also Published As

Publication number Publication date
US11455251B2 (en) 2022-09-27
JP2023546984A (ja) 2023-11-08
CN116472512A (zh) 2023-07-21
US20220147455A1 (en) 2022-05-12
WO2022103595A1 (en) 2022-05-19
EP4244725A1 (en) 2023-09-20
KR102656509B1 (ko) 2024-04-12
JP7385083B2 (ja) 2023-11-21
EP4244725A4 (en) 2024-01-03

Similar Documents

Publication Publication Date Title
KR102656509B1 (ko) 시스템 온 칩(soc들)을 위한 향상된 내구성
US11281562B2 (en) Method and system for cache agent trace and capture
TWI512448B (zh) 用以啟用處理器等待狀態之指令
LaFrieda et al. Utilizing dynamically coupled cores to form a resilient chip multiprocessor
US8327113B2 (en) Method, system, and apparatus for dynamic reconfiguration of resources
US9058282B2 (en) Dynamic cache write policy
US9262322B2 (en) Method and apparatus for storing a processor architectural state in cache memory
US8560781B2 (en) Technique for using memory attributes
EP3531292B1 (en) Methods and apparatus for supporting persistent memory
JP5204656B2 (ja) スレッド間同期通信のための装置、システム、および、その方法
US9256535B2 (en) Conditional notification mechanism
KR102413593B1 (ko) 교착상태 방지를 위한 방법들 및 회로들
CN101008921A (zh) 基于总线侦听的嵌入式异构多核缓存一致性方法
US9465740B2 (en) Coherence processing with pre-kill mechanism to avoid duplicated transaction identifiers
US9448937B1 (en) Cache coherency
CN117377943A (zh) 存算一体化并行处理系统和方法
US8171448B2 (en) Structure for a livelock resolution circuit
US10180800B2 (en) Automated secure data and firmware migration between removable storage devices that supports boot partitions and replay protected memory blocks
US20140189251A1 (en) Update mask for handling interaction between fills and updates
US20200371913A1 (en) Method and Apparatus for Asynchronous Memory Write-back in a Data Processing System
US11966339B1 (en) Selecting between basic and global persistent flush modes
US20240111680A1 (en) Selecting Between Basic and Global Persistent Flush Modes
CN117581179A (zh) 低功率状态之后基于需求的探针过滤器初始化
WO2024073197A1 (en) Runtime flushing to persistency in heterogenous systems
JP2005327086A (ja) 半導体集積回路装置

Legal Events

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