KR20230082484A - 전자 장치의 동작 방법 - Google Patents

전자 장치의 동작 방법 Download PDF

Info

Publication number
KR20230082484A
KR20230082484A KR1020210170435A KR20210170435A KR20230082484A KR 20230082484 A KR20230082484 A KR 20230082484A KR 1020210170435 A KR1020210170435 A KR 1020210170435A KR 20210170435 A KR20210170435 A KR 20210170435A KR 20230082484 A KR20230082484 A KR 20230082484A
Authority
KR
South Korea
Prior art keywords
memory
data
coherency
bias mode
processor
Prior art date
Application number
KR1020210170435A
Other languages
English (en)
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 삼성전자주식회사
Priority to KR1020210170435A priority Critical patent/KR20230082484A/ko
Priority to US17/867,754 priority patent/US20230169022A1/en
Priority to CN202211030985.3A priority patent/CN116204454A/zh
Priority to EP22193823.6A priority patent/EP4191419A1/en
Publication of KR20230082484A publication Critical patent/KR20230082484A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

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

Abstract

본 기재는 프로세서 및 메모리를 포함하는 전자 장치의 동작 방법에 관한 것이다. 본 기재의 동작 방법은, 제1 바이어스 모드에서, 외부의 호스트 장치의 제어 없이 프로세서가 메모리를 액세스하는 단계, 제1 바이어스 모드의 종료 시에, 프로세서가 메모리의 정보를 외부의 호스트 장치로 전송하는 단계, 그리고 제2 바이어스 모드에서, 프로세서가 외부의 호스트 장치의 제어 하에 메모리를 액세스하는 단계를 포함한다.

Description

전자 장치의 동작 방법{OPERATING METHOD OF ELECTRONIC DEVICE}
본 기재는 전자 장치에 관한 것으로, 더 상세하게는 캐시 일관성(cache coherency)을 제공하면서, 독립적인 연산을 지원하는 전자 장치에 관한 것이다.
캐시 일관성(cache coherency)은 제1 전자 장치와 제2 전자 장치가 특정한 데이터를 공유하는 환경에서 기인한다. 제1 전자 장치와 제2 전자 장치가 캐시 일관성을 지원하면, 제1 전자 장치가 특정한 데이터를 수정할 때에, 제2 전자 장치에 저장된 특정한 데이터에서도 동일한 수정이 발생한다.
캐시 일관성은 복수의 프로세서들에서 데이터를 공유하며 처리하는 환경에서 필요할 수 있다. 멀티 코어들을 사용하는 전자 장치들이 널리 사용됨에 따라, 캐시 일관성을 지원하는 방법에 대한 연구가 지속되고 있다.
본 기재의 목적은 캐시 일관성을 지원하면서, 부분적으로 캐시 일관성을 차단하여 독립적인 연산을 가능하게 하는 전자 장치의 동작 방법을 제공하는 데에 있다.
프로세서 및 메모리를 포함하는 본 기재의 실시 예에 따른 전자 장치의 동작 방법은, 제1 바이어스 모드에서, 외부의 호스트 장치의 제어 없이 프로세서가 메모리를 액세스하는 단계, 제1 바이어스 모드의 종료 시에, 프로세서가 메모리의 정보를 외부의 호스트 장치로 전송하는 단계, 그리고 제2 바이어스 모드에서, 프로세서가 외부의 호스트 장치의 제어 하에 메모리를 액세스하는 단계를 포함한다.
프로세서 및 메모리를 포함하는 본 기재의 실시 예에 따른 전자 장치의 동작 방법은, 제1 바이어스 모드에서, 프로세서에 의해, 외부의 전자 장치가 외부의 전자 장치의 메모리를 액세스하는 것을 방치하는 단계, 제1 바이어스 모드의 종료 시에, 프로세서에 의해, 외부의 전자 장치의 메모리의 정보를 외부의 전자 장치로부터 수신하는 단계, 그리고 제2 바이어스 모드에서, 프로세서에 의해, 외부의 전자 장치가 외부의 전자 장치의 메모리를 액세스하는 것을 제어하는 단계를 포함한다.
호스트 장치 및 가속기를 포함하는 본 기재의 실시 예에 따른 전자 장치의 동작 방법은, 가속기가 연산을 수행하지 않는 동안, 호스트 장치에 의해, 가속기의 메모리와 호스트 장치의 메모리의 일관성을 유지하는 단계, 가속기가 연산을 수행하는 동안, 호스트 장치에 의해, 가속기의 메모리와 호스트 장치의 메모리의 일관성을 차단하는 단계, 그리고 가속기가 연산을 완료한 후에, 호스트 장치에 의해, 가속기의 메모리와 호스트 장치의 메모리의 일관성을 복원하는 단계를 포함한다.
본 기재에 따르면, 전자 장치는 독립적인 연산을 수행하는 동안 캐시 일관성을 차단할 수 있다. 따라서, 독립적인 연산은 빠르고 안전하게 수행될 수 있다. 또한, 독립적인 연산의 전 및 후에 수정된 데이터를 공유함으로써, 독립적인 연산의 전과 후에 캐시 일관성이 보장된다.
도 1은 본 기재의 실시 예에 따른 전자 장치를 보여준다.
도 2는 전자 장치의 동작 방법의 예를 보여준다.
도 3은 일관성 호스트 및 제1 일관성 장치가 제2 바이어스 모드로부터 제1 바이어스 모드로 진입하는 과정의 예를 보여준다.
도 4는 일관성 호스트 및 제1 일관성 장치가 제1 바이어스 모드로부터 제2 바이어스 모드로 진입하는 과정의 예를 보여준다.
도 5는 일관성 호스트 및 제1 일관성 장치가 제1 바이어스 모드로부터 제2 바이어스 모드로 진입하는 과정의 다른 예를 보여준다.
도 6은 전자 장치가 제1 바이어스 모드로 진입하기 전에 제2 바이어스 모드일 때의 예를 보여준다.
도 7은 전자 장치가 제1 바이어스 모드로 동작할 때의 예를 보여준다.
도 8은 전자 장치가 제1 바이어스 모드의 연산을 완료하고 제2 바이어스 모드로 진입한 때의 예를 보여준다.
도 9는 본 기재의 일 실시 예에 따른 시스템을 도시한 도면이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다. 아래에서, '그리고/또는'의 용어는 해당 용어와 연관되어 나열된 항목들의 어느 하나, 그리고 연관되어 나열된 항목들 중 일부 또는 전부의 조합을 포함하는 것으로 해석된다.
도 1은 본 기재의 실시 예에 따른 전자 장치(10)를 보여준다. 도 1을 참조하면, 전자 장치(10)는 일관성 호스트(100), 제1 일관성 장치(200), 그리고 제2 일관성 장치(300)를 포함할 수 있다.
예시적으로, 일관성 호스트(100)는 중앙 처리 장치(CPU)(또는 중앙 처리 장치 코어) 또는 응용 프로세서(AP)(또는 응용 프로세서 코어)로 구현될 수 있다. 제1 일관성 장치(200) 및 제2 일관성 장치(300)의 각각은 그래픽 처리 장치(GPU)(또는 그래픽 처리 코어), 뉴럴 프로세서(또는 뉴럴 프로세서 코어), 뉴로모픽 프로세서(또는 뉴로모픽 프로세서 코어), 디지털 신호 처리기(또는 디지털 신호 처리 코어), 이미지 신호 처리기(또는 이미지 신호 처리 코어) 등으로 구현될 수 있다.
예시적으로, 일관성 호스트(100)는 제1 일관성 장치(200) 및 제2 일관성 장치(300)를 제어하는 호스트 장치로 구현될 수 있다. 제1 일관성 장치(200) 및 제2 일관성 장치(300)의 각각은 일관성 호스트(100)의 동작을 지원하는 가속기(accelerator)로 구현될 수 있다.
일관성 호스트(100), 제1 일관성 장치(200) 및 제2 일관성 장치(300)는 하나의 반도체 장치로 구현될 수 있고, 또는 둘 이상의 서로 구별되는 반도체 장치들로 구현될 수 있다. 일관성 호스트(100), 제1 일관성 장치(200) 및 제2 일관성 장치(300)는 전자 장치(10)의 구성 요소들일 수 있지만, 일관성 호스트(100), 제1 일관성 장치(200) 및 제2 일관성 장치(300)의 각각은 전자 장치로 불릴 수 있다.
일관성 호스트(100), 제1 일관성 장치(200) 및 제2 일관성 장치(300)는 캐시 일관성(cache coherency)을 지원할 수 있다. 일관성 호스트(100), 제1 일관성 장치(200) 및 제2 일관성 장치(300)의 각각은 캐시 메모리로 사용되는 메모리를 포함할 수 있다. 캐시 일관성이 지원되는 때에, 일관성 호스트(100), 제1 일관성 장치(200) 및 제2 일관성 장치(300) 중 하나의 캐시 메모리의 데이터가 갱신되면, 동일한 갱신이 다른 캐시 메모리들에서 동일하게 발생(다른 캐시 메모리들에 동일한 데이터가 저장된 경우)할 수 있다.
일관성 호스트(100)는 일관성 호스트 프로세서(110), 호스트 일관성 메모리(120), 그리고 호스트 메모리(130)를 포함할 수 있다. 일관성 호스트 프로세서(110)는 호스트 일관성 메모리(120)를 이용하여 캐시 일관성을 지원하고, 그리고 호스트 메모리(130)를 로컬 메모리로 사용할 수 있다.
일관성 호스트 프로세서(110)는 호스트 프로세서 코어(111), 일관성 컨트롤러(112), 그리고 메모리 컨트롤러(113)를 포함할 수 있다. 호스트 프로세서 코어(111)는 전자 장치(10)의 운영 체제를 실행할 수 있다. 호스트 프로세서 코어(111)는 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)에 작업을 할당 또는 요청할 수 있다.
예시적으로, 전자 장치(10)는 일관성 호스트(100), 제1 일관성 장치(200) 및 제2 일관성 장치(300)를 포함하는 것으로 기술되지만, 전자 장치(10)는 다른 추가적인 구성 요소들을 포함할 수 있다. 호스트 프로세서 코어(111)는 다른 추가적인 구성 요소들을 제어할 수 있다.
일관성 컨트롤러(112)는 캐시 일관성과 연관된 동작을 수행할 수 있다. 일관성 컨트롤러(112)는 캐시 일관성과 연관된 둘 이상의 모드들을 지원할 수 있다. 둘 이상의 모드들은 캐시 일관성이 부분적으로 지원되는 모드, 캐시 일관성이 지원되는 모드, 그리고 캐시 일관성이 지원되지 않는 모드를 포함할 수 있다.
캐시 일관성이 부분적으로 지원되는 모드에서, 일관성 컨트롤러(112)는 캐시 일관성과 연관된 모든 메모리, 예를 들어, 일관성 호스트(100), 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)의 메모리들 중에서 일관성과 연관된 모든 메모리의 액세스를 부분적으로 제어할 수 있다.
캐시 일관성이 지원되는 모드에서, 일관성 컨트롤러(112)는 캐시 일관성과 연관된 모든 메모리, 예를 들어, 일관성 호스트(100), 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)의 메모리들 중에서 일관성과 연관된 모든 메모리의 액세스를 제어할 수 있다.
일관성 컨트롤러(112)는 둘 이상의 모드들 사이의 전환을 제어할 수 있다. 일관성 컨트롤러(112)는 제1 일관성 장치(200) 및 제2 일관성 장치(300)의 각각과 1:1로 모드를 제어할 수 있다.
일관성 컨트롤러(112)는 호스트 프로세서 코어(111)의 요청에 응답하여, 메모리 컨트롤러(113)를 통해 호스트 일관성 메모리(120)를 액세스할 수 있다. 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)와의 캐시 일관성이 지원되고 그리고 호스트 일관성 메모리(120)의 데이터가 수정될 때에, 일관성 컨트롤러(112)는 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)의 캐시 일관성과 연관된 메모리에 저장된 동일한 데이터에 대해 동일한 수정이 행해지도록(즉시 또는 특정한 지연 시간 후에), 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)에 요청할 수 있다.
제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)와의 캐시 일관성이 지원되고 그리고 제1 일관성 장치(200)의 캐시 일관성과 연관된 메모리의 특정한 데이터가 수정될 때에, 일관성 컨트롤러(112)는 호스트 일관성 메모리(120), 그리고/또는 제2 일관성 장치(300)의 캐시 일관성과 연관된 메모리에 저장된 동일한 데이터에 대해 동일한 수정이 행해지도록(즉시 또는 특정한 지연 시간 후에), 메모리 컨트롤러(113) 또는 제2 일관성 장치(300)에 요청할 수 있다.
마찬가지로, 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)와의 캐시 일관성이 지원되고 그리고 제2 일관성 장치(300)의 캐시 일관성과 연관된 메모리의 특정한 데이터가 수정될 때에, 일관성 컨트롤러(112)는 호스트 일관성 메모리(120), 그리고/또는 제1 일관성 장치(200)의 캐시 일관성과 연관된 메모리에 저장된 동일한 데이터에 대해 동일한 수정이 행해지도록(즉시 또는 특정한 지연 시간 후에), 메모리 컨트롤러(113) 또는 제1 일관성 장치(200)에 요청할 수 있다.
메모리 컨트롤러(113)는 호스트 일관성 메모리(120) 및 호스트 메모리(130)를 액세스할 수 있다. 예를 들어, 메모리 컨트롤러(113)는 일관성 컨트롤러(112)의 요청에 따라 호스트 일관성 메모리(120)를 액세스하고, 그리고 호스트 프로세서 코어(111)의 요청에 따라 호스트 메모리(130)를 액세스할 수 있다.
예시적으로, 메모리 컨트롤러(113)는 호스트 일관성 메모리(120)를 위한 제1 컨트롤러 및 호스트 메모리(130)를 위한 제2 컨트롤러를 포함할 수 있다.
제1 일관성 장치(200)는 일관성 장치 프로세서(210), 장치 일관성 메모리(220), 그리고 장치 메모리(230)를 포함할 수 있다. 일관성 장치 프로세서(210)는 장치 일관성 메모리(220)를 이용하여 캐시 일관성을 지원하고, 그리고 장치 메모리(230)를 로컬 메모리로 사용할 수 있다.
일관성 장치 프로세서(210)는 장치 프로세서 코어(211), 일관성 엔진(212), 그리고 메모리 컨트롤러(213)를 포함할 수 있다. 장치 프로세서 코어(211)는 제1 일관성 장치(200)의 펌웨어 또는 일관성 호스트(100)에 의해 로드되는 코드들을 실행할 수 있다. 장치 프로세서 코어(211)는 일관성 메모리(220) 또는 장치 메모리(230)를 이용하여, 일관성 호스트(100)에 의해 할당 또는 요청되는 작업을 수행할 수 있다.
예를 들어, 장치 프로세서 코어(211)는 일관성 메모리(220)에 저장된 데이터(예를 들어, 공유 데이터)에 대해 연산을 수행할 수 있다. 장치 프로세서 코어(211)는 연산을 수행하기 위한 동작 메모리로 일관성 메모리(220) 그리고/또는 장치 메모리(230)를 사용할 수 있다. 장치 프로세서 코어(211)는 연산의 결과에 기반하여 일관성 메모리(220)의 데이터 중 적어도 일부를 갱신할 수 있다.
일관성 엔진(212)은 캐시 일관성과 연관된 동작을 수행할 수 있다. 일관성 엔진(212)은 캐시 일관성과 연관된 둘 이상의 모드들을 지원할 수 있다. 둘 이상의 모드들은 캐시 일관성이 부분적으로 지원되는 모드, 캐시 일관성이 지원되는 모드, 그리고 캐시 일관성이 지원되지 않는 모드를 포함할 수 있다.
캐시 일관성이 부분적으로 지원되는 모드에서, 일관성 엔진(212)은 캐시 일관성과 연관된 메모리, 예를 들어, 장치 일관성 메모리(220)의 액세스를 부분적으로 일관성 컨트롤러(112)의 제어 하에 수행할 수 있다. 캐시 일관성이 지원되는 모드에서, 일관성 엔진(212)은 장치 일관성 메모리(220)의 액세스를 일관성 컨트롤러(112)의 제어 하에 수행할 수 있다. 일관성 엔진(212)은 둘 이상의 모드들 사이의 전환을 일관성 컨트롤러(112)의 제어 하에 수행할 수 있다.
일관성 엔진(212)은 일관성 컨트롤러(112) 그리고/또는 장치 프로세서 코어(211)의 요청에 응답하여, 메모리 컨트롤러(213)를 통해 장치 일관성 메모리(220)를 액세스할 수 있다. 일관성 호스트(100)와의 캐시 일관성이 지원되고 그리고 장치 프로세서 코어(211)에 의해 장치 일관성 메모리(220)의 데이터가 수정될 때에, 일관성 엔진(212)은 수정 정보(예를 들어, 어드레스 또는 태그) 그리고/또는 수정 데이터를 일관성 컨트롤러(112)로 제공(예를 들어, 일관성 컨트롤러(112)의 요청에 따라 또는 수정이 발생하는 것에 응답하여 자체적으로)할 수 있다.
메모리 컨트롤러(213)는 장치 일관성 메모리(220) 및 장치 메모리(230)를 액세스할 수 있다. 예를 들어, 메모리 컨트롤러(213)는 일관성 엔진(212)의 요청에 따라 장치 일관성 메모리(220)를 액세스하고, 그리고 장치 프로세서 코어(211)의 요청에 따라 장치 메모리(230)를 액세스할 수 있다. 예시적으로, 메모리 컨트롤러(213)는 장치 일관성 메모리(220)를 위한 제1 컨트롤러 및 장치 메모리(230)를 위한 제2 컨트롤러를 포함할 수 있다.
제2 일관성 장치(300)는 일관성 장치 프로세서(310), 장치 일관성 메모리(320), 그리고 장치 메모리(330)를 포함할 수 있다. 일관성 장치 프로세서(210)는 장치 프로세서 코어(211), 일관성 엔진(212), 그리고 메모리 컨트롤러(213)를 포함할 수 있다.
제2 일관성 장치(300), 일관성 장치 프로세서(310), 장치 일관성 메모리(320), 장치 메모리(330), 장치 프로세서 코어(211), 일관성 엔진(212), 그리고 메모리 컨트롤러(213)의 구성들, 특색들 및 기능들은 각각 일관성 장치 프로세서(210), 장치 일관성 메모리(220), 장치 메모리(230), 장치 프로세서 코어(211), 일관성 엔진(212), 그리고 메모리 컨트롤러(213)의 구성들, 특색들 및 기능들에 각각 대응할 수 있다. 따라서, 중복되는 설명은 생략된다.
도 1의 실시 예에서, 캐시 연관성과 연관된 메모리들은 호스트 일관성 메모리(120), 장치 일관성 메모리(220), 그리고 장치 일관성 메모리(320)를 포함할 수 있다. 예시적으로, 일관성 호스트(100), 제1 일관성 장치(200), 그리고 제2 일관성 장치(300) 사이의 캐시 일관성을 위한 통신은 CXL(Compute Express Link)TM에 기반할 수 있다.
도 2는 전자 장치(10)의 동작 방법의 예를 보여준다. 간결한 설명을 위하여, 일관성 호스트(100) 및 제1 일관성 장치(200) 사이의 동작의 예가 도 1 및 도 2를 참조하여 설명된다. 그러나 동일한 동작이 일관성 호스트(100) 및 제2 일관성 장치(300)의 사이에서 수행될 수도 있다.
도 1 및 도 2를 참조하면, S110 단계에서, 전자 장치(10)는 바이어스 모드를 판단할 수 있다. 예를 들어, 일관성 호스트(100)가 바이어스 모드를 판단할 수 있다. 다른 예로서, 제1 일관성 장치(200)의 요청에 따라, 일관성 호스트(100)가 바이어스 모드를 판단할 수 있다. 또 다른 예로서, 제1 일관성 장치(200)가 바이어스 모드를 판단하고, 일관성 호스트(100)에 판단된 모드를 요청할 수 있다.
제1 바이어스 모드가 판단된 때에, S121 단계 내지 S123 단계가 수행될 수 있다. 예를 들어, 제1 바이어스 모드는 지연된 호스트 바이어스 모드(Delayed Host Bias Mode)일 수 있다. S121 단계에서, 일관성 호스트(100) 및 제1 일관성 장치(200)는 지연된 호스트 바이어스 모드로 진입할 수 있다.
지연된 호스트 바이어스 모드는 캐시 일관성을 부분적으로 지원할 수 있다. 제1 일관성 장치(200)가 일관성 호스트(100)와 지연된 호스트 바이어스 모드로 동작하는 동안, 일관성 호스트(100)는 제1 일관성 장치(200)와의 캐시 일관성을 무시하고 제1 일관성 장치(200)가 장치 일관성 메모리(220)를 액세스하는 것을 방치할 수 있다. 제1 일관성 장치(200)는 일관성 컨트롤러(112)의 개입 없이, 장치 일관성 메모리(220)를 액세스할 수 있다.
제1 일관성 장치(200)는 일관성 컨트롤러(112)의 개입 또는 제어 없이 장치 일관성 메모리(220)를 액세스할 수 있다. 따라서, 제1 일관성 장치(200)가 일관성 메모리(220)를 액세스하는 속도가 일관성 컨트롤러(112)를 통해 일관성 메모리(220)를 액세스할 때와 비교하여 향상될 수 있다.
제1 일관성 장치(200)는 원하는 시점까지, 예를 들어, 일관성 호스트(100)에 의해 할당 또는 요청된 작업의 연산이 완료될 때까지 캐시 일관성을 무시할 수 있다. 따라서, 제1 일관성 장치(200)의 연산의 원자성(atomicity) 및 고립성(isolation)이 확보될 수 있다.
제1 일관성 장치(200)는 지연된 호스트 바이어스 모드가 유지되는 동안, 장치 일관성 메모리(220)를 빠르게(예를 들어, 일관성 컨트롤러(112)의 제어 없이) 그리고 안전하게(원자성 및 고립성을 유지하며) 액세스할 수 있다.
지연된 호스트 바이어스 모드를 종료할 때(예를 들어, 호스트 바이어스 모드로 진입할 때), 일관성 호스트(100) 및 제1 일관성 장치(200)는 캐시 일관성을 복원할 수 있다. 예를 들어, S123 단계에서, 제1 일관성 장치(200)는 장치 일관성 메모리(220)의 데이터 중 수정된 데이터의 정보(예를 들어, 주소 또는 태그) 그리고/또는 수정된 데이터를 일관성 호스트(100)에 제공할 수 있다. 일관성 호스트(100)는 수신된 정보 그리고/또는 수신된 데이터에 기반하여 캐시 일관성을 복원할 수 있다.
S110 단계에서 제2 바이어스 모드가 판단된 때에, S131 단계 및 S132 단계가 수행될 수 있다. 예를 들어, 제2 바이어스 모드는 CXLTM의 호스트 바이어스 모드(Host Bias Mode)일 수 있다. S131 단계에서, 일관성 호스트(100) 및 제1 일관성 장치(200)는 호스트 바이어스 모드로 진입할 수 있다.
호스트 바이어스 모드가 유지되는 동안, S132 단계에서, 제1 일관성 장치(200)는 일관성 컨트롤러(112)의 제어 하에 장치 일관성 메모리(220)를 액세스할 수 있다. 호스트 바이어스 모드에서, 캐시 일관성은 유지되며, 따라서 호스트 바이어스 모드의 종료 시에 캐시 일관성과 연관된 추가적인 동작(예를 들어, 상술된 일관성 복원 등)은 요구되지 않는다.
S110 단계에서 제3 바이어스 모드가 판단된 때에, S141 단계 내지 S143 단계가 수행될 수 있다. 예를 들어, 제2 바이어스 모드는 CXLTM의 장치 바이어스 모드(Device Bias Mode)일 수 있다. S141 단계에서, 일관성 호스트(100) 및 제1 일관성 장치(200)는 장치 바이어스 모드로 진입할 수 있다.
장치 바이어스 모드가 유지되는 동안, S142 단계에서, 일관성 호스트(100)는 제1 일관성 장치(200)에 캐시 일관성을 요구하지 않을 수 있다. 일관성 호스트(100)는 제1 일관성 장치(200)에 대해 할당된 호스트 일관성 메모리(120) 내의 저장 공간(예를 들어, 캐시 메모리 공간)을 해제할 수 있다. 제1 일관성 장치(200)는 일관성 컨트롤러(112)의 제어 없이 장치 일관성 메모리(220)를 액세스할 수 있다.
일관성 호스트(100) 및 제1 일관성 장치(200)가 장치 바이어스 모드를 종료하는 과정은 선택적으로 수행될 수 있다. 예를 들어, 캐시 일관성의 복원이 필요할 때, S143 단계가 수행될 수 있다. S143 단계에서, 일관성 호스트(100)는 제1 일관성 장치(200)를 위한 저장 공간(예를 들어, 캐시 메모리 공간)을 호스트 일관성 메모리(120)에 할당할 수 있다. 일관성 호스트(100)는 제1 일관성 장치(200)의 장치 일관성 메모리(220)의 데이터를 할당된 저장 공간에 채우는 캐시 필(cache fill)을 수행할 수 있다. 다른 예로서, 캐시 일관성의 복원이 필요하지 않을 때, S143 단계는 수행되지 않고 생략될 수 있다.
도 3은 일관성 호스트(100) 및 제1 일관성 장치(200)가 제2 바이어스 모드로부터 제1 바이어스 모드로 진입하는 과정의 예를 보여준다. 예를 들어, 바이어스 모드를 전환하는 과정은 바이어스 플립이라 불릴 수 있다.
도 1 및 도 3을 참조하면, S210 단계에서, 일관성 호스트(100)가 제1 일관성 장치(200)에, 또는 제1 일관성 장치(200)가 일관성 호스트(100)에 제2 바이어스 모드로부터 제1 바이어스 모드로의 바이어스 플립을 요청할 수 있다.
S220 단계에서, 일관성 호스트(100)는 제1 수정된 데이터를 검출할 수 있다. 예를 들어, 일관성 호스트(100)는 호스트 일관성 메모리(120) 및 제1 일관성 장치(200)의 장치 일관성 메모리(220)에 공통으로 저장된 후에 호스트 일관성 메모리(120)에서만 수정(또는 갱신)된 데이터를 제1 수정된 데이터로 검출할 수 있다.
예를 들어, 호스트 일관성 메모리(120)는 복수의 캐시 라인들을 포함하는 캐시 메모리로 사용되며, 제1 수정된 데이터의 검출은 캐시 라인의 단위로 수행될 수 있다. S230 단계에서, 일관성 호스트(100)는 적어도 하나의 캐시 라인에 대응하는 제1 수정된 데이터를 제1 일관성 장치(200)로 전송할 수 있다.
제1 수정된 데이터는 제1 수정된 데이터의 정보(예를 들어, 주소 또는 태그)와 함께 전송될 수 있다. 제1 일관성 장치(200)는 제1 수정된 데이터의 정보 및 제1 수정된 데이터를 이용하여 장치 일관성 메모리(220)를 갱신할 수 있다. 예를 들어, 제1 일관성 장치(200)는 제1 수정된 데이터의 정보에 대응하는 장치 일관성 메모리(220) 내의 데이터를 제1 수정된 데이터로 갱신(또는 대체)할 수 있다.
제1 수정된 데이터 외에, 제1 일관성 장치(200)에서 필요한(예를 들어, 연산에 필요한) 추가적인 데이터가 존재할 때, 일관성 호스트(100)는 추가적인 데이터 및 추가적인 데이터의 정보(예를 들어, 주소 또는 태그)를 제1 수정된 데이터 및 제1 수정된 데이터의 정보의 일부로서 또는 제1 수정된 데이터 및 제1 수정된 데이터의 정보와 함께 제1 일관성 장치(200)로 전송할 수 있다. 제1 일관성 장치(200)는 추가적인 데이터 및 추가적인 데이터의 정보를 장치 일관성 메모리(220)에 저장할 수 있다.
S240 단계 내지 S260 단계에서, 전송된 데이터의 검토가 수행될 수 있다. 예를 들어, S240 단계에서, 제1 일관성 장치(200)는 일관성 호스트(100)로부터 수신된 제1 수정된 데이터 그리고/또는 제1 수정된 데이터의 정보를 일관성 호스트(100)로 다시 전송할 수 있다.
S250 단계에서, 일관성 호스트(100)는 제1 일관성 장치(200)로 전송된 데이터 그리고/또는 전송된 데이터의 정보, 그리고 제1 일관성 장치(200)로부터 수신된 데이터 및 수신된 데이터의 정보를 비교할 수 있다. 비교 결과가 일치하면, S260 단계에서, 일관성 호스트(100)는 제1 일관성 장치(200)로 확인(acknowledgement) 메시지를 전송할 수 있다. 비교 결과가 일치하지 않으면, S230 단계 내지 S260 단계가 다시 수행될 수 있다.
S260 단계에서 확인 메시지가 일관성 호스트(100)로부터 제1 일관성 장치(200)로 전송된 후에, S270 단계에서, 일관성 호스트(100) 및 제1 일관성 장치(200)는 제2 바이어스 모드로부터 제1 바이어스 모드로 진입할 수 있다. 제1 바이어스 모드로 진입한 후에, S270 단계에서, 일관성 호스트(100)는 제1 일관성 장치(200)에 할당된 일관성 메모리(120) 내의 저장 공간(예를 들어, 캐시 메모리)을 해제하지 않고 유지할 수 있다.
예시적으로, 점선으로 표시된 바와 같이, S240 단계 내지 S260 단계는 선택적으로 수행될 수 있다. S240 단계 내지 S260 단계가 생략될 때, 일관성 호스트(100)로부터 제1 일관성 장치(200)로 제1 수정된 데이터가 전송된 후에, 일관성 호스트(100) 및 제1 일관성 장치(200)는 제2 바이어스 모드로부터 제1 바이어스 모드로 진입할 수 있다.
도 4는 일관성 호스트(100) 및 제1 일관성 장치(200)가 제1 바이어스 모드로부터 제2 바이어스 모드로 진입하는 과정의 예를 보여준다. 예를 들어, 바이어스 모드를 전환하는 과정은 바이어스 플립이라 불릴 수 있다.
도 1 및 도 4를 참조하면, S310 단계에서, 일관성 호스트(100)가 제1 일관성 장치(200)에, 또는 제1 일관성 장치(200)가 일관성 호스트(100)에 제1 바이어스 모드로부터 제2 바이어스 모드로의 바이어스 플립을 요청할 수 있다.
S320 단계에서, 제1 일관성 장치(200)는 일관성 호스트(100)에 수정된 데이터의 정보(예를 들어, 주소 또는 태그)를 전송할 수 있다. 예를 들어, 제1 일관성 장치(200)는 장치 일관성 메모리(220)에 저장된 데이터 중에서 제1 바이스 모드로 진입한 후에 수정(또는 갱신)된 데이터(예를 들어, 제2 수정된 데이터)의 정보를 일관성 호스트(100)로 전송할 수 있다.
S330 단계에서, 일관성 호스트(100)는 수신된 정보에 기반하여, 호스트 일관성 메모리(120)에 저장된 데이터 중 제1 바이어스 모드 동안 제1 일관성 장치(200)에 의해 수정(또는 갱신)된 제2 수정된 데이터에 대응하는 데이터를 무효화할 수 있다. 데이터의 무효화는 캐시 라인의 단위로 수행될 수 있다. 무효화된 캐시 라인은 할당 해제될(released) 수 있다.
예시적으로, 제2 수정된 데이터가 제1 일관성 장치(200)로부터 일관성 호스트(100)로 전달된 후에, 도 3의 S240 단계 내지 S260 단계와 유사하게 제2 수정된 데이터가 올바르게 전송되었는지를 확인하는 과정이 선택적으로 수행될 수 있다.
S340 단계에서, 일관성 호스트(100) 및 제1 일관성 장치(200)는 제1 바이어스 모드로부터 제2 바이어스 모드로 진입할 수 있다. 이후에, 일관성 호스트(100)에서 제2 수정된 데이터에 대한 요청이 발생할 수 있다. 예를 들어, 일관성 호스트(100)의 호스트 프로세서 코어(111) 또는 제2 일관성 장치(300)가 제2 수정된 데이터를 요구할 수 있다.
제2 수정된 데이터에 대응하는 데이터는 호스트 일관성 메모리(120)에 존재하지 않으므로(무효화로 인해), 캐시 미스가 발생할 수 있다. S350 단계에서, 일관성 호스트(100)는 제1 일관성 장치(200)에 제2 수정된 데이터를 요청할 수 있다. 요청에 응답하여, S360 단계에서, 제1 일관성 장치(200)는 제2 수정된 데이터 그리고/또는 제2 수정된 데이터의 정보를 일관성 호스트(100)에 제공할 수 있다.
S370 단계에서, 일관성 호스트(100)는 제2 수정된 데이터 그리고/또는 제2 수정된 데이터의 정보를 호스트 일관성 메모리(120)에 저장함으로써, 호스트 일관성 메모리(120)의 데이터를 갱신할 수 있다.
상술된 바와 같이, 일관성 호스트(100) 및 제1 일관성 장치(200)는 제2 수정된 데이터에 대응하는 데이터의 무효화 및 캐시 미스에 기반하여, 캐시 일관성을 필요한 때에 복원하도록 구성될 수 있다.
도 5는 일관성 호스트(100) 및 제1 일관성 장치(200)가 제1 바이어스 모드로부터 제2 바이어스 모드로 진입하는 과정의 다른 예를 보여준다. 예를 들어, 바이어스 모드를 전환하는 과정은 바이어스 플립이라 불릴 수 있다.
도 1 및 도 5를 참조하면, S410 단계에서, 일관성 호스트(100)가 제1 일관성 장치(200)에, 또는 제1 일관성 장치(200)가 일관성 호스트(100)에 제1 바이어스 모드로부터 제2 바이어스 모드로의 바이어스 플립을 요청할 수 있다.
S420 단계에서, 제1 일관성 장치(200)는 일관성 호스트(100)에 제2 수정된 데이터 그리고/또는 제2 수정된 데이터의 정보(예를 들어, 주소 또는 태그)를 전송할 수 있다. 예를 들어, 제1 일관성 장치(200)는 장치 일관성 메모리(220)에 저장된 데이터 중에서 제1 바이스 모드로 진입한 후에 수정(또는 갱신)된 제2 수정된 데이터 및 제2 수정된 데이터의 정보를 일관성 호스트(100)로 전송할 수 있다.
S430 단계에서, 일관성 호스트(100)는 제2 수정된 데이터 그리고/또는 제2 수정된 데이터의 정보를 호스트 일관성 메모리(120)에 저장함으로써, 호스트 일관성 메모리(120)의 데이터를 갱신할 수 있다. 예시적으로, 제2 수정된 데이터 그리고/또는 제2 수정된 데이터의 정보가 제1 일관성 장치(200)로부터 일관성 호스트(100)로 전달된 후에, 도 3의 S240 단계 내지 S260 단계와 유사하게 제2 수정된 데이터 및 제2 수정된 데이터의 정보가 올바르게 전송되었는지를 확인하는 과정이 선택적으로 수행될 수 있다.
S440 단계에서, 일관성 호스트(100) 및 제1 일관성 장치(200)는 제1 바이어스 모드로부터 제2 바이어스 모드로 진입할 수 있다. 도 4의 동작 방법과 비교하면, 제1 일관성 장치(200)는 제2 바이어스 모드로 진입하기 전에, 제2 수정된 데이터 및 제2 수정된 데이터의 정보를 일관성 호스트(100)로 전송한다. 일관성 호스트(100)는 제2 수정된 데이터를 이용하여 호스트 일관성 메모리(120)의 데이터를 갱신한다. 즉, 캐시 일관성의 복원이 완료된 후에, 일관성 호스트(100) 및 제1 일관성 장치(200)는 제2 모드로 진입할 수 있다.
도 6은 전자 장치(10)가 제1 바이어스 모드로 진입하기 전에 제2 바이어스 모드일 때의 예를 보여준다. 도 6을 참조하면, 제1 일관성 장치(200)의 장치 일관성 메모리(220)는 장치 프로세서 코어(211)의 연산을 위한 입력 데이터를 저장할 수 있다. 제2 일관성 장치(300)의 장치 일관성 메모리(320)는 장치 프로세서 코어(311)의 연산을 위한 입력 데이터를 저장할 수 있다.
제1 일관성 장치(200)의 장치 일관성 메모리(220)의 데이터, 제2 일관성 장치(300)의 장치 일관성 메모리(320)의 데이터, 그리고 일관성 호스트(100)의 호스트 일관성 메모리(120) 사이에 캐시 일관성이 유지될 수 있다. 즉, 장치 프로세서 코어(211)의 입력 데이터 및 장치 프로세서 코어(311)의 입력 데이터가 캐시 일관성에 기반하여 준비될 수 있다.
도 7은 전자 장치(10)가 제1 바이어스 모드로 동작할 때의 예를 보여준다. 도 6을 참조하면, 제1 일관성 장치(200)의 장치 일관성 메모리(220)의 데이터, 제2 일관성 장치(300)의 장치 일관성 메모리(320)의 데이터, 그리고 일관성 호스트(100)의 호스트 일관성 메모리(120) 사이에 캐시 일관성이 차단될 수 있다.
제1 일관성 장치(200)의 장치 일관성 메모리(220)는 장치 프로세서 코어(211)의 연산을 위한 입력 데이터를 저장할 수 있다. 장치 프로세서 코어(211)는 일관성 엔진(212)을 통해 일관성 컨트롤러(112)의 제어를 받을 필요 없이, 장치 일관성 메모리(220)에 저장된 데이터에 기반하여 연산을 수행할 수 있다. 따라서, 장치 프로세서 코어(211)의 연산은 빠르게 수행될 수 있다.
장치 프로세서 코어(211)는 연산의 결과를 장치 일관성 메모리(220)에 저장할 수 있다. 캐시 일관성이 차단되므로, 장치 프로세서 코어(211)의 연산 과정은 일관성 호스트(100)에 알려지지 않는다. 장치 프로세서 코어(211)의 연산 과정이 노출되는 것이 방지되고, 원자성 및 고립성이 확보되므로, 장치 프로세서 코어(211)는 장치 일관성 메모리(220)를 안전하게 액세스할 수 있다.
제2 일관성 장치(300)의 장치 일관성 메모리(320)는 장치 프로세서 코어(311)의 연산을 위한 입력 데이터를 저장할 수 있다. 장치 프로세서 코어(311)는 일관성 엔진(312)을 통해 일관성 컨트롤러(112)의 제어를 받을 필요 없이, 장치 일관성 메모리(320)에 저장된 데이터에 기반하여 연산을 수행할 수 있다. 따라서, 장치 프로세서 코어(311)의 연산은 빠르게 수행될 수 있다.
장치 프로세서 코어(311)는 연산의 결과를 장치 일관성 메모리(320)에 저장할 수 있다. 캐시 일관성이 차단되므로, 장치 프로세서 코어(311)의 연산 과정은 일관성 호스트(100)에 알려지지 않는다. 장치 프로세서 코어(311)의 연산 과정이 노출되는 것이 방지되고, 원자성 및 고립성이 확보되므로, 장치 프로세서 코어(311)는 장치 일관성 메모리(320)를 안전하게 액세스할 수 있다.
도 8은 전자 장치(10)가 제1 바이어스 모드의 연산을 완료하고 제2 바이어스 모드로 진입한 때의 예를 보여준다. 도 8을 참조하면, 제1 일관성 장치(200)의 장치 일관성 메모리(220)는 장치 프로세서 코어(211)의 연산의 출력 데이터를 저장할 수 있다. 제2 일관성 장치(300)의 장치 일관성 메모리(320)는 장치 프로세서 코어(311)의 연산의 출력 데이터를 저장할 수 있다.
전자 장치(10)가 제2 바이어스 모드로 진입함에 따라, 일관성 호스트(100), 제1 일관성 장치(200), 그리고 제2 일관성 장치(300)의 캐시 일관성이 복원될 수 있다. 제1 일관성 장치(200)의 연산에 의해 수정된 데이터는 일관성 호스트(100) 그리고/또는 제2 일관성 장치(300)와 공유될 수 있다. 제2 일관성 장치(300)의 연산에 의해 수정된 데이터는 일관성 호스트(100) 그리고/또는 제1 일관성 장치(200)와 공유될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 전자 장치(10)는 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)가 연산들을 수행하는 동안 캐시 일관성을 차단한다. 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)의 연산이 완료되면, 캐시 일관성이 복원된다. 즉, 캐시 일관성이 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)의 연산이 완료될 때까지 지연된다.
캐시 일관성이 지연되는 동안, 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)는 빠르고 안전하게 장치 일관성 메모리(220 그리고/또는 320)를 액세스하여 연산을 수행할 수 있다. 캐시 연관성이 복원될 때, 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)에 의해 수정된 데이터만 공유됨으로써, 캐시 일관성의 복원이 필요한 시간 및 자원이 감소할 수 있다.
특히, 데이터베이스 서버의 경우, 대부분의 연산은 기존에 저장된 데이터에 대해 수행되며, 연산의 결과는 기존에 저장된 데이터의 갱신을 유발한다. 연산의 전 및 후에 캐시 일관성을 통해 입력 데이터 및 출력 데이터를 동기화하고, 그리고 연산 동안에 캐시 일관성을 지연시켜 빠르고 안전한 연산을 지원하는 본 기재의 실시 예에 따른 방법들은 데이터베이스 서버와 같은 환경에서 최적의 성능을 보일 수 있다.
도 9는 본 기재의 일 실시 예에 따른 시스템(1000)을 도시한 도면이다. 도 9의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 9의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 9를 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시 예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)(STRG CTRL)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keypad), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는 외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
예시적으로, 도 1 내지 도 8을 참조하여 설명된 일관성 호스트(100)는 CPU 코어(1110)에 대응하도록 구현될 수 있다. 도 1 내지 도 8을 참조하여 설명된 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)는 가속기(1130)에 대응하도록 구현될 수 있다. 다른 예로서, 도 1 내지 도 8을 참조하여 설명된 일관성 호스트(100)는 메인 프로세서(1100)로 구현될 수 있다. 도 1 내지 도 8을 참조하여 설명된 제1 일관성 장치(200) 그리고/또는 제2 일관성 장치(300)는 메인 프로세서(1100)를 보조하는 별도의 서브 프로세서(예를 들어, 가속기 프로세서)로 구현될 수 있다.
상술된 실시 예들에서, 제1, 제2, 제3 등의 용어들을 사용하여 본 발명의 기술적 사상에 따른 구성 요소들이 설명되었다. 그러나 제1, 제2, 제3 등과 같은 용어들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 발명을 한정하지 않는다. 예를 들어, 제1, 제2, 제3 등과 같은 용어들은 순서 또는 임의의 형태의 수치적 의미를 내포하지 않는다.
상술된 실시 예들에서, 블록들을 사용하여 본 발명의 실시 예들에 따른 구성 요소들이 참조되었다. 블록들은 IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device) 등과 같은 다양한 하드웨어 장치들, 하드웨어 장치들에서 구동되는 펌웨어, 응용과 같은 소프트웨어, 또는 하드웨어 장치와 소프트웨어가 조합된 형태로 구현될 수 있다. 또한, 블록들은 IC 내의 반도체 소자들로 구성되는 회로들 또는 IP(Intellectual Property)로 등록된 회로들을 포함할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10: 전자 장치
100: 일관성 호스트
110: 일관성 호스트 프로세서
111: 호스트 프로세서 코어
112: 일관성 컨트롤러
113: 메모리 컨트롤러
120: 호스트 일관성 메모리
130: 호스트 메모리
200, 300: 일관성 장치
210, 310: 일관성 장치 프로세서
211. 311: 장치 프로세서 코어
212, 312: 일관성 엔진
213, 313: 메모리 컨트롤러
220, 320: 장치 일관성 메모리
230, 330: 장치 메모리

Claims (20)

  1. 프로세서 및 메모리를 포함하는 전자 장치의 동작 방법에 있어서:
    제1 바이어스 모드에서, 외부의 호스트 장치의 제어 없이 상기 프로세서가 상기 메모리를 액세스하는 단계;
    상기 제1 바이어스 모드의 종료 시에, 상기 프로세서가 상기 메모리의 정보를 상기 외부의 호스트 장치로 전송하는 단계; 그리고
    제2 바이어스 모드에서, 상기 프로세서가 상기 외부의 호스트 장치의 제어 하에 상기 메모리를 액세스하는 단계를 포함하는 동작 방법.
  2. 제1항에 있어서,
    상기 제2 바이어스 모드로부터 상기 제1 바이어스 모드로 진입하는 단계를 더 포함하고,
    상기 제2 바이어스 모드로부터 상기 제1 바이어스 모드로 진입하는 단계는:
    상기 프로세서가 상기 외부의 호스트 장치로부터 데이터를 수신하는 단계; 그리고
    상기 프로세서가 상기 수신된 데이터로 상기 메모리를 갱신하는 단계를 포함하는 동작 방법.
  3. 제2항에 있어서,
    상기 제2 바이어스 모드로부터 상기 제1 바이어스 모드로 진입하는 단계는:
    상기 프로세서가 상기 수신된 데이터를 상기 외부의 호스트 장치로 전송하는 단계; 그리고
    상기 외부의 호스트 장치로부터 확인 메시지가 수신되는 것에 응답하여 상기 제1 바이어스 모드로 진입하는 단계를 포함하는 동작 방법.
  4. 제2항에 있어서,
    상기 수신된 데이터는 적어도 하나의 캐시 라인에 대응하는 동작 방법.
  5. 제1항에 있어서,
    상기 제1 바이어스 모드로부터 상기 제2 바이어스 모드로 진입하는 단계를 더 포함하고,
    상기 제1 바이어스 모드로부터 상기 제2 바이어스 모드로 진입하는 단계는:
    상기 프로세서가 상기 메모리의 데이터 중 수정된 데이터의 정보를 상기 외부의 호스트 장치로 전송하는 단계를 포함하는 동작 방법.
  6. 제5항에 있어서,
    상기 제2 바이어스 모드에서, 상기 외부의 호스트 장치의 요청에 따라 상기 수정된 데이터를 상기 외부의 호스트 장치로 전송하는 단계를 포함하는 동작 방법.
  7. 제5항에 있어서,
    상기 제1 바이어스 모드로부터 상기 제2 바이어스 모드로 진입하는 단계는:
    상기 프로세서가 상기 수정된 데이터를 상기 외부의 호스트 장치로 전송하는 단계를 더 포함하는 동작 방법.
  8. 제1항에 있어서,
    제3 바이어스 모드에서, 상기 외부의 호스트 장치의 제어 없이 상기 프로세서가 상기 메모리를 액세스하는 단계를 더 포함하는 동작 방법.
  9. 제8항에 있어서,
    상기 제2 바이어스 모드는 CXL(Compute Express Link)TM의 호스트 바이어스(host bias) 모드이고, 그리고 상기 제3 바이어스 모드는 CXLTM의 장치 바이어스(device bias) 모드인 동작 방법.
  10. 프로세서 및 메모리를 포함하는 전자 장치의 동작 방법에 있어서:
    제1 바이어스 모드에서, 상기 프로세서에 의해, 외부의 전자 장치가 외부의 전자 장치의 메모리를 액세스하는 것을 방치하는 단계;
    상기 제1 바이어스 모드의 종료 시에, 상기 프로세서에 의해, 상기 외부의 전자 장치의 메모리의 정보를 상기 외부의 전자 장치로부터 수신하는 단계; 그리고
    제2 바이어스 모드에서, 상기 프로세서에 의해, 상기 외부의 전자 장치가 상기 외부의 전자 장치의 메모리를 액세스하는 것을 제어하는 단계를 포함하는 동작 방법.
  11. 제10항에 있어서,
    상기 제2 바이어스 모드로부터 상기 제1 바이어스 모드로 진입하는 단계를 더 포함하고,
    상기 제2 바이어스 모드로부터 상기 제1 바이어스 모드로 진입하는 단계는:
    상기 프로세서에 의해, 상기 메모리의 데이터 중 상기 외부의 전자 장치와 연관되며 수정된 데이터를 검출하는 단계; 그리고
    상기 프로세서에 의해, 상기 수정된 데이터를 상기 외부의 전자 장치로 전송하는 단계를 포함하는 동작 방법.
  12. 제11항에 있어서,
    상기 제2 바이어스 모드로부터 상기 제1 바이어스 모드로 진입하는 단계는:
    상기 프로세서에 의해, 상기 외부의 전자 장치로부터 데이터를 수신하는 단계; 그리고
    상기 프로세서에 의해, 상기 수정된 데이터 및 상기 수신된 데이터가 일치하는 것에 응답하여, 상기 외부의 전자 장치로 확인 메시지를 전송하는 단계를 더 포함하는 동작 방법.
  13. 제10항에 있어서,
    상기 제1 바이어스 모드에서, 상기 프로세서에 의해, 상기 외부의 전자 장치의 메모리와 연관되어 상기 메모리에 할당된 저장 공간의 데이터를 유지하는 단계를 더 포함하는 동작 방법.
  14. 제10항에 있어서,
    상기 제1 바이어스 모드의 종료 시에 상기 제2 바이어스 모드로 진입하는 것에 응답하여, 상기 프로세서에 의해, 상기 외부의 전자 장치의 메모리의 정보에 대응하는 데이터를 상기 메모리에서 무효화하는 단계를 더 포함하는 동작 방법.
  15. 제14항에 있어서,
    상기 제2 바이어스 모드에서 상기 무효화된 데이터에 대한 요청에 응답하여, 상기 프로세서에 의해, 상기 외부의 전자 장치의 메모리의 정보에 대응하는 데이터를 상기 외부의 장치에 요청하는 단계;
    상기 프로세서에 의해, 상기 외부의 장치로부터 상기 외부의 전자 장치의 메모리의 정보에 대응하는 데이터를 수신하는 단계; 그리고
    상기 프로세서에 의해, 상기 수신된 데이터로 상기 메모리의 데이터를 갱신하는 단계를 포함하는 동작 방법.
  16. 제10항에 있어서,
    상기 제1 바이어스 모드의 종료 시에, 상기 프로세서에 의해, 상기 외부의 전자 장치의 메모리의 정보에 대응하는 데이터를 상기 외부의 전자 장치로부터 수신하는 단계; 그리고
    상기 프로세서에 의해, 상기 외부의 전자 장치의 메모리의 정보에 기반하여, 상기 수신된 데이터로 상기 메모리의 데이터를 갱신하는 단계를 더 포함하는 동작 방법.
  17. 호스트 장치 및 가속기를 포함하는 전자 장치의 동작 방법에 있어서:
    상기 가속기가 연산을 수행하지 않는 동안, 상기 호스트 장치에 의해, 상기 가속기의 메모리와 상기 호스트 장치의 메모리의 일관성을 유지하는 단계;
    상기 가속기가 연산을 수행하는 동안, 상기 호스트 장치에 의해, 상기 가속기의 메모리와 상기 호스트 장치의 메모리의 일관성을 차단하는 단계; 그리고
    상기 가속기가 연산을 완료한 후에, 상기 호스트 장치에 의해, 상기 가속기의 메모리와 상기 호스트 장치의 메모리의 일관성을 복원하는 단계를 포함하는 동작 방법.
  18. 제17항에 있어서,
    상기 가속기가 연산을 수행하는 동안, 상기 호스트 장치에 의해, 상기 가속기의 메모리와 상기 호스트 장치의 메모리의 일관성을 차단하는 단계는:
    상기 호스트 장치에 의해, 상기 호스트 장치의 메모리의 데이터 중 상기 가속기와 연관되며 수정된 데이터를 상기 가속기로 전송하는 단계; 그리고
    상기 가속기에 의해, 상기 전송된 데이터로 상기 가속기의 메모리의 데이터를 갱신하는 단계를 포함하는 동작 방법.
  19. 제17항에 있어서,
    상기 가속기가 연산을 완료한 후에, 상기 호스트 장치에 의해, 상기 가속기의 메모리와 상기 호스트 장치의 메모리의 일관성을 복원하는 단계는:
    상기 가속기에 의해, 상기 가속기의 메모리의 데이터 중 수정된 데이터의 정보를 상기 호스트 장치로 전송하는 단계;
    상기 호스트 장치에 의해, 상기 수정된 데이터의 정보에 대응하는 데이터를 상기 호스트 장치의 메모리에서 무효화하는 단계;
    상기 수정된 데이터에 대한 요청이 발생하는 것에 응답하여, 상기 호스트 장치에 의해, 상기 가속기로부터 상기 수정된 데이터를 읽어 상기 메모리의 데이터를 갱신하는 단계를 포함하는 동작 방법.
  20. 제17항에 있어서,
    상기 가속기가 연산을 완료한 후에, 상기 호스트 장치에 의해, 상기 가속기의 메모리와 상기 호스트 장치의 메모리의 일관성을 복원하는 단계는:
    상기 가속기에 의해, 상기 가속기의 메모리의 데이터 중 수정된 데이터의 정보를 상기 호스트 장치로 전송하는 단계;
    상기 가속기에 의해, 상기 가속기의 메모리의 데이터 중 상기 수정된 데이터를 상기 호스트 장치로 전송하는 단계; 그리고
    상기 호스트 장치에 의해, 상기 수정된 데이터의 정보에 기반하여, 상기 수정된 데이터로 상기 호스트 장치의 메모리의 데이터를 갱신하는 단계를 포함하는 동작 방법.
KR1020210170435A 2021-12-01 2021-12-01 전자 장치의 동작 방법 KR20230082484A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210170435A KR20230082484A (ko) 2021-12-01 2021-12-01 전자 장치의 동작 방법
US17/867,754 US20230169022A1 (en) 2021-12-01 2022-07-19 Operating method of an electronic device
CN202211030985.3A CN116204454A (zh) 2021-12-01 2022-08-26 电子装置的操作方法
EP22193823.6A EP4191419A1 (en) 2021-12-01 2022-09-05 Operating method of an electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210170435A KR20230082484A (ko) 2021-12-01 2021-12-01 전자 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20230082484A true KR20230082484A (ko) 2023-06-08

Family

ID=86500240

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210170435A KR20230082484A (ko) 2021-12-01 2021-12-01 전자 장치의 동작 방법

Country Status (3)

Country Link
US (1) US20230169022A1 (ko)
KR (1) KR20230082484A (ko)
CN (1) CN116204454A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102607421B1 (ko) * 2020-04-27 2023-11-29 한국전자통신연구원 광 회선을 통해 상호 연결된 컴퓨팅 자원 분할 협업 시스템, 자원 분할 협업 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11263143B2 (en) * 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
US20210011864A1 (en) * 2020-09-25 2021-01-14 Francesc Guim Bernat System, apparatus and methods for dynamically providing coherent memory domains
US11442858B1 (en) * 2021-03-10 2022-09-13 Micron Technology, Inc. Bias control for a memory device
US11966335B2 (en) * 2021-08-10 2024-04-23 Google Llc Hardware interconnect with memory coherence

Also Published As

Publication number Publication date
US20230169022A1 (en) 2023-06-01
CN116204454A (zh) 2023-06-02

Similar Documents

Publication Publication Date Title
US9547597B2 (en) Selection of post-request action based on combined response and input from the request source
US9251077B2 (en) Accelerated recovery for snooped addresses in a coherent attached processor proxy
US9229868B2 (en) Data recovery for coherent attached processor proxy
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
US11586369B2 (en) Hybrid hardware-software coherent framework
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
US9251076B2 (en) Epoch-based recovery for coherent attached processor proxy
TWI499908B (zh) 用以維持共享記憶體編程中之釋出一致性的方法及系統
KR20220002480A (ko) Ml 가속기들에 대한 머신 학습 모델 업데이트들
US20140365733A1 (en) Integrated circuit system having decoupled logical and physical interfaces
EP4283472A1 (en) Method for caching data, a host device for caching data, and a storage system for caching data
CN117546149A (zh) 用于执行共享存储器操作的系统、装置和方法
CN114341821A (zh) 生产者至消费者的主动直接高速缓存传送
US20220114099A1 (en) System, apparatus and methods for direct data reads from memory
KR20230082484A (ko) 전자 장치의 동작 방법
US9146872B2 (en) Coherent attached processor proxy supporting master parking
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
KR20230078577A (ko) 동기식 쓰기 방법 및 장치, 스토리지 시스템 및 전자 장치
EP4191419A1 (en) Operating method of an electronic device
TWI724004B (zh) 應用處理器與其運作方法、及資料處理系統與其運作方法
JP6493187B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法
CN114846455A (zh) 系统直接存储器访问引擎卸载
KR20230037906A (ko) 연산 스토리지 장치, 및 상기 연산 스토리지 장치를 포함하는 스토리지 시스템