KR20200131857A - 스펙트레 완화를 위한 데이터 캐시 세분화 - Google Patents

스펙트레 완화를 위한 데이터 캐시 세분화 Download PDF

Info

Publication number
KR20200131857A
KR20200131857A KR1020207029126A KR20207029126A KR20200131857A KR 20200131857 A KR20200131857 A KR 20200131857A KR 1020207029126 A KR1020207029126 A KR 1020207029126A KR 20207029126 A KR20207029126 A KR 20207029126A KR 20200131857 A KR20200131857 A KR 20200131857A
Authority
KR
South Korea
Prior art keywords
cache
mode
user mode
cpu
kernel
Prior art date
Application number
KR1020207029126A
Other languages
English (en)
Other versions
KR102436979B1 (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 KR20200131857A publication Critical patent/KR20200131857A/ko
Application granted granted Critical
Publication of KR102436979B1 publication Critical patent/KR102436979B1/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/603Details of cache memory of operating mode, e.g. cache mode or local memory mode

Landscapes

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

Abstract

프로세서의 데이터 캐시(L1 및/또는 L2 및/또는 L3)는 실행 모드에 의해 구분되어, 자원을 더 이상 공유하지 않음으로써 특정 말웨어 위험을 제거한다. 커널 모드 소프트웨어는 변화하는 작업 부하들의 데이터 캐시 요구를 동적으로 수용하도록, 데이터 캐시의 두 부분(500, 502)의 상대 크기를 조정할 수 있다.

Description

스펙트레 완화를 위한 데이터 캐시 세분화
본 출원은 개괄적으로 컴퓨터 기술에 근간을 두고 구상적인 기술 개선을 이루는 기술적으로 창의적이고 이례적인 솔루션들에 관한 것이다.
컴퓨터의 프로세서는 최소 두 가지 상이한 작동 모드를 갖는다. 첫 번째는 "커널 모드"로 통칭되고, 두 번째는 "사용자 모드"로 지칭될 수 있지만, 다른 용어들도 사용된다, 예를 들어, "사용자 모드" 대신 이 모드는 "애플리케이션 모드"로 지칭될 수 있다. 커널 모드는 코어 운영 체제(O.S.) 기능들에 채용되는 반면, 사용 모드는 프로세서가 O.S.에 의존하는 특정 작업들에 관한 애플리케이션들, 즉 컴퓨터 프로그램들을 실행할 때 채용된다. 일부 디바이스 드라이버 소프트웨어는 커널 모드에서 실행될 수도 있다.
기본적으로, 커널 모드에서 프로세서는 그것이 이용 가능한 거의 모든 자산에 액세스할 수 있다. 반대로, 사용자 모드에서 프로세서는 그것이 이용 가능한 자산의 전부가 아닌 일부에만 액세스가 허용된다. 사용자 모드에서 액세스를 제한하면 프로세서에 의해 실행되는 애플리케이션이 중요한 운영 체제 데이터를 변경하거나 손상시킬 수 있는 것을 방지한다.
최신 프로세서의 또 다른 기능은 메인 메모리로부터 선택된 데이터의 복사본들이 로딩되는 캐시 메모리이다. 캐시 메모리는 메인 메모리보다 빠르므로, 캐시 메모리의 데이터에 액세스하면 성능이 개선된다. 대부분의 경우, 중앙 처리 장치(CPU)가 메인 메모리를 판독하거나 기록할 때, 데이터 캐시의 일부(때때로 "캐시 블록"이라고 함)에 메인 메모리의 대응하는 부분으로부터의 데이터의 복사본들을 포함하도록 자동으로 할당된다. 데이터 캐시는 각 캐시 블록에 대해 대응하는 메인 메모리 어드레스를 레코딩하므로, 나중에 동일한 메모리 어드레스에 액세스하면 메인 메모리에 직접 액세스하지 않고 데이터 캐시를 판독하거나 기록함에 따라 성능이 향상된다. 데이터 캐시의 부분들을 메모리의 부분들과 연관시키기 위해 다양한 수단이 사용될 수 있다. 간단한 예로서, 최하위 비트가 0인 32-비트 메모리 어드레스가 주어지면, 구현은 어드레스 비트 15-8을 사용하여 256개의 가능한 데이터 캐시 블록 중 하나를 선택할 수 있다.
더 빠른 캐시 메모리는 메인 메모리보다 비싸기 때문에, 일반적으로 메인 메모리보다 작다. CPU가 메인 메모리의 상이한 부분들에 액세스할 때, 데이터 캐시의 복사본들은 "제거(evict)"되고 데이터 캐시의 해당 부분들이 메인 메모리의 보다 최근에 액세스된 부분들을 포함하도록 재할당될 수 있다. 그 다음 CPU가 데이터 캐시로부터 제거된 메모리 어드레스에 액세스하면, 메모리의 해당 부분에 데이터 캐시의 일 부분이 재할당되어야 하고 데이터가 메인 메모리로부터 다시 로딩되어야 하기 때문에, 액세스 속도가 느려진다. 이러한 성능 차이는 CPU에서 실행되는 소프트웨어에 의해 감지될 수 있다.
캐시 메모리는 메인 메모리와 마찬가지로, 일반적으로 커널 모드 및 사용자 모드 소프트웨어에 의해 공유되는 자원으로 취급된다. 사용자 모드 소프트웨어는 일반적으로 데이터 캐시로부터 커널 모드 데이터를 직접 판독할 수 없다. 그러나, 사용자 모드 소프트웨어는 상술된 성능 차이를 감지함으로써 데이터 캐시의 어느 부분들이 제거되고 커널 모드 데이터로 로딩되었는지를 간접적으로 결정할 수 있다.
효율성을 높이기 위해, 다른 방식으로 요청되기 전에, 추측적으로 일부 작업을 순서대로 실행하지 않는 것이 현대 프로세서들의 특징이기도 하다. 간단한 예로서, 프로세서가 조건이 만족되는지 여부를 결정하는 동안 조건에 따른 계산이 미리 실행될 수 있다. 종내 조건이 충족되는 것으로 결정되면, 이미 계산이 완료되었고 결과들이 사용될 수 있으므로, 처리 시간이 단축된다. 종내 조건이 충족되지 않는 것으로 결정되면, 그것은 조건이 충족되는지 여부를 결정하기 위해 대기 기간 동안 추측적으로 수행되었으므로, 처리 시간의 손실 없이 추측적 계산은 간단히 폐기될 수 있다.
"스펙트레(spectre)" 및 "멜트다운(meltdown)"으로 알려져 있는 최신 말웨어는 추측적 실행 및 데이터 캐시 거동의 조합을 악용하려고 한다. 기본적으로, 이러한 "악용"은 커널 모드 소프트웨어에 영향을 주어 궁극적으로 데이터 캐시의 일 부분을 제거하는 명령들을 추측적으로 실행한다. 성능 특성들을 사용하여 어느 부분이 제거되었는지 결정함으로써, "악용"은 보호된 커널 모드 데이터의 값들을 간접적으로 도출할 수 있다. 스펙트레 및 멜트다운의 변형은 추측적 실행에 영향을주기 위해 상이한 수단들을 사용할 수 있지만, 그것들은 모두 데이터 캐시 성능의 차이를 감지함으로써 커널 모드 데이터의 값들을 도출한다.
상기한 내용을 유념하여, 본 원리들을 프로세서의 데이터 캐시를 실행 모드에 의해 구분하여, 커널 모드와 사용자 모드 간에 캐시 자원을 더 이상 공유하지 않음으로써 특정 말웨어 위험을 제거한다. 요구되는 경우, 커널 모드 소프트웨어는 변화하는 작업 부하들의 데이터 캐시 요구를 동적으로 수용하도록, 데이터 캐시의 두 부분의 상대 크기를 조정할 수 있다.
구현에서, 프로세서는 작동 모드를 나타내는 캐시에 하나 이상의 신호 라인을 노출시키며, 캐시는 신호 라인에 의해 표시되는 모드와 상관된 파티션에 메모리를 저장한다.
그에 따라, 디바이스는 적어도 하나의 중앙 처리 장치(CPU) 코어를 포함하며, 이는 차례로 적어도 하나의 제1 CPU 스레드 및 상기 제1 CPU 스레드에 액세스 가능한 적어도 하나의 제1 L1 캐시를 포함한다. 복수의 신호 라인은 상기 제1 CPU 스레드와 상기 제1 L1 캐시 간에서 데이터를 통신한다. CPU 스레드는 복수의 신호 라인 중 적어도 하나의 모드 신호 라인상에 이진 값을 노출시키도록 구성된다. 상기 모드 신호 라인상의 제1 이진 값은 단지 커널 모드 캐시와 연관되는 메모리 어드레스를 나타내며, 상기 모드 신호 라인상의 제2 이진 값은 단지 사용자 모드 캐시와 연관되는 메모리 어드레스를 나타낸다. 이러한 기술을 이용하면, 어떠한 사용자 모드 애플리케이션도 상기 커널 모드 캐시의 동작들을 검출할 수 없도록 사용자 모드 애플리케이션과 연관되는 데이터가 단지 사용자 모드 캐시에 기록되고 그로부터 판독될 수 있다.
일부 예에서, 커널 모드 애플리케이션과 연관되는 데이터는 단지 커널 모드 캐시에 기록되고 그로부터 판독될 수 있다.
예시적인 구현 예들에서, 상기 사용자 모드 캐시 및 커널 모드 캐시는 상기 제1 L1 캐시의 가상 파티션들이다. 다른 예들에서, 상기 디바이스는 제2 L1 캐시를 포함하고, 상기 사용자 모드 캐시 및 커널 모드 캐시가 각각, 상기 제1 L1 캐시 및 제2 L1 캐시에 의해 확립된다.
일부 구현 예에서, 상기 디바이스는 L2 캐시를 포함하고, 상기 L1 캐시와 같이, 어떠한 사용자 모드 애플리케이션도 상기 L2 캐시를 이용한 상기 커널 모드의 동작들을 검출할 수 없도록 사용자 모드 애플리케이션과 연관되는 데이터가 상기 L2 캐시의 단지 사용자 모드 캐시에 기록되고 그로부터 판독될 수 있다.
사용자 모드 및 커널 모드 캐시들이 가상으로 확립될 때, 상기 사용자 모드 캐시 및 커널 모드 캐시의 각각의 크기들은 CPU 동작 동안 변할 수 있다. 상기 크기 변화는 커널 모드 소프트웨어의 제어하에서 적어도 하나의 파라미터에 따를 수 있다. 일부 예에서 상기 크기 변화는 상기 사용자 모드 캐시 및 커널 모드 캐시 중 적어도 하나에서의 데이터 저장량에 따를 수 있다. 일부 구현 예에서, 상기 크기들은 상기 사용자 모드 캐시 및 커널 모드 캐시 중 적어도 하나에서의 데이터 입력/출력 속도에 따라 변한다.
상기 CPU 코어는 제1 CPU 코어일 수 있고 상기 디바이스는 CPU 패키지에 적어도 하나의 제2 CPU 코어를 포함할 수 있으며, 상기 제1 및 제2 CPU 코어들은 L3 캐시를 공유한다.
다른 양태에서, 장치는 적어도 하나의 중앙 처리 장치(CPU) 코어를 포함하며, 이는 차례로 적어도 하나의 제1 CPU 스레드 및 상기 제1 CPU 스레드에 액세스 가능한 적어도 하나의 L1 캐시 어셈블리를 포함한다. 상기 L1 캐시 어셈블리는 사용자 모드 캐시 및 커널 모드 캐시로 파티셔닝된다.
다른 양태에서, 방법은 커널 모드 또는 사용자 모드 중 어느 하나인 실행 모드에 따라 프로세서의 데이터 캐시를 구분하는 단계를 포함한다. 상기 방법은 단지 사용자 모드 캐시에 사용자 모드 애플리케이션 데이터를 기록하는 단계를 포함하여, 사용자 모드 소프트웨어와 커널 모드 캐시를 공유하지 않음으로써 커널 모드 캐시의 동작을 식별하는 말웨어 가능성을 제거한다.
그것의 구조 및 동작 모두에 관한 본 출원의 세부사항들은 첨부 도면들을 참조하여 가장 잘 이해될 수 있으며, 동일한 참조 부호들은 동일한 부분들을 나타내고, 첨부 도면들에서:
도 1은 본 원리들에 따른 예시적인 시스템의 블록도이다;
도 2는 예시적인 특정 처리 시스템 하드웨어 아키텍처의 블록도이다;
도 3은 예시적인 특정 처리 시스템 소프트웨어 아키텍처의 블록도이다;
도 4는 본 원리들에 따른 예시적인 전체 로직의 흐름도이다;
도 5는 사용자 모드와 커널 모드 간이 파티셔닝된 캐시의 개략도이다;
도 6 및 도 7은 예시적인 동적 캐시 할당 로직의 흐름도들이다; 그리고
도 8은 다른 예시적인 특정 처리 시스템 하드웨어 아키텍처의 블록도이다.
본 발명은 개괄적으로 이에 제한되지는 않지만 분산 컴퓨터 게임 네트워크들, 비디오 브로드캐스팅, 콘텐츠 전달 네트워크들, 가상 기계들, 및 기계 학습 애플리케이션들과 같은 소비자 전자(CE) 디바이스의 양태들을 포함하는 컴퓨터 에코시스템들에 관한 것이다. 구분되는 데이터 캐시의 많은 실시 예는 여기에 설명되고 도시된 컴퓨터 서버들 및 모바일 전화들을 포함하여 여러 가지로 구상된다는 점에 유의한다.
여기서의 시스템은 클라이언트와 서버 구성요소들 간에 데이터가 교환될 수 있도록 네트워크를 통해 연결되는 서버 및 클라이언트 구성요소들을 포함할 수 있다. 클라이언트 구성요소들은 Sony PlayStation® 및 관련 마더보드들, 휴대용 텔레비전들(예를 들어, 스마트 TV들, 인터넷 가능 TV들)과 같은 게임 콘솔들, 랩톱들 및 태블릿 컴퓨터들과 같은 휴대용 컴퓨터들, 및 스마트폰들을 포함하는 기타 모바일 디바이스들을 포함하는 하나 이상의 컴퓨팅 디바이스 및 후술될 추가 예들을 포함할 수 있다. 이러한 클라이언트 디바이스들은 다양한 운영 환경에서 작동할 수 있다. 예를 들어, 일부 클라이언트 컴퓨터는 Orbis 또는 Linux 운영 체제들, Microsoft 운영 체제들 또는 Unix 운영 체제 또는 Apple, Inc. 또는 Google이 만든 운영 체제들을 예로 들 수 있다. 이러한 운영 환경들은 이에 제한되지는 않지만, 브라우저, 컴퓨터 게임, 웹 또는 스마트 폰 애플리케이션, 금융 또는 워드 프로세싱 프로그램들과 같은 개인용 컴퓨팅 애플리케이션들, 자동차들 및 제조 장비와 같은 디바이스들을 위한 제어 프로그램들, 및 임의의 다른 애플리케이션과 같은 하나 이상의 사용자 모드 프로그램을 실행하는데 사용될 수 있다.
서버들 및/또는 게이트웨이들은 인터넷과 같은 네트워크를 통해 데이터를 송수신하도록 서버들을 구성하는 명령들을 실행하는 하나 이상의 프로세서를 포함할 수 있다. 또는 클라이언트와 서버를 로컬 인트라넷 또는 가상 사설망을 통해 연결할 수 있다. 서버 또는 제어기는 Sony PlayStation®, 퍼스널 컴퓨터 등과 같은 게임 콘솔 및/또는 이의 하나 이상의 마더모드에 의해 인스턴스화될 수 있다.
정보는 클라이언트들과 서버들 간에 네트워크를 통해 교환될 수 있다. 이를 위해 그리고 보안을 위해, 서버들 및/또는 클라이언트들에는 방화벽들, 로드 밸랜서들, 임시 스토리지들 및 프록시들 및 안정 및 보안을 위한 기타 네트워크 인프라스트럭처가 포함될 수 있다. 하나 이상의 서버는 온라인 소셜 웹 사이트와 같은 보안 커뮤니티를 네트워크 멤버들에게 제공하는 방법들을 구현하는 장치를 형성할 수 있다.
여기서 사용될 때, 명령들은 시스템에서 정보를 처리하기 위해 컴퓨터로 구현되는 단계들을 지칭한다. 명령들은 소프트웨어, 펌웨어 또는 하드웨어로 구현할 수 있고 시스템의 구성요소들에 의해 수행되는 임의의 유형의 프로그래밍된 단계를 포함한다.
프로세서는 어드레스 라인들, 데이터 라인들 및 제어 라인들 및 레지스터들 및 시프트 레지스터들과 같은 다양한 라인을 통해 로직을 실행할 수 있는 임의의 종래의 범용 단일- 또는 다중-칩 프로세서일 수 있다.
흐름도들을 통해 설명되는 소프트웨어 모듈들 및 여기서의 사용자 인터페이스들은 다양한 서브 루틴, 절차 등을 포함할 수 있다. 개시 내용을 제한하지 않고, 특정 모듈에 의해 실행되는 것으로 언급되된 로직은 다른 소프트웨어 모듈들에 재분산되고/거나 함께 하나의 모듈로 조합되고/거나 공유 가능한 라이브러리에서 이용 가능하게 될 수 있다.
여기에 설명되는 본 원리들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합들로서 구현될 수 있고; 그에 따라, 예시적인 구성요소들, 블록들, 모듈들, 회로들 및 단계들이 기능 측면에서 제시된다.
위에서 언급한 것 외에, 후술될 논리 블록들, 모듈들 및 회로들은 여기서 설명된 기능들을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서(DSP), 필드 프로그램 가능한 게이트 어레이(FPGA) 또는 주문형 집적 회로(ASIC)와 같은 다른 프로그램 가능한 논리 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 구성요소들 또는 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 프로세서는 제어기 또는 상태 기계 또는 컴퓨팅 디바이스들의 조합에 의해 구현될 수 있다.
후술될 기능들 및 방법들은 소프트웨어로 구현될 때, 이에 제한되지는 않지만, Java, C# 또는 C++과 같은 적절한 언어로 작성될 수 있고, 랜덤 액세스(RAM), 판독 전용 메모리(ROM), 전기적으로 소거 가능한 프로그래밍 가능한 판독 전용 메모리(EEPROM), 컴팩트 디스크 판독 전용 메모리(CD-ROM) 또는 다른 광학 디스크 스토리지 이를테면 디지털 다용도 디스크(DVD), 자기 디스크 스토리지 또는 이동식 썸 드라이브들 등을 포함하는 다른 자기 스토리지와 같은 컴퓨터 판독 가능한 저장 매체상에 저장되거나 이를 통해 송신될 수 있다. 연결은 컴퓨터 판독 가능한 매체를 확립할 수 있다. 그러한 연결들에는 예들로서, 광섬유 및 동축 와이어들 및 디지털 가입자 회선(DSL) 및 연선들을 포함하는 유선 케이블들이 포함될 수 있다. 그러한 연결들에는 적외선 및 라디오를 포함하는 무선 통신 연결들이 포함될 수 있다.
일 실시 예에 포함된 구성요소들은 임의의 적절한 조합으로 다른 실시 예들에서 사용될 수 있다. 예를 들어, 본 명세서에 설명된 그리고/또는 도면들에 도시된 다양한 구성요소 중 임의의 구성요소는 다른 실시 예들로부터 조합, 교환 또는 배제될 수 있다.
"A, B 및 C 중 적어도 하나를 갖는 시스템"(마찬가지로 "A, B 또는 C 중 적어도 하나를 갖는 시스템" 및 "A, B, C 중 적어도 하나를 갖는 시스템")은 A 단독, B 단독, C 단독, A와 B를 함께, A와 C를 함께, B와 C를 함께, 그리고/또는 A, B와 C를 함께 등으로 갖는 시스템들을 포함한다.
도 1에 도시된 바와 같이, 중앙 처리 장치(CPU) 패키지(200)(도 2를 참조하여 아래에서 더 설명됨)는 칩셋(10)상에 구현될 수 있으며, 이는 차례로 단일 제품으로서 판매될 수 있는 집적 회로 또는 칩 그룹에 의해 구현될 수 있다.
도 1의 예시적인 칩셋(10)은 적절한 칩 대 칩 인터페이스(14)를 통해 입력/출력 제어기(12)와 통신할 수 있다. CPU 패키지(200)는 메모리(208)와 인터페이싱할 수 있으며, 이것 또한 도 2를 참조하여 아래에서 더 논의된다. 메모리(208)는 일종의 랜덤 액세스 메모리(RAM)일 수 있다.
CPU 패키지(200)는 CPU 패키지(200)와 디스플레이 디바이스(18), 그래픽 디바이스, 고화질 멀티미디어 인터페이스(HDMI, 고선명 멀티미디어 인터페이스) 디바이스 등과 같은 다양한 주변 디바이스 간 통신을 확립하는 하나 이상이 인터페이스(16) 이를테면 저전압 차동 시그널링 인터페이스(LVDS, differential signaling interface), PCI-익스프레스 인터페이스 등을 포함할 수 있다.
I/O 허브 제어기(12)는 또한 이에 제한되지는 않지만, 직렬 ATA(SATA) 인터페이스, LPC(low-pin count) 인터페이스, PCI-E 인터페이스, USB(universal serial), 범용 I/O 인터페이스(GPIO, general purpose I/O interface ), 근거리 네트워크(LAN) 인터페이스 및 기타 네트워크 인터페이스들, 전원 관리 인터페이스, 클럭 생성기 인터페이스, 시스템 관리 버스 인터페이스(예를 들어, 다중 -마스터 직렬 컴퓨터 버스 인터페이스), 직렬 주변 플래시 메모리/제어기 인터페이스(SPI 플래시)(후자는 기본 입출력 시스템(BIOS, basic input output system)(20)의 부트 코드에 액세스하기 위한 인터페이스이다) 중 하나 이상과 같은 다양한 인터페이스(18)를 포함할 수 있다.
I/O 허브 제어기(12)의 인터페이스(들)(18)는 BIOS(20)에 더하여, 네트워크들을 포함하여 입력/출력 디바이스들과의 통신을 제공할 수 있다. 예를 들어, I/O 제어기(12)는 하나 이상의 디스크 드라이브(22), 오디오 스피커(24), 와이파이 또는 다른 무선 송수신기(26) 및 키보드, 마우스, 마이크(음성 입력용), 카메라 등과 같은 입력 디바이스(28)와 통신할 수 있다. 여기서의 방법들은 프로세서, 적절하게 구성된 주문형 반도체들(ASIC, application specific integrated circuits) 또는 필드 프로그램 가능한 게이트 어레이(FPGA, field programmable gate array) 모듈들에 의해 실행되는 소프트웨어 명령들, 또는해당 기술분야의 통상의 기술자들에 의해 이해될 바와 같은 임의의 기타 편리한 방식으로서 구현될 수 있다. 채용될 때, 소프트웨어 명령들은 CD ROM 또는 플래시 드라이브와 같은 비일시적 디바이스에 구현될 수 있다. 소프트웨어 코드 명령들은 대안적으로 라디오 또는 광학 신호와 같은 일시적인 배열로 구현되거나, 인터넷을 통한 다운로드를 통해 구현될 수 있다.
이제 도 2를 참조하면, 예시적인 중앙 처리 장치(CPU) 패키지(200)가 두 개의 CPU 코어(202)를 갖는 것으로 도시되어 있다. 각 CPU 코어(202)는 하드웨어 스레드들 또는 하이퍼-스레드들이라고도 하는 두 개의 CPU 스레드(204)를 포함할 수 있다. 각 CPU 스레드(204)는 각각의 레지스터 세트를 포함하고 기계 코드를 실행하는데 사용될 수 있다.
또한, 각 CPU 코어(202)는 캐시 메모리들(206)이 각각 레벨 1 및 레벨 2 메모리들임을 나타내기 위해 도 2에서 "L1" 및 "L2"로 라벨링된 하나 이상의 캐시 메모리(206)를 포함할 수 있다. 캐시 레벨이 낮을수록, CPU 스레드에 가까워지고, 더 작고 더 빠르며 더 비쌀수록 그렇다. 마찬가지로, 캐시 레벨이 높을 수록, CPU로부터 더 멀어지고 메인 메모리(208)에 가까워지며, 더 크고 더 느리며 더 저렴할수록 그렇다.
도 2에서는, CPU 코어마다 하나의 하드웨어 L1 캐시가 도시되어 있으며, 아래 도 5에서는 L1 캐시가 커널 메모리와 사용자 모드 메모리간에 가상으로 파티셔닝되는 방식을 보여준다. 아래에서 더 설명될 도 8은 CPU 코어마다 두 개의 하드웨어 L1 캐시를 채용하는 대안적인 아키텍처를 도시한다.
도 2는 단지 두 개의 CPU 코어를 갖는 단순화된 CPU 패키지(200)를 도시하고 있지만, CPU 패키지는 둘보다 많은 코어를 포함할 수 있음을 이해해야 한다. 예를 들어, CPU 패키지는 30개의 CPU 코어가 포함될 수 있다. CPU 코어의 수에 관계 없이, 도 2의 예에서는 CPU 패키지(200) 내의 모든 CPU 코어(202)가 공통 L3 캐시(210)를 공유한다. CPU 코어는 둘보다 많은 캐시 레벨(즉, L1 레벨 및 L2 레벨보다 많이)을 포함할 수도 있고 하나의 레벨(L1)만 포함할 수도 있으며, 마찬가지로 CPU 패키지는 셋보다 많거나 적은 캐시 레벨을 포함할 수 있음에 유의한다.
또한 예시를 위해 도 2에 도시된 바와 같이, CPU 스레드(204)는 복수의 신호 라인(212)을 통해 L1 캐시(206)와 데이터를 통신한다. 이러한 신호 라인들은 데이터를 판독하거나 기록하기 위한 메모리 어드레스를 나타내며, 하나의 메모리 어드레스는 복수의 신호 라인을 갖는다. 신호 라인들의 미리 결정된 모드 라인, 예를 들어, 제1 신호 라인(214)은 작동 모드 그리고 그에 따라 액세스할 캐시에서의 위치를 나타내는데 사용될 수 있다. 예를 들어, 모드 라인(214)상의 "0" 값은 커널 모드를 나타낼 수 있고 모드 라인(214)상의 "1" 값은 사용자 모드를 나타낼 수 있으며, 관련 데이터는 모드 라인(214)에 의해 표시되는 모드에 대응하는 파티션의 L1 캐시에 의해 저장된다. 요구되는 경우, 모드 라인(214)은 통상적으로 사용되는 신호 라인들에 대한 추가 신호 라인일 수 있거나, 용도가 변경된 기존 신호 라인일 수 있다. 어느 경우든, CPU 스레드는 통상적으로 메모리 어드레스를 이용하여 먼저 L1 캐시에 액세스하고, L1 캐시에 할당된 메모리 어드레스가 있으면, 판독/기록를 위해 그것에 액세스된다. 그렇지 않고 메모리 어드레스가 L1 캐시에 할당되지 않은 경우, CPU 스레드는 메모리 어드레스를 이용하여 L2 캐시에 액세스하여 L2 캐시에서 판독/기록이 수행될 수 있는지 여부를 결정하고, L3 캐시까지 그리고 요청된 메모리 어드레스가 어떠한 캐시에도 없는 경우 종내 메인 메모리에 그렇게 한다.
따라서, 도 2는 CPU 스레드와 L1 캐시 간 모드 라인을 도시하지만, 본 원리들은 일반적으로 다른 캐시 레벨들, 예를 들어, L2 및 L3 캐시들에도 적용될 수 있다. 그에 따라, 사용자 모드와 커널 모드 간 L1 캐시의 파티셔닝이 설명되지만, L2 및 L3 캐시들 또한 본 원리들에 따라 작동 모드에 따라 파티셔닝될 수 있다. 그렇지 않으면, L1 캐시는 사용자 모드와 커널 모드 간에 파티셔닝되지 않고 단지 하나 이상의 보다 상위 캐시 레벨만 그렇게 파티셔닝될 수 있다.
도 3은 아래에서 더 자세히 설명되는 도 2 또는 도 8의 아키텍처에 의해 구현될 수 있는 바와 같은 컴퓨터 하드웨어(300) 상위의 소프트웨어 아키텍처를 도시한다. 하드웨어 추상화 계층(HAL)(302)은 애플리케이션들에 제공되는 가상 어드레스들을 하드웨어(300)의 물리적 어드레스들에 매핑한다. O.S. 커널(304)은 HAL(302)로의 데이터 입출력을 제어하고 커널 모드에서 작동한다. 일부 드라이버 지원 루틴(306)이 또한 O.S. 커널(304)에 연결될 수 있고 커널 모드에서 작동할 수 있다. 기타 커널 모드 드라이버들(308)은 드라이버 지원 루틴들(306)에 액세스할 수 있고 커널 모드에서 작동할 수 있다. 특정 파일 시스템 드라이버들(310) 또한 커널 모드에서 작동할 수 있고 O.S. 커널(304)에 액세스할 수 있다.
다른 한편, 사용자 애플리케이션들(312) 및 보조 운영 체제 애플리케이션 프로그래밍 인터페이스들(API)(314)은 사용자 모드에서 작동할 수 있다. 사용자 모드 드라이버들(316) 또한 API(314)를 통해 사용자 모드에서 작동할 수 있다. 이러한 사용자 모드 드라이버들(316)은 기타 커널 모드 드라이버들(308)과 통신하도록 허용될 수 있다.
도시된 예는 두 가지 작동 모드, 즉, 사용자 모드와 커널 모드를 가정하지만, 일부 프로세서는 둘보다 많은 작동 모드를 채용할 수도 있다. 예를 들어, 일부 아키텍처는 "링들(rings)"로 지칭되고 개괄적으로 중첩된 원들로 그려져 가장 안쪽에 있는 링이 가장 권한이 있고 가장 보호될 수 있는 네 가지 작동 모드를 포함할 수 있다. 그러한 경우에는, 하나의 모드 신호 라인을 사용하여 두 모드 간의 이원 파티션을 나타내는 것이 아니라, 두 모드 신호 라인(총 네 개의 이진 값)을 사용하여 네 개의 캐시 파티션 중 어느 것이 표시되는지를 나타낼 수 있다. 그러한 경우들에서, 네 개의 캐시 파티션(가상 또는 물리)이 제공된다.
도 4는 본 원리들에 따른 전반적인 로직을 도시한다. 블록(400)으로 시작되어, 캐시가 사용자 모드 캐시 및 커널 모드 캐시로 파티셔닝된다. L1 캐시만 그렇게 파티셔닝되거나 하나 이상의 보다 상위 캐시 레벨 또한 그렇게 파티셔닝될 수도 있다. 파티셔닝은 도 2 및 5에 도시된 바와 같이 가상이거나 도 8에 도시된 바와 같이 물리적일 수 있다. 가상일 때, "N-1" 캐시 블록들의 초기 그룹은 커널 모드 파티션에 할당될 수 있고 "N-M"의 블록들의 초기 그룹은 사용자 모드 파티션에 할당될 수 있으며, 그러한 파티션 할당들은 고정될 수 있거나 도 6 및 도 7의 예들이 도시하는 바와 같이 시간에 따라 달라질 수 있다. 어느 경우든, 커널 모드 캐시에 대한 캐시 블록은 "커널 모드"를 나타내는데 사용되는 이진 값과 동일한 모드 신호 라인(214) 이진 값을 갖는 한편, 사용자 모드 캐시에 대한 메모리 어드레스는 "사용자 모드"를 나타내는데 사용되는 이진 값과 동일한 모드 신호 라인(214) 이진 값을 갖는다.
물리적 캐시 파티셔닝이 도 8에 도시되고 아래에서 더 설명될 바와 같이 사용될 때, 커널 모드 물리적 캐시에 대한 캐시 블록들은 모두 "커널 모드"를 나타내는데 사용되는 이진 값과 동일한 모드 신호 라인 이진 값들을 갖는 한편, 사용자 모드 물리적 캐시에 대한 메모리 어드레스들은 모두 "사용자 모드"를 나타내는데 사용되는 이진 값과 동일한 모드 신호 라인 이진 값들을 갖는다.
블록 402로 이동하면, 사용자 모드의 CPU 동작 동안, 모든 사용자 모드 애플리케이션은 사용자 모드 캐시에 대해서만 판독/기록 동작들을 실행하도록 허용된다. 블록 404는 기본적으로 사용자 모드 애플리케이션들이 커널 모드 캐시로부터 데이터 제거와 같은 데이터 동작들을 포함하여 커널 모드 캐시에 액세스하거나 그 외 "보는 것(seeing)"이 불허됨을 강조한다.
일부 예에서, 블록 406은 커널 모드에서 작동되는 프로그램들이 마찬가지로 적어도 저장(기록) 측면에서 그리고 요구되는 경우 또한 커널 모드 데이터를 검색(판독)하는 측면에서 커널 모드 캐시에만 액세스하도록 허용될 수 있음을 나타내지만, O.S.와 같은 커널 모드 프로그램들은 통상적으로 사용자 모드 애플리케이션들을 대신하여 사용자 모드 캐시에 액세스하여 그러한 사용자 모드 프로그램들을 대신하여 사용자 모드 캐시로부터 그리고 그것에 사용자 모드 데이터를 팡판독하고 기록할 수 있다.
도 5는 단지 커널 모드 데이터만 기록되고 판독될 수 있는 커널 모드 전용 데이터 파티션(500) 및 단지 사용자 모드 데이터만 기록되고 판독될 수 있는 사용자 모드 파티션(502)으로 파티셔닝되는 하나의 물리적 L1 캐시를 도시한다. 점선(504)은 가상 사용자 모드 캐시(502)와 가상 커널 모드 캐시(500) 간 경계를 나타낸다. 예시를 위해, 커널 모드 파티션(500)에는 캐시 블록들 0 내지 N-1("N"은 0보다 큰 정수)이 할당될 수 있고, 사용자 모드 파티션에는 캐시 라인들 N-M("M"은 "N"보다 큰 정수)이 할당될 수 있다.
작동 중에, 사용자 모드 캐시(502) 및 커널 모드 캐시(500)의 크기들은 변할 수 있다, 즉, 개념적으로 라인(504)을 위로 또는 아래로 이동시켜 다른 하나를 희생시키면서 모드 캐시들 중 하나의 크기를 증가시킬 수 있다. 일례에서, 커널 모드 소프트웨어의 제어하의 하나 이상의 파라미터가 이러한 목적으로 사용될 수 있다.
도 6 및 7은 도 5의 사용자 모드 캐시(502)와 커널 모드 캐시(500) 간에 캐시 블록들을 동적으로 할당하기위한 임의의인 대체 기술들을 도시한다. 도 6의 블록(600)에서 시작하여, 현재 데이터 저장 레벨들은 커널 모드 및 사용자 모드 캐시들에서 식별된다. 데이터 저장 레벨들 중 하나가 결정 다이아몬드(602)에서 임계치를 충족시키는 것으로 결정되면, 다른 (덜 가득 찬) 모드 캐시로부터 취해져, 블록(604)에서 추가 캐시 블록들이 그것에 할당될 수 있다. 개념적으로,도 5의 경계(504)는 다른 모드 캐시에 블록들을 포기하는 모드 캐시쪽으로 이동되며, 그에 따라 도시된 예에서 "N"은 동적으로 변한다.
도 7의 대안적인 구현에서, 블록(700) 현재 데이터 사용량, 예를 들어, 단위 시간당 I/O 동작들의 관점에서, 커널 모드 및 사용자 모드 캐시들에서 식별된다. 데이터 사용량들 중 하나가 결정 다이아몬드(702)에서 임계치를 충족시키는 것으로 결정되면, 다른 (덜 사용되는) 모드 캐시로부터 취해져, 블록(704)에서 추가 캐시 블록들이 그것에 할당될 수 있다. 개념적으로,도 5의 경계(504)는 다른 모드 캐시에 블록들을 포기하는 모드 캐시쪽으로 이동되며, 그에 따라 도시된 예에서 "N"은 동적으로 변한다.
이제 도 8을 참조하면, 예시적인 CPU 패키지(800)가 구성 및 동작이 서로 동일한 두 개의 CPU 코어(802)를 갖는 것으로 도시되어 있으므로, 단지 하나의 코어의 구성요소들만이 도시된다. 각 CPU 코어(802)는 두 개의 CPU 스레드(804)를 포함할 수 있다. 각 CPU 스레드(804)는 각각의 레지스터 세트를 포함하고 기계 코드를 실행하는데 사용될 수 있다.
또한, 각 CPU 코어(802)는 두 개의 물리적 레벨 1(L1) 캐시(806, 808)를 포함할 수 있다. 제1 L1 캐시(806)는 사용자 모드 동작을 위한 것이고, 제2 L1 캐시(808)는 커널 모드 동작만을 위한 것이다. 둘보다 많은 작동 모드가 채용되는 경우, 수반되는 물리적 L1 캐시 수가 제공될 수 있다. 도 8의 L1 캐시들의 동작은 가상 캐시 파티션들 대신 물리적 캐시 파티션들이 캐시들(806, 808)에 의해 확립된다는 점을 제외하고는, 전술한 가상 L1 캐시 파티셔닝의 동작을 반영한다.
도 8에서, 물리적 모드 파티셔닝은 또한 사용자 모드와 커널 모드 L2 물리적 캐시들(810, 812)과 사용자 모드와 커널 모드 물리적 L3 캐시들(814, 816) 간에도 구상되며, 모드별 가상 파티셔닝의 경우와 마찬가지로, 다른 예들에서는 단지 L1 캐시가 파티셔닝되고, 그에 따라 코어당 하나의 L2 캐시 및 패키지당 하나의 L3 캐시만 사용되어야 한다. 도 2의 가상 캐시 모드 파티셔닝의 경우와 같이, 도 8에서 CPU 패키지(800)는 둘보다 많은 코어를 포함할 수 있고, CPU 코어(802)는 둘보다 많은 캐시 레벨(즉, L1 레벨 및 L2 레벨보다 많이)을 포함할 수도 있고 하나의 레벨(L1)만 포함할 수도 있으며, 마찬가지로 CPU 패키지는 셋보다 많거나 적은 캐시 레벨을 포함할 수 있다.
또한 예시를 위해 도 8에 도시된 바와 같이, CPU 스레드(804)는 데이터를 판독 또는 기록하기 위한 메모리 어드레스를 나타내는 복수의 신호 라인(818)을 통해 L1 캐시들(806)과 데이터를 통신하며, 신호 라인들의 모드 라인은 작동 모드 그리고 그에 따라 물리적 L1 캐시들(806, 808) 중 액세스하려고 하는 캐시를 나타내는데 사용된다.
가상 및 물리적 캐시 파티셔닝의 조합이 사용될 수 있음에 유의한다. 예를 들어, L1 캐시는 예를 들어, 도 5에 따라 가상으로 파티셔닝될 수 있는 한편, L2 캐시는 예를 들어, 도 8에 따라 물리적으로 파티셔닝될 수 있다.
본 원리들은 일부 예시적인 실시 예를 참조하여 설명되었지만, 이들은 제한하려는 의도가 아니며, 본 명세서에서 청구된 요지를 구현하기 위해 다양한 대안적인 배열이 사용될 수 있다는 것을 이해할 것이다.

Claims (20)

  1. 디바이스로서,
    적어도 하나의 중앙 처리 장치(CPU) 코어로서:
    적어도 하나의 제1 CPU 스레드;
    상기 제1 CPU 스레드에 액세스 가능한 적어도 하나의 제1 L1 캐시;
    상기 제1 CPU 스레드와 상기 제1 L1 캐시 간 데이터 통신을 위한 복수의 신호 라인을 포함하며, 상기 CPU 스레드는 상기 복수의 신호 라인의 적어도 하나의 모드 신호 라인상에 이진 값을 노출시키도록 구성되고, 상기 모드 신호 라인상의 제1 이진 값은 단지 커널 모드 캐시와 연관되는 메모리 어드레스를 나타내며, 상기 모드 신호 라인상의 제2 이진 값은 단지 사용자 모드 캐시와 연관되는 메모리 어드레스를 나타내되, 어떠한 사용자 모드 애플리케이션도 상기 커널 모드 캐시의 동작들을 검출할 수 없도록 사용자 모드 애플리케이션과 연관되는 데이터가 단지 사용자 모드 캐시에 기록되고 그로부터 판독될 수 있는, 디바이스.
  2. 청구항 1에 있어서, 커널 모드 애플리케이션과 연관되는 데이터는 단지 커널 모드 캐시에 기록되고 그로부터 판독될 수 있는, 디바이스.
  3. 청구항 1에 있어서, 상기 사용자 모드 캐시 및 커널 모드 캐시는 상기 제1 L1 캐시의 가상 파티션들인, 디바이스.
  4. 청구항 1에 있어서, 제2 L1 캐시를 포함하며, 상기 사용자 모드 캐시 및 커널 모드 캐시가 각각, 상기 제1 L1 캐시 및 제2 L1 캐시에 의해 확립되는, 디바이스.
  5. 청구항 1에 있어서, L2 캐시를 포함하며, 어떠한 사용자 모드 애플리케이션도 상기 L2 캐시를 이용한 상기 커널 모드의 동작들을 검출할 수 없도록 사용자 모드 애플리케이션과 연관되는 데이터가 상기 L2 캐시의 단지 사용자 모드 캐시에 기록되고 그로부터 판독될 수 있는, 디바이스.
  6. 청구항 3에 있어서, 상기 사용자 모드 캐시 및 커널 모드 캐시의 각각의 크기들이 CPU 동작 동안 변하는, 디바이스.
  7. 청구항 6에 있어서, 상기 크기들은 커널 모드 소프트웨어의 제어하에서 적어도 하나의 파라미터에 따라 변하는, 디바이스.
  8. 청구항 6에 있어서, 상기 크기들은 상기 사용자 모드 캐시 및 커널 모드 캐시 중 적어도 하나에서의 데이터 저장량에 따라 변하는, 디바이스.
  9. 청구항 6에 있어서, 상기 크기들은 상기 사용자 모드 캐시 및 커널 모드 캐시 중 적어도 하나에서의 데이터 입력/출력 속도에 따라 변하는, 디바이스.
  10. 청구항 1에 있어서, 상기 CPU 코어는 제1 CPU 코어이고 상기 디바이스는 CPU 패키지에 적어도 하나의 제2 CPU 코어를 포함하고, 상기 제1 및 제2 CPU 코어들은 L3 캐시를 공유하는, 디바이스.
  11. 장치로서,
    적어도 하나의 중앙 처리 장치(CPU) 코어로서:
    적어도 하나의 제1 CPU 스레드; 및
    상기 제1 CPU 스레드에 액세스 가능한 제1 L1 캐시 어셈블리를 포함하며;
    상기 L1 캐시 어셈블리는 사용자 모드 캐시 및 커널 모드 캐시로 파티셔닝되는, 장치.
  12. 청구항 11에 있어서, 상기 L1 캐시 어셈블리는 상기 사용자 모드 캐시 및 커널 모드 캐시로 파티셔닝되는 하나의 물리적 L1 캐시를 포함하는, 장치.
  13. 청구항 11에 있어서, 상기 L1 캐시 어셈블리는 단지 상기 사용자 모드 캐시를 확립하는 제1 물리적 L1 캐시 및 단지 상기 커널 모드 캐시를 확립하는 제2 물리적 L1 캐시를 포함하는, 장치.
  14. 청구항 11에 있어서, 사용자 모드의 CPU 동작 동안, 모든 사용자 모드 애플리케이션은 단지 상기 사용자 모드 캐시로 입력/출력 동작들을 실행하도록 허용되며, 사용자 모드 애플리케이션들은 커널 모드 캐시로부터의 데이터 제거를 포함하여 커널 모드 캐시에 액세스하거나 그 외 "보는 것(seeing)"이 불허되는, 장치.
  15. 청구항 14에 있어서, 커널 모드에서 작동되는 프로그램들은 커널 모드 데이터를 기록하기 위해 단지 커널 모드 캐시에 액세스하도록 허용되는, 장치.
  16. 청구항 11에 있어서,
    상기 제1 CPU 스레드와 상기 L1 캐시 간 데이터 통신을 위한 복수의 신호 라인을 포함하며, 상기 CPU 스레드는 상기 복수의 신호 라인의 적어도 하나의 모드 신호 라인상에 이진 값을 노출시키도록 구성되고, 상기 모드 신호 라인상의 제1 이진 값은 단지 커널 모드 캐시와 연관되는 메모리 어드레스를 나타내며, 상기 모드 신호 라인상의 제2 이진 값은 단지 사용자 모드 캐시와 연관되는 메모리 어드레스를 나타내되, 어떠한 사용자 모드 애플리케이션도 상기 커널 모드 캐시의 동작들을 검출할 수 없도록 사용자 모드 애플리케이션과 연관되는 데이터가 단지 사용자 모드 캐시에 기록되고 그로부터 판독될 수 있는, 장치.
  17. 청구항 11에 있어서, L2 캐시를 포함하며, 어떠한 사용자 모드 애플리케이션도 상기 L2 캐시를 이용한 상기 커널 모드의 동작들을 검출할 수 없도록 사용자 모드 애플리케이션과 연관되는 데이터가 상기 L2 캐시의 단지 사용자 모드 캐시에 기록되고 그로부터 판독될 수 있는, 장치.
  18. 청구항 11에 있어서, 상기 CPU 코어는 제1 CPU 코어이고 상기 장치는 CPU 패키지에 적어도 하나의 제2 CPU 코어를 포함하고, 상기 제1 및 제2 CPU 코어들은 L3 캐시를 공유하는, 장치.
  19. 방법으로서,
    커널 모드 및 사용자 모드를 포함하는 실행 모드에 따라 프로세서의 데이터 캐시를 구분하는 단계; 및
    단지 사용자 모드 캐시에 사용자 모드 애플리케이션 데이터를 기록하는 단계를 포함하여, 사용자 모드 소프트웨어와 커널 모드 캐시를 공유하지 않음으로써 커널 모드 캐시의 동작을 식별하는 말웨어 가능성을 제거하는, 방법.
  20. 청구항 19에 있어서, 커널 모드 소프트웨어를 사용하여 상기 커널 모드 캐시 및 사용자 모드 캐시의 상대 크기들을 조정하는 단계를 포함하는, 방법.
KR1020207029126A 2018-04-12 2019-04-03 스펙트레 완화를 위한 데이터 캐시 세분화 KR102436979B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/951,553 US10691621B2 (en) 2018-04-12 2018-04-12 Data cache segregation for spectre mitigation
US15/951,553 2018-04-12
PCT/US2019/025600 WO2019199544A1 (en) 2018-04-12 2019-04-03 Data cache segregation for spectre mitigation

Publications (2)

Publication Number Publication Date
KR20200131857A true KR20200131857A (ko) 2020-11-24
KR102436979B1 KR102436979B1 (ko) 2022-08-29

Family

ID=68159981

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207029126A KR102436979B1 (ko) 2018-04-12 2019-04-03 스펙트레 완화를 위한 데이터 캐시 세분화

Country Status (5)

Country Link
US (2) US10691621B2 (ko)
KR (1) KR102436979B1 (ko)
CN (1) CN112602068B (ko)
TW (1) TWI709909B (ko)
WO (1) WO2019199544A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100030964A1 (en) * 2008-07-31 2010-02-04 Samsung Electronics Co., Ltd. Method and system for securing instruction caches using cache line locking
US20130132702A1 (en) * 2011-11-22 2013-05-23 Mips Technologies, Inc. Processor with Kernel Mode Access to User Space Virtual Addresses

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049866A (en) * 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US8706964B1 (en) 2007-09-28 2014-04-22 The Mathworks, Inc. Automatic generation of cache-optimized code
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
WO2012134431A1 (en) * 2011-03-25 2012-10-04 Research In Motion Limited Dynamic power management of cache memory in a multi-core processing system
KR20170033407A (ko) * 2014-09-25 2017-03-24 인텔 코포레이션 확장된 mesi 프로토콜을 이용하는 멀티 프로세서 시스템의 인터커넥트 트래픽 감소
US9747218B2 (en) 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10579125B2 (en) 2016-02-27 2020-03-03 Intel Corporation Processors, methods, and systems to adjust maximum clock frequencies based on instruction type
US10931652B2 (en) * 2017-01-24 2021-02-23 Microsoft Technology Licensing, Llc Data sealing with a sealing enclave
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100030964A1 (en) * 2008-07-31 2010-02-04 Samsung Electronics Co., Ltd. Method and system for securing instruction caches using cache line locking
US20130132702A1 (en) * 2011-11-22 2013-05-23 Mips Technologies, Inc. Processor with Kernel Mode Access to User Space Virtual Addresses

Also Published As

Publication number Publication date
TWI709909B (zh) 2020-11-11
KR102436979B1 (ko) 2022-08-29
US20200272582A1 (en) 2020-08-27
US10691621B2 (en) 2020-06-23
US20190317903A1 (en) 2019-10-17
CN112602068B (zh) 2024-01-30
US11307999B2 (en) 2022-04-19
TW202004495A (zh) 2020-01-16
CN112602068A (zh) 2021-04-02
WO2019199544A1 (en) 2019-10-17

Similar Documents

Publication Publication Date Title
US10768827B2 (en) Performance throttling of virtual drives
US11526440B2 (en) Providing multiple memory modes for a processor including internal memory
EP3230873B1 (en) Computing method and apparatus with persistent memory
CN102819497A (zh) 一种内存分配方法、装置及系统
US10061701B2 (en) Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
US10241926B2 (en) Migrating buffer for direct memory access in a computer system
US11068418B2 (en) Determining memory access categories for tasks coded in a computer program
US10310759B2 (en) Use efficiency of platform memory resources through firmware managed I/O translation table paging
US20240078187A1 (en) Per-process re-configurable caches
US10204060B2 (en) Determining memory access categories to use to assign tasks to processor cores to execute
US9715455B1 (en) Hint selection of a cache policy
US20220114086A1 (en) Techniques to expand system memory via use of available device memory
TW201621678A (zh) 特權等級指出技術
US11307999B2 (en) Data cache segregation for spectre mitigation
US20200201691A1 (en) Enhanced message control banks
US20150326684A1 (en) System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access
US20220382672A1 (en) Paging in thin-provisioned disaggregated memory
US11805114B2 (en) Enhanced N-layer SSO controlled authentication for enterprise devices
KR20130131135A (ko) QoS 기반 캐시 컨트롤러 및 그 동작 방법
US10216524B2 (en) System and method for providing fine-grained memory cacheability during a pre-OS operating environment
US20130282907A1 (en) Network separation apparatus and method
US11928511B2 (en) Systems and methods for prioritizing memory allocation for isolated computing workspaces executing on information handling systems
KR20240022969A (ko) 동적으로 스택 카나리를 업데이트하는 방법 및 시스템

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant