KR101677900B1 - 데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법 - Google Patents

데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법 Download PDF

Info

Publication number
KR101677900B1
KR101677900B1 KR1020127034220A KR20127034220A KR101677900B1 KR 101677900 B1 KR101677900 B1 KR 101677900B1 KR 1020127034220 A KR1020127034220 A KR 1020127034220A KR 20127034220 A KR20127034220 A KR 20127034220A KR 101677900 B1 KR101677900 B1 KR 101677900B1
Authority
KR
South Korea
Prior art keywords
access
access operation
local
processing
shared
Prior art date
Application number
KR1020127034220A
Other languages
English (en)
Other versions
KR20130114606A (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 KR20130114606A publication Critical patent/KR20130114606A/ko
Application granted granted Critical
Publication of KR101677900B1 publication Critical patent/KR101677900B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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
    • 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
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data

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)
  • Multi Processors (AREA)

Abstract

데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치와 방법이 제공된다. 데이터 처리장치는 그것과 관련된 로컬 캐시 구조를 각각 갖는 복수의 처리 유닛을 구비한다. 로컬 캐시 구조들 중 어느 한 개에 발행된 공유 액세스 연산을 조정하는 공유 액세스 조정회로가 더 설치된다. 공유 액세스 동작에 대해, 이 공유 액세스 연산이 발행되는 로컬 캐시 구조와 관련된 액세스 제어회로가 이 로컬 캐시 구조에 대해 로컬 액세스 연산을 수행하고, 더구나 공유 액세스 조정회로에 공유 액세스 신호를 발행한다. 로컬 액세스 연산에 대해, 액세스 제어회로는 보통 관련된 로컬 캐시 구조에 대해 로컬 액세스 연산을 수행하지만, 공유 액세스 조정회로에 통보하지 않는다. 그러나, 액세스 연산 확장값이 설정되면, 액세스 제어회로는 이와 같은 로컬 액세스 연산을 공유 액세스 연산으로서 처리한다. 이와 같은 접근방식은, 운영 체계 및/또는 애플리케이션 프로그램이 한 개의 처리 유닛으로부터 다른 처리 유닛으로 이동한 후에도 정확한 연산을 보장한다.

Description

데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법{APPARATUS AND METHOD FOR HANDLING ACCESS OPERATIONS ISSUED TO LOCAL CACHE STRUCTURES WITHIN A DATA PROCESSING APPARATUS}
본 발명은, 데이터 처리장치, 특히 로컬 캐시 구조를 각각 갖는 복수의 처리 유닛을 제공하는 데이터 처리장치 내부의 이와 같은 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법에 관한 것이다.
2개 이상의 처리 유닛들, 예를 들면 프로세서 코어가 공유 메모리에 대한 액세스를 공유하는 다중처리 시스템을 제공하는 것이 알려져 있다. 이와 같은 시스템은 보통 각각의 데이터 처리 연산을 병렬로 실행하도록 서로 다른 프로세서 코어들을 배치함으로써 더 높은 성능을 얻는데 사용된다.
이와 같은 다중처리 시스템 내부의 데이터에 대한 액세스 속도를 더욱 더 증진시키기 위해, 공유 메모리에 유지된 데이터의 서브셋(subset)을 기억하기 위한 적어도 1개의 로컬 캐시 구조를 처리 유닛들의 각각에 설치하는 것이 알려져 있다. 이와 같은 로컬 캐시 구조는 다양한 형태, 예를 들어, 처리 유닛들에 의해 처리된 데이터를 기억하는데 사용되는 데이터 캐시, 처리 유닛들에 의해 실행하기 위한 명령을 기억하는데 사용되는 명령 캐시, 처리 유닛에 의해 발행된 가상 어드레스를 물리 어드레스로 변환할 때 사용되는 패이지 테이블 정보를 기억하는데 사용된 변환 색인 버퍼(translation lookaside buffer: TLB) 등의 형태를 취할 수 있다.
다중처리 시스템 내부에서는, 애플리케이션들이 1개의 처리 유닛으로부터 다른 처리 유닛으로 이동해도 된다. 그 결과, 한 개의 처리 유닛에서 실행시에 애플리케이션에 의해 사용된 데이터가 이 애플리케이션이 다른 처리 유닛으로 이동한 후에 이 처리 유닛의 로컬 캐시 구조 내부에 캐시된(cached) 상태로 남아 있을 수도 있을 가능성이 존재한다. 처리 유닛이 항상 데이터의 가장 최신의 버전을 액세스하도록 보장하는 것을 목표로, 다수의 로컬 캐시 구조에 유지된 데이터를 파악하기 위해 일관성(coherency) 메카니즘을 제공하는 것이 알려져 있기는 하지만, 로컬 캐시 구조의 1개 이상의 엔트리(entry)에 대해 행해진 연산이, 이와 같은 연산의 실행이 적절할 때, 다른 처리 유닛의 로컬 캐시 구조에 유지된 데이터에 대해, 이에 대응하는 연산이 행해지지 않게 할지도 모르는 경우가 여전히 발생할 수 있다. 이와 같은 경우의 한가지 예는 캐시 유지보수(maintenance) 연산의 실행이다.
캐시 유지보수 연산은 로컬 캐시 구조 내부의 1개 이상의 엔트리의 상태를 갱신하기 위해 운영체계에 의해 발생되는 일이 많다. 예를 들어, 운영체계가 하이퍼바이저 소프트웨어 계층에 의해 하드웨어 플랫폼으로부터 차단된 단일 프로세서 운영체계인 경우와 같이, 데이터 처리장치에 의해 제공된 복수의 처리 유닛을 운영체계가 완전히 알지 못하는 경우에는, 캐시 유지보수 연산이 적용될 수 있는 데이터가 다른 처리 유닛의 로컬 캐시 구조 내부에 기억되더라도, 운영체계가 동작하고 있는 처리 유닛과 관련된 로컬 캐시 구조에 대해서만 행해지는 캐시 유지보수 연산을 운영체계가 발생할지도 모른다. 단순하게 예를 들어, 특정한 어드레스 범위에 대한, 또는 특정한 프로세스 식별자(프로세스 ID)에 대한 모든 캐시된 엔트리들이 무효로 되어야 한다고 캐시 유지보수 연산이 식별한 상황을 고려하자. 운영체계가 현재 실행하고 있는 처리 유닛의 로컬 캐시 구조에 대해 이 연산이 행해질 때, 특정된 어드레스 범위에 속하거나 특정된 프로세스 ID와 연관된 로컬 캐시 구조에 캐시된 모든 엔트리들을 이와 같은 캐시 유지보수 연산이 정확하게 무효로 하게 된다. 그러나, 다른 처리 유닛들의 대응하는 로컬 캐시 구조에 유지된 데이터에 대해서는 어떤 행해도 취해지지 않는다. 전술한 것과 같이, 이들 처리 유닛들은 사실상 이와 같은 캐시 유지보수 연산의 주체가 되는 것으로 의도되었던 데이터를 여전히 유지하여도 되지만, 운영체계가 하드웨어 아키텍처를 알고 있지 않는다는 사실로 인해, 이들 엔트리는 캐시 유지보수 연산을 겪지 않게 된다.
이와 같은 문제는 하이퍼바이저 소프트웨어가 사용될 때 발생할 뿐만 아니라, 하이퍼바이저 소프트웨어 계층이 사용될 때에도 이 문제가 자주 발생할 가능성이 있다. 특히, 다중처리 시스템은 처리회로 상에서 적어도 1개의 가상머신의 실행을 지원하기 위한 하이퍼바이저 소프트웨어를 실행하여도 되는데, 이때 각각의 가상 머신은 1개 이상의 애플리케이션 프로그램을 실행하는 운영체계를 포함한다. 이와 같은 상황에서, 운영체계와 1개 이상의 애플리케이션 프로그램은 기반을 이루는 하드웨어 플랫폼을 알 필요가 없으며, 특히 다중 처리 시스템이 사용되고 있다는 것을 반드시 알아차리는 것은 아니다. 따라서, 애플리케이션 프로그램 및/또는 운영체계가 단일 프로세서 환경을 가정하는 캐시 유지보수 연산을 발생하게 되므로, 전술한 문제를 일으킬 가능성이 있다.
이와 같은 문제를 해소하는 한가지 방법은, 운용체계 및/또는 애플리케이션들이 한 개의 처리 유닛으로부터 다른 처리 유닛으로 이동(여기에서는 "전환"이라고도 한다)할 때 다양한 캐시 유지 보수 연산을 하이퍼바이저가 행하는 것이다. 예를 들어, 전환된 운용체계 및/또는 애플리케이션 프로그램이 새로운 프로세서 코어 상에서 연산을 개시하는 것이 허용되기 전에, 하이퍼바이저가 데이터 캐시 소거(clean) 및 무효 연산, 명령 캐시 무효 연산, TLB 무효 연산 등을 광범위하게 행할 수도 있다. 그러나, 이와 같은 접근방법이 문제를 해소할지도 모르지만, 이것은 성능에 상당히 영향을 미치고, 특히 다중처리 플랫폼을 사용하는 잠재적인 이점이 구현되지 못하게 한다.
또 다른 접근방법은, 운영체계 및/또는 애플리케이션들이 소스 처리 유닛으로부터 목적지 처리 유닛으로 이동할 때, 나중에 목적지 프로세서에서 행해질 연산의 일부에 대한 타겟이 될 가능성이 있는 것으로 소스 처리 유닛을 하이퍼바이저 소프트웨어가 마크하는 것이다. 그후, 하이퍼바이저는 이와 같은 연산과 마주칠 때 이 연산을 트랩(trap)하도록 목적지 프로세서를 더 프로그램해야 하므로, 언제 이와 같은 연산이 발행되었는지를 하이퍼바이저가 통보받게 된다. 이때, 하이퍼바이저 소프트웨어는, 이와 같은 연산이 목적지 프로세서 뿐만 아니라 소스 프로세서에서도 수행할 필요가 있는지 여부를 결정하게 된다. 그러나, 이와 같은 접근방법의 중대한 문제점은, 목적지 프로세서에 대해 행해지는 연산을 트랩한다는 필요성이다. 이와 같은 구성은, 하이퍼바이저가 필요한 것보다 더 자주 호출되기 때문에, 상당한 성능 불이익을 초래한다. 특히, 트랩핑(trapping) 기능이 정밀하게 설계되지 않으면, 소스 프로세서와 관련하여 어떤 동작도 요구되지 않는 다수의 연산에 대해 하이퍼바이저가 호출될지도 모른다. 연산이 목적지 프로세서에서 뿐만 아니라 소스 프로세서에서 행해질 필요가 있는지 아닌지 결정하기 위해 하이퍼바이저 소프트웨어가 연산을 이해할 필요가 있으므로, 상당한 복잡성 문제도 존재한다.
따라서, 이와 같은 로컬 캐시 구조를 각각 갖는 복수의 처리 유닛을 갖는 데이터 처리 시스템 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 개량된 기술을 제공하는 것이 바람직할 것이다.
제 1 면에 따르면, 본 발명은, 데이터 처리장치로서, 공유 메모리 내부의 데이터에 대한 액세스를 필요로 하는 데이터 처리 연산을 행하는 복수의 처리 유닛을 포함하는 처리회로를 구비하고, 각각의 처리 유닛은, 이 처리 유닛과 관련되고 이 처리 유닛에 의해 액세스하기 위한 상기 데이터의 서브셋을 기억하는 로컬 캐시 구조와, 상기 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 액세스 제어회로를 갖고, 상기 로컬 캐시 구조에 대한 적어도 한가지 종류의 액세스 연산이 로컬 액세스 연산 또는 공유 액세스 연산으로서 발행되고, 상기 데이터 처리장치는, 액세스 연산 확장값(extension value)을 기억하는 구성 기억장치(configuration storage)와, 상기 복수의 처리 유닛에 의한 상기 공유 액세스 연산의 처리를 조정하는 공유 액세스 조정(coordination)회로를 더 구비하고, 상기 공유 액세스 연산의 수신시에, 상기 액세스 제어회로가 상기 관련된 로컬 캐시 구조에 대해 상기 로컬 액세스 연산을 수행하는 것 이외에 상기 공유 액세스 조정회로에 대해 공유 액세스 신호를 발행하고, 상기 로컬 액세스 연산의 수신시에, 상기 액세스 연산 확장값이 설정되지 않은 경우, 상기 액세스 제어회로는 상기 공유 액세스 조정회로에 상기 공유 액세스 신호를 발행하지 않고 상기 관련된 로컬 액세스 구조에 대해 상기 로컬 액세스 연산을 행하도록 구성되고, 상기 액세스 연산 확장값이 설정된 경우, 상기 액세스 제어회로는 상기 로컬 액세스 연산을 상기 공유 액세스 연산으로서 처리하도록 구성된, 데이터 처리장치를 제공한다.
본 발명에 따르면, 특정한 종류의 액세스 연산이 로컬 액세스 연산 또는 공유 액세스 연산으로 발행된다. 그후, 액세스 연산 확장값이 설정되어 있는지 아닌지에 의존하여 로컬 액세스 연산치 처리되는 방식으로, 이 액세스 연산 확장값을 기억하기 위해 구성 기억장치가 제공된다. 로컬 캐시 구조와 관련된 액세스 제어회로에 의해 공유 액세스 연산이 수신되면, 액세스 연산 확장값의 값이 관련이 없으며, 액세스 제어회로는 단지 관련된 로컬 캐시 구조에 대해 로컬 액세스 연산을 수행하고, 더구나 액세스 제어회로는 공유 액세스 신호를 공유 액세스 조정회로에 전송한다. 그후, 공유 액세스 조정회로는, 다른 처리 유닛들에 신호를 동보전송(broadcast)하여 그들의 관련된 로컬 캐시 구조에 대해서도 로컬 액세스 연산이 행해지게 하거나, 이와 달리, 공유 액세스 조정회로에 의해 유지된 상태를 고려하여 이와 같은 신호를 전송할 처리 유닛들의 서브셋을 결정하게 된다.
액세스 제어회로가 로컬 액세스 연산을 수신하면, 액세스 연산 확장값이 설정되지 않은 경우에는, 액세스 제어회로가 단순히 관련된 로컬 액세스 구조에 대해 로컬 액세스 연산을 수행한다. 그러나, 액세스 연산 확장값이 설정된 경우에는, 본 발명에 따라, 로컬 액세스 연산만이 수신되었더라도, 액세스 제어회로가 로컬 액세스 연산을 공유 액세스 연산으로서 처리한다.
이와 같은 접근방법에 의해, 전술한 문제가 해소된다는 것이 명백하다. 특히, 액세스 연산 확장값이 일단 설정되면, 로컬 액세스 연산이 공유 액세스 연산으로 처리되게 되므로, 이 로컬 액세스 연산이 발행되도록 하는 엔티티(entity)가 다중처리 시스템의 구조에 대한 지식을 갖고 있는지 여부, 또는 엔티티가 타겟으로 하려고 시도하고 데이터가 다른 처리 유닛의 로컬 캐시 구조에 실제로 기억될 가능성은 중요하지 않다.
더구나, 다중처리 플랫폼에서 실행되는 성능상의 이점이 유지되므로, 본 발명의 접근방법은 전술한 메카니즘들에 비해 성능을 상당히 향상시키고 복잡성을 줄인다. 하이퍼바이저 소프트웨어가 이용되는 실시예들에서는, 로컬 액세스 연산을 트랩할 필요가 없고, 더구나 이와 같은 트랩된 연산이 어떻게 처리되어야 하는지를 결정하기 위해 하이퍼바이저 소프트웨어가 연산을 이해할 필요도 없다.
액세스 연산 확장값이 일단 설정되면, 일 실시예에서는, 로컬 액세스 연산의 소스에 무관하게, 이것이 모든 그후의 액세스 연산을 공유 액세스 연산으로 처리되게 한다. 그러나, 다른 실시예에서는, 상기 처리회로에서 실행되는 소프트웨어가 복수의 계층 레벨(hierarchical level)의 소프트웨어로 이루어지고, 상기 액세스 연산 확장값은 소정의 계층 레벨에서 실행되는 소프트웨어에 의해 설정 및 설정해제되고, 상기 소정의 계층 레벨보다 낮은 계층 레벨의 소프트웨어에 의해 발행된 로컬 액세스 연산을 처리할 때에는 상기 액세스 제어회로가 상기 액세스 연산 확장값에만 응답한다. 따라서, 한가지 예를 들어, 하이퍼바이저 소프트웨어가 사용되는 실시예를 고려하면, 하이퍼바이저 소프트웨어는 최고 계층 레벨을 형성하여도 되고, 운영 체계가 더 낮은 계층 레벨을 형성하여도 되며, 이 운영체계 상에서 실행되는 애플리케이션 프로그램들이 더 낮은 계층 레벨을 형성해도 된다. 하이퍼바이저 레벨에 의해 액세스 연산 확장값이 설정되면, 운영체계 또는 애플리케이션 프로그램들에 의해 발행된 로컬 액세스 연산이 공유 액세스 연산으로 처리되는 한편, 하이퍼바이저 소프트웨어가 로컬 액세스 연산으로 처리되는 로컬 액세스 연산을 계속 발행할 수 있다. 이것은, 예를 들어, 운영체계가 단일 프로세서 운영체계로서 처리회로의 다중처리 속성을 알지 못하는 경우에 유용할 수 있다. 다른 예에서는, 예를 들어, 운영체계가 어떤 프로세서를 연산이 타겟으로 삼아야 하는지 알고 있는 식으로 운영체계가 최적화된 경우에는, 운영체계가 처리회로의 다중 프로세서 속성을 알고 있더라도, 상기한 접근방법이 여전히 유용할 수 있지만, 운영체계가 하이퍼바이저 아래에서 실행되는 상황에서는 이와 같이 알고 있는 것이 어쩌면 틀릴 수도 있다.
다른 실시예에서는, 운영체계에 의해 액세스 연산 확장값이 설정되는 경우에, 기반을 이루는 애플리케이션 프로그램들에 의해 발행된 로컬 액세스 연산이 공유 액세스 연산으로 처리되지만, 운영체계(와 사실상 운영체계 위의 하이퍼바이저 레벨)가 액세스 제어회로에 의해 로컬 액세스 연산으로서 처리되는 로컬 액세스 연산을 계속 발행할 수 있다.
로컬 액세스 연산 또는 공유 액세스 연산으로서 발행될 수 있는 상기한 적어도 한가지 종류의 액세스 연산은 다양한 형태를 취할 수 있다. 일 실시예에서, 이와 같은 한가지 종류의 액세스 연산은 로컬 액세스 구조의 적어도 한 개의 엔트리 내부에 기억된 데이터의 상태를 갱신하기 위해 발행된 유지보수 액세스 연산을 포함한다. 따라서, 유지보수 액세스 연산은 일반적으로 캐시 구조 내부에 기억된 데이터 그 자체를 갱신하지 않고, 그 대신에, 데이터와 관련하여 로컬 캐시 구조에 유지된 관련된 상태로의 변경을 초래하게 된다. 한가지 특정한 실시예에서는, 상기 유지보수 액세스 연산은 로컬 캐시 구조의 상기 적어도 한 개의 엔트리에 대해 소거 연산 및 무효 연산 중 적어도 한가지를 수행한다. 소거 연산은 오손되고(dirty) 유효한 데이터가 메모리로 축출되도록(evicted) 하는데, 이 오손 데이터는 메모리 내부에 유지된 대응하는 데이터보다 더 최신의 데이터이다. 이와 같은 유지보수 액세스 연산은 보통 데이터 캐시와 관련하여 행해진다. 무효 연산은, 예를 들어 로컬 캐시 구조 내부의 특정한 엔트리와 관련된 유효 비트를 리셋함으로써, 이 엔트리의 현재 콘텐츠를 무효화한다. 무효 연산은 다양한 다른 로컬 캐시 구조, 예를 들어 명령 캐시, 데이터 캐시, TLB 등과 관련하여 사용되는 일이 많다.
일 실시예에서는, 상기 처리회로가 상기 처리회로 상의 적어도 한 개의 가상 머신의 실행을 지원하기 위해 하이퍼바이저 소프트웨어를 실행하고, 이 가상 머신은 상기 적어도 한가지 종류의 액세스 연산을 발행하도록 구성된다. 각각의 가상 머신은 일반적으로 한 개 이상의 애플리케이션 프로그램을 실행하는 운영체계를 포함한다. 전술한 것과 같이, 다중처리 시스템 내부에서의 이와 같은 하이퍼바이저 소프트웨어의 한가지 용도는, 하이퍼바이저 소프트웨어가 운영체계로부터 하드웨어 플랫폼의 특정한 구조를 차단하면서, 단일 프로세서를 알고 있는 운영체계가 다중처리 시스템 상에서 실행될 수 있게 하는 것이다.
그러나, 운영체계가 다중 프로세서 가능(multi-processor enabled)이더라도, 하이퍼바이저 소프트웨어의 제어하에서 이와 같은 운영체계를 실행하는데 대한 이점이 여전히 존재할 수 있다. 예를 들어, 다수의 운영체계가 주어진 다중 프로세서 시스템 상에서 공존하는 것이 요구될 때, 다중 프로세서 가능 운영체계가 하이퍼바이저 소프트웨어의 제어하에서 실행되어도 된다. 이와 같은 접근방법에 의해, 2개의 알려진 운영체계가, 이들 운영체계의 어느 한 개에 변형을 가하지 않고도, 하드웨어 상에서 동시에 실행될 수 있다. 다른 예로서, 프로세서의 부품들의 기동과 전원 차단(powering up and down)이 하이퍼바이저의 제어를 받고 있는 다중 프로세서 시스템에서도 하이퍼바이저 소프트웨어가 사용되는 일이 많다. 이와 같은 실시예들에서는, 운용체계가 실행되고 있는 하드웨어가 작업부하에 의존하여 활성화된 다른 수의 프로세서를 갖는다는 것을 운영체계가 일반적으로 알지 못하고 있다. 하이퍼바이저 레벨에서 다중 프로세서 시스템의 기동/전원 차단을 제어함으로써, 지원된 다수의 운영체계에 대한 변형을 필요로 하지 않으면서, OEM 벤더들이 부가가치를 제공할 수 있다.
하이퍼바이저 소프트웨어를 사용할 때, 하이퍼바이저 소프트웨어가 특정한 시점에서 운영체계를 처리 유닛들 중에서 한 개로부터 처리유닛들 중에서 다른 것으로 이동하여, 이 이동처리후에, 운영체계가, 기반을 이루는 애플리케이션들과 함께, 운영체계가 이동한 처리 유닛 상에서 연산을 재개하게 되는 경우가 일반적이다. 한가지 특정한 실시예에서는, 하이퍼바이저 소프트웨어가 운영체계를 이와 같은 방식으로 이동하면, 하이퍼바이저 소프트웨어는 액세스 연산 확장값이 설정되게 한다. 액세스 연산 확장값의 설정 후에, 액세스 제어회로는 상기 적어도 한 개의 가상 머신에 의해 발행된 로컬 액세스 연산을 공유 액세스 연산으로서 처리하는 반면에, 하이퍼바이저 소프트웨어에 의해 발행된 로컬 액세스 연산을 로컬 액세스 연산으로서 계속 처리한다.
전술한 것과 같이, 로컬 캐시 구조는 다양한 형태를 취할 수 있다. 일 실시예에서, 상기 로컬 캐시 구조는, 상기 데이터 처리 연산을 위한 피연산자 데이터로서 사용된 데이터를 캐싱(caching)하는 데이터 캐시이다. 이와 달리, 상기 로컬 캐시 구조는, 상기 공유 메모리 내부의 페이지 테이블로부터 얻어지고 관련된 처리 유닛 내부에서 가상 어드레스로부터 물리 어드레스의 변환을 행할 때 사용되는 페이지 테이블 데이터를 캐싱하는 변환 색인 버퍼를 포함하여도 된다. 다른 예로서, 상기 로컬 캐시 구조는 상기 데이터 처리 연산을 정의하는데 사용된 명령을 캐싱하는 명령 캐시를 포함하여도 된다. 또 다른 예로서, 상기 로컬 캐시 구조는, 어떤 분기가 취해질지 취해지지 않을지 예측할 때 분기 예측부에 의해 참조되는 데이터를 기억하는데 사용되는 분기 이력 버퍼(branch history buffer), 또는 분리 명령에 대한 타겟 어드레스들을 기억하는데 사용되는 분기 타겟 버퍼를 포함하여도 된다.
공유 액세스 조정회로가 공유 액세스 신호에 응답하는 다양한 방식이 존재한다. 일 실시예에서는, 상기 공유 액세스 조정회로가 상기 공유 액세스 신호에 응답하여, 상기 공유 액세스 신호를 발행한 액세스 제어회로를 갖는 처리 유닛을 제외한 처리 유닛들 각각에 로컬 액세스 연산 요청을 동보전송함으로써, 처리 유닛들 각각에 대해 로컬 액세스 연산이 행해진다. 따라서, 이와 같은 실시예들에서는, 공유 액세스 조정회로는, 원래의(original) 공유 액세스 연산(원래의 공유 액세스 연산은 원래대로 발행된 공유 액세스 연산이거나, 액세스 연산 확장값이 설정된 것으로 인해 액세스 제어회로에 의해 공유 액세스 연산이 되도록 갱신된 로컬 액세스 연산)의 주체인 데이터를 어떤 처리 유닛이 포함하는지를 판정하기 위한 시도를 하지 않는다. 그 대신에, 공유 액세스 조정회로는 단순히 요청을 처리 유닛들 각각에 동보전송하여, 이들 처리 유닛이 원래의 공유 액세스 연산에 의해 지정된 데이터에 대해 로컬 액세스 연산을 행하게 한다.
또 다른 실시예에서는, 상기 공유 액세스 조정회로가 상기 공유 액세스 신호에 응답하여, 공유 액세스 연산에 의해 식별된 데이터를 포함할 수 있는 로컬 캐시 구조를 갖는 상기 복수의 처리 유닛으로부터 처리 유닛들의 서브셋을 결정하고, 상기 서브셋에 있는 처리 유닛들 각각에 로컬 액세스 연산 요청을 발행한다. 이와 같은 접근방법은, 공유 액세스 조정회로가 데이터가 캐시된 위치의 기록을 유지하여, 특정한 데이터에 대해 어떤 로컬 캐시 구조가 잠재적으로 이 데이터의 복사본을 기억하는지를 아는 경우에 가능하다. 이와 같은 구성은, 공유 액세스 조정회로에 의해 발행된 요청이 처리 유닛들의 서브셋에 한정될 수 있게 함으로써, 에너지 효율적인 이득을 제공하고, 행해지는 불필요한 액세스 연산의 수를 감소시켜 더 우수한 성능을 잠재적으로 성취하게 한다.
본 발명의 실시예들의 전술한 기술은 액세스 연산과 관련하여 사용되기는 하지만, 이 기술을 다른 종류의 연산과 관련하여 사용할 수도 있다. 예를 들어, 이전의 메모리 연산, 예를 들면 기록 연산이 시스템의 다른 부분이 알 수 있도록 애플리케이션 프로그램이 보장하기를 원하거나, 그후의 메모리 연산들이 이와 같은 이전의 메모리 연산에 대해 정렬되도록(ordered) 애플리케이션 프로그램이 보장하기를 원할 때, 이와 같은 애플리케이션 프로그램이 메모리 장벽(memory barrier) 연산을 실행하여, 주어진 순서의 메모리 액세스를 실행하거나, 이전의 메모리 연산의 결과를 알 수 있도록 보장한다. 그러나, 해당 메모리 연산과 메모리 장벽 연산 사이에서 애플리케이션 프로그램이 한 개의 메모리 유닛으로부터 다른 메모리 유닛으로 이동한 경우에는, 메모리 장벽 연산이 그것의 의도하는 목적을 달성하지 않게 될 가능성이 있다. 그러나, 일 실시예에 따르면, 상기 처리 유닛들 중에서 첫 번째 처리 유닛에 의한 메모리 장벽 연산의 실행시에, 상기 액세스 연산 확장값이 설정된 경우에는, 상기 처리 유닛 중에서 상기 첫 번째 처리 유닛은, 메모리 장벽 신호를 발행하여, 상기 메모리 장벽 연산이 상기 처리 유닛들 중에서 적어도 한 개의 다른 처리 유닛 상에서 실행되게 하도록 구성된다.
다른 처리 유닛들이 메모리 장벽 신호의 통지를 받도록 하여, 메모리 장벽 연산을 로컬하게(locally) 행하는 것이 필요하므로, 메모리 장벽 신호에 대해 전용의 전달 경로가 주어질 수도 있다. 따라서, 일 실시예에서는, 상기 처리 유닛들 중에서 첫 번째 처리 유닛이 상기 공유 액세스 조정회로에 상기 메모리 장벽 신호를 발행하여, 상기 처리 유닛들 중에서 상기 적어도 한 개의 다른 처리 유닛 상에서 상기 메모리 장벽 연산이 실행되도록 한다. 따라서, 이와 같은 실시예들에서는, 공유 액세스 조정회로를 재사용하여, 필요한 처리 유닛들에 대한 메모리 장벽 연산의 전달을 관리한다.
공유 액세스 조정회로는 다양한 형태를 취할 수 있다. 그러나, 일 실시예에서, 공유 액세스 조정회로는, 각각의 처리 유닛에 의해 액세스된 상기 데이터가 최신이 되도록 보장하기 위해 캐시 일관성(cache coherency) 프로토콜을 채용하는 캐시 일관성회로를 구비한다.
일 실시예에서는, 전체 시스템에 대해 한 개의 액세스 연산 확장값이 제공되어도 된다. 그러나, 또 다른 실시예에서는, 상기 구성 기억장치가 상기 복수의 처리 유닛들의 각각의 처리 유닛에 대해 별개의 액세스 연산 확장값을 기억하고, 상기 액세스 제어회로는 상기 로컬 액세스 연산을 처리할 때 그것의 관련된 액세스 연산 확장값을 참조한다. 이와 같은 일 실시예에서는, 구성 기억장치가 중앙 기억장치에 의해 제공되어도 되고, 이와 달리, 관련된 액세스 연산 확장값이 각각의 처리 유닛에 로컬하게 기억되도록, 구성 기억장치를 일괄하여 구성하는 별개의 기억장치가 각각의 처리 유닛에 설치되어도 된다.
복수의 처리 유닛은 다양한 형태를 취할 수 있는데, 일 실시예에서는, 각각의 처리 유닛이 프로세서를 구비한다. 프로세서들은 모두가 동일한 필요는 없지만, 일 실시예에서는 복수의 프로세서가 대칭적 다중처리(SMP) 처리회로를 구성한다.
제 2 면에 따르면, 본 발명은, 공유 메모리의 데이터에 대한 액세스를 필요로 하는 데이터 처리 연산을 행하는 복수의 처리 유닛들을 갖고, 이 각각의 처리 유닛이 이 처리 유닛에 의해 액세스하기 위한 상기 데이터의 서브셋을 기억하기 위한 관련된 로컬 캐시 구조를 갖는, 데이터 처리장치 내부의 로컬 캐시 구조들에 발행된 액세스 연산을 처리하는 방법으로서, 상기 복수의 처리 유닛들에 의한 공유 액세스 연산의 처리를 조정하는 공유 액세스 조정회로를 제공하는 단계와, 액세스 연산 확장값을 기억하는 단계와, 상기 로컬 캐시 구조들 중에서 한 개에 발행된 상기 공유 액세스 연산을 처리시에, 상기 로컬 캐시 구조들 중에서 상기 한 개에 대해 로컬 액세스 연산을 수행하는 것 이외에 상기 공유 액세스 조정회로에 대해 공유 액세스 신호를 발행하는 단계와, 상기 로컬 캐시 구조들 중에서 한 개에 발행된 로컬 액세스 연산을 처리시에, (i) 상기 액세스 연산 확장값이 설정되지 않은 경우, 상기 공유 액세스 조정회로에 상기 공유 액세스 신호를 발행하지 않고, 상기 로컬 캐시 구조들 중에서 상기 한 개에 대해 상기 로컬 액세스 연산을 행하고, (ii) 상기 액세스 연산 확장값이 설정된 경우, 상기 로컬 액세스 연산을 상기 공유 액세스 연산으로서 처리하는 단계를 포함하는 액세스 연산 처리방법을 제공한다.
제 3 면에 따르면, 본 발명은, 데이터 처리장치로서, 공유 메모리 내부의 데이터에 대한 액세스를 필요로 하는 데이터 처리 연산을 행하는 복수의 처리 유닛수단을 포함하는 처리수단회로를 구비하고, 각각의 처리 유닛수단은, 이 처리 유닛수단과 관련되고 이 처리 유닛수단에 의해 액세스하기 위한 상기 데이터의 서브셋을 기억하는 로컬 캐시 구조수단과, 상기 로컬 캐시 구조수단에 발행된 액세스 연산을 처리하는 액세스 제어수단을 갖고, 상기 로컬 캐시 구조수단에 대한 적어도 한가지 종류의 액세스 연산이 로컬 액세스 연산 또는 공유 액세스 연산으로서 발행되고, 상기 데이터 처리장치는, 액세스 연산 확장값을 기억하는 구성 기억수단과, 상기 복수의 처리 유닛수단에 의한 상기 공유 액세스 연산의 처리를 조정하는 공유 액세스 조정수단을 더 구비하고, 상기 공유 액세스 연산의 수신시에, 상기 액세스 제어수단이 상기 관련된 로컬 캐시 구조수단에 대해 상기 로컬 액세스 연산을 수행하는 것 이외에 상기 공유 액세스 조정수단에 대해 공유 액세스 신호를 발행하고, 상기 로컬 액세스 연산의 수신시에, 상기 액세스 연산 확장값이 설정되지 않은 경우, 상기 액세스 제어수단은 상기 공유 액세스 조정수단에 상기 공유 액세스 신호를 발행하지 않고 상기 관련된 로컬 액세스 구조수단에 대해 상기 로컬 액세스 연산을 행하고, 상기 액세스 연산 확장값이 설정된 경우, 상기 액세스 제어수단은 상기 로컬 액세스 연산을 상기 공유 액세스 연산으로서 처리하는, 데이터 처리장치를 제공한다.
이하, 다음의 첨부도면에 예시된 실시예들을 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 일 실시예에 따른 다중처리 시스템을 개략적으로 나타낸 도면이다.
도 2는 일 실시예에 따라 캐시 유지보수 연산이 처리되는 방식을 나타낸 흐름도이다.
도 3은 일 실시예에 따라 하이퍼바이저가 액세스 연산 확장 비트를 설정하는 방법을 나타낸 흐름도이다.
도 4a는 일 실시예에 따라, 액세스 연산 확장 비트가 설정된 경우에 로컬 액세스 연산의 처리를 개략적으로 나타낸 것이다.
도 4b는 또 다른 실시예에 따라, 액세스 연산 확장 비트가 설정된 경우에 로컬 액세스 연산의 처리를 개략적으로 나타낸 것이다.
도 5는 한 개의 처리 유닛으로부터 다른 처리 유닛으로의 이동으로 인해 일어날지도 모르는 문제가 일 실시예의 기술을 사용하여 해소되는 코드 생성 처리를 개략적으로 나타낸 흐름도이다.
도 6은 제 1 처리 유닛으로부터 제 2 처리 유닛으로의 이동과 다시 제 1 처리 유닛으로의 복귀로 인해 일어날 수 있는 문제가 일 실시예의 기술을 사용하여 해소되는, 페이지 테이블 갱신처리를 나타낸 흐름도이다.
도 7은 일 실시예에 따라 메모리 장벽 연산이 처리되는 방법을 나타낸 흐름도이다.
도 8은 한 개의 처리 유닛으로부터 다른 처리 유닛으로의 전환을 통해 일어날 수 있는 문제가 일 실시예의 기술을 사용하여 해소되는, 메모리 장벽 연산을 포함하는 연산들의 시퀀스를 나타낸 흐름도이다.
도 1은 일 실시예에 따른 다중처리 시스템을 나타낸 것이다. 복수의 처리 유닛들(10, 40)이 설치되는데, 예시된 실시예에서는, 이들 두 개의 처리 유닛이 프로세서 코어와, 관련된 로컬 캐시 구조를 구비한 프로세서이다. 프로세서들은 동일한 필요는 없지만, 일 실시예에서는, 프로세서들이 동일하게 구성되어 SMP 시스템을 구성한다. 도시된 것과 같이, 제 1 처리회로(10)는 명령들의 시퀀스를 실행하는 코어(20)를 구비한다. 코어(20)는 1개 이상의 캐시(24)를 액세스하고, 일 실시예에서는 이 캐시가 명령 캐시와, 별개의 데이터 캐시를 구비하여도 된다. 가상 어드레스로부터 물리 어드레스로의 변환 등의 메모리 액세스 제어 연산을 행할 때 메모리 관리 유닛(MMU)(26)에 의해 참조되는 TLB(28) 등의 다른 로컬 캐시 구조가 설치될 수도 있다.
로컬 캐시 구조들, 본 실시예에서는 캐시(24)와 TLB(28)에 대해 유지보수 연산을 행하기 위해 유지보수 회로(22)도 설치된다. 일 실시예에서는, 유지보수 회로(22)가 프로세서 코어(20)의 일부를 구성하는 것으로 생각될 수 있으며, 예를 들어 코어(20)에 의해 주어진 실행 파이프라인들의 한 개를 구성하는 것으로 생각될 수도 있다. 프로세서(10)는 프로세서의 연산을 구성하는데 사용되는 1개 이상의 구성 레지스터(30)를 더 포함한다. 본 발명의 실시예들에 따르면, 이 구성 레지스터(30)에 기억된 정보는, 캐시 유지보수 연산을 행할 때 유지보수 회로(22)가 참조하는 액세스 연산 확장값을 포함한다. 특히, 나중에 더욱 상세히 설명하는 것과 같이, 액세스 연산 확장값의 수치에 의존하여, 유지보수 회로가 로컬 연산으로서 특정된 캐시 유지보수 연산을 처리하는 방식을 변경하게 된다.
도시된 실시예에서는, 프로세서 40은 프로세서 10과 동일하게 구성되므로, 코어(50), 유지보수 회로(52), 캐시(54), MMU(56) 내부의 TLB(58)와, 1개 이상의 구성 레지스터(60)를 구비한다.
다수의 처리 유닛들(10, 40)이 공유 메모리(75)와 코히런트 인터커넥트(coherent interconnect)(70)를 거쳐 접속된다. 코히런트 인터커넥트(70)는, 다수의 로컬 캐시 구조들에 기억된 데이터가 일관되게(coherent) 유지되어, 각각의 프로세서가 동일한 데이터의 개관(view)을 갖도록 보장한다. 따라서, 예를 들어, 코어 50이 그것의 데이터 캐시(54)에 빠져 있는 데이터 액세스 요청을 발행하면, 이것이 코히런트 인터커넥트(70)에 요청이 발행되도록 하여, 그후 요청된 데이터가 처리 유닛 10의 대응하는 데이터 캐시(24) 내부에 기억되어 있는지 판정하게 된다. 기억되어 있으면, 이 데이터가 처리 유닛 10의 데이터 캐시에서 검색되어 처리 유닛 40으로 주어진다. 코히런트 인터커넥트(70)에 의해 사용된 일관성 프로토콜에 의존하여, 처리 유닛 10의 데이터 캐시에 있는 관련 데이터가 무효로서 마크되거나, 또는 이와 달리 모든 처리 유닛(10, 40)이 그들의 데이터의 복사본을 공유로서 마크할 수도 있다. 그후, 이것은 이 데이터에 관해 후속의 액세스 연산이 처리되는 방식에 영향을 미치게 된다. 요청된 데이터가 다른 캐시들 중에서 한 개에서 발견할 수 있는 경우에만, 메모리(75)에서 데이터가 액세스된다.
이와 같은 기술은 데이터의 일관성을 유지하기 위해 일반적으로 양호하게 동작하지만, 하이퍼바이저 소프트웨어를 사용하여 다수의 가상 머신의 실행을 허용할 때와 같이, 하드웨어 상에서 실행되는 운영 체계와 이것의 기반을 이루는 애플리케이션들이 하드웨어의 다중 프로세서 속성을 알지 못할 때 문제가 일어날 수 있다. 특히, 도 1에 도시된 것과 같이, 하이퍼바이저 소프트웨어(80)가, 처리회로 상에서 적어도 1개의 가상 머신(90)의 실행을 지원하기 위해 다수의 처리 유닛(10, 40)으로 구성된 하드웨어 플랫폼 상에서 실행될 수도 있다. 각각의 가상 머신은 1개 이상의 애플리케이션 프로그램들(94, 96)을 실행하는 운영 체계(92)로 이루어진다. 이하에서 더욱 상세히 설명하는 것과 같이, 단지 1개의 가상 머신(90)이 하이퍼바이저(80)에 의해 실행되고 있을 때, 또는 이와 달리 하이퍼바이저 소프트웨어에 의해 실행이 지원되고 있는 1개보다 많은 가상 머신이 존재할 때, 본 발명의 실시예들의 기술이 사용될 수 있다. 따라서, 점선 박스로 나타낸 것과 같이, 다수의 애플리케이션 프로그램들(104, 106)을 실행하는 운영 체계(102)로 이루어진 적어도 한 개의 추가적인 가상 머신(100)이 설치되어도 된다.
연산중에, 예를 들어 각각의 처리 유닛(10, 40)의 현재 로딩을 고려하여 성능을 증가시키려고 시도할 때, 하이퍼바이저 소프트웨어(80)가 한 개의 가상 머신을 한 개의 처리 유닛으로부터 다른 처리 유닛으로 이동할 수도 있다. 하이퍼바이저 소프트웨어(80)에 의해 가상 머신으로부터 기반을 이루는 하드웨어를 차단하는 것으로 인해, 가상 머신 90은 일반적으로 어떤 처리 유닛(10, 40) 상에서 그것이 실행되고 있는지를 알지 못하며, 더구나 일반적으로 그것의 동작이 언제 한 개의 처리 유닛으로부터 다른 처리 유닛으로 전환되는지를 알지 못한다. 따라서, 운영 체계 92 및/또는 애플리케이션 프로그램들 94, 96은 로컬 캐시 유지보수 연산으로 명시되는 캐시 유지보수 연산을 발생하는데, 이것은 이들 캐시 유지보수 연산의 주체가 되는 데이터가 로컬 캐시 구조에 기억될 것으로 가상 머신이 예측하기 때문이다. 그러나, 데이터가 초기에 캐시 구조에 기억되는 시간과 캐시 유지보수 연산이 발행되는 시간 사이에, 가상 머신이 한 개의 처리 유닛으로부터 다른 처리 유닛으로 이동한 경우에는, 이와 같은 전체가 올바르지 않을 수도 있으며, 캐시 유지보수 연산의 주체가 되는 모든 데이터가 이 캐시 유지보수 연산을 겪는 것은 아니라는 것으로 인해 잠재적으로 부정확한 연산을 일으킬 수도 있다.
코히런트 인터커넥트(70)의 존재와 특정한 캐시 엔트리들을 공유로 마크하는 것 그 자체가 이 문제가 일어나지 않도록 보장하는데 충분한 것은 아니다. 예를 들어, 가상 머신이 10개의 데이터 값을 캐시에 기록하고, 이들 데이터 값들 중에서 3개가 처리 유닛 10의 캐시(24)에 기록되는 한편, 가상 머신 90이 처리 유닛 10 상에서 실행되고, 이때 하이퍼바이저를 사용하여 처리 유닛 40으로 가상 머신 90의 실행을 전환하여, 나머지 7개의 데이터 값이 데이터 캐시 54에 기록되는 상황을 고려하자. 가상 머신 90이 여전히 처리 유닛 40 상에서 동작하면서, 이들 10개의 데이터 값들의 어드레스들을 포함하는 어드레스들의 범위를 소거하기 위해 캐시 유지보수 연산이 발생되는 경우에, 캐시 54에 있는 7개의 데이터 값이 캐시에 위치하고, 필요한 소거 연산이 행해지는 것을 알 수 있다. 이들 엔트리가 공유로 마크된 경우에는, 이 데이터의 다른 복사본이 무효가 되도록 보장하기 위해 코히런트 인터커넥트(70)로 신호가 발행되게 된다. 그러나, 해당 다른 3개의 데이터 값에 대해서는, 처리 유닛 40 내부에서 로컬하게 행해진 캐시 유지보수 연산이 이들 관련된 어드레스들에 대해 단순히 캐시 누락(cache misses)을 검출하게 되어, 추가적인 행위를 취하지 않게 된다(이 대신에, 데이터가 이미 메모리로 축출되었다고 가정한다). 그러나, 그 결과, 이들 3개의 데이터는 캐시 24 내부에 여전히 상주하게 되고 클리어되지 않으므로, 이들 데이터 값에 대해 공유 메모리(75)가 갱신되지 않는 결과가 발생한다. 이것은 가상 머신의 부정확한 연산을 일으킬 수도 있다.
본 발명의 실시예들에 따르면, 특정한 계층 레벨에서 소프트웨어에 의해 설정될 수 있으며 일단 설정이 되면 계층의 더 낮은 레벨에 있는 소프트웨어에 의해 발행된 로컬 캐시 유지보수 연산이 처리되는 방식에 영향을 미치게 되는 액세스 연산 확장 비트의 제공을 통해, 이와 같은 문제가 해소된다. 따라서, 일 실시예에서는, 일 실시예에서는, 액세스 연산 확장 비트가 운영 체계(92)에 의해 설정되도록 허용되어, 운영 체계가 액세스 연산 확장 비트를 설정하였는지 아닌지에 의존하여, 애플리케이션들(94, 96)에 의해 발행된 그후의 캐시 유지보수 연산이 다르게 처리된다. 그러나, 이하의 설명을 위해, 액세스 연산 확장 비트가 하이퍼바이저 소프트웨어(80)에 의해 설정가능하여, 액세스 연산 확장 비트가 설정되었는지 아닌지에 의존하여, 가산 머신에 의해(운영 체계(92)나 애플리케이션 프로그램들((4, 96) 중에서 한 개에 의해) 발행된 캐시 유지보수 연산이 처리되는 것으로 가정한다.
도 2는, 일 실시예에 따라 액세스 연산 확장 비트의 값에 의해 로컬 캐시 유지보수 연산의 처리가 어떻게 영향을 받는지를 나타낸 흐름도이다. 특히, 스텝 150에서는, 유지보수 회로가 캐시 유지보수 연산의 수신을 기다린다. 캐시 유지보수 연산이 수신되면, 스텝 155에서, 캐시 유지보수 연산이 로컬 액세스 연산인지 아닌지 판정한다. 로컬 액세스 연산이 아닌 경우에는, 스텝 165로 처리를 진행하여, 공유 액세스 신호를 코히런트 인터커넥트에 전송함으로써 1개 이상의 다른 처리 유닛들에서 로컬 액세스 연산이 행해지도록 하고, 더구나 스텝 150에서 캐시 유지보수 연산을 수신하는 유지보수 회로와 관련된 로컬 캐시 구조에 대해 스텝 170에서 로컬 캐시 유지보수 연산이 행해진다.
이때, 스텝 165 및 170은 순차적으로 도시되어 있지만, 이들 스텝은 반대의 순서로 행해지거나, 사실상 병렬로 행해져도 된다는 점에 주목하기 바란다. 더구나, 일부 실시예들에서, 공유 액세스 신호에 응답하여 다른 처리 유닛들에서 대응하는 로컬 캐시 유지보수 연산을 수행한 결과를 고려하지 않고, 스텝 170에서 행해진 로컬 캐시 유지보수 연산을 행하여도 된다. 그러나, 또 다른 실시예에서는, 스텝 165에서 코히런트 인터커넥트에 발행된 공유 액세스 신호에 응답하여 다수의 다른 처리 유닛들이 로컬 캐시 유지보수 연산을 행할 때까지, 스텝 170에서 로컬 캐시 유지보수 연산을 행하는 것이 지연되어도 된다.
스텝 155에서, 캐시 유지보수 연산이 로컬 액세스 연산인 것으로 판정되면, 스텝 160에서 액세스 연산 확장 비트가 설정되었는지 판정한다. 설정되지 않은 경우에는, 캐시 유지보수 연산이 단순히 로컬 연산으로 취급되어, 스텝 170에서 로컬 캐시 유지 보수 연산이 행해진다. 그러나, 스텝 160에서 액세스 연산 확장 비트가 설정된 것으로 판정되면, 로컬 액세스 연산이 실제로 공유 액세스 연산으로서 처리된다. 따라서, 스텝 165 및 170이 행해진다. 그 결과, 액세스 연산 확장 비트가 설정되면, 로컬 액세스 연산으로서 지정된 캐시 유지보수 연산이 공유 액세스 연산으로 처리되도록 "갱신"된다는 것을 알 수 있다. 따라서, 이것은, 가상 머신이 현재 실행되고 있는 처리 유닛이 어떤 처리 유닛인지에 무관하게, 모든 관련된 캐시 구조들에서 캐시 유지보수 연산이 수행되도록 보장한다.
도 3은, 일 실시예에 따라 액세스 연산 확장 비트를 언제 설정할 것인지를 하이퍼바이저 소프트웨어(80)가 설정되는 방식을 나타낸 흐름도이다. 스텝 200에서, 하이퍼바이저가 운영 체계를 소스 처리 유닛으로부터 목적지 처리 유닛으로 이동한다. 이와 같은 처리중에, 하드웨어가 SMP 처리인 것으로 가정하였기 때문에, 하이퍼바이저 소프트웨어는 스텝 205에서 운영 체계가 마이크로 프로세서를 알고 있는지, 본 실시예에서는 "SMP를 알고 있는지(SMP aware)" 여부를 판정한다. 운영 체계가 SMP를 알고 있지 않으면, 스텝 210으로 처리를 진행하여 액세스 연산 확장 비트를 설정하는 반면에, 운영 체계가 SMP를 알고 있으면, 스텝 215에서 액세스 연산 확장 비트가 클리어된다. 스텝 210 또는 215 이후에, 하이퍼바이저는 운영 체계가 스텝 220에서 목적지 처리 유닛 상에서 실행을 개시할 수 있도록 한다.
도 3을 참조하여 설명한 실시예에서는, 운영 체계가 SMP를 알고 있으면, 이 운영 체계가 공유 또는 로컬로서 정확하게 확인되는 캐시 유지보수 연산을 발행하게 된다는 것을 가정하고 있다. 그러나, 다른 실시예에서는, 하이퍼바이저가 운영 체계를 한 개의 처리 유닛으로부터 다른 처리 유닛으로 이동할 때마다, 운영 체계가 SMP를 알고 있는지 아닌지에 무관하게, 단순히 액세스 연산 확장 비트를 설정하도록 구성해도 된다. 이와 같은 구성은, 예를 들어, SMP 인에이블된 운영 체계가 어떤 프로세서 상에서 연산이 실행되어야 하는지 이해하도록 이 운영 체계가 최적화된 경우에 유용할 수 있는데, 이것은, 운영 체계가 하이퍼바이저 층 아래에서 실행될 때 상기한 지식이 잠재적으로 틀릴 수도 있기 때문이다.
도 4a는 일 실시예에 따라 로컬 액세스 연산이 처리되는 방법을 개략적으로 나타낸 것이다. 본 실시예의 목적을 위해, 다중처리 시스템이 3개의 처리 유닛(300, 320, 340)을 제공하는 것으로 가정하였다. 예시를 위해, 이들 처리 유닛들의 해당 내부 구조만을 도시하였다. 따라서, 각각의 처리 유닛은, 1개 이상의 로컬 캐시 구조들(310, 330, 350)과 접속된 관련된 유지보수 회로(305, 325, 345)를 각각 갖는다. 처리 유닛 300에 대해 액세스 연산 확장 비트(307)가 도시되어 있는데, 이 경우에는 액세스 연산 확장 비트가 설정된 것으로 가정한다. 다수의 신호선에 대해 원 내부에 주어진 수치는, 유지보수 회로(305)에 의한 로컬 액세스 연산의 수신시에 일어나는 순서를 표시한 것이다. 따라서, 도시된 것과 같이, 유지보수 회로(305)에 의해 로컬 액세스 연산이 수신되면, 유지보수 회로는, 이 경우에는 설정이 된, 액세스 연산 확장 비트(307)를 참조한다. 따라서, 유지보수 회로(305)는, 그것의 관련된 로컬 캐시 구조(310)에 대해 로컬 액세스 연산을 행하는 한편, 코히런트 인터커넥터(360) 내부의 조정회로(370)에도 공유 액세스 신호를 발행한다. 본 실시예에서는, 조정회로는 공유 액세스 신호의 수신시에 다른 처리 유닛들 각각에 단순히 요청을 동보전송하므로, 유지보수 회로 325와 유지보수 회로 345 모두가 로컬 액세스 연산을 행하는 요청을 받는다. 따라서, 도 4a에 도시된 것과 같이, 두 개의 유지보수 회로들 325, 340은 그들의 관련된 로컬 캐시 구조들 330, 350에 대해 각각 로컬 액세스 연산을 수행한다.
로컬 캐시 구조 310에 대한 로컬 액세스 연산의 수행이 조정회로에 대한 공유 액세스 신호의 발행 처리 및 그후의 다른 로컬 액세스 연산 처리와 완전히 분리되어도 되지만, 일 실시예에서는, 다른 로컬 액세스 연산들의 전체가 행해지고 이들 로컬 액세스 연산들의 결과가 조정회로(370)를 거쳐 유지보수 회로 305로 되돌아올 때까지 유지보수 회로(305)가 그것의 로컬 액세스 연산의 수행을 지연시켜도 된다. 유지보수 회로 305와 로컬 캐시 구조 310 사이의 로컬 액세스 연산 신호 경로에 인접한 원 내부의 번호 6으로 표시한 것과 같이, 다른 연산들이 종료한 후 로컬 액세스 연산이 행해져도 된다.
도 4b는, 조정회로(370)가 공유 액세스 신호의 수신시에 어떤 다른 처리 유닛들에게 요청을 발행할 것인지를 판정할 수 있도록 하는 이력 데이터를 조정회로가 유지하는 또 다른 실시예를 나타낸 것이다. 도 4b에 도시된 특정한 실시예에서는, 조정회로(370)기 로컬 캐시 구조들에 대한 할당 데이터의 이력(38)을 유지한다. 따라서, 공유 액세스 신호가 조정회로(370)에 의해 수신될 때, 조정회로는, 공유 액세스 신호에 의해 식별된 데이터 어드레스를 고려하고, 할당 이력(38)을 참조하여, 로컬 캐시 구조들 330, 350 중에서 어느 것이 이 어드레스에서 이전에 캐시된 데이터를 갖고 있는지 판정하여도 된다. 도시된 실시예에서는, 로컬 캐시 구조 330이 이 어드레스에서 이전에 캐시된 데이터를 갖지만, 로컬 캐시 구조 350이 이것을 갖고 있지 않는다고 조정회로(370)가 판정한다. 따라서, 유지보수 회로 325에만 요청이 발행되고 유지보수 회로 345에는 발행되지 않는다.
조정회로(370)는, 다양한 형태를 취할 수 있지만, 일 실시예에서는, 캐시 일관성 프로토콜에 의해 요구되는 스누프(snoop) 연산을 행하는데 사용되는 스누프 제어부에 의해 형성된다. 그것의 기능은, 데이터 캐시에 대해서 뿐만 아니라, 명령 캐시, TLB 등에 대해서도 발행되는 유지보수 연산의 정확한 연산을 허용하도록 확장될 수 있다.
도 5는, 가상 머신에 의해 행해지는 특정한 연산들의 시퀀스를 예시한 흐름도이다. 특히, 스텝 400에서, 일부 코드가 생성되며, 그 동안에 이 코드가 일반적으로 데이터로서 데이터 캐시에 기록된다. 그러나, 이 코드가 실행되기 전에, 먼저 코드가 메모리에 기억된 후, 명령 캐시 내부로 검색될 필요가 있다. 따라서, 스텝 410에서는, 로컬 데이터 캐시 소거 연산이 발행되고, 스텝 420에서는 로컬 명령 캐시 무효 연산이 발행된다. 로컬 데이터 캐시 소거 연산 410은 데이터 캐시 내부의 유효하고 오손된 데이터가 메모리로 축출되도록 하는 한편, 로컬 명령 캐시 무효 연산은, 코드 생성 스텝 400에 의해 갱신된 명령이 무효화되어, 새로운 코드의 실행이 개시될 때, 이들 명령이 부정확하게 참조되지 않도록 보장한다. 따라서, 스텝 430에서는, 새로운 코드가 실행될 때, 정확한 명령이 메모리에서 검색되어, 일반적으로 명령 캐시에 기억되게 된다.
본 발명의 실시예들의 전술한 기술이 사용되지 않는다면, 한 개의 처리 유닛으로부터 다른 처리 유닛으로의 가상 머신의 실행의 전환이 올바르지 않은 연산을 일으킬 수도 있는 기간이 존재한다. 특히, 도 5에 도시된 기간 A 동안에(이것은 코드 생성처리가 시작 및 종료된 후이며 스텝 410에서 로컬 데이터 캐시 소거 연산이 발행되기 전에 개시한다), 가상 머신이 제 1 처리 유닛으로부터 제 2 처리 유닛으로 전환되면, 로컬 데이터 캐시 소거 연산이 그후에 발행될 때, 가상 머신이 제 2 처리 유닛의 데이터 캐시에 기억된 데이터만을 소거하게 된다. 이것은, 이 데이터가 소거되지 않은 채, 일부의 새롭게 생성된 코드가 제 1 처리 유닛의 데이터 캐시에 남아 있는 상태를 발생할지도 모른다. 그러나, 전술한 기술을 사용함으로써, 스텝 410에서 발행된 로컬 데이터 캐시 소거 연산을 공유 데이터 캐시 소거 연산으로 갱신하는 것이, 모든 필요한 엔트리들이 제 2 처리 유닛의 데이터 캐시 내부 또는 제 1 처리 유닛의 데이터 캐시 내부에 존재하는지 여부에 무관하게, 이들 엔트리들이 소거되도록 보장한다.
마찬가지로, 기간 B 중에, 가상 머신의 실행이 다시 제 2 처리 유닛으로부터 제 1 처리 유닛으로 전환되는 경우에 문제가 일어날 수도 있다. 이 예에서는, 본 발명을 사용하지 않으면, 제 1 처리 유닛의 로컬 명령 캐시가 스텝 420에서 무효화되지 않게 되므로, 이에 따라 부정확한 명령이 스텝 430에서 실행될 수도 있다. 그러나, 전술한 기술을 사용함으로써, 로컬 명령 캐시 무효 연산이 스텝 420에서 공유 명령 캐시 무효 연산으로 갱신되어, 이들 두가지 명령 캐시에 있는 관련된 엔트리들이 무효화되도록 보장한다.
도 6은 페이지 테이블 갱신처리를 나타낸 흐름도이다. 특히, 스텝 450에서, 페이지 테이블 엔트리들을 사용하여 어드레스 변환을 행하고, 이 동안에 페이지 테이블 엔트리들이 일반적으로 MMU의 TLB에 기억된다. 그후, 페이지 테이블 엔트리들을 갱신할 필요가 있다. 따라서, 스텝 460에서 로컬 TLB 무효 연산이 발행되어, 막 갱신되려고 하는 TLB 내부의 캐시된 엔트리들을 무효화한다. 그후, 관련된 페이지 테이블 엔트리들이 스텝 470에서 변형된다. 다음에, 페이지 테이블 엔트리들을 이용하여 스텝 480에서 처리를 재개하여 어드레스 변환을 행하는데, 이 동안에 페이지 테이블 데이터가 다시 메모미로부터 TLB에 기억되게 된다. 이와 같은 처리가 한 개의 처리 유닛 상에서 실행되면, 문제가 발생하지 않는다. 그러나, 도 6에 도시된 시간 간격 A 동안의 어느 때에 가상 머신의 연산이 제 1 처리 유닛으로부터 제 2 처리 유닛으로 전환된 후, 시간 간격 B 동안의 어느 때 가상 머신의 실행이 다시 제 2 처리 유닛으로부터 제 1 처리 유닛으로 전환되면, 본 발명의 실시예들의 기술을 사용하지 않는 경우에 문제가 일어날 수 있다. 특히, 기간 A 동안에 일어나는 전환으로 인해, 스텝 460에서의 로컬 TLB 연산이 제 1 처리 유닛의 TLB에 있는 해당 페이지 테이블 엔트리들을 무효로 하지 않게 된다. 이것은, 그후 기간 B 동안에 제 1 처리 유닛으로 실행이 복귀할 때, 제 1 처리 유닛의 TLB 내부에 여전히 유지되어 있는 오래된(outdated) 데이터의 존재로 인해 TLB 내부에서 히트(hit)가 발생할 수도 있다. 그러나, 본 발명의 실시예들의 전술한 기술을 이용함으로써, 스텝 460에서 발행된 로컬 TLB 무효 연산이 공유 TLB 무효 연산으로 갱신되어 이들 두 개의 TLB에 있는 해당 엔트리들이 무효가 되므로, 이와 같은 문제가 일어나지 않는다.
지금까지 캐시 유지보수 연산의 처리와 관련하여 본 발명의 실시예들의 기술을 설명하였지만, 도 7 및 도 8을 참조하여 후술하는 것과 같이, 이들 기술은 메모리 장벽 연산의 정확한 연산을 보장하는데 사용될 수도 있다. 본 기술분야의 당업자에게 자명한 것과 같이, 기록 연산 등의 이전의 메모리 연산이 그것의 결과가 시스템 내부의 다른 에이전트에게 보이게 만들도록 어떤 프로그램이 보장하기를 원하거나, 후속하는 메모리 연산이 개시되기 전에 이전의 메모리 연산이 완료되도록 보장하기를 원하는 경우에, 메모리 장벽 연산이 수행된다. 따라서, 도 7의 스텝 500에 나타낸 것과 같이, 메모리 장벽 연산을 실행할 것인지 판정하고, 메모리 장벽 연산을 실행할 것이라고 판정될 때마다, 스텝 510에서 액세스 연산 확장 비트가 설정되었는지 여부를 판정한다. 설정되지 않은 경우에는, 스텝 530에서 가상 머신이 현재 실행되고 있는 처리 유닛 상에서 로컬하게 메모리 장벽 연산이 단순히 행해진다. 그러나, 액세스 연산 확장 비트가 설정되어 있으면, 스텝 520에서 메모리 장벽 신호 520이 코히런트 인터커넥트로 발행되고, 스텝 530에서 메모리 장벽 연산이 로컬하게 행해진다. 그후, 이와 같은 코히런트 인터커넥트는 적절한 요청이 다른 처리 유닛들로 발행되도록 하여 이들 다른 처리 유닛들도 메모리 장벽 연산을 로컬하게 실행하게 된다. 도 8에 도시된 예시적인 이벤트들의 시퀀스를 고려할 때 이와 같은 접근방법의 이점을 알 수 있다.
특히, 스텝 550에서는, 기록 데이터가 버퍼링되는 기록 연산이 행해진다. 특히, 다수의 시스템에서는, 기록 데이터가 기록 버퍼 내부에 놓일 때 기록 연산이 완료된 것으로 생각되는데, 사실상은, 많은 사이클 이후에야 기록 버퍼가 유출되고(drained) 기록 데이터가 실제로 메모리에 헌신적(committed)이 된다.
따라서, 이 기록 데이터가 그 이후의 연산에 눈에 보이도록 하는 것이 중요한 경우에는, 도 8의 스텝 560에 나타낸 것과 같이, 기록 연산 후에 메모리 장벽 연산을 발행하는 것이 보통이다. 그후, 스텝 560에서, 이전의 기록 연산의 기록 데이터가 눈이 보이도록 예측하는 연산이 행해질 때, 스텝 560에서 행해진 메모리 장벽 연산이, 이 기록 데이터가 이 연산에서 실제로 눈에 보이도록 보장하게 된다. 그러나, 도 8에 도시된 시간 A에서 가상 머신의 실행이 한 개의 처리 유닛으로부터 다른 처리 유닛으로 전환되면, 메모리 장벽 연산이 가상 머신이 그때 실행되고 있는 처리 유닛 내부에 로컬하게 적용되는 한편, 기록 데이터는 실제로 다른 처리 유닛의 기록 버퍼 내부에 유지되기 때문에, 본 발명의 실시예들의 기술을 채용하지 않으면, 메모리 장벽 연산 560이 그것의 목표를 성취하지 않게 된다는 것을 알 수 있다. 그러나, 본 발명의 실시예들의 기술을 이용함으로써, 스텝 560에서 발행된 메모리 장벽 연산이 공유 메모리 장벽 연산으로 갱신되어, 메모리 장벽 연산이 이들 두 개의 처리 유닛 상에서 행해지도록 하므로, 기록 데이터가 메모리로 유출되도록 하고, 이에 따라 후속하는 연산이 단계 570에서 행해질 때 기록 데이터가 눈에 보이게 된다.
본 명세서에서는 특정한 실시예들을 설명하였지만, 본 발명은 이들 실시예에 한정되지 않고 본 발명의 보호범위 내에서 다수의 변형 및 추가가 행해질 수도 있다는 것은 자명하다. 예를 들면, 본 발명의 보호범위를 벗어나지 않으면서, 다음의 종속항들의 특징과 독립항들의 특징의 다양한 조합이 이루어질 수도 있다.

Claims (20)

  1. 데이터 처리장치로서,
    공유 메모리 내부의 데이터에 대한 액세스를 필요로 하는 데이터 처리 연산을 행하는 복수의 처리 유닛을 포함하고, 복수의 계층 레벨의 소프트웨어로 이루어진 소프트웨어를 실행하도록 구성된 처리회로를 구비하고,
    각각의 처리 유닛은, 이 처리 유닛과 관련되고 이 처리 유닛에 의해 액세스하기 위한 상기 데이터의 서브셋을 기억하는 로컬 캐시 구조와, 상기 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 액세스 제어회로를 갖고, 상기 로컬 캐시 구조에 대한 적어도 한가지 종류의 액세스 연산이 로컬 액세스 연산 또는 공유 액세스 연산으로서 발행되고,
    상기 데이터 처리장치는, 액세스 연산 확장값을 기억하는 구성 기억장치를 더 구비하고, 상기 액세스 연산 확장값은 소정의 계층 레벨에서 실행되는 소프트웨어에 의해 설정 및 설정해제되고,
    상기 데이터 처리장치는, 상기 복수의 처리 유닛에 의한 상기 공유 액세스 연산의 처리를 조정하는 공유 액세스 조정회로를 더 구비하고,
    상기 공유 액세스 연산의 수신시에, 상기 액세스 제어회로가 상기 관련된 로컬 캐시 구조에 대해 상기 로컬 액세스 연산을 수행하는 것 이외에 상기 공유 액세스 조정회로에 대해 공유 액세스 신호를 발행하고,
    상기 로컬 액세스 연산의 수신시에, 상기 로컬 액세스 연산이 상기 소정의 계층 레벨보다 낮은 계층 레벨의 소프트웨어에 의해 발행된 경우에, 상기 액세스 제어회로는, 상기 액세스 연산 확장값이 설정되지 않은 경우, 상기 공유 액세스 조정회로에 상기 공유 액세스 신호를 발행하지 않고 상기 관련된 로컬 액세스 구조에 대해 상기 로컬 액세스 연산을 행하도록 구성되고, 상기 액세스 연산 확장값이 설정된 경우, 상기 액세스 제어회로는 상기 로컬 액세스 연산을 상기 공유 액세스 연산으로서 처리하도록 구성된, 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 적어도 한가지 종류의 액세스 연산은 상기 로컬 액세스 구조의 적어도 한 개의 엔트리 내부에 기억된 데이터의 상태를 갱신하기 위해 발행된 유지보수 액세스 연산을 포함하는, 데이터 처리장치.
  3. 제 2항에 있어서,
    상기 유지보수 액세스 연산은 상기 로컬 캐시 구조의 상기 적어도 한 개의 엔트리에 대해 소거 연산 및 무효 연산 중 적어도 한가지를 수행하는, 데이터 처리장치.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 처리회로가 상기 처리회로 상의 적어도 한 개의 가상 머신의 실행을 지원하기 위해 하이퍼바이저 소프트웨어를 실행하고, 상기 가상 머신은 상기 적어도 한가지 종류의 액세스 연산을 발행하도록 구성된, 데이터 처리장치.
  5. 제 4항에 있어서,
    상기 적어도 한 개의 가상 머신의 각각은 한 개 이상의 애플리케이션 프로그램을 실행하는 운영체계를 포함하는, 데이터 처리장치.
  6. 제 5항에 있어서,
    상기 하이퍼바이저 소프트웨어가 상기 운영 체계를 상기 복수의 처리 유닛 중에서 첫 번째 처리 유닛으로부터 상기 복수의 처리 유닛의 두 번째 처리 유닛으로 이동할 때, 상기 하이퍼바이저 소프트웨어는 상기 액세스 연산 확장값이 설정되게 하는, 데이터 처리장치.
  7. 제 6항에 있어서,
    상기 액세스 연산 확장값의 설정 후에, 상기 액세스 제어회로는 상기 적어도 한 개의 가상 머신에 의해 발행된 로컬 액세스 연산을 상기 공유 액세스 연산으로서 처리하는 반면에, 상기 하이퍼바이저 소프트웨어에 의해 발행된 로컬 액세스 연산을 상기 로컬 액세스 연산으로서 계속 처리하는, 데이터 처리장치.
  8. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 로컬 캐시 구조는, 상기 데이터 처리 연산을 위한 피연산자 데이터로서 사용된 데이터를 캐싱하는 데이터 캐시인, 데이터 처리장치.
  9. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 로컬 캐시 구조는, 상기 공유 메모리 내부의 페이지 테이블로부터 얻어지고 관련된 처리 유닛 내부에서 가상 어드레스로부터 물리 어드레스의 변환을 행할 때 사용되는 페이지 테이블 데이터를 캐싱하는 변환 색인 버퍼를 포함하는, 데이터 처리장치.
  10. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 로컬 캐시 구조는 상기 데이터 처리 연산을 정의하는데 사용된 명령을 캐싱하는 명령 캐시인, 데이터 처리장치.
  11. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 공유 액세스 조정회로가 상기 공유 액세스 신호에 응답하여, 상기 공유 액세스 신호를 발행한 액세스 제어회로를 갖는 처리 유닛을 제외한 처리 유닛들 각각에 로컬 액세스 연산 요청을 동보전송함으로써, 처리 유닛들 각각에 대해 상기 로컬 액세스 연산이 행해지는, 데이터 처리장치.
  12. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 공유 액세스 조정회로는, 상기 공유 액세스 신호에 응답하여, 상기 공유 액세스 연산에 의해 식별된 데이터를 포함할 수 있는 로컬 캐시 구조를 갖는 상기 복수의 처리 유닛으로부터 처리 유닛들의 서브셋을 결정하고, 상기 서브셋에 있는 처리 유닛들 각각에 로컬 액세스 연산 요청을 발행하는, 데이터 처리장치.
  13. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 처리 유닛들 중에서 첫 번째 처리 유닛에 의한 메모리 장벽 연산의 실행시에, 상기 액세스 연산 확장값이 설정된 경우에는, 상기 처리 유닛 중에서 상기 첫 번째 처리 유닛은, 메모리 장벽 신호를 발행하여, 상기 메모리 장벽 연산이 상기 처리 유닛들 중에서 적어도 한 개의 다른 처리 유닛 상에서 실행되게 하도록 구성된, 데이터 처리장치.
  14. 제 13항에 있어서,
    상기 처리 유닛들 중에서 상기 첫 번째 처리 유닛이 상기 공유 액세스 조정회로에 상기 메모리 장벽 신호를 발행하여, 상기 처리 유닛들 중에서 상기 적어도 한 개의 다른 처리 유닛 상에서 상기 메모리 장벽 연산이 실행되도록 하는, 데이터 처리장치.
  15. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    공유 액세스 조정회로는, 각각의 처리 유닛에 의해 액세스된 상기 데이터가 최신이 되도록 보장하기 위해 캐시 일관성 프로토콜을 채용하는 캐시 일관성회로를 구비한, 데이터 처리장치.
  16. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 구성 기억장치가 상기 복수의 처리 유닛들의 각각의 처리 유닛에 대해 별개의 액세스 연산 확장값을 기억하고, 상기 액세스 제어회로는 상기 로컬 액세스 연산을 처리할 때 그것의 관련된 액세스 연산 확장값을 참조하는, 데이터 처리장치.
  17. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복수의 처리 유닛이 대칭적 다중처리(SMP) 처리회로의 복수의 프로세서를 구성하는, 데이터 처리장치.
  18. 복수의 계층 레벨의 소프트웨어로 이루어진 소프트웨어를 실행하도록 구성되고, 공유 메모리의 데이터에 대한 액세스를 필요로 하는 데이터 처리 연산을 행하는 복수의 처리 유닛들을 갖고, 이 각각의 처리 유닛이 이 처리 유닛에 의해 액세스하기 위한 상기 데이터의 서브셋을 기억하기 위한 관련된 로컬 캐시 구조를 갖는, 데이터 처리장치 내부의 로컬 캐시 구조들에 발행된 액세스 연산을 처리하는 방법으로서,
    상기 복수의 처리 유닛들에 의한 공유 액세스 연산의 처리를 조정하는 공유 액세스 조정회로를 제공하는 단계와,
    소정의 계층 레벨에서 실행되는 소프트웨어에 의해 설정 및 설정해제되는 액세스 연산 확장값을 기억하는 단계와,
    상기 로컬 캐시 구조들 중에서 한 개에 발행된 상기 공유 액세스 연산을 처리시에, 상기 로컬 캐시 구조들 중에서 상기 한 개에 대해 로컬 액세스 연산을 수행하는 것 이외에 상기 공유 액세스 조정회로에 대해 공유 액세스 신호를 발행하는 단계와,
    상기 로컬 캐시 구조들 중에서 한 개에 발행된 로컬 액세스 연산을 처리시에, 상기 로컬 액세스 연산이 상기 소정의 계층 레벨보다 낮은 계층 레벨의 소프트웨어에 의해 발행된 경우에,
    (i) 상기 액세스 연산 확장값이 설정되지 않은 경우, 상기 공유 액세스 조정회로에 상기 공유 액세스 신호를 발행하지 않고, 상기 로컬 캐시 구조들 중에서 상기 한 개에 대해 상기 로컬 액세스 연산을 행하고,
    (ii) 상기 액세스 연산 확장값이 설정된 경우, 상기 로컬 액세스 연산을 상기 공유 액세스 연산으로서 처리하는 단계를 포함하는, 액세스 연산 처리방법.
  19. 데이터 처리장치로서,
    공유 메모리 내부의 데이터에 대한 액세스를 필요로 하는 데이터 처리 연산을 행하는 복수의 처리 유닛수단을 포함하고, 복수의 계층 레벨의 소프트웨어로 이루어진 소프트웨어를 실행하는 처리수단회로를 구비하고,
    각각의 처리 유닛수단은, 이 처리 유닛수단과 관련되고 이 처리 유닛수단에 의해 액세스하기 위한 상기 데이터의 서브셋을 기억하는 로컬 캐시 구조수단과, 상기 로컬 캐시 구조수단에 발행된 액세스 연산을 처리하는 액세스 제어수단을 갖고, 상기 로컬 캐시 구조수단에 대한 적어도 한가지 종류의 액세스 연산이 로컬 액세스 연산 또는 공유 액세스 연산으로서 발행되고,
    상기 데이터 처리장치는, 액세스 연산 확장값을 기억하는 구성 기억수단를 더 구비하고, 상기 액세스 연산 확장값은 소정의 계층 레벨에서 실행되는 소프트웨어에 의해 설정 및 설정해제되고,
    상기 데이터 처리장치는, 상기 복수의 처리 유닛수단에 의한 상기 공유 액세스 연산의 처리를 조정하는 공유 액세스 조정수단를 더 구비하고,
    상기 공유 액세스 연산의 수신시에, 상기 액세스 제어수단이 상기 관련된 로컬 캐시 구조수단에 대해 상기 로컬 액세스 연산을 수행하는 것 이외에 상기 공유 액세스 조정수단에 대해 공유 액세스 신호를 발행하고,
    상기 로컬 액세스 연산의 수신시에, 상기 로컬 액세스 연산이 상기 소정의 계층 레벨보다 낮은 계층 레벨의 소프트웨어에 의해 발행된 경우에, 상기 액세스 제어수단은, 상기 액세스 연산 확장값이 설정되지 않은 경우, 상기 공유 액세스 조정수단에 상기 공유 액세스 신호를 발행하지 않고 상기 관련된 로컬 액세스 구조수단에 대해 상기 로컬 액세스 연산을 행하고, 상기 액세스 연산 확장값이 설정된 경우, 상기 액세스 제어수단은 상기 로컬 액세스 연산을 상기 공유 액세스 연산으로서 처리하는, 데이터 처리장치.
  20. 삭제
KR1020127034220A 2010-06-16 2011-05-11 데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법 KR101677900B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1010114.5A GB2481232A (en) 2010-06-16 2010-06-16 Cache for a multiprocessor system which can treat a local access operation as a shared access operation
GB1010114.5 2010-06-16
PCT/GB2011/050902 WO2011158012A1 (en) 2010-06-16 2011-05-11 Apparatus and method for handling access operations issued to local cache structures within a data processing apparatus

Publications (2)

Publication Number Publication Date
KR20130114606A KR20130114606A (ko) 2013-10-17
KR101677900B1 true KR101677900B1 (ko) 2016-11-21

Family

ID=42471761

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127034220A KR101677900B1 (ko) 2010-06-16 2011-05-11 데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법

Country Status (10)

Country Link
US (1) US8706965B2 (ko)
EP (1) EP2583182B1 (ko)
JP (1) JP5543022B2 (ko)
KR (1) KR101677900B1 (ko)
CN (1) CN102971718B (ko)
GB (1) GB2481232A (ko)
IL (1) IL222671A (ko)
MY (1) MY162612A (ko)
TW (1) TWI493349B (ko)
WO (1) WO2011158012A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102291455B (zh) * 2011-08-10 2014-02-19 华为技术有限公司 分布式集群处理系统及其报文处理方法
US20130117744A1 (en) * 2011-11-03 2013-05-09 Ocz Technology Group, Inc. Methods and apparatus for providing hypervisor-level acceleration and virtualization services
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
JP6337902B2 (ja) * 2013-09-30 2018-06-06 日本電気株式会社 ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム
JP6369069B2 (ja) * 2014-03-17 2018-08-08 日本電気株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
GB2539428B (en) * 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
KR102428563B1 (ko) 2015-09-30 2022-08-03 삼성전자주식회사 수눕 작동을 관리하는 코히런트 인터커넥트와 이를 포함하는 데이터 처리 장치들
US10241913B2 (en) * 2016-01-20 2019-03-26 International Business Machines Corporation Operating local caches for a shared storage device
US10157139B2 (en) * 2016-09-19 2018-12-18 Qualcomm Incorporated Asynchronous cache operations
US10339058B2 (en) * 2017-05-16 2019-07-02 Qualcomm Incorporated Automatic cache coherency for page table data
US10353826B2 (en) * 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US11210222B2 (en) * 2018-01-23 2021-12-28 Vmware, Inc. Non-unified cache coherency maintenance for virtual machines
EP3924832A4 (en) * 2019-02-14 2022-11-23 Telefonaktiebolaget Lm Ericsson (Publ) MEMORY MANAGEMENT CONTROL METHODS AND DEVICES

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778429A (en) * 1994-07-04 1998-07-07 Hitachi, Ltd. Parallel processor system including a cache memory subsystem that has independently addressable local and remote data areas
US6088771A (en) * 1997-10-24 2000-07-11 Digital Equipment Corporation Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US20030009643A1 (en) * 2001-06-21 2003-01-09 International Business Machines Corp. Two-stage request protocol for accessing remote memory data in a NUMA data processing system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04215168A (ja) * 1990-12-13 1992-08-05 Nec Corp コンピュータシステム
US6636950B1 (en) * 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6766424B1 (en) * 1999-02-09 2004-07-20 Hewlett-Packard Development Company, L.P. Computer architecture with dynamic sub-page placement
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
US7469321B2 (en) * 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7653789B2 (en) * 2006-02-01 2010-01-26 Sun Microsystems, Inc. Multiprocessor system that supports both coherent and non-coherent memory accesses
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
US8407451B2 (en) * 2007-02-06 2013-03-26 International Business Machines Corporation Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
TWI435213B (zh) * 2007-03-28 2014-04-21 Ibm 於虛擬資料處理環境中多個邏輯分割間平衡存取各實體系統資源及動態調諧一判定調度排程之排程器的方法、系統及電腦可讀媒體
US7769957B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Preventing writeback race in multiple core processors
JP5104588B2 (ja) * 2007-10-18 2012-12-19 富士通株式会社 マイグレーションプログラム、および仮想マシン管理装置
JP2009193385A (ja) * 2008-02-15 2009-08-27 Nec Corp コンピュータシステム
US8429353B2 (en) * 2008-05-20 2013-04-23 Oracle America, Inc. Distributed home-node hub
JPWO2010038301A1 (ja) * 2008-10-02 2012-02-23 富士通株式会社 メモリアクセス方法及び情報処理装置
US20100161922A1 (en) * 2008-12-19 2010-06-24 Richard William Sharp Systems and methods for facilitating migration of virtual machines among a plurality of physical machines
US8458688B2 (en) * 2009-12-28 2013-06-04 International Business Machines Corporation Virtual machine maintenance with mapped snapshots

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778429A (en) * 1994-07-04 1998-07-07 Hitachi, Ltd. Parallel processor system including a cache memory subsystem that has independently addressable local and remote data areas
US6088771A (en) * 1997-10-24 2000-07-11 Digital Equipment Corporation Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US20030009643A1 (en) * 2001-06-21 2003-01-09 International Business Machines Corp. Two-stage request protocol for accessing remote memory data in a NUMA data processing system

Also Published As

Publication number Publication date
CN102971718B (zh) 2015-12-16
WO2011158012A1 (en) 2011-12-22
GB2481232A (en) 2011-12-21
TW201211777A (en) 2012-03-16
US20110314224A1 (en) 2011-12-22
JP5543022B2 (ja) 2014-07-09
TWI493349B (zh) 2015-07-21
IL222671A (en) 2015-11-30
EP2583182B1 (en) 2014-11-19
EP2583182A1 (en) 2013-04-24
IL222671A0 (en) 2012-12-31
JP2013528879A (ja) 2013-07-11
US8706965B2 (en) 2014-04-22
GB201010114D0 (en) 2010-07-21
KR20130114606A (ko) 2013-10-17
MY162612A (en) 2017-06-30
CN102971718A (zh) 2013-03-13

Similar Documents

Publication Publication Date Title
KR101677900B1 (ko) 데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법
US20210173931A1 (en) Speculative side-channel attack mitigations
JP7228592B2 (ja) 投機的キャッシュ記憶領域
US10725992B2 (en) Indexing entries of a storage structure shared between multiple threads
US8041897B2 (en) Cache management within a data processing apparatus
JP2022534892A (ja) 書き込みミスエントリのドレインをサポートする犠牲キャッシュ
US7925840B2 (en) Data processing apparatus and method for managing snoop operations
US10572179B2 (en) Speculatively performing memory move requests with respect to a barrier
US20070239940A1 (en) Adaptive prefetching
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
US10108464B2 (en) Managing speculative memory access requests in the presence of transactional storage accesses
US10241945B2 (en) Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
US7496715B1 (en) Programmable cache management system and method
US11899607B2 (en) Sending a request to agents coupled to an interconnect
KR101192423B1 (ko) 멀티코어 시스템 및 멀티코어 시스템의 메모리 관리 장치
Bhattacharjee et al. Virtual Memory, Coherence, and Consistency
WO2023055508A1 (en) Storing an indication of a specific data pattern in spare directory entries

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191016

Year of fee payment: 4