KR101077673B1 - 신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치 및방법 - Google Patents

신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치 및방법 Download PDF

Info

Publication number
KR101077673B1
KR101077673B1 KR1020070140193A KR20070140193A KR101077673B1 KR 101077673 B1 KR101077673 B1 KR 101077673B1 KR 1020070140193 A KR1020070140193 A KR 1020070140193A KR 20070140193 A KR20070140193 A KR 20070140193A KR 101077673 B1 KR101077673 B1 KR 101077673B1
Authority
KR
South Korea
Prior art keywords
memory
partition
register
communication channel
code module
Prior art date
Application number
KR1020070140193A
Other languages
English (en)
Other versions
KR20080063189A (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 KR20080063189A publication Critical patent/KR20080063189A/ko
Application granted granted Critical
Publication of KR101077673B1 publication Critical patent/KR101077673B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)

Abstract

설정 레지스터를 포함하는 메모리 컨트롤러, 상기 메모리 컨트롤러에 연결되는 통신 채널, 및 상기 통신 채널에 연결되는 제1 및 제2 메모리 파티션을 포함하며, 상기 설정 레지스터 내의 설정 파라미터들은 상기 메모리 컨트롤러가 한번에 오직 하나의 파티션만을 인식하도록 셋팅되는 장치. 메모리 컨트롤러가 통신 채널에 의해 메모리 컨트롤러에 연결된 제2 메모리 파티션 대신 통신 채널에 의해 메모리 컨트롤러에 연결된 제1 메모리 파티션을 인식하도록 메모리 컨트롤러의 설정 레지스터 내의 설정 파라미터들을 셋팅하는 단계 및 메모리 컨트롤러가 제1 메모리 파티션 대신 제2 메모리 파티션을 인식하도록 설정 파라미터를 리셋팅하는 단계를 포함하는 프로세스.
스위칭, 운영 체제, 컨텍스트

Description

신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치 및 방법{APPARATUS AND METHOD FOR FAST AND SECURE MEMORY CONTEXT SWITCHING}
본 발명은 일반적으로 컴퓨터 메모리에 관한 것이며, 더욱 상세하게는, 컴퓨터 메모리 내에서 신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치, 시스템 및 방법에 관한 것이나, 이에 한정되는 것은 아니다.
모두는 아니더라도, 컴퓨터는 어떤 종류의 컨텍스트를 사용하도록 동작한다. 가장 친숙하고 가장 많이 사용되는 컨텍스트는, 거의 모든 컴퓨터의 모든 기본 기능들을 실행하는 운영 체제(operating system)이다. 운영 체제는, 입력, 출력, 스케줄링 및 메모리 관리와 같은 컴퓨터의 기본 동작들을 제어하는 "슈퍼 프로그램(super program)"이며, 또한 사용자 어플리케이션과 같은, 그 안에서 다른 프로그램들이 실행될 수 있는 컨텍스트를 제공하기도 한다. 따라서, 예컨대 대부분의 개인용 컴퓨터들은 어떤 버전의 마이크로소프트 윈도우즈(Microsoft Windows)를 운영 시스템으로서 사용하며, MS 윈도우즈는 그 안에서 마이크로소프트 아웃룩(Microsoft Outlook), 워드(Word) 및 엑셀(Excel)과 같은 어플리케이션이 실행될 수 있는 컨텍스트를 제공한다.
어떤 환경에서 사용자는, MS 윈도우즈 상에서 실행되는 몇몇 어플리케이션과, 리눅스(Linux)와 같은 다른 운영 체제 상에서 실행되는 다른 어플리케이션을 보유할 수 있으며, 때때로 윈도우즈와 리눅스 사이에서 스위치할 필요가 있을 수 있다. 이러한 환경에서는, 사용자가 각각의 운영 체제를 실행시키는 별도의 컴퓨터를 보유하는 것 대신에, 같은 컴퓨터 상에서 하나 이상의 운영체제를 사용할 수 있도록 하는 것이 가장 편리하고 경제적일 것이다. 이는 운영 체제들을 스위칭하여 사용자가 컨텍스트들을 스위치할 수 있도록 함으로써 이루어질 수 있다. 도 1은 현재의 콘텍스트 스위칭의 구현을 도시한 도면이며, 여기에서는 제1 및 제2 운영체제 사이에서 스위칭 한다는 관점에서 기술되어 있다. 도 1은 메모리 컨트롤러(102), 저장소(104) 및 메모리(106)를 포함하는 기본 메모리 시스템(100)을 개략적으로 도시한다. 저장소(104) 및 메모리(106) 둘 다 메모리 컨트롤러(102)에 연결된다. 시스템(100)이 그 일부가 되는 컴퓨터의 시동(start-up)시에, 메모리 컨트롤러(102)는, 메모리 컨트롤러(102)로 하여금 제1 운영 체제를 위한 코드를 저장소(104)로부터 검색하고 그 코드를 메모리(106) 내에 복사하도록 하는 명령어들을 프로세서(도시되지 않음)로부터 수신한다. 일단 메모리(106) 내로 로딩되면, 컴퓨터는 제1 운영 체제 뿐만 아니라 그 운영 체제 상에서 실행되는 임의의 프로그램들을 실행시킨다.
컴퓨터 사용자가 운영 체제들을 변경하고자 하는 경우, 사용자는 시스템(100)이 제1 운영 체제 및 제2 운영 체제 사이에서 스위치되도록 명령할 수 있다. 가장 원시적이고 기본적인 구현에서는, 운영 체제를 스위치하는 명령을 수 신하자마자, 컴퓨터 전체가 셧다운(shut dow)되고 제2 운영 체제를 사용하여 리부팅하도록 진행된다. 조금더 정교한 구현에서는, 시스템(100)이 운영 체제를 스위치하는 명령을 수신할 경우, 프로세서는 메모리 컨트롤러(102)로 명령들을 송신하여 메모리(106)로부터 제1 운영 체제를 플러쉬(flush)하도록 한다. 제1 운영 체제가 메모리로부터 플러쉬되면, 메모리 컨트롤러(102)가 저장소(104)로 액세스하여 제2 운영 체제를 위한 코드를 찾아내고 그 코드를 저장소(104)로부터 메모리(106)로 이동시킨다. 제2 운영 체제가 메모리(106) 내에 로딩되면, 시스템(100)은 제2 운영 시스템을 사용하여 실행되고, 제2 운영 체제를 위해 설계된 어플리케이션들을 사용할 수 있다.
도 1과 관련하여 설명된 위와 같은 컨텍스트-스위칭 접근법들은 몇몇 단점을 갖고 있으며, 그중 가장 두드러지는 문제는 운영 체제들 사이에서 스위치하는 것이 너무 오래 걸리고 귀찮다는 점이다. 보통 자기 또는 광학 디스크 드라이브인 저장소(104)로 액세스하여 읽는 것이 느리기 때문에, 제2 운영 체제를 로딩하여 시동하는 데에 시간이 걸린다. 또다른 실질적인 단점으로, 어떤 경우에는, 운영 체제 스위치를 수행하기 위해서는 컴퓨터가 물리적으로 셧다운되어야 한다는 점이다, 즉, 사용자는 물리적으로 컴퓨터 전원을 꺼야 한다는 점이다.
신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치, 시스템 및 방법의 실시예들이 여기에서 설명된다. 이하의 설명에서, 본 발명의 실시예들의 완전한 이해를 제공하기 위해 많은 특정 상세사항들이 설명된다. 그러나, 당업자라면 본 발명이 특정 상세사항들 없이, 또는 다른 방법, 구성요소, 재료 등으로 실시될 수 있음을 인정할 것이다. 다른 예에서, 잘 알려진 구조들, 재료들 또는 동작들이 상세하게 도시 또는 설명되지 않았지만, 그럼에도 불구하고 본 발명의 범위에 포함된다.
본 명세서 전체에서의 "일실시예" 또는 "실시예"라고 지칭하는 것은, 그 실시예와 관련하여 설명되는 상세한 특징, 구조 또는 특색이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서에서 "일 실시예에서" 또는 "실시예에서"와 같은 문구의 등장은 반드시 모두 동일한 실시예를 지칭하는 것은 아니다. 또한, 상세 특징, 구조 또는 특색은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다.
도 2는 신속한 컨텍스트-스위칭 메모리 시스템(200)의 실시예를 도시한다. 메모리 시스템(200)은, 하나 이상의 설정 레지스터(204)를 그 안에 갖는 메모리 컨트롤러(202)를 포함한다. 적어도 하나의 통신 채널은 메모리 컨트롤러(202)를 적어도 하나의 메모리에 연결하며, 이러한 실시예에서, 한쌍의 통신 채널(206 및 208)이 적어도 하나의 메모리에 각각 연결되는데, 통신 채널(206)은 메모리 모듈(210 및 212)에 연결되는 한편, 이와 유사하게 통신 채널(208)은 메모리 모듈(214 및 216)에 연결된다. 물론, 다른 실시예는 이보다 많거나 적은 통신 채널들을 포함할 수 있으며, 각각의 통신 채널은 위 도면에 도시된 실시예에서보다 더 많거나 더 적은 수의 메모리 모듈들에 연결될 수 있다.
도시된 실시예에서, 메모리 모듈들(210, 212, 214 및 216)은 이중 인-라인 메모리 모듈(Dual In-Line Memory Module; DIMM)이며, 각각의 메모리 모듈들은 일반적으로 "랭크(rank)"로 알려진 2열의 메모리 장치들을 포함한다. 예컨대, 메모리 모듈(210)은 제1열 또는 제1 랭크(210a)와 제2열 또는 제2 랭크(210b)로 구성된다. 일 실시예에서, 모듈에서 사용되는 메모리 장치는 DRAM을 포함하나, 본 발명의 실시예들이 이러한 점에 제한되는 것은 아니다. 도시된 실시예는 메모리에 대해 DIMM 설정을 사용하지만, 메모리 시스템(200)의 다른 실시예에서는, 단일 인-라인 메모리 모듈(Single In-Line Memory Module; SIMM) 및 이와 유사한 것과 같은 다른 종류의 메모리 모듈이 사용될 수 있다. 게다가, 메모리 시스템(200) 내의 모든 메모리 모듈들이 동일한 종류일 필요는 없는데, 다른 실시예에서, 사용되는 상이한 메모리 모듈들이 충분한 용량을 가지며 메모리 컨트롤러(202) 상의 설정 레지스터(204)를 사용하여 적절하게 어드레스되고 설정되기만 한다면, 그 메모리 모듈들의 임의의 조합이 메모리 모듈(210, 212, 214 및 216)에 사용될 수 있다. 메모리 모듈(210 내지 216)은 두 개의 메모리 파티션(partition)으로 그룹화될 수 있는데, 제1 메모리 파티션은 메모리 모듈(210 및 214)를 포함하고 제2 메모리 파티션 은 메모리 모듈(212 및 216)을 포함한다. 도 4 및 5와 관련하여 아래에서 더 설명될 바와 같이, 이러한 메모리 분할은, 컨트롤러가 한번에 하나의 메모리 파티션에 대해 어드레스 디코딩을 하도록 설정 레지스터(204) 내의 적절한 파라미터들을 셋팅함으로써 수행된다. 이러한 방법으로 레지스터를 설정함으로써, 제1 파티션 내에서 실행되는 컨텍스트(예컨대, 운영 체제)가 제2 파티션 내의 메모리에 액세스하지 않고, 제2 파티션 내에서 실행되는 컨텍스트(예컨대, 운영 체제)가 제1 파티션 내의 메모리에 액세스하지 않음을 보증하게 되며, 따라서 메모리 액세스 충돌과 같은 문제를 피하게 된다.
통신 채널(206 및 208)은 메모리 모듈(210, 212, 214 및 216)을 메모리 컨트롤러(202)에 연결하며, 메모리 모듈과 컨트롤러 간에 통신 및 데이터 교환을 가능하게 한다. 메모리 시스템(200)의 일 실시예에서, 통신 채널(206 및 208)은 전기 신호들을 전달할 수 있는 전기 전도성 경로이며, 인쇄 회로 기판 내의 메모리 버스가 이와 같은 전도성 경로의 예이다. 그러나, 다른 실시예에서는, 통신 채널이 다른 종류의 전기적인 통신 채널일 수 있으며, 또는 완전히 다른 종류의 통신 채널, 예컨대, 도파관(waveguide) 또는 광섬유와 같은 광학 통신 채널일 수 있다.
메모리 컨트롤러 허브(Memory Controller Hub; MCH)로도 알려져 있는 메모리 컨트롤러(202)는 메모리 모듈(210, 212, 214 및 216) 간의 데이터의 흐름 뿐만 아니라, 프로세서 및/또는 저장 매체와 같은 컴퓨터 내에 있는 다른 구성요소들(도시되지 않음)과 메모리 컨트롤러(202) 간의 데이터의 흐름을 제어한다. 특히, 메모리 컨트롤러(202)는 적어도 하나의 설정 레지스터(204)를 포함한다. DIMM을 메모 리 모듈로 사용하는 도시된 실시예에서, 설정 레지스터(204)는 DRAM 랭크/열 바운더리(DRAM Rank/Row Boundary; DRB) 레지스터를 포함한다. DRB 레지스터는, 중앙 처리 장치(CPU) 및 직접 메모리 액세스(Direct Memory Access; DMA) 어드레스를 메모리 모듈(210 내지 216) 내의 물리적인 메모리 셀에 맵핑하기 위해 사용된다.
전형적인 컴퓨터 시스템 상에서, 기본 입출력 시스템(basic input-output system; BIOS)은 보통의 메모리 초기화 시퀀스의 일부로서 설정 레지스터를 프로그래밍한다. BIOS는 DIMM에 질의하여 각각의 DIMM이 얼마나 많은 메모리를 지원하는지를 판단한 다음, 각각의 DIMM에 대해서 DRB 레지스터 내에 올바른 값을 프로그래밍한다. DRB 레지스터 내의 파라미터들은, 각각의 DIMM이 얼마나 많은 메모리를 지원하는지와, 프로세서 어드레스를 DIMM 상의 물리적인 메모리 셀에 어떻게 맵핑하는지를 알려준다. DRB 레지스터는 점증적인 방식(incremental manner)으로 프로그램된다. 이중-채널에 있어서는, 다음과 같은 실시예가 있다.
Ch0 내의 총 메모리 = C0_DRB0 + C0_DRB1 + C0_DRB2 + C0_DRB3
Ch1 내의 총 메모리 = C1_DRB0 + C1_DRB1 + C1_DRB2 + C1_DRB3
시스템 내의 총 메모리 = Ch0 내의 총 메모리 + Ch1 내의 총 메모리
많은 메모리 시스템이 이중 메모리 채널을 지원하며, 따라서 그러한 시스템에서는 별개의 세트의 DRB 메모리 레지스터들이 각각의 메모리 채널에 할당될 수 있다. 이러한 이중-채널 토폴로지(topology)는 시스템 메모리 대역폭에 영향을 주 지 않는 방식으로 메모리 파티션들을 생성한다.
도 3은 컨텍스트-스위칭 메모리 시스템(300)의 대안적인 실시예를 도시한다. 도 2에 도시된 메모리 시스템(200)과 마찬가지로, 메모리(300)는 하나 이상의 설정 레지스터(304)를 그 안에 갖는 메모리 컨트롤러(302)를 포함한다. 또한, 한쌍의 통신 채널(306 및 308)이 메모리 컨트롤러(302)에 연결된다. 메모리 컨트롤러(302)에의 연결에 더하여, 통신 채널(306)은 메모리 모듈(310 및 312)에 연결되며, 이와 유사하게 통신 채널(308)은 메모리 모듈(314 및 316)에 연결된다.
메모리 시스템(300)은 대개 메모리 파티션의 토폴로지에 있어서 메모리 시스템(200)과 상이하다. 메모리 시스템(200)에서, 각각의 파티션은 각각의 통신 채널에 연결된 메모리 모듈을 포함하는데, 예컨대, 제1 파티션은 통신 채널(206)에 연결된 메모리 모듈(210)과 통신 채널(208)에 연결된 메모리 모듈(214)을 포함한다. 그 결과, 메모리 시스템(200) 내의 각각의 메모리 파티션은 메모리 컨트롤러(202)와 통신하는 두개의 채널을 가진다. 이와는 반대로, 메모리 시스템(300)에서는, 각각의 파티션은 동일한 통신 채널에 연결된 복수의 메모리 모듈을 포함하며, 따라서, 메모리 시스템(300)에서, 제1 파티션은 동일한 통신 채널(306)에 연결된 메모리 모듈들(310 및 312)을 포함하며, 제2 파티션은 동일한 통신 채널(308)에 연결된 메모리 모듈들(314 및 316)을 포함한다. 그 결과, 각각의 메모리 파티션은 메모리 컨트롤러(302)와 통신하는 하나의 채널을 가진다. 메모리 시스템(200)과 마찬가지로, 메모리 시스템(300)에서 파티션들은, 메모리 컨트롤러가 한번에 하나의 파티션에 대해 어드레스 디코딩을 하도록 설정 레지스터(304) 내의 파라미터 값들을 조정 함으로써 생성된다. 이와 같은 방식으로 레지스터를 설정함으로써, 제1 파티션 내에서 실행되는 컨텍스트(예컨대, 운영 체제)가 제2 파티션 내의 메모리에 액세스하지 않고, 제2 파티션 내에서 실행되는 컨텍스트(예컨대, 운영 체제)가 제1 파티션 내의 메모리에 액세스하지 않음을 보증하게 되며, 따라서 메모리 액세스 충돌과 같은 문제를 피하게 된다.
도 4는 메모리 시스템(200 또는 300)과 같은 컨텍스트-스위칭 메모리 시스템을 포함하는 기본적인 컴퓨터 시스템(400)의 실시예를 도시한다. 컴퓨터 시스템(400)은, 메모리 시스템(200 또는 300)과 같은 분할된(partitioned) 메모리의 일부를 구성하는 메모리 컨트롤러(202)와 비휘발성 메모리(404)에 연결되는 프로세서(402)를 포함한다. 메모리 컨트롤러(202)는 저장 장치(406)에도 연결된다.
프로세서(402)는, 인텔 펜티엄(Intel Pentium) 프로세서와 같은 프로그램 가능한 일반용 프로세서에서부터 주문형 반도체(Application Specific Integrated Circuit; ASIC)까지 임의의 종류의 프로세서일 수 있다. 그중에서도 특히, 프로세서(402)는, RAM(Random Access Memory) 또는 다른 종류의 메모리와 같은 내장형(on-board) 메모리를 어느 정도 포함하며, 어떤 프로그램을 실행시키기 위해 메모리 전부 또는 일부를 사용할 수 있다.
프로세서(402)가 그 내장형 메모리 내에서 실행할 수 있는 프로그램들 중 하나는 특권 코드 모듈(privileged code module)(즉, 운영 체제보다 더 큰 메모리 액세스 특권을 갖는 코드 모듈)이며, 도시된 실시예에서, 특권 코드 모듈은 인증된 코드 모듈(Authenticated Code Module, ACM; 403)이지만, 다른 실시예에서는 특권 코드 모듈은 시스템 관리 모드(System Management Module, SMM) 모듈, 내장된 마이크로컨트롤러, 또는 다른 특권 코드 모듈일 수 있다. 일 실시예에서, 특권 코드 모듈은 설정 레지스터를 적어도 잠금해제(unlock)하는 유일한 수단이나, 다른 실시예에서는, 특권 코드 모듈이 레지스터를 잠금해제 뿐만 아니라 설정 및 잠금(lock)도 할 수 있다. 또다른 실시예에서는, 비특권(non-privileged) 코드 모듈에 의해 설정 및 잠금이 수행되고, 특권 코드 모듈은 모듈을 잠금해제 할 수 있다. ACM과 같은 특권 코드 모듈이 레지스터를 적어도 잠금해제 할 수 있도록 하는 것이 바람직할 수 있는데, 이는 플랫폼과 함께 작동하도록 설계된 특권 코드에 의해 적어도 레지스터의 잠금해제가 이루어지는 것을 보증하게 되기 때문이다.
도시된 실시예에서, ACM(403)은 플랫폼에 대해 암호적으로 바인딩되며(cryptographically bound) 디지털적으로 서명된다. 바인딩(binding)은 ACM 공개키(public key)의 해시(hash)를 연산하고 이를 칩셋 또는 프로세서 하드웨어 내에 상주하는 해시와 비교함으로써 수행된다. ACM은 프로세서의 기존의 보안 머신 익스텐션(Secure Machine Extension, SMX) 성능을 사용하여 시작된다. ACM을 시작하면, 프로세서(402)는 인증 및 실행을 위해 특수 메모리(인증된 코드 RAM(Authenticated Code RAM, ACRAM)으로 알려짐) 내에 모듈을 로딩한다. 일 실시예에서, ACRAM은 프로세서 캐시의 특수 모드를 사용하여 구현될 수 있으나, 다른 실시예에서는 내장형 RAM의 일부를 사용한다던지 하여 다르게 구현될 수 있다. ACRAM의 다른 구현예도 가능하다.
ACM이 일단 ACRAM 내에 로딩되면, 프로세서는 플랫폼 바인딩에 대한 디지털 서명(digital signature-to-platform binding)을 인증하고, 그 다음 디지털 서명을 사용하여 모듈 자체를 인증한다. 디지털 서명이 성공적으로 인증되면, 프로세서(402)는 특권 환경 내에서 ACM의 실행을 시작하며, 그 환경 내에서 ACM은 컨트롤러 내의 특권 LT.Config.Lock 및 LT.Config.Un-lock 명령에 액세스한다. 이 명령들이 ACM에 의해 이슈되면(issued), 컨트롤러는 이 명령들을 따른다(honor). 잠금/잠금해제 명령은 컨트롤러의 메모리 제어/설정 레지스터의 잠금 및 해제를 제어한다. 본 발명의 실시예들은, 메모리 설정 레지스터를 잠금해제하는 이러한 특수 명령들을 사용하고, 메모리 파티션을 생성하기 위헤 메모리 설정을 변경하며, 메모리 분할(partitioning)이 서명된 ACM에 의해 활성화/비활성화(enabled/disabled)될 수 있도록 하기 위해 설정 레지스터를 재잠금(re-lock)할 수 있다.
이러한 명령들 및/또는 다른 명령들을 사용함으로써, ACM(403)은 메모리 내의 다른 OS 컨텍스트들 간에 스위칭할 수 있게 하기 위해 메모리 파티션을 턴온(turn on) 또는 턴오프(turn off)하는 안전한 스위치(switch)를 구현한다. 이는 파티션 내의 메모리 파티션들 및/또는 메모리 모듈들을 숨김 또는 노출할 수 있도록 하는 방식으로 메모리 설정 레지스터를 조작함으로써 이루어질 수 있다. 일 실시예에서, 이러한 메모리 조작은, 레지스터들이 한번에 하나의 파티션에 대해 어드레스 디코딩을 하도록 레지스터들을 셋팅하는 것과 관련되며, 이는 컨트롤러가 복수의 오버랩핑 물리적 메모리 영역(overlapping physical memory range)을 관리할 수 있도록 하여 한번에 하나의 영역이 보이도록 한다. 이러한 방법으로, ACM은 물리적 메모리를, 둘 이상의 분리된 영역으로 효율적으로 분할할 수 있는데, 이러한 분리는 컨트롤러 디코드 로직에 영향을 주어 달성되는 것이다. 이는 OS 컨텍스트의 더 신속한 스위칭을 가능케 하고, 스위칭 메카니즘에 안전성을 더해준다.
프로세서(402)는 임의의 종류의 비휘발성 메모리일 수 있는 비휘발성 메모리(404)에 연결되며, 비휘발성 메모리의 예로서 플래시 메모리, ROM, EPROM 등이 포함된다. 그 중에서도 특히, 비휘발성 메모리(404)는, 운영 체제가 로딩되어 컴퓨터의 동작을 인수할 때까지 프로세서(402)가 그 기본 기능들을 동작시킬 필요가 있는 기본 입출력 시스템(Basic Input-Output System, BIOS)을 저장할 수 있다. BIOS는 컴퓨터를 부팅시키고, 기본 접속을 개설하며, 운영 체제 로딩에 선행하는 어떤 기능들을 수행하고, 운영 체제를 로딩한다.
도 5a는 시스템(200) 또는 시스템(300)과 같은 컨텍스트-스위칭 메모리 시스템이 컴퓨터 시스템(400) 내에서 동작하는데 따르는 프로세스(500)의 실시예를 도시한다. 블록(502)에서 시작하여, 컴퓨터 시스템이 시동된다. 블록(504)에서, 시스템은, 예컨대 그것의 BIOS를 사용하여, 인증된 코드 모듈(Authenticated Code Module, ACM)을 로딩하고 ACM을 인증한다. ACM이 인증된 후, 블록(506)에서, 시스템은 제1 컨텍스트 - 이 실시예에서는 제1 운영 체제 - 를 제1 메모리 파티션 내로 로딩한다. 블록(508)에서, 시스템은 제2 컨텍스트 - 이 실시예에서는 제2 운영 체제 - 를 제2 메모리 파티션 내로 로딩한다. 운영 체제들이 그들 각각의 파티션 내로 로딩되어 부팅된 후, 블록(510)에서 설정 레지스터가 잠금해제되고, 설정 레지스터 내의 파라미터들이 셋팅되어 제1 파티션에 대한 어드레스 디코딩이 일어난다. 이와 같이 설정 파라미터를 셋팅함으로써, 시스템은 제1 파티션을 인식하고 제2 파티션은 존재하지 않는 것처럼 작동한다. 설정 레지스터 내의 파라미터가 적절하게 셋팅되면, 블록(514)에서 설정 레지스터는 ACM에 의해 잠금상태가 된다. 제1 메모리 파티션에 대해 어드레스 디코딩을 함으로써, 블록(516)에서 제1 운영 체제를 사용하여 시스템이 동작한다.
제1 운영 체제를 실행하는 한편, 블록(518)에서 컴퓨터 시스템은 운영 체제를 스위치하도록 하는 지시가 수신되었는지를 확인한다. 지시가 수신되지 않은 경우, 블록(516)에서 시스템은 계속하여 제1 운영 체제를 실행한다. 블록(518)에서 운영 체제를 스위치하라는 지시가 수신되면, 블록(520)에서 ACM은 설정 레지스터를 잠금해제하고, 블록(522)에서, 컨트롤러가 제2 파티션과 연관된 어드레스들을 디코딩하도록 설정 레지스터 내의 파라미터를 셋팅하며, 이러한 방식으로 설정 파라미터들을 셋팅함으로써, 메모리 컨트롤러는 제2 파티션을 인식하고 제1 파티션은 존재하지 않는 것처럼 작동한다. 설정 레지스터 내의 파라미터가 셋팅되면, 블록(524)에서 설정 레지스터는 ACM에 의해 잠금상태가 되며, 블록(526)에서 제2 운영 체제가 실행을 시작한다.
제2 운영 체제를 실행시키는 동안에, 블록(528)에서 컴퓨터 시스템은 운영 체제를 스위치하라는 지시가 수신되었는지 확인한다. 지시가 수신되지 않으면, 블록(526)에서 시스템은 계속하여 제2 운영 체제를 실행시킨다. 블록(528)에서, 운영 체제를 스위치하라는 지시가 수신되면, 프로세스는 블록(510)으로 돌아가며, 블록(510)에서 ACM이 설정 레지스터를 잠금해제하고, 블록(512)에서 설정 레지스터 내의 파라미터들을 셋팅하여 컨트롤러가 다시 제1 파티션에 대한 어드레스들을 디코딩한다. 설정 레지스터 내의 파라미터들이 셋팅되면, 블록(514)에서 설정 레지스터들이 잠금상태가 되며, 블록(516)에서 제1 운영 체제가 실행을 시작한다.
도 5b는 시스템(200) 또는 시스템(300)과 같은 컨텍스트-스위칭 메모리 시스템이 컴퓨터 시스템(400) 내에서 동작하는데 따르는 프로세스(550)의 대안적인 실시예를 도시한다. 프로세스(550)는 우선 운영 체제를 로딩하는 시퀀스에 있어서 프로세스(500)와 상이하다. 프로세스(500)에서, 처음에 두개의 운영 체제가 로딩되며, 운영체제를 스위칭하는 것은 두 운영체제 사이에서의 토글링(toggling)을 수반한다. 프로세스(550)에서는, 먼저 제1 운영 체제가 로딩 및 사용되고, 필요할 때 제2 운영 체제가 로딩, 부팅 및 동작된다. 그러나, 제2 운영 체제가 로딩되면, 두 운영체제 모두 메모리 내에 있으며, 프로세스(500)에서와 같이 운영 체제를 스위칭하는 것은 두 운영 체제 사이에서의 토글링을 수반한다.
블록(552)에서 시작하여, 컴퓨터 시스템이 시동된다. 블록(554)에서, 시스템은, 예컨대 기본 입출력 시스템(BIOS)을 사용하여, 인증된 코드 모듈(ACM)을 로딩하고 ACM을 인증한다. ACM이 인증된 후, 블록(556)에서 ACM은 설정 레지스터를 셋팅하여 제1 파티션에 대해 어드레스 디코딩을 하며, 이와 같은 방식의 설정 파라미터 셋팅에 의해, 시스템은 제1 파티션을 인식하고 제2 파티션은 존재하지 않는 것처럼 작동한다. 블록(558)에서 ACM이 설정 레지스터를 잠금상태로 한 후, 블록(560)에서 시스템은 제1 컨텍스트 - 이 실시예에서는 제1 운영 체제 - 를 제1 메모리 파티션 내로 로딩하고, 운영 체제를 부팅하며, 블록(562)에서 제1 운영 체 제를 실행시킨다.
블록(564)에서 시스템은 컨텍스트(즉, 운영 체제)를 변경하라는 지시를 기다린다. 지시가 수신되지 않으면, 시스템은 계속하여 제1 운영 체제를 실행시킨다. 블록(564)에서 운영 체제를 변경하라는 지시가 수신되면, 블록(566)에서 ACM은 설정 레지스터를 잠금해제하며, 블록(568)에서 설정 레지스터를 셋팅하여 제2 파티션에 대해 어드레스 디코딩하고, 블록(570)에서 설정 레지스터를 다시 잠금상태로 한다. 설정 레지스터를 잠금상태로 한 후, 블록(572)에서 시스템은 제2 운영 체제를 제2 파티션 내로 로딩하고, 제2 운영 체제를 부팅시키며, 블록(574)에서 제2 운영체제를 실행시킨다.
블록(576)에서 시스템은 운영 체제를 변경하라는 지시를 기다린다. 지시가 수신되지 않으면, 시스템은 계속하여 제2 운영 체제를 실행시킨다. 블록(576)에서 운영 체제를 변경하라는 지시가 수신되면, 블록(578)에서 ACM은 설정 레지스터를 잠금해제하며, 블록(580)에서 설정 레지스터를 셋팅하여 제2 파티션에 대해 어드레스 디코딩하고, 블록(582)에서 설정 레지스터를 다시 잠금상태로 한다. 설정 레지스터를 잠금상태로 한 후, 시스템은 이미 제1 파티션 내에 로딩되어 있는 제1 운영 체제로 스위치하여 넘어가고, 블록(584)에서 제1 운영 체제를 실행시킨다.
블록(586)에서 시스템은 운영 체제를 변경하라는 지시를 기다린다. 지시가 수신되지 않으면, 블록(584)에서 시스템은 계속하여 제1 운영 체제를 실행시킨다. 블록(586)에서 운영 체제를 변경하라는 지시가 수신되면, 블록(588)에서 ACM은 설정 레지스터를 잠금해제하고, 블록(590)에서 설정 레지스터를 셋팅하여 제2 파티션 에 대해 어드레스 디코딩하며, 블록(592)에서 설정 레지스터를 다시 잠금상태로 한다. 설정 레지스터를 잠금상태로 한 후, 시스템은 제2 파티션 내에 이미 로딩되어 있는 제2 운영 체제로 스위치하여 넘어가며, 블록(594)에서 제2 운영 체제를 실행시킨다.
블록(596)에서 시스템은 운영 체제를 변경하라는 지시를 기다린다. 지시가 수신되지 않으면, 블록(594)에서 시스템은 계속하여 제2 운영 체제를 실행시킨다. 블록(596)에서 운영 체제를 변경하라는 지시가 수신되면, 프로세스는 블록(578)로 돌아가서 다시 컨텍스트-스위칭 시퀀스를 통과하고, 블록(584)에서 제1 운영 시스템을 실행시킨다.
도 6a는 시스템(200) 또는 시스템(300)과 같은 컨텍스트-스위칭 메모리 시스템 내의 메모리를 설정 및 분할하기 위해 사용될 수 있는 설정 레지스터(604)의 실시예를 도시한다. 설정 레지스터(604)의 동작은 도 5a에 도시된 프로세스(500)를 참조하여 논의될 것이며, 도 5b에 도시된 프로세스(550)에 대한 설정 레지스터의 동작의 확장도 유사한데, 주요 차이점은 설정 레지스터를 잠금, 잠금해제 및 설정하는 시퀀스이다. 설정 레지스터(604)는 제1 메모리 파티션에 대한 파라미터를 저장하는 제1 부분(606) 및 제2 파티션에 대한 파라미터를 저장하는 제2 부분(608)인 두 부분을 포함한다. 초기 상태(602)에서, 설정 레지스터(604)는 잠금상태이며, 부분(606) 내의 파라미터는 제1 메모리 파티션에 대해 어드레스 디코딩을 하도록 셋팅되며, 부분(608) 내의 파라미터는 제2 메모리 파티션에 대해 어드레스 디코딩을 하지 않도록 셋팅된다. 도 4에 도시된 동작의 실시예에서, 설정 레지스터 상태(602)는 블록(514 및 416)에 대응된다.
블록(518)에서 메모리 컨트롤러(202 또는 302)가 컨텍스트를 변경하라는 - 이 실시예에서는, 운영 체제를 변경하라는 - 지시를 수신하면, 설정 레지스터(604)는 상태(602)에서 상태(610)로 전이하며, 상태(610)에서 인증된 코드 모듈(ACM)에 의해 잠금해제되었으므로, 상태(610)는 블록(620)에 대응된다. 설정 레지스터(604)가 잠금해제된 후, 상태(610)에서 상태(612)로 전이하며, 상태(612)에서 제1 메모리 파티션에 대해서 어드레스 인코딩이 되지 않도록 제1 메모리 파티션에 대한 파라미터가 셋팅되며, 제2 메모리 파티션에 대해서 디코딩이 되도록 제2 메모리 파티션에 대한 파라미터가 셋팅된다. 상태(612)에서 설정 레지스터(604)의 셋업(setup)은 본질적으로 상태(602)에서의 셋업으로 바꾸어 말할 수 있으며, 블록(522)에 대응된다. 최종적으로, 상태(614)에서, 설정 레지스터(604)는 상태(612)에서의 설정으로 다시 잠금상태가 되며, 따라서 상태(614)는 블록(524 및 526)에 대응된다. 제2 운영 체제에서 제1 운영체제로 스위치하기 위해서, 설정 레지스터(604)는 실질적으로 역순으로 재설정(re-configured)된다. 다시 말하면, 설정 레지스터는 상태(614)(블록(524 및 526)에 대응)에서 시작하여 상태(612)(블록(510)에 대응)로 전이하고, 그다음 상태(610)(블록(512)에 대응)로 전이하여, 최종적으로 블록(514 및 516)에 대응하는 상태(602)로 전이한다.
도 6b는 시스템(200) 또는 시스템(300)과 같은 분할된 메모리 시스템 내의 메모리를 설정 및 분할하기 위해 사용될 수 있는 설정 레지스터(658)의 대안적인 실시예를 도시한다. 설정 레지스터(604)와는 반대로, 설정 레지스터(658)는 한번 에 하나의 메모리 파티션에 대한 파라미터를 저장하는 한 부분을 포함한다. 컨텍스트 스위칭이 가능하도록 하기 위해, 설정 레지스터(658)는, 제1 부분(654)이 제1 메모리 파티션에 대한 파라미터를 저장하도록 할당하고, 제2 부분(656)이 제2 메모리 파티션에 대한 파라미터를 저장하도록 할당하는 별도의 메모리(652)에 연결될 수 있다.
설정 레지스터(604)와 마찬가지로, 설정 레지스터(658)의 동작은 도 5a에 도시된 프로세스(500)를 참조하여 논의될 것이다. 초기 상태(650)에서, 설정 레지스터(658)는 잠금상태이며, 레지스터 내의 파라미터는 제1 메모리 파티션에 대해 어드레스 디코딩하도록 셋팅된다. 제2 파티션에 대한 파라미터는 메모리(652)의 부분(656)에 저장된다. 도 5a에 도시된 동작의 실시예에 있어서, 설정 레지스터 상태(650)는 블록(514)에 대응된다.
블록(518)에서 메모리 컨트롤러(202 또는 302)가 컨텍스트를 변경하라는 - 이 실시예에서는, 운영 체제를 변경하라는 - 지시를 수신하면, 설정 레지스터(658)는 상태(650)에서 상태(660)으로 전이하며, 상태(660)에서 인증된 코드 모듈(ACM)에 의해 잠금해제 되었으므로, 상태(660)는 블록(520)에 대응된다. 설정 레지스터(658)가 잠금해제된 후, 상태(650)에서 상태(660)으로 전이되며, 상태(660)에서 설정 레지스터(658)와 메모리(652) 간의 데이터 통신이 개설된다. 일단 데이터 통신이 개설되면, 제1 메모리 파티션에 대한 파라미터가 설정 레지스터(658)로부터 메모리(652)의 부분(654)으로 복사되며, 제2 메모리 파티션에 대한 파라미터는 메모리(652)의 부분(656)으로부터 설정 레지스터(658)로 복사된다. 상 태(662)에서, 제2 메모리 파티션에 대한 파라미터가 설정 레지스터(658) 내로 로딩되고, 상태(662)에서의 설정 레지스터(658)의 셋업은 블록(522)에 대응된다. 최종적으로, 상태(664)에서, 설정 레지스터(658)는 상태(662)의 설정에서 잠금상태가 되므로, 상태(664)는 블록(524)에 대응된다.
제2 운영 체제에서 제1 운영 체제로 컨텍스트를 스위치하기 위해서, 설정 래지스터(658)는 실질적으로 역순으로 재설정된다. 다시 말해, 설정 레지스터는 상태(664)(블록(524 및 526)에 대응)에서 시작하여, 상태(662)(블록(510)에 대응)로 전이하고, 그다음 상태(660)(블록(512)에 대응)로 전이하며, 최종적으로, 블록(514 및 516)에 대응하는 상태(650)로 전이한다.
요약에 설명된 것을 포함하여, 본 발명의 예시적인 실시예들의 상기 설명은 본발명을 총망라한 것도 아니고 본 발명을 개시된 명확한 형태로 제한하고자 하는 것이 결코 아니다. 본 발명의 특정 실시예 또는 예들이 예시를 위해 여기에 설명되었으나, 이는 본 기술분야의 당업자가 인식할 바와 같이, 다양하고 균등한 변형들이 본 발명의 범위 내에서 가능하다. 이러한 변형들이 위의 상세한 설명에 비추어 본 발명에 이루어질 수 있다.
다음의 특허청구범위에서 사용된 용어들은 본 발명을 명세서 및 특허청구범위에 개시된 특정 실시예들에 한정하는 것으로 해석되어서는 안된다. 오히려, 본 발명의 범위는 전적으로 다음의 특허청구범위에 의해 판단되어야 하며, 특허청구범위는 청구항 해석의 확립된 학설에 따라 해석되어야 한다.
본 발명의 비제한적이고 전부 포함하지 않는(non-exhaustive) 실시예들이 다음의 도면들을 참조하여 기술되며, 동일한 참조 번호는 다른 특정이 없는 한 다양한 시각에서의 동일한 부분을 지칭한다.
도 1은 다중 운영체제 환경의 현재의 메모리 구현의 블록도.
도 2는 분할된 메모리 컨텍스트-스위칭 시스템의 실시예의 블록도.
도 3은 분할된 메모리 컨텍스트-스위칭 시스템의 대안적인 실시예의 블록도.
도 4는 분할된 메모리 컨텍스트-스위칭 시스템의 실시예를 포함하는 컴퓨터 시스템의 실시예의 블록도.
도 5a는 도 2 또는 도 3에 도시된 것과 같은 분할된 메모리 컨텍스트-스위칭 시스템의 동적의 실시예를 도시하는 흐름도.
도 5b는 도 2 또는 도 3에 도시된 것과 같은 분할된 메모리 컨텍스트-스위칭 시스템의 동적의 대안적인 실시예를 도시하는 흐름도.
도 6a는 메모리를 분할하기 위한 메모리 설정 레지스터의 실시예를 도시한 블록도.
도 6b는 메모리를 분할하기 위한 메모리 설정 레지스터의 대안적인 실시예를 도시한 블록도.

Claims (17)

  1. 메모리 컨텍스트 스위칭 장치로서,
    설정 레지스터를 포함하는 메모리 컨트롤러;
    상기 메모리 컨트롤러에 연결되는 통신 채널; 및
    상기 통신 채널에 연결되는 제1 및 제2 메모리 파티션
    을 포함하며,
    상기 설정 레지스터 내의 설정 파라미터들은 상기 메모리 컨트롤러가 한번에 오직 하나의 파티션만을 인식하도록 셋팅되고,
    상기 설정 레지스터는 잠금(lock) 및 잠금해제(unlock)될 수 있으며,
    적어도 상기 잠금해제는 특권 코드 모듈 - 상기 특권 코드 모듈은 디지털 서명을 사용하여 상기 특권 코드 모듈이 실행되는 플랫폼에 암호적으로 바인딩됨 - 에 의해 수행되는,
    메모리 컨텍스트 스위칭 장치.
  2. 메모리 컨텍스트 스위칭 장치로서,
    프로세서 - 상기 프로세서는 상기 프로세서 상에서 실행되는 특권 코드 모듈을 갖고, 상기 특권 코드 모듈은 디지털 서명을 사용하여 상기 프로세서에 암호적으로 바인딩됨 - ;
    상기 프로세서에 연결되는 저장 장치; 및
    상기 프로세서에 연결되는 메모리 시스템
    을 포함하고,
    상기 메모리 시스템은,
    설정 레지스터를 포함하는 메모리 컨트롤러;
    상기 메모리 컨트롤러에 연결되는 통신 채널; 및
    상기 통신 채널에 연결되는 제1 및 제2 메모리 파티션
    을 포함하고,
    상기 설정 레지스터 내의 설정 파라미터들은 상기 메모리 컨트롤러가 한번에 오직 하나의 파티션만을 인식하도록 셋팅되고,
    상기 설정 레지스터는 잠금(lock) 및 잠금해제(unlock)될 수 있으며,
    적어도 상기 잠금해제는 상기 특권 코드 모듈에 의해 수행되는,
    메모리 컨텍스트 스위칭 장치.
  3. 제1항 또는 제2항에 있어서, 상기 통신 채널은 제1 및 제2 통신 채널을 포함하는 메모리 컨텍스트 스위칭 장치.
  4. 제3항에 있어서, 상기 제1 메모리 파티션은 상기 제1 통신 채널에 연결되고 상기 제2 메모리 파티션은 상기 제2 통신 채널에 연결되는 메모리 컨텍스트 스위칭 장치.
  5. 제3항에 있어서, 상기 제1 메모리 파티션 및 상기 제2 메모리 파티션 각각은 상기 제1 통신 채널 및 상기 제2 통신 채널 모두에 연결되는 메모리 컨텍스트 스위칭 장치.
  6. 제1항 또는 제2항에 있어서, 각각의 메모리 파티션은 적어도 하나의 메모리를 포함하는 메모리 컨텍스트 스위칭 장치.
  7. 제1항 또는 제2항에 있어서, 상기 설정 레지스터 내의 상기 파라미터들은 상기 메모리 컨트롤러가 한번에 오직 하나의 메모리 파티션에 대해서만 어드레스 디코딩을 하도록 셋팅되는 메모리 컨텍스트 스위칭 장치.
  8. 제1항 또는 제2항에 있어서, 상기 설정 레지스터는 제1 설정 레지스터 및 제2 설정 레지스터를 포함하며, 각각의 레지스터는 대응하는 메모리 파티션에 대한 설정 파라미터들을 가지고, 한번에 오직 하나의 레지스터만이 그 대응하는 메모리 파티션에 대해 어드레스 디코딩을 하도록 셋팅되는 메모리 컨텍스트 스위칭 장치.
  9. 삭제
  10. 제1항 또는 제2항에 있어서,
    상기 특권 코드 모듈은 상기 설정 레지스터를 잠금, 잠금해제 및 설정할 수 있는 인증된 코드 모듈(Authenticated Code Module; ACM)인, 메모리 컨텍스트 스위칭 장치.
  11. 제10항에 있어서 상기 ACM은 상기 설정 레지스터를 잠금, 잠금해제 및 설정하는 유일한 수단인 메모리 컨텍스트 스위칭 장치.
  12. 메모리 컨텍스트 스위칭 방법으로서,
    통신 채널을 메모리 컨트롤러에 연결하는 단계 - 상기 메모리 컨트롤러는 설정 레지스터를 포함함 -;
    제1 및 제2 메모리 파티션을 상기 통신 채널에 연결하는 단계;
    상기 메모리 컨트롤러가 상기 제1 메모리 파티션만을 인식하도록 상기 설정 레지스터 내의 설정 파라미터들을 셋팅하는 단계;
    상기 설정 레지스터를 잠금해제(unlock)하는 단계;
    상기 메모리 컨트롤러가 상기 제2 메모리 파티션만을 인식하도록 상기 설정 레지스터 내의 설정 파라미터들을 리셋팅하는 단계; 및
    상기 설정 레지스터를 잠금(lock)하는 단계를 포함하고,
    적어도 상기 잠금해제하는 단계가 특권 코드 모듈 - 상기 특권 코드 모듈은 디지털 서명을 사용하여 상기 특권 코드 모듈이 실행되는 플랫폼에 암호적으로 바인딩됨 - 에 의해 수행되는,
    메모리 컨텍스트 스위칭 방법.
  13. 제12항에 있어서, 상기 통신 채널은 제1 및 제2 통신 채널을 포함하며, 상기 제1 메모리 파티션은 상기 제1 통신 채널에 연결되고, 상기 제2 메모리 파티션은 상기 제2 통신 채널에 연결되는 메모리 컨텍스트 스위칭 방법.
  14. 제12항에 있어서, 상기 통신 채널은 제1 및 제2 통신 채널을 포함하며, 상기 제1 메모리 파티션 및 상기 제2 메모리 파티션 둘 다 상기 제1 통신 채널 및 상기 제2 통신 채널에 연결되는 메모리 컨텍스트 스위칭 방법.
  15. 제12항에 있어서, 상기 메모리 컨트롤러가 한번에 오직 하나의 메모리 파티션만을 인식하도록 상기 설정 레지스터 내의 설정 파라미터들을 셋팅하는 단계는, 한번에 오직 하나의 파티션에 대한 어드레스 디코딩을 하도록 상기 파라미터들을 셋팅하는 단계를 포함하는 메모리 컨텍스트 스위칭 방법.
  16. 삭제
  17. 제12항에 있어서, 상기 특권 코드 모듈은 상기 설정 레지스터를 잠금, 잠금해제 및 설정할 수 있는 인증된 코드 모듈(ACM)인, 메모리 컨텍스트 스위칭 방법.
KR1020070140193A 2006-12-28 2007-12-28 신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치 및방법 KR101077673B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/648,455 2006-12-28
US11/648,455 US20080162866A1 (en) 2006-12-28 2006-12-28 Apparatus and method for fast and secure memory context switching

Publications (2)

Publication Number Publication Date
KR20080063189A KR20080063189A (ko) 2008-07-03
KR101077673B1 true KR101077673B1 (ko) 2011-10-27

Family

ID=39048359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070140193A KR101077673B1 (ko) 2006-12-28 2007-12-28 신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치 및방법

Country Status (6)

Country Link
US (1) US20080162866A1 (ko)
KR (1) KR101077673B1 (ko)
CN (1) CN101211313A (ko)
DE (1) DE102007062745B4 (ko)
GB (1) GB2445249B (ko)
TW (1) TWI385515B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364943B2 (en) * 2008-02-29 2013-01-29 Lenovo (Singapore) Pte. Ltd. S3 BIOS operating system switch
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
TWI437430B (zh) 2010-04-07 2014-05-11 Phison Electronics Corp 動態切換分割區方法、記憶卡控制器與記憶卡儲存系統及電腦程式產品
CN102236612B (zh) * 2010-04-22 2014-11-19 群联电子股份有限公司 动态切换分割区方法、记忆卡控制器与记忆卡储存系统
US20120297177A1 (en) * 2010-11-15 2012-11-22 Ghosh Anup K Hardware Assisted Operating System Switch
TWI528162B (zh) * 2011-01-26 2016-04-01 威盛電子股份有限公司 電腦系統及其作業系統切換方法
US20120331303A1 (en) * 2011-06-23 2012-12-27 Andersson Jonathan E Method and system for preventing execution of malware
CN103246455A (zh) * 2012-02-01 2013-08-14 深圳市天方信安电子科技有限公司 一种屏幕双解锁系统
US9378150B2 (en) * 2012-02-28 2016-06-28 Apple Inc. Memory management unit with prefetch ability
JP5914145B2 (ja) * 2012-05-01 2016-05-11 ルネサスエレクトロニクス株式会社 メモリ保護回路、処理装置、およびメモリ保護方法
US10771448B2 (en) 2012-08-10 2020-09-08 Cryptography Research, Inc. Secure feature and key management in integrated circuits
JP5920595B2 (ja) * 2013-07-16 2016-05-18 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法
GB2534693B (en) 2013-11-08 2017-02-08 Exacttrak Ltd Data accessibility control
US9934194B2 (en) 2013-12-20 2018-04-03 Rambus Inc. Memory packet, data structure and hierarchy within a memory appliance for accessing memory
US9934047B2 (en) * 2014-03-20 2018-04-03 Intel Corporation Techniques for switching between operating systems
CN106155568B (zh) * 2015-04-03 2019-03-01 华为技术有限公司 一种存储分区的方法及终端

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4682283A (en) * 1986-02-06 1987-07-21 Rockwell International Corporation Address range comparison system using multiplexer for detection of range identifier bits stored in dedicated RAM's
US6965974B1 (en) * 1997-11-14 2005-11-15 Agere Systems Inc. Dynamic partitioning of memory banks among multiple agents
KR20010071560A (ko) * 1998-06-22 2001-07-28 콜린 콘스터블 가상 데이터 기억 시스템
US20020095557A1 (en) * 1998-06-22 2002-07-18 Colin Constable Virtual data storage (VDS) system
US6323755B1 (en) * 1998-08-19 2001-11-27 International Business Machines Corporation Dynamic bus locking in a cross bar switch
US6662173B1 (en) * 1998-12-31 2003-12-09 Intel Corporation Access control of a resource shared between components
JP2001256066A (ja) * 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
US7117376B2 (en) * 2000-12-28 2006-10-03 Intel Corporation Platform and method of creating a secure boot that enforces proper user authentication and enforces hardware configurations
US6754753B2 (en) * 2001-04-27 2004-06-22 International Business Machines Corporation Atomic ownership change operation for input/output (I/O) bridge device in clustered computer system
CN1260629C (zh) * 2001-11-28 2006-06-21 希旺科技股份有限公司 具有动态存储器配置的电子周边卡
US6910127B1 (en) * 2001-12-18 2005-06-21 Applied Micro Circuits Corporation System and method for secure network provisioning by locking to prevent loading of subsequently received configuration data
US7698689B2 (en) * 2002-08-13 2010-04-13 Phoenix Technologies Ltd. Method for meeting SMI duration limits by time slicing SMI handlers
US7272664B2 (en) * 2002-12-05 2007-09-18 International Business Machines Corporation Cross partition sharing of state information
KR100673681B1 (ko) * 2004-03-25 2007-01-24 엘지전자 주식회사 개인용 컴퓨터에서의 인스턴트 온 기능 실행방법
US20060143411A1 (en) * 2004-12-23 2006-06-29 O'connor Dennis M Techniques to manage partition physical memory
US20060179191A1 (en) * 2005-02-10 2006-08-10 Young David W Covert channel firewall

Also Published As

Publication number Publication date
KR20080063189A (ko) 2008-07-03
DE102007062745B4 (de) 2010-12-23
GB2445249A (en) 2008-07-02
CN101211313A (zh) 2008-07-02
US20080162866A1 (en) 2008-07-03
GB2445249B (en) 2010-08-04
GB0724756D0 (en) 2008-01-30
TW200836062A (en) 2008-09-01
DE102007062745A1 (de) 2008-07-17
TWI385515B (zh) 2013-02-11

Similar Documents

Publication Publication Date Title
KR101077673B1 (ko) 신속하고 안전한 메모리 컨텍스트 스위칭을 위한 장치 및방법
US6145085A (en) Method and apparatus for providing remote access to security features on a computer network
US6397337B1 (en) Unified password prompt of a computer system
US6138240A (en) Secure general purpose input/output pins for protecting computer system resources
AU2011279939B2 (en) Providing platform independent memory logic
US7543335B2 (en) Method and system for allowing code to be securely initialized in a computer
JP4925422B2 (ja) データ処理装置内コンテンツへのアクセス管理
EP2669807B1 (en) Processor resource and execution protection methods and apparatus
CN112789574B (zh) 经由系统及电源管理微控制器的安全启动
CN110998578A (zh) 用于在异构存储器环境内进行引导的系统和方法
US20100125731A1 (en) Method for securely merging multiple nodes having trusted platform modules
CN115686558A (zh) 固件更新
US20100293357A1 (en) Method and apparatus for providing platform independent secure domain
CN113064663B (zh) 电脑装置及基于信任链的权限管理方法
EP1357454A1 (en) Data processing system and method with protected BIOS
WO2011158441A1 (ja) データ処理装置および方法、そのプロセッサユニット
US7519802B2 (en) System and method for configuring a computer system
US20130151832A1 (en) Flash memory storage system and data protection method thereof
US11868276B2 (en) Non-volatile memory write access control
US11429312B1 (en) Multiplexed storage accesses
US11741232B2 (en) Secure in-service firmware update
TW202230146A (zh) 非對稱性存取權限之積體電路
Hackney PCIe Hot-Swap Device Driver

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140930

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee