KR20070052272A - 프로세서 자원의 가상화를 위한 시스템 및 방법 - Google Patents

프로세서 자원의 가상화를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20070052272A
KR20070052272A KR1020077002319A KR20077002319A KR20070052272A KR 20070052272 A KR20070052272 A KR 20070052272A KR 1020077002319 A KR1020077002319 A KR 1020077002319A KR 20077002319 A KR20077002319 A KR 20077002319A KR 20070052272 A KR20070052272 A KR 20070052272A
Authority
KR
South Korea
Prior art keywords
processor
data
memory
thread
address
Prior art date
Application number
KR1020077002319A
Other languages
English (en)
Other versions
KR100968188B1 (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 KR20070052272A publication Critical patent/KR20070052272A/ko
Application granted granted Critical
Publication of KR100968188B1 publication Critical patent/KR100968188B1/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
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

Abstract

프로세서 자원의 가상화 시스템 및 방법에서, 스레드가 프로세서에서 생성되고 프로세서의 로컬 메모리는 유효 어드레스 공간에 맵핑된다. 이렇게 할 때, 프로세서의 로컬 메모리는 프로세서가 동작중인 것에 관계없이 다른 프로세서에 의해 액세스가능하다. 추가적인 스레드는 추가적인 로컬 메모리 맵핑을 유효 어드레스 공간에 생성한다. 유효 어드레스 공간은 물리적 로컬 메모리 또는 "소프트" 카피 영역에 대응한다. 프로세서가 동작중에 있을 때, 다른 프로세서는 프로세서의 로컬 기억 영역으로부터 제1 프로세서의 로컬 메모리에 위치된 데이터에 액세스할 수 있다. 프로세서가 동작중이 아닐 때, 프로세서의 로컬 메모리의 소프트 카피는 다른 프로세서가 계속하여 액세스할 수 있도록 메모리 위치(즉, 로크 캐쉬 메모리, 핀드 시스템 메모리, 가상 메모리 등)에 저장된다.
프로세서 자원, 가상화, 스레드, 로컬 메모리, 소프트 카피, 유효 어드레스 공간

Description

프로세서 자원의 가상화를 위한 시스템 및 방법{SYSTEM AND METHOD FOR VIRTUALIZATION OF PROCESSOR RESOURCES}
본 발명은 프로세서 자원(processor resource)의 가상화를 위한 시스템 및 방법에 관한 것이다. 특히, 본 발명은 프로세서의 상태에 관계없이 하나 이상의 스레드(thread)가 프로세서 메모리에 액세스할 수 있게 하는 프로세서 메모리 가상화 시스템 및 방법에 관한 것이다.
컴퓨터 시스템은 점점 더 복잡해지고 있다. 전형적으로 컴퓨터 산업은 18개월마다 컴퓨터의 성능을 2배로 향상시킨다(예를 들면, 개인용 컴퓨터, PDA, 게임 콘솔). 컴퓨터 산업이 이러한 임무를 달성하기 위하여, 컴퓨터 산업은 18개월마다 성능이 2배인 집적 회로를 생산한다. 컴퓨터 시스템은 집적 회로 구조에 기초한 특수 기능을 위해 집적 회로를 사용한다. 2개의 기본적인 구조는 1) 마이크로프로세서 기반 구조 및 2) 디지털 신호 프로세서 기반 구조가 있다.
마이크로프로세서 기반 구조의 집적 회로는 전형적으로 제어 동작을 취급하기 위해 사용되고, 디지털 신호 프로세서 기반 구조의 집적 회로는 전형적으로 신호 처리 조작(즉, 산술 연산)을 취급하도록 설계된다. 기술의 발전에 따라, 컴퓨터 산업 및 반도체 산업은 컴퓨터 시스템 설계에서 두 가지의 구조 또는 프로세서 유 형을 사용하는 중요성을 실현한다.
많은 컴퓨터 시스템은 광범위한 소프트웨어 응용을 지원하면서 상당한 양의 처리 전력을 제공하기 위해 멀티프로세서 구조를 사용한다. 그러나, 이러한 프로세서들은 각각 로컬 기억 영역 및 레지스터 파일과 같이 다른 프로세서가 액세스할 수 없는 전용 내부 메모리를 포함한다는 점이 해결해야할 사항(challenge found)이다. 다른 하나의 해결해야할 사항은 만일 특수한 프로세서가 이용불능이면 다른 프로세서가 그 이용불능 프로세서로부터 데이터를 액세스할 수 없다는 점이다.
또한, 프로세서는 동일한 메모리 공간에 액세스하는 다중 스레드를 동작시킬 수 있다. 해결해야할 사항은 특수한 스레드가 특수한 메모리 공간에 액세스하고 있을 때, 다른 스레드는 그 다른 스레드가 상기 메모리 공간에 액세스할 수 있기 전에 상기 특수한 스레드가 종료할 때까지 기다려야 한다는 점이다.
전술한 해결해야할 사항은 프로세서의 로컬 메모리를 응용이 생성하는 각 스레드의 유효 어드레스 공간에 맵핑하고, 처리 대상 스레드의 "소프트" 데이터 카피를 검색할 것인지 여부를 결정하기 위해 어드레스 변환기(address translator)가 액세스하는 각 스레드의 페이지 테이블 엔트리를 사용함으로써 본 발명의 실시예에서 극복된다는 것이 발견되었다. 응용이 생성하는 각 스레드에 대하여, 운영 체제는 유효 어드레스 및 실제 어드레스를 포함하는 페이지 테이블에 페이지 테이블 엔트리를 저장한다. 실제 어드레스는 로컬 기억 위치 또는 소프트 카피 영역에 대응한다. 어드레스 변환기가 스레드로부터 데이터를 검색하는 요구를 수신한 때, 어드레스 변환기는 페이지 테이블 엔트리를 조사하고 실제 어드레스 위치로부터 데이터를 검색한다.
본 발명의 실시예에서, 제1 프로세서는 운영 체제를 포함하는데, 이 운영 체제는 실시간 운영 체제(예를 들면, 게임 운영 체제) 또는 가상 운영 체제(예를 들면, 웹 브라우징 운영 체제)일 수 있다. 운영 체제는 특수 응용을 위한 스레드를 호출한다. 스레드는 게임 응용을 위한 지형 렌더링(terrain rendering)과 같은 특수 임무를 수행하는 책임을 갖는다. 운영 체제가 스레드를 호출한 때, 운영 체제는 페이지 테이블 엔트리를 페이지 테이블에 보낸다. 페이지 테이블 엔트리는 스레드가 활용하는 데이터의 위치에 대응하는 실제 어드레스 및 유효 어드레스를 포함한다. 실제 어드레스는 물리적 로컬 메모리 위치(예를 들면, 로컬 기억부)에 대응할 수 있고, 또는 실제 어드레스는 소프트 카피 영역에 대응할 수 있다. 예를 들면, 소프트 카피 영역은 캐쉬, 핀드 시스템 메모리(pinned system memory) 또는 디스크에 있을 수 있다.
스레드는 유효 어드레스를 포함하는 요구를 어드레스 변환기에 보낸다. 유효 어드레스는 스레드가 액세스하고자 하는 데이터의 유효 메모리 위치를 표시한다. 어드레스 변환기는 요구를 수신하고 페이지 테이블 내의 페이지 테이블 엔트리를 조사하여 어드레스 변환기가 유효 어드레스에 대응하는 실제 어드레스를 식별하게 한다. 만일 실제 어드레스가 프로세서의 로컬 기억 영역에 대응하면, 어드레스 변환기는 프로세서의 로컬 기억 영역으로부터 데이터를 검색하고 그 데이터를 스레드로 전달한다. 만일 실제 어드레스가 소프트 카피 영역에 대응하면, 어드레스 변환기는 소프트 카피 영역으로부터 데이터의 카피를 검색하고 그 데이터 카피를 스레드로 전달한다.
운영 체제는 특수 정책(policy) 및 대응하는 프로세서의 상태에 기초하여 소프트 카피 영역에 대해 데이터를 세이브 및 복원함으로써 스레드의 데이터를 관리한다. 다수의 스레드가 프로세서의 메모리를 이용하고 있을 때와 같은 특수한 순간에 운영 체제는 각 스레드의 로컬 기억부의 소프트 카피를 생성할 수 있고, 이것에 의해 스레드가 다른 소프트 카피들을 이용한다. 운영 체제는 운영 체제가 세이브 또는 복원 동작을 수행할 때마다 페이지 테이블에 새로운 페이지 테이블 엔트리를 생성한다.
이제, 본 발명의 실시예를, 단지 예로서, 첨부 도면을 참조하여 설명한다.
도 1은 메인 프로세서가 보조 프로세서의 로컬 메모리에 액세스하는 것을 보여주는 도이다.
도 2는 보조 프로세서에 포함된 스레드가 메인 프로세서의 로컬 메모리에 액세스하는 것을 보여주는 도이다.
도 3은 스레드가 소프트 카피 영역에 위치된 프로세서의 로컬 메모리의 소프트 카피에 액세스하는 것을 보여주는 도이다.
도 4는 하나 이상의 스레드에 기초하여 운영 체제가 프로세서 메모리를 관리할 때 취해지는 단계들을 보이는 고레벨 흐름도이다.
도 5는 보조 프로세서의 로컬 메모리에 포함된 데이터를 소프트 카피 영역에 카피할 때 취해지는 단계들을 보이는 흐름도이다.
도 6은 프로세서의 로컬 기억부에 대해 데이터를 복원 및 세이브할 때 취해지는 단계들을 보이는 흐름도이다.
도 7은 페이지 테이블 엔트리를 이용하여 어드레스를 변환하고 그 변환된 어드레스에 기초하여 스레드에 데이터를 공급할 때 취해지는 단계들을 보인 흐름도이다.
도 8은 어드레스가 공통 어드레스 공간에 맵핑된 복수의 스레드를 복수의 프로세서가 실행하는 것을 보여주는 도이다.
도 9는 2개의 운영 체제가 이종(heterogeneous)의 프로세서 환경에서 프로세서 자원을 공유하는 것을 보여주는 도이다.
도 10은 복수의 이종 프로세서를 포함하는 프로세서 요소 구조를 보이는 도이다.
도 11A는 이 명세서에서 설명하는 연산 동작을 수행할 수 있는 컴퓨터 시스템의 간단한 예인 정보 취급 시스템을 나타낸 도이다.
도 11B는 로컬 기억 영역이 전용 메모리 및 비전용 메모리로 분리된 것을 보여주는 도이다.
이하의 설명은 본 발명의 예를 상세히 설명하기 위한 것으로 의도되고 본 발명 자체를 제한하는 것으로 해석되어서는 안된다. 오히려, 여러 가지의 변형예가 이 명세서 뒤의 청구범위에 의해 정의되는 본 발명의 범위에 포함될 수 있다.
도 1은 메인 프로세서가 보조 프로세서의 로컬 메모리에 액세스하는 것을 보인 도이다. 프로세서 A(100)는 운영 체제(115)를 포함하는 메인 프로세서이다. 운영 체제(115)는 게임 운영 체제와 같은 실시간 운영 체제, 또는 웹 브라우징 운영 체제와 같은 가상 운영 체제일 수 있다.
운영 체제(115)는 응용(105)으로부터 스레드 요구를 수신하고, 이것에 의해 운영 체제(115)는 스레드 1(110)을 호출한다. 스레드 1(110)은 게이밍 응용에서 지형 렌더링과 같은 특수 임무를 수행할 책임이 있다. 운영 체제(115)가 스레드 1(110)을 호출한 때, 운영 체제(115)는 페이지 테이블 엔트리(150)를 페이지 테이블(140)에 보낸다. 페이지 테이블 엔트리(150)는 스레드 1(110)이 이용하는 데이터 위치에 대응하는 실제 어드레스 및 유효 어드레스를 포함한다. 실제 어드레스는 물리적 로컬 메모리 위치(예를 들면, 로컬 기억부)에 대응할 수 있고, 또는 실제 어드레스는 소프트 카피 영역에 대응할 수 있다. 예를 들면, 데이터의 소프트 카피는 캐쉬, 핀드 시스템 메모리 또는 디스크(도 4 및 물리적 로컬 메모리와 소프트 카피 영역에 관하여 상세히 설명하는 대응 본문 참조)에 저장될 수 있다.
스레드 1(110)은 메모리의 특수 부분에 대한 액세스를 요구하는 요구(120)를 어드레스 변환기(130)에 보낸다. 요구(120)는 스레드 1(110)이 액세스하고자 하는 데이터의 유효 메모리 위치를 표시하는 유효 어드레스를 포함한다. 어드레스 변환기(130)는 요구(120)를 수신하고 페이지 테이블(140)의 페이지 테이블 엔트리(150)를 조사한다. 어드레스 변환기(130)는 실제 어드레스 위치가 프로세서 B(160)의 로컬 기억부 B(170)에 위치하고 있는지를 식별한다. 어드레스 변환기(130)는 로컬 기 억부 B(170)로부터 데이터(180)를 검색하고, 그 데이터(180)를 스레드 1(110)에 보낸다. 일 실시예에서, 어드레스 변환기(130)는 페이지 바이 페이지 기초(page-by-page basis)와 같이 증분적으로 데이터(180)를 스레드 1(110)에 보낸다. 일 실시예에서, 스레드는 프로세서 B(160)에 존재할 수 있고, 이것에 의해 스레드는 프로세서 A(100)의 로컬 기억부로부터 데이터를 검색한다(도 2 및 프로세서 B(160)에 존재하는 스레드에 관하여 상세히 설명하는 대응 본문 참조).
도 2는 보조 프로세서에 포함된 스레드가 메인 프로세서의 로컬 메모리(예를 들면, 로컬 기억부)에 액세스하는 것을 보이는 도이다. 도 2는 프로세서 B(160)가 로컬 기억부 A(260)와 같은 프로세서 A(100)의 로컬 메모리로부터 데이터를 요구하는 스레드를 포함한다는 점을 제외하면 도 1과 유사하다.
스레드 2(200)는 요구(220)를 어드레스 변환기(130)에 보낸다. 어드레스 변환기(130)는 페이지 테이블 엔트리(240)를 조사하고, 데이터가 로컬 기억부 A(260)에 위치하고 있는지를 판정한다. 어드레스 변환기(130)는 로컬 기억부(260)로부터 데이터를 검색하고, 데이터(280)를 스레드 2(200)에 제공한다. 어드레스 변환기(130), 페이지 테이블(140), 프로세서 B(160), 프로세서 A(100) 및 운영 체제(115)는 도 1에 도시된 것과 동일하다.
도 3은 스레드가 소프트 카피 영역에 위치된 프로세서의 로컬 메모리의 소프트 카피에 액세스하는 것을 보이는 도이다. 동작 중에, 운영 체제는 정책 정보(policy information)에 기초하여 소프트 카피 영역에 물리 메모리를 세이브하고 복원한다. 예를 들면, 운영 체제는 특수한 시간 간격으로 데이터를 세이브하고 복 원할 수 있다(도 6 및 그 상세 설명의 대응 본문 참조). 데이터가 로컬 기억부로부터 소프트 카피 영역으로 스왑(swap)된 때, 운영 체제는 어드레스 변환기(130)가 정확한 소프트 카피 영역으로부터 데이터를 검색하도록 페이지 테이블(140)의 페이지 테이블 엔트리를 변경한다.
프로세서 A(100)는 스레드 3(300)을 포함하고, 스레드 3은 요구(310)를 어드레스 변환기(130)에 보낸다. 그 다음에, 어드레스 변환기(130)는 페이지 테이블(140)에서 페이지 테이블 엔트리를 식별하고, 데이터가 소프트 카피 영역(320)과 같은 소프트 카피 영역에 위치되어 있는지를 판정한다. 소프트 카피 영역(320)은 캐쉬(330), 커널(340) 및 디스크 기억부(350)를 포함한다. 캐쉬(330)는 L1 또는 L2 캐쉬일 수 있고, 커널(340)은 핀드 시스템 메모리일 수 있으며, 디스크 기억부(350)는 외부 하드 드라이브일 수 있다.
어드레스 변환기(130)는 소프트 카피 영역(320)로부터 데이터(360)를 검색하고, 그 데이터(360)를 추가의 처리를 위해 스레드 3(300)에 공급한다. 어드레스 변환기(130), 페이지 테이블(140) 및 프로세서 A(100)는 도 1에 도시된 것과 동일하다.
도 4는 운영 체제가 하나 이상의 스레드에 기초하여 프로세서 메모리를 관리할 때 취해지는 단계들을 보인 고레벨 흐름도이다. 처리는 단계 400에서 시작하고, 그 다음에 운영 체제는 응용(105)으로부터 스레드 요구를 수신한다(단계 410). 예를 들면, 응용(105)은 지형 렌더링과 같은 복잡한 연산을 수행하는 스레드를 호출하기 원할 수 있다. 운영 체제는 단계 420에서 스레드를 초기화하고, 이것에 의해 운영 체제는 프로세서 B(160)와 같이 스레드를 지원할 자원(resource)을 식별한다. 응용(105) 및 프로세서 B(160)는 도 1에 도시된 것과 동일하다.
단계 430에서 처리는 프로세서 B(160)의 임무 상태를 식별한다. 예를 들어서, 만일 스레드가 특수 프로세서의 로컬 메모리로부터 데이터를 요구하면, 운영 체제는 동일 프로세서가 스레드를 지원하도록 할당된 프로세서인지를 확인한다.
데이터를 검색하기 위해 스레드가 프로세서의 물리적 로컬 메모리(로컬 기억부)에 액세스해야 하는지 또는 스레드가 소프트 카피 영역 내의 데이터의 소프트 카피에 액세스해야 하는지에 대한 판정이 행하여진다(단계 440). 예를 들어서, 만일 스레드가 데이터를 포함한 동일 프로세서에서 실행하면, 스레드는 프로세서의 로컬 기억부에 액세스할 수 있다. 다른 예에서, 스레드는 데이터의 위치가 아닌 다른 프로세서에서 실행할 수 있고, 이 경우 운영 체제는 데이터를 소프트 카피 영역에 카피하여 스레드가 대응 프로세서의 비활성 여부에 관계없이 소프트 카피에 액세스할 수 있게 한다.
만일 스레드가 물리적 로컬 메모리를 사용해야 하면, 판정 단계(440)는 "물리적" 브랜치(442)로 분기하고, 이 때 운영 체제는 페이지 테이블(140)에 페이지 테이블 엔트리를 생성한다. 상기 페이지 테이블 엔트리는 프로세서의 로컬 메모리 또는 로컬 기억부로부터 데이터를 액세스하기 위해 어드레스 변환기가 사용하는 실제 어드레스를 포함한다. 페이지 테이블(140)은 도 1에 도시된 것과 동일하다.
반면에, 만일 스레드가 로컬 기억부의 소프트 카피를 사용해야 한다면, 판정 단계(440)는 "소프트 카피" 브랜치(448)로 분기하고, 이 때, 처리는 로컬 기억부의 데이터를 소프트 카피 영역에 카피한다(미리 규정된 처리 블록 460, 도 5 및 그 상세 설명에 관한 대응 본문 참조). 운영 체제는 페이지 테이블(140)에 페이지 테이블 엔트리를 생성한다(단계 470). 상기 페이지 테이블 엔트리는 소프트 카피 영역 내의 데이터의 소프트 카피에 액세스하기 위해 어드레스 변환기가 사용하는 실제 어드레스를 포함한다. 그러므로, 스레드가 데이터를 요구할 때, 어드레스 변환기는 대응하는 프로세서의 상태에 관계없이 데이터를 스레드에 제공하기 위해 소프트 카피 영역에 액세스한다(도 3 및 소프트 카피 영역에 대하여 상세히 설명하는 대응 본문 참조).
운영 체제는 특수 정책 관리에 기초하여 로컬 기억부의 내부 및 외부에 데이터를 복원 및 세이브함으로써 메모리 관리를 수행한다. 메모리 관리 처리 중에, 운영 체제는 소프트 카피 영역으로부터 프로세서의 로컬 기억부로 데이터를 복원할 수 있고, 또는 운영 체제는 로컬 기억부의 데이터를 소프트 카피 영역에 세이브할 수 있다(미리 규정된 처리 블록 480, 도 6 및 그 상세에 관한 대응 본문 참조).
운영 체제가 스레드 요구의 처리 및 메모리 관리를 계속해야 하는지에 대한 판정이 행하여진다(단계 490). 만일 운영 체제가 계속해야 하면, 판정 단계(490)는 스레드 요구를 더 처리하기 위해 귀환하는 "예" 브랜치(492)로 분기한다. 이 루핑은 운영 체제가 중단해야 할 때까지 계속되고, 그 지점에서 판정 단계(490)는 "아니오" 브랜치(498)로 분기하며, 단계 499에서 운영 체제가 종료한다.
도 5는 보조 프로세서의 로컬 메모리(즉, 로컬 기억부)에 포함된 데이터를 소프트 카피 영역에 카피할 때 취해지는 단계들을 보인 흐름도이다. 처리는 단계 500에서 시작하고, 단계 510에서 처리는 로컬 기억부 B(170)로부터 데이터를 검색한다. 로컬 기억부 B(170)는 도 1에 도시된 것과 동일하다.
데이터를 로크 L1 캐쉬 또는 로크 L2 캐쉬와 같은 캐쉬에 세이브해야 하는지에 대한 판정이 행하여진다(단계 520). 만일 운영 체제가 데이터를 캐쉬에 세이브해야 하면, 판정 단계(520)는 "예" 브랜치(522)로 분기하고, 처리는 단계 530에서 데이터의 카피를 캐쉬(330)에 저장하고 단계 540에서 복귀한다. 캐쉬(330)는 도 3에 도시된 것과 동일하다. 반면에, 만일 운영 체제가 데이터를 캐쉬에 저장하지 않아야 하면, 판정 단계(520)는 "아니오" 브랜치(528)로 분기하여 데이터를 캐쉬에 저장하는 단계들을 바이패스한다.
데이터를 커널 내에 보존된 메모리와 같은 핀드 시스템 메모리에 세이브해야 하는지에 대한 판정이 행하여진다(단계 550). 만일 운영 체제가 데이터를 핀드 시스템 메모리에 세이브해야 하면, 판정 단계(550)는 "예" 브랜치(552)로 분기하고, 처리는 단계 560에서 데이터의 카피를 커널(340)에 저장하고 단계 570에서 복귀한다. 커널(340)은 도 3에 도시된 것과 동일하다. 반면에, 만일 운영 체제가 데이터를 핀드 시스템 메모리에 저장하지 않아야 하면, 판정 단계(550)는 "아니오" 브랜치(558)로 분기하여 데이터를 핀드 시스템 메모리에 저장하는 단계들을 바이패스한다.
데이터를 외부 하드 드라이브와 같은 디스크에 세이브해야 하는지에 대한 판정이 행하여진다(단계 580). 만일 운영 체제가 데이터를 디스크에 세이브해야 하면, 판정 단계(580)는 "예" 브랜치(582)로 분기하고, 처리는 단계 590에서 데이터 를 디스크 기억부(350)에 저장하고 단계 595에서 복귀한다. 디스크 기억부(350)는 도 3에 도시된 것과 동일하다. 반면에, 만일 운영 체제가 데이터를 디스크에 저장하지 않아야 하면, 판정 단계(580)는 "아니오" 브랜치(588)로 분기하여 데이터를 디스크에 저장하는 단계들을 바이패스하고, 단계 595에서 복귀한다.
도 6은 프로세서의 로컬 기억부(즉, 로컬 메모리)에 대하여 데이터를 복원 및 세이브할 때 취해지는 단계들을 보인 흐름도이다. 운영 체제는 특수 정책 및 대응 프로세서의 상태에 기초하여 데이터를 세이브 및 복원함으로써 스레드의 대응 데이터를 관리한다. 운영 체제는 소프트 카피 영역 내의 데이터의 소프트 카피에 액세스하는 것과 반대로 물리적 로컬 메모리의 데이터에 액세스하는 능력을 스레드에 제공하려고 시도한다. 프로세서의 메모리가 다수의 스레드에 의해 이용될 때와 같은 특수한 경우에, 운영 체제는 로컬 기억부의 소프트 카피들을 생성하고, 이것에 의해 스레드는 소프트 카피들을 이용한다.
처리는 단계 600에서 시작하고, 처리는 단계 605에서 정책 기억부(610)로부터 정책들을 검색한다. 정책 기억부(610)는 컴퓨터 하드 드라이브와 같은 비휘발성 기억 영역에 저장될 수 있다. 처리는 단계 615에서 제1 임무를 선택한다. 일 실시예에서, 처리는 제1 임무 대신에 제1 스레드를 선택할 수 있다.
데이터를 소프트 카피 영역으로부터 로컬 기억부로 복원해야 하는지에 대한 판정이 행하여진다(단계 620). 예를 들면, 스레드는 낮은 우선순위를 가질 수 있고, 한편, 소프트 카피 영역의 데이터의 소프트 카피를 이용했을 수 있다. 이 예를 계속하기 위해, 운영 체제는 스레드를 높은 우선순위로 이동시키고, 운영 체제는 로컬 기억부를 소프트 카피로 복원하고 그 다음에 스레드에 공급할 데이터를 로컬 기억부로부터 검색하도록 어드레스 변환기에 명령할 수 있다.
만일 운영 체제가 데이터를 소프트 카피 영역으로부터 로컬 기억부로 복원하기 원하면, 판정 단계(620)는 "예" 브랜치(622)로 분기하고, 처리는 단계 625에서 소프트 카피 영역(320)으로부터 소프트 카피를 검색하고 그 소프트 카피를 로컬 기억부 B(170)에 저장한다(단계 630). 소프트 카피 영역(320) 및 로컬 기억부 B(170)는 각각 도 3과 도 1에 도시된 것과 동일하다. 처리는 어드레스 변환기가 스레드에 공급할 데이터를 검색하는 로컬 기억 위치에 대응하는 새로운 실제 어드레스를 포함하도록 단계 635에서 페이지 테이블(140) 내의 페이지 테이블 엔트리를 변경한다. 단계 625, 630 및 635 동안에, 어드레스 변환기는 "록"되어 복원 동작이 종료할 때까지 로컬 메모리 B(170)가 다른 스레드에 의해 액세스될 수 없게 한다. 반면에, 만일 운영 체제가 복원 동작을 수행하지 않아야 하면, 판정 단계(620)는 "아니오" 브랜치(628)로 분기하여 데이터 복원 단계들을 바이패스한다.
데이터를 로컬 기억부로부터 소프트 카피 영역으로 세이브해야 하는지에 대한 판정이 행하여진다(단계 640). 예를 들면, 스레드는 낮은 우선순위에 있을 수 있고, 따라서, 운영 체제는 데이터의 소프트 카피를 이용하도록 페이지 테이블 엔트리를 통하여 어드레스 변환기에 명령한다.
만일 운영 체제가 소프트 카피 영역에 데이터를 세이브하기 원하면, 판정 단계(640)는 "예" 브랜치(642)로 분기하고, 처리는 단계 645에서 로컬 기억부 B(170)로부터 데이터를 검색하고 그 데이터를 소프트 카피 영역(320)에 카피한다(단계 650). 소프트 카피 영역(320)은 캐쉬, 핀드 시스템 메모리 또는 디스크를 포함할 수 있다(도 3, 도 5 및 소프트 카피 영역에 관하여 상세히 설명하는 대응 본문 참조).
처리는 어드레스 변환기가 대응 스레드용의 데이터를 검색하기 위해 사용하는 소프트 카피 영역에 대응하는 새로운 실제 어드레스를 포함하도록 단계 655에서 페이지 테이블(140) 내의 페이지 테이블 엔트리를 변경한다. 단계 645, 650 및 655 동안에, 어드레스 변환기는 "록"되어 세이브 동작이 종료할 때까지 로컬 메모리 B(170)가 다른 스레드에 의해 액세스될 수 없게 한다.
처리할 임무가 더 있는지에 대한 판정이 행하여진다(단계 660). 만일 처리할 임무가 더 있으면, 판정 단계(660)는 "예" 브랜치(662)로 분기하고 다음 임무를 선택하여(단계 670) 처리하기 위해 귀환하며 다음 임무를 처리한다. 이 루핑은 처리할 임무가 더 이상 없을 때까지 계속되고, 이 지점에서 판정 단계(660)는 "아니오" 브랜치(668)로 분기하여 처리가 단계 680에서 복귀한다.
도 7은 페이지 테이블 엔트리를 이용하여 어드레스를 변환하고 변환된 어드레스에 기초하여 스레드에 데이터를 제공할 때 취해지는 단계들을 보인 흐름도이다. 처리는 단계 700에서 시작하고, 어드레스 변환기는 단계 710에서 스레드(720)로부터 요구를 수신한다. 스레드(720)는 도 1, 도 2 및 도 3에 각각 도시된 스레드 1(110), 스레드 2(200) 또는 스레드 3(300)과 같은 특수한 스레드일 수 있다. 스레드(720)는 스레드(720)가 액세스하고자 하는 데이터의 위치에 대응하는 유효 어드레스를 포함한다.
단계 730에서, 어드레스 변환기는 페이지 테이블(140)에 액세스하고 페이지 테이블 엔트리 중의 하나를 이용하여 유효 어드레스를 실제 어드레스로 변환한다. 운영 체제는 페이지 테이블 엔트리를 관리하여 각 페이지 테이블 엔트리가 물리적 로컬 메모리 또는 소프트 카피 영역에 대응하는 실제 어드레스를 포함하게 한다(도 6 및 페이지 테이블 엔트리 관리에 관하여 상세히 설명하는 대응 본문 참조). 페이지 테이블(140)은 도 1에 도시된 것과 동일하다.
어드레스 변환기는 변환된 실제 어드레스에 기초하여 소프트 카피 영역(320) 또는 로컬 메모리 B(170)로부터 데이터를 검색한다(단계 740). 소프트 카피 영역(320)과 로컬 메모리 B(170)는 각각 도 3 및 도 1에 도시된 것과 동일하다. 단계 750에서, 처리는 검색 데이터를 스레드(720)에 전달한다. 일 실시예에서, 어드레스 변환기는 한번에 1페이지의 데이터를 전달하는 것처럼 데이터를 증분적으로 스레드(720)에 전달한다.
어드레스 변환기가 스레드 요구를 계속하여 처리해야 하는지에 대한 판정이 행하여진다(단계 760). 만일 어드레스 변환기가 스레드 요구를 계속해서 처리해야 하면, 판정 단계(760)는 "예" 브랜치(762)로 분기하고 스레드 요구를 더 처리하기 위해 귀환한다. 이 루핑은 처리할 스레드 요구가 더 이상 없을 때까지 계속되고, 그 지점에서 판정 단계(760)는 "아니오" 브랜치(768)로 분기하여 어드레스 변환이 단계 770에서 종료한다.
도 8은 어드레스가 공통 어드레스 공간에 맵되는 복수의 스레드를 복수의 프로세서가 실행하는 것을 보인 도이다. 본 발명은 다수의 스레드가 다수의 프로세서 에서 동작할 수 있게 하고, 그 동안 각 스레드의 각 메모리 액세스는 운영 체제에 의해 관리되고 어드레스 공간(850)과 같은 어드레스 공간에 맵핑된다.
프로세서 B1(800)은 스레드 E(805)와 스레드 F(810)를 포함한다. 스레드 E(805)와 스레드 F(810)의 유효 어드레스 공간은 각각 유효 어드레스 공간 E(855)와 유효 어드레스 공간 F(860)이며, 상기 2개의 공간은 어드레스 공간(850)에 포함된다. 각 스레드는 독립적인 동작을 수행하고, 또한 일부 스레드는 제1 운영 체제에 의해 제어되고 다른 스레드는 제2 운영 체제에 의해 제어될 수 있다(도 9 및 다중 운영 체제에 관하여 상세히 설명하는 대응 본문 참조).
프로세서 B2(815)는 3개의 스레드, 즉 스레드 G(820), 스레드 H(825) 및 스레드 I(830)를 포함한다. 도 8에서 알 수 있는 바와 같이, 스레드 G(820), 스레드 H(825) 및 스레드 I(830)의 유효 어드레스는 각각 유효 어드레스 G(865), 유효 어드레스 H(870) 및 유효 어드레스 I(875)이며, 이들은 모두 어드레스 공간(850)에 위치된다.
마지막으로, 프로세서 B3(860)는 2개의 스레드, 즉 스레드 J(840) 및 스레드 K(845)를 포함한다. 스레드 J(840) 및 스레드 K(845)의 유효 어드레스 공간은 각각 유효 어드레스 공간 J(880) 및 유효 어드레스 공간 K(885)이며, 이들은 모두 어드레스 공간(850)에 위치된다.
도 8에 도시된 스레드는 그들의 대응하는 프로세서가 운영 체제 또는 응용에 대하여 "가상"으로 되도록 관리될 수 있다. 예를 들면, 2개의 운영 체제가 존재할 수 있고, 컴퓨터 시스템에 단지 3개의 프로세서가 있을 때 하나의 운영 체제는 3개 의 프로세서의 제어를 생각하고 다른 운영 체제는 2개의 프로세서의 제어를 생각할 수 있다(도 9 및 2개의 운영 체제 간 자원 공유에 관하여 상세히 설명하는 대응 본문 참조).
도 9는 이종 프로세서 환경에서 2개의 운영 체제가 프로세서 자원을 공유하는 것을 보인 도이다. 도 9는 별도의 운영 체제 사이에서 자원들을 공유하기 위해 프로세서 로컬 메모리의 가상화를 이용하는 것을 보여주고 있다. 예를 들면, 컴퓨터 시스템은 2개의 운영 체제를 동작시킬 수 있고 8개의 프로세서를 포함할 수 있다. 이 예에서, 제1 운영 체제는 6개의 프로세서를 필요로 하고 제2 운영 체제는 8개의 프로세서 모두를 필요로 한다. 이 예에서, 프로세서 자원은 2개의 운영 체제의 요구 조건에 부합하기 위하여 2개의 운영 체제 사이에서 가상화되고 공유된다.
프로세서 A(100)는 운영 체제 1(900) 및 운영 체제 2(950)를 포함한다. 각 운영 체제는 특수한 기능을 수행할 책임을 가질 수 있다. 예를 들면, 운영 체제 1(900)은 게임 응용을 위한 실시간 운영 체제이고 운영 체제 2(950)는 웹 브라우징을 관리하는 가상 운영 체제일 수 있다.
도 9는 다중 스레드를 실행하는 프로세서 B1(800), 프로세서 B2(815) 및 프로세서 B3(835)를 도시한다. 운영 체제 1(900)은 스레드 E(805), H(825), I(830), J(840) 및 K(845)를 이용한다. 이와 같이, 운영 체제(900)는 3개의 프로세서(B1(800), B2(815), B3(835))를 모두 제어하는 것으로 생각한다. 프로세서 B1(800), B2(815) 및 B3(835)는 도 8에 도시된 것들과 동일하다.
또한, 도 9는 운영 체제 2(950)가 스레드 F(810) 및 G(820)를 이용하는 것을 보여주고 있다. 이와 같이, 운영 체제(950)는 2개의 프로세서(B1(800), B2(815))를 제어하는 것으로 생각한다. 이것을 종합하면, 운영 체제는 실제로는 3개의 프로세서만 있음에도 불구하고 컴퓨터 시스템에 5개의 프로세서가 있는 것으로 생각한다. 스레드 E(805), F(810), G(820), H(825), I(830), J(840) 및 K(845)는 도 8에 도시된 것과 동일하다.
각각의 스레드는 여기에서 설명하는 본 발명을 이용하여 다른 프로세서들 중 하나에 대응하는 로컬 메모리에 액세스할 수 있다. 예를 들면, 스레드 E(805)는 프로세서 B3(835)의 로컬 메모리에 액세스하도록 어드레스 변환기에 요구를 보냄으로써 프로세서 B3(835)의 로컬 메모리에 액세스할 수 있다. 이 예에서, 어드레스 변환기는 페이지 테이블에 위치된 페이지 테이블 엔트리를 이용하여 프로세서 B3(835)의 로컬 메모리에 대응하는 실제 어드레스를 식별한다. 실제 어드레스는 물리적 로컬 메모리에 대응할 수도 있고, 또는 실제 어드레스는 프로세서 B3(835)의 데이터의 소프트 카피를 포함하는 소프트 카피 영역에 대응할 수 있다(도 1 내지 도 7 및 어드레스 변환과 관련하여 상세히 설명하는 대응 본문 참조).
도 10은 복수의 이종 프로세서를 포함하는 프로세서 요소 구조를 보인 도이다. 이종 프로세서들은 공통 메모리 및 공통 버스를 공유한다. 프로세서 요소 구조(PEA)(1000)는 입력/출력부(1070)를 통하여 외부 장치에 대해 정보를 송신 및 수신하고, 프로세서 요소 버스(1060)를 이용하여 제어 플레인(1010) 및 데이터 플레인(1040)에 정보를 분배한다. 제어 플레인(1010)은 PEA(1000)를 관리하고 작업(work)을 데이터 플레인(1040)에 분배한다.
제어 플레인(1010)은 운영 체제(OS)(1025)를 동작시키는 처리 유닛(1020)을 포함한다. 예를 들면, 처리 유닛(1020)은 PEA(1000)에 내장된 파워 PC 코어(Power PC core)일 수 있고, OS(1025)는 리눅스 운영 체제일 수 있다. 처리 유닛(1020)은 PEA(1000)의 공통 메모리 맵 테이블을 관리한다. 메모리 맵 테이블은 L2 메모리(1030)와 같은 PEA(1000)에 포함된 메모리 위치, 및 데이터 플레인(1040)에 포함된 비전용 메모리에 대응한다(도 11A, 도 11B 및 메모리 맵핑에 관하여 상세히 설명하는 대응 본문 참조).
데이터 플레인(1040)은 시너지스틱 프로세싱 콤플렉스(Synergistic Processing Complex; SPC)(1045, 1050, 1055)를 포함한다. 각 SPC는 데이터 정보를 처리하기 위해 사용되고, 각 SPC는 다른 명령어 집합을 가질 수 있다. 예를 들면, PEA(1000)는 무선 통신 시스템에서 사용될 수 있고, 각 SPC는 변조, 칩 속도 처리, 엔코딩 및 네트워크 인터페이싱과 같은 임무들을 별도 처리하는 책임이 있다. 다른 예에서, 각 SPC는 동일한 명령어 집합을 가질 수 있고 병렬 처리로부터 유익한 동작을 수행하기 위해 병렬로 사용될 수 있다. 각 SPC는 디지털 신호 프로세서, 마이크로콘트롤러, 마이크로프로세서 또는 이들 코어의 조합과 같은 프로세싱 코어인 시너지스틱 프로세싱 유닛(SPU)을 포함한다.
SPC(1045, 1050, 1055)는 제어 플레인(1010), 데이터 플레인(1040) 및 입력/출력부(1070) 사이에서 정보를 전달하는 프로세서 요소 버스(1060)에 접속된다. 버스(1060)는 입력/출력부(1070), 제어 플레인(1010) 및 데이터 플레인(1040) 사이에서 정보를 전달하는 온칩 코히어런트 멀티프로세서 버스이다. 입력/출력부(1070)는 PEA(1000)에 접속된 주변 장치에 기초하여 인터페이스 핀을 입력 출력 제어기에 동적으로 할당하는 적응성(flexible) 입력-출력 로직을 포함한다. 예를 들면, PEA(1000)는 2개의 주변 장치, 즉 주변 장치 A 및 주변 장치 B에 접속될 수 있고, 각 주변 장치는 PEA(1000) 상에서 특정 갯수의 입력 출력 핀에 접속된다. 이 예에서, 적응성 입력-출력 로직은 주변 장치 A에 접속된 PEA(1000)의 외부 입력 및 출력 핀들을 제1 입력 출력 제어기(즉, IOC A)에 라우트(route)시키고 주변 장치 B에 접속된 PEA(1000)의 외부 입력 및 출력 핀들을 제2 입력 출력 제어기(즉, IOC B)에 라우트시키도록 구성된다.
도 11A는 여기에서 설명하는 연산 동작을 수행할 수 있는 컴퓨터 시스템의 간단한 예인 정보 취급 시스템을 도시한 것이다. 도 11A의 예는 이종 프로세서들 간에 메모리를 공유하기 위해 공통 메모리 맵을 사용하는 복수의 이종 프로세서를 보여주고 있다. 장치(1100)는 장치(1100)의 운영 체제를 실행하는 처리 유닛(1130)을 포함한다. 처리 유닛(1130)은 도 10에 도시된 처리 유닛(1020)과 유사하다. 처리 유닛(1130)은 장치(1100) 전체에 메모리 공간을 할당하기 위해 시스템 메모리 맵(1120)을 사용한다. 예를 들면, 처리 유닛(1130)은 처리 유닛(1130)이 메모리 요구를 수신한 때 메모리 영역을 식별하고 할당하기 위해 시스템 메모리 맵(1120)을 사용한다. 처리 유닛(1130)은 응용 및 데이터 정보를 검색하기 위해 L2 메모리(1125)에 액세스한다. L2 메모리(1125)는 도 10에 도시된 L2 메모리(1030)와 유사하다.
시스템 메모리 맵(1120)은 메모리 맵핑 영역을 다수의 영역(1135, 1145, 1150, 1155, 1160)으로 분리한다. 영역(1135)은 별도의 입력 출력 장치에 의해 제어될 수 있는 외부 시스템 메모리용의 맵핑 영역이다. 영역(1145)은 SPC(1102)와 같은 하나 이상의 시너지스틱 프로세싱 콤플렉스에 대응하는 비전용 기억 위치용의 맵핑 영역이다. SPC(1102)는 SPC A(1045)와 같은 도 10에 도시된 SPC와 유사하다. SPC(1102)는 로컬 기억부(1110)와 같은 로컬 메모리를 포함하고, 이것에 의해 로컬 메모리의 부분들이 액세스할 다른 프로세서의 전체 시스템 메모리에 할당될 수 있다. 예를 들면, 로컬 기억부(1110)의 1 MB가 비전용 기억부에 할당되고, 그에 따라 다른 이종 프로세서에 의해 액세스가능하게 될 수 있다. 이 예에서, 로컬 기억 앨리어스(1145)는 로컬 기억부(1110)에 위치한 1 MB의 비전용 기억부를 관리한다.
영역(1150)은 변환 색인 버퍼(TLB) 및 메모리 흐름 제어(MFC) 레지스터용의 맵핑 영역이다. 변환 색인 버퍼는 최근 참조된 메모리 페이지의 가상 어드레스와 실제 어드레스 간의 상호 참조를 포함한다. 메모리 흐름 제어는 DMA 제어 및 동기화와 같이 프로세서와 버스 간의 인터페이스 기능을 제공한다.
영역(1155)은 운영 체제용의 맵핑 영역이고 대역폭 및 잠재 보증(latency guarantee)을 가진 핀드 시스템 메모리이다. 영역(1160)은 장치(1100)의 외부에 있는 입력 출력 장치용의 맵핑 영역이고 시스템 및 입력 출력 구조에 의해 정의된다.
시너지스틱 프로세싱 콤플렉스(SPC)(1102)는 시너지스틱 프로세싱 유닛(SPU)(1105), 로컬 기억부(1110) 및 메모리 관리 유닛(MMU)(1115)을 포함한다. 처리 유닛(1130)은 SPU(1105)를 관리하고 처리 유닛(1130)의 방향에 응답하여 데이터를 처리한다. 예를 들면, SPU(1105)는 디지털 시그널링 프로세싱 코어, 마이크로 프로세서 코어, 마이크로 콘트롤러 코어, 또는 이들 코어의 조합일 수 있다. 로컬 기억부(1110)는 SPU(1105)가 전용 기억 영역 및 비전용 기억 영역용으로 구성하는 기억 영역이다. 예를 들어서, 만일 SPU(1105)가 상당한 양의 로컬 메모리를 필요로 하면, SPU(1105)는 전용 메모리에 로컬 기억부(1110)의 100%를 할당할 수 있다. 다른 예로서, 만일 SPU(1105)가 최소량의 로컬 메모리를 필요로 하면, SPU(1105)는 전용 메모리에 로컬 기억부(1110)의 10%를 할당하고 비전용 메모리에 로컬 기억부(1110)의 나머지 90%를 할당할 수 있다(도 11B 및 로컬 기억부 구성에 관하여 상세히 설명하는 대응 본문 참조).
비전용 메모리에 할당된 로컬 기억부(1110)의 부분은 영역(1145) 내의 시스템 메모리 맵(1120)에 의해 관리된다. 이 비전용 메모리 영역들은 다른 SPU에 의해 또는 처리 유닛(1130)에 의해 액세스될 수 있다. MMU(1115)는 직접 메모리 액세스(DMA) 기능을 포함하고 로컬 기억부(1110)로부터의 정보를 장치(1100) 내의 다른 메모리 위치로 전달한다.
도 11B는 로컬 기억 영역이 전용 메모리 및 비전용 메모리로 분리된 것을 나타낸 도이다. 시스템 부트 중에, 시너지스틱 프로세싱 유닛(SPU)(1160)은 로컬 기억부(1170)를 2개의 영역, 즉 전용 기억부(1175)와 비전용 기억부(1180)로 분할한다. SPU(1160)는 도 11A에 도시된 SPU(1105)와 유사하고, 로컬 기억부(1170)는 로컬 기억부(1110)와 유사하다. 전용 기억부(1175)는 SPU(1160)에 의해 액세스가능하고, 비전용 기억부(1180)는 SPU(1160) 뿐만 아니라 특정 장치 내의 다른 처리 유닛에 의해 액세스가능하다. SPU(1160)는 데이터에 대한 고속 액세스를 위해 전용 기 억부(1175)를 사용한다. 예를 들면, SPU(1160)는 메모리에 저장된 광대한 크기의 데이터에 신속히 액세스하기 위해 SPU(1160)를 필요로 하는 복잡한 연산을 수행할 수 있다. 이 예에서, SPU(1160)는 SPU(1160)가 액세스할 충분한 로컬 메모리를 갖는 것을 보장하기 위해 전용 기억부(1175)에 로컬 기억부(1170)의 100%를 할당할 수 있다. 다른 예로서, SPU(1160)는 다량의 로컬 메모리를 필요로 하지 않을 수 있고, 따라서 전용 기억부(1175)에 로컬 기억부(1170)의 10%를 할당하고 비전용 기억부(1180)에 로컬 기억부(1170)의 나머지 90%를 할당할 수 있다.
로컬 기억 앨리어스(1190)와 같은 시스템 메모리 맵핑 영역은 비전용 기억부에 할당된 로컬 기억부(1170)의 부분들을 관리한다. 로컬 기억 앨리어스(1190)는 도 11A에 도시된 로컬 기억 앨리어스(1145)와 유사하다. 로컬 기억 앨리어스(1190)는 각 SPU의 비전용 기억부를 관리하고, 다른 SPU가 비전용 기억부 뿐만 아니라 장치의 제어 처리 유닛에 액세스하게 한다.
비록, 도 10, 도 11A 및 도 11B에 도시된 컴퓨터 시스템이 여기에서 설명한 처리들을 실행할 수 있지만, 이 컴퓨터 시스템은 컴퓨터 시스템의 단지 하나의 예일 뿐이다. 당업자라면 여기에서 설명한 처리들을 수행하기 위한 많은 다른 컴퓨터 시스템 설계가 있을 수 있다는 것을 알 것이다.
본 발명의 양호한 실시예 중의 하나는 응용, 즉 예컨대 컴퓨터의 랜덤 액세스 메모리에 존재할 수 있는 코드 모듈의 명령어 집합(프로그램 코드)이다. 컴퓨터가 필요로 할 때까지, 명령어 집합은 다른 컴퓨터 메모리, 예를 들면 하드 디스크 드라이브에 저장될 수도 있고 또는 광디스크(궁극적으로 CD ROM에서 사용하기 위 해) 또는 플로피 디스크(궁극적으로 플로피 디스크 드라이브에서 사용하기 위해)와 같은 제거가능한 기억장치에 저장될 수도 있으며, 또는 인터넷이나 기타 컴퓨터 네트워크를 통하여 다운로드될 수도 있다. 따라서, 본 발명은 컴퓨터에서 사용하기 위한 컴퓨터 프로그램 제품으로서 구현될 수 있다. 또한, 여기에서 설명한 각종 방법들은 선택적으로 기동되거나 소프트웨어에 의해 재구성되는 범용 컴퓨터에서 편리하게 구현될 수 있지만, 당업자라면 이 방법들이 하드웨어로, 펌웨어로, 또는 필요한 방법 단계들을 수행하도록 구성된 더욱 특정화된 장치에서 실행될 수 있다는 것을 또한 인식할 것이다.
비록, 본 발명의 특수한 실시예들을 도시하고 설명하였지만, 당업자라면 여기에서 설명된 내용에 기초하여 본 발명 및 그 넓은 태양으로부터 벗어나지 않고 여러 가지 변화 및 수정이 가능하다는 것을 알 것이다. 그러므로, 첨부된 청구범위는 본 발명의 진정한 정신 및 범위 내에 있는 그러한 변화 및 수정들을 모두 본 발명의 범위 내에 포함하는 것으로 한다. 또한, 본 발명은 청구 범위에 의해서만 정의된다는 것을 이해하여야 한다. 당업자라면 소개된 청구 요소의 특정 갯수가 의도된 경우에는 그 의도가 청구 범위에서 명시적으로 인용될 것이고, 그러한 인용이 없으면 그러한 제한이 없다는 것을 이해할 것이다. 비제한적인 예로서, 단지 이해를 돕기 위해, 이하의 청구 범위에서는 청구 요소들을 소개하기 위해 서두절(introductory phrase) "적어도 하나의" 및 "하나 이상의"의 사용을 포함한다. 그러나, 이러한 절의 사용은 부정관사 "a" 또는 "an"으로 청구 요소를 소개하는 것이 그렇게 소개된 청구 요소를 포함한 임의의 특별한 청구범위가 그러한 요소를 단 지 하나만 포함하는 것으로 제한하는 의미로 해석되어서는 안되며, 동일한 청구범위가 서두절 "하나 이상의" 또는 "적어도 하나의" 및 부정관사 "a" 또는 "an"을 포함하는 경우에도 청구범위에서 정관사를 사용하는 것과 같다.

Claims (10)

  1. 컴퓨터로 구현되는 방법에 있어서,
    제2 프로세서의 로컬 기억부에 위치된 데이터에 대응하는 데이터 요구를 제1 프로세서로부터 수신하는 단계와;
    데이터 요구에 대응하는 실제 어드레스를 식별하는 단계와;
    데이터를 상기 실제 어드레스에 대응하는 상기 제1 프로세서에 제공하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 실제 어드레스는 소프트 카피 영역에 대응하고, 소프트 카피 영역은 캐쉬, 커널(kernel) 및 디스크로 구성된 그룹으로부터 선택된 것인, 방법.
  3. 제1항에 있어서, 상기 데이터 요구는 유효 어드레스를 포함하고, 상기 방법은, 페이지 테이블 엔트리를 이용하여 유효 어드레스를 실제 어드레스로 변환하는 단계를 더 포함하며, 상기 페이지 테이블 엔트리는 페이지 테이블에 위치한 것인, 방법.
  4. 제1항에 있어서, 스레드 요구(thread request)를 수신하는 단계와;
    상기 제2 프로세서에 대응하는 프로세서 상태를 판정하는 단계와;
    상기 판정에 기초하여 상기 제2 프로세서의 로컬 기억부로부터의 데이터를 소프트 카피 영역에 카피하는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서,
    하나 이상의 정책을 검색하는 단계와;
    하나 이상의 정책에 기초하여 데이터의 복원 여부를 결정하는 단계와;
    상기 결정에 응답하여 데이터를 복원하는 단계를 포함하고,
    상기 복원 단계는,
    소프트 카피 영역으로부터 데이터를 검색하는 단계와;
    상기 데이터를 로컬 기억부에 세이브하는 단계와;
    페이지 테이블 엔트리를 복원에 대응하게 변경하는 단계
    를 더 포함하는 것인, 방법.
  6. 제1항에 있어서, 로컬 기억부는 제2 프로세서에 위치하는 레지스터들에 대응하는 것인, 방법.
  7. 제1항에 있어서, 제1 프로세서는 처리 유닛이고, 제2 프로세서는 시너지스틱 프로세싱 유닛(synergistic processing unit)인 것인, 방법.
  8. 프로그램 제품에 있어서,
    컴퓨터에서 실행될 때 청구항 제1항 내지 제7항 중 어느 한 항의 단계들을 수행할 수 있는 컴퓨터 프로그램 코드를 가진 컴퓨터 동작가능 매체를 포함한 프로그램 제품.
  9. 정보 취급 시스템에 있어서,
    복수의 프로세서와;
    상기 복수의 프로세서에 의해 액세스가능한 하나 이상의 비휘발성 기억 장치와;
    상기 복수의 프로세서에 의해 액세스가능한 공유 메모리와;
    스레드에 데이터를 제공하기 위한 데이터 관리 도구
    를 포함하고,
    상기 데이터 관리 도구는, 청구항 제1항 내지 제7항 중 어느 한 항의 방법 단계들을 수행할 수 있는 소프트웨어 코드를 포함하는 것인, 정보 취급 시스템.
  10. 제9항에 있어서, 제1 프로세서와 제2 프로세서는 이종(heterogeneous)의 것인 정보 취급 시스템.
KR1020077002319A 2004-09-30 2005-08-24 프로세서 자원의 가상화를 위한 시스템 및 방법 KR100968188B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/955,093 US7290112B2 (en) 2004-09-30 2004-09-30 System and method for virtualization of processor resources
US10/955,093 2004-09-30

Publications (2)

Publication Number Publication Date
KR20070052272A true KR20070052272A (ko) 2007-05-21
KR100968188B1 KR100968188B1 (ko) 2010-07-06

Family

ID=35385802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077002319A KR100968188B1 (ko) 2004-09-30 2005-08-24 프로세서 자원의 가상화를 위한 시스템 및 방법

Country Status (10)

Country Link
US (1) US7290112B2 (ko)
EP (1) EP1805629B1 (ko)
JP (1) JP4639233B2 (ko)
KR (1) KR100968188B1 (ko)
CN (1) CN100421089C (ko)
BR (1) BRPI0515920B1 (ko)
CA (1) CA2577865C (ko)
MX (1) MX2007003679A (ko)
TW (1) TWI340900B (ko)
WO (1) WO2006034931A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101031409B1 (ko) * 2006-12-29 2011-04-26 인텔 코오퍼레이션 동적으로 가상 머신을 생성하기 위한 방법, 제조물품 및 시스템
US9015446B2 (en) 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units
US9032101B1 (en) 2008-12-10 2015-05-12 Nvidia Corporation Chipset support for binding and migrating hardware devices among heterogeneous processing units

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716638B2 (en) * 2005-03-04 2010-05-11 Microsoft Corporation Methods for describing processor features
US7613905B2 (en) * 2006-04-06 2009-11-03 Texas Instruments Incorporated Partial register forwarding for CPUs with unequal delay functional units
US8255383B2 (en) * 2006-07-14 2012-08-28 Chacha Search, Inc Method and system for qualifying keywords in query strings
US7647483B2 (en) * 2007-02-20 2010-01-12 Sony Computer Entertainment Inc. Multi-threaded parallel processor methods and apparatus
US8200910B2 (en) * 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
US7873879B2 (en) * 2008-02-01 2011-01-18 International Business Machines Corporation Mechanism to perform debugging of global shared memory (GSM) operations
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8255913B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US9454410B2 (en) 2008-03-04 2016-09-27 Microsoft Technology Licensing, Llc Transparent integration of application components
KR101398935B1 (ko) * 2008-04-29 2014-06-27 삼성전자주식회사 가상화를 이용한 시스템 복원 방법 및 장치
US9009386B2 (en) 2010-12-13 2015-04-14 International Business Machines Corporation Systems and methods for managing read-only memory
KR20130084846A (ko) 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US9116809B2 (en) 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
CN103377141B (zh) * 2012-04-12 2016-10-12 无锡江南计算技术研究所 高速存储区的访问方法以及访问装置
US9569279B2 (en) 2012-07-31 2017-02-14 Nvidia Corporation Heterogeneous multiprocessor design for power-efficient and area-efficient computing
WO2014046974A2 (en) 2012-09-20 2014-03-27 Case Paul Sr Case secure computer architecture
US10445249B2 (en) * 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1228728B (it) * 1989-03-15 1991-07-03 Bull Hn Information Syst Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi.
JPH04246745A (ja) 1991-02-01 1992-09-02 Canon Inc 情報処理装置及びその方法
JP3454854B2 (ja) * 1992-01-16 2003-10-06 株式会社東芝 メモリ管理装置及び方法
JP3536219B2 (ja) * 1993-10-05 2004-06-07 日本電信電話株式会社 分散メモリ保護管理装置
JPH07302227A (ja) * 1994-05-06 1995-11-14 Hitachi Ltd メモリ保護方法およびその装置
JPH0830568A (ja) * 1994-07-20 1996-02-02 Fujitsu Ltd 分散メモリ型並列計算機のキャッシュ制御方式
JP3926866B2 (ja) 1996-05-10 2007-06-06 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、及び描画システム
US5860146A (en) 1996-06-25 1999-01-12 Sun Microsystems, Inc. Auxiliary translation lookaside buffer for assisting in accessing data in remote address spaces
US6122711A (en) * 1997-01-07 2000-09-19 Unisys Corporation Method of and apparatus for store-in second level cache flush
US6003065A (en) 1997-04-24 1999-12-14 Sun Microsystems, Inc. Method and system for distributed processing of applications on host and peripheral devices
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6647508B2 (en) 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6128724A (en) 1997-12-11 2000-10-03 Leland Stanford Junior University Computation using codes for controlling configurable computational circuit
FI108478B (fi) 1998-01-21 2002-01-31 Nokia Corp Sulautettu jõrjestelmõ
US6381659B2 (en) 1999-01-19 2002-04-30 Maxtor Corporation Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses
JP3543942B2 (ja) 2000-03-02 2004-07-21 株式会社ソニー・コンピュータエンタテインメント 画像生成装置
JP2001319243A (ja) 2000-03-03 2001-11-16 Sony Computer Entertainment Inc 画像生成装置、画像生成装置におけるジオメトリ処理形態の切換方法、記録媒体、コンピュータプログラム、半導体デバイス
US6677951B2 (en) 2000-03-03 2004-01-13 Sony Computer Entertainment, Inc. Entertainment apparatus having compatibility and computer system
US20020016878A1 (en) * 2000-07-26 2002-02-07 Flores Jose L. Technique for guaranteeing the availability of per thread storage in a distributed computing environment
US6742103B2 (en) 2000-08-21 2004-05-25 Texas Instruments Incorporated Processing system with shared translation lookaside buffer
JP2002207685A (ja) 2000-10-12 2002-07-26 Sony Computer Entertainment Inc 仮想世界システム、サーバコンピュータおよび情報処理装置
US6606690B2 (en) * 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6809734B2 (en) 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
JP2003033576A (ja) 2001-05-18 2003-02-04 Sony Computer Entertainment Inc エンタテインメントシステム、通信システム、通信プログラム、通信プログラムを格納したコンピュータ読み取り可能な記録媒体、及び通信方法
DE10128475A1 (de) * 2001-06-12 2003-01-02 Siemens Ag Mehrprozessorsystem mit geteiltem Arbeitsspeicher
JP2003140965A (ja) * 2001-11-07 2003-05-16 Hitachi Ltd 分散共有メモリ型並列計算機および命令スケジューリング方法
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
JP2005309793A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd データ処理システム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101031409B1 (ko) * 2006-12-29 2011-04-26 인텔 코오퍼레이션 동적으로 가상 머신을 생성하기 위한 방법, 제조물품 및 시스템
US9015446B2 (en) 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units
US9032101B1 (en) 2008-12-10 2015-05-12 Nvidia Corporation Chipset support for binding and migrating hardware devices among heterogeneous processing units

Also Published As

Publication number Publication date
WO2006034931A1 (en) 2006-04-06
CN100421089C (zh) 2008-09-24
TW200630797A (en) 2006-09-01
BRPI0515920B1 (pt) 2018-03-20
BRPI0515920A2 (pt) 2009-08-04
EP1805629B1 (en) 2012-09-26
KR100968188B1 (ko) 2010-07-06
TWI340900B (en) 2011-04-21
JP4639233B2 (ja) 2011-02-23
US7290112B2 (en) 2007-10-30
MX2007003679A (es) 2007-04-19
CA2577865C (en) 2011-09-27
CN1989492A (zh) 2007-06-27
JP2008515069A (ja) 2008-05-08
CA2577865A1 (en) 2006-04-06
US20060069878A1 (en) 2006-03-30
EP1805629A1 (en) 2007-07-11

Similar Documents

Publication Publication Date Title
KR100968188B1 (ko) 프로세서 자원의 가상화를 위한 시스템 및 방법
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
US20060070069A1 (en) System and method for sharing resources between real-time and virtualizing operating systems
KR101091224B1 (ko) 이종 처리 유닛을 위한 중앙집중형 디바이스 가상화 계층
US20230196502A1 (en) Dynamic kernel memory space allocation
US8041920B2 (en) Partitioning memory mapped device configuration space
US8126957B2 (en) Managing position independent code using a software framework
CN109074316B (zh) 页面错误解决方案
US20090024820A1 (en) Memory Allocation For Crash Dump
US20170371654A1 (en) System and method for using virtual vector register files
US8006055B2 (en) Fine granularity hierarchiacal memory protection
US7620951B2 (en) Hiding memory latency
US9639478B2 (en) Controlling direct memory access page mappings
WO2015016824A1 (en) Resource management based on a process identifier
US7240182B2 (en) System and method for providing a persistent function server
KR100458104B1 (ko) 파티션 처리 환경을 위한 이종 클라이언트 서버 방법,시스템 및 프로그램 제품
KR20140001827A (ko) 메모리 영역을 충진하기 위한 프로세서 지원
KR20120070326A (ko) 메모리 가상화 장치 및 방법
US8225007B2 (en) Method and system for reducing address space for allocated resources in a shared virtualized I/O device
US20220327063A1 (en) Virtual memory with dynamic segmentation for multi-tenant fpgas
Ahn et al. A Design of Kernel-Level Remote Memory Extension System
CN117877541A (zh) 用于控制池化存储器装置或存储器扩展器的设备和方法

Legal Events

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

Payment date: 20130524

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140527

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150527

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160527

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170526

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180528

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 10