KR101123443B1 - 프로세서 시스템에서 명령어 레벨에서의 자원 할당 식별을 가능하게 하는 방법 및 장치 - Google Patents

프로세서 시스템에서 명령어 레벨에서의 자원 할당 식별을 가능하게 하는 방법 및 장치 Download PDF

Info

Publication number
KR101123443B1
KR101123443B1 KR1020097012333A KR20097012333A KR101123443B1 KR 101123443 B1 KR101123443 B1 KR 101123443B1 KR 1020097012333 A KR1020097012333 A KR 1020097012333A KR 20097012333 A KR20097012333 A KR 20097012333A KR 101123443 B1 KR101123443 B1 KR 101123443B1
Authority
KR
South Korea
Prior art keywords
instruction
processor
raid
resource allocation
address
Prior art date
Application number
KR1020097012333A
Other languages
English (en)
Other versions
KR20090115115A (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 KR20090115115A publication Critical patent/KR20090115115A/ko
Application granted granted Critical
Publication of KR101123443B1 publication Critical patent/KR101123443B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)

Abstract

정보 처리 시스템은 프로그램 애플리케이션 로드, 저장 및 시스템 버스에 대한 I/O 인터페이스 요청을 정보 처리 시스템내에서 생성하는 다수의 하드웨어 유닛을 갖는 프로세서를 포함한다. 프로세서는 특정 자원 할당 그룹으로 시스템 버스 요청을 개시하는 프로세서 하드웨어 유닛을 연결하는 자원 할당 식별자(RAID)를 포함한다. 자원 할당 그룹은 특정 대역폭 할당 레이트를 원시 프로세서에 할당한다. 로드, 저장 또는 I/O 인터페이스 버스 요청이 I/O 버스에 도달하여 실행되면, 자원 할당 관리자는 각각의 연속 I/O 요청자에게 구별되는 대역폭 양을 할당함으로써 각 I/O 요청과 연관된 대역폭 양을 제한한다. 하드웨어 유닛내의 명령어 파이프라인의 연속 스테이지는 특정한 로드, 저장 또는 I/O 명령어에 연결되는 자원 할당 식별자(RAID)를 포함한다.
자원 할당

Description

프로세서 시스템에서 명령어 레벨에서의 자원 할당 식별을 가능하게 하는 방법 및 장치{METHOD AND APPARATUS FOR ENABLING RESOURCE ALLOCATION IDENTIFICATION AT THE INSTRUCTION LEVEL IN A PROCESSOR SYSTEM}
본 발명은 정보 처리 시스템에 관한 것이고, 보다 구체적으로는 정보 처리 시스템에서의 공유 자원의 효율적인 할당에 관한 것이다.
정보 처리 시스템(information handling system : IHS)은 정보를 프로세싱, 처리, 통신 또는 이와 다르게는 조작하는 다수의 프로세서를 채용하는 프로세서 시스템을 포함할 수 있다. 멀티-코어 프로세서는 공통의 집적 회로상에 다수의 프로세서 또는 코어를 갖는 프로세서 시스템을 일컫는 용어이다. IHS 혹은 프로세서 시스템은 동시에 다수의 운영 체제(operating system)를 지원할 수도 있다. 게다가, 다수의 소프트웨어 프로그램 애플리케이션이 그 프로세서 시스템내에서 동시에 실행될 수도 있다. 예를 들어, 프로세서 시스템은 바이러스 탐지용 프로그램 애플리케이션을 실행하고, 이와 동시에 그래픽 데이터를 계산 및 전송하여 디스플레이하는 프로그램을 실행할 수도 있다. 멀티-프로세싱 환경은 다수의 프로그램이 동시에 실행(execute or run)되는 환경이다. 멀티-프로세싱 환경은 종래의 프로세서 구조에서 일반적이다.
기존의 프로세서 시스템의 소프트웨어 프로그램 애플리케이션은 프로그램 실행 도중 정규 프로세스만큼 메모리 어드레스 및 입출력(I/O) 자원을 사용한다. 프로세서 시스템은 메모리 및/또는 I/O 버스를 이용하는 로드 및 저장 동작을 실행한다. 프로세서 시스템은 효율적인 자원 관리의 중요한 특징부만큼 버스 자원의 할당에 의존을 한다. 판독/기록 요청이라고도 하는 메모리 로드/저장 요청은 데이터 전송을 위해서 메모리 버스 이용이 요구된다. 활성 소프트웨어 애플리케이션은 IHS에 상에 있는 시스템 메모리로/로부터 의 메모리 데이터 전송을 개시할 수도 있다. 종래의 프로세서 시스템은 다수의 메모리 액세스 요청을 포함할 수 있다. 더욱이, 일 이상의 프로그램 실행이 다른 프로그램과 동시에 메모리 로드/저장 요청을 할 수 있고, 따라서 메모리 로드/저장 또는 정보 전송 동작을 개시할 수도 있다. 프로세서 시스템내의 다수의 프로세서들은 공통의 I/O 버스에 대한 요청을 할 수도 있다. 따라서, 프로세서 시스템의 다양한 기능적 엘리멘트들은 프로세서 시스템을 채우며 궁극적으로 그 자원을 공유해야 한다.
프로세서 시스템은 통상 다수의 메모리 버스에 대한 요청을 관리하고 각 자원의 대역폭의 부분을 각각의 자원 요청자에게 할당하는 자원 관리자를 포함한다. 프로세서 시스템내의 프로세서 또는 프로세서 엘리멘트들은 자원 요청자이다. 자원 요청과 자원 가용성의 균형을 맞추는(balancing) 것이 효율적인 자원 관리자에 있어서 핵심 과제가 된다. 프로세서 시스템은 또한 경쟁 관계의 요청자들이 공유해야 하는 공통의 I/O 인터페이스 버스를 포함한다. 보다 구체적으로, 프로세서 시스템은 경쟁 관계의 운영체제들, 소프트웨어 애플리케이션들 및 프로세서 엘리멘트들간에 공통의 I/O 인터페이스를 공유한다. 자원 관리자는 경쟁 관계의 I/O 인터페이스 자원 요청자에게 대역폭을 할당한다. I/O 인터페이스 버스는 외부 장치, 예를 들어 이웃하는 프로세서 시스템, 디스플레이, 키보드, 마우스, 매체 드라이브 등의 장치 등과 통신한다.
종래의 프로세서 시스템을 위한 소프트웨어 구조 계층은 하이퍼바이저(hypervisor), 즉, 프로세서 자원, 메모리 자원 및 I/O 자원에 대한 운영체제의 액세스를 제어하는 소프트웨어 계층을 포함한다. 하이퍼바이저는 다수의 소프트웨어 애플리케이션 및 운영체제가 충돌을 약화시키지 않으며 프로세서 시스템 또는 IHS에서 실행할 수 있게 한다. 하이퍼바이저는 자원 관리자를 제어하고, 자원 관리자가 프로그램 애플리케이션마다 허용하는 메모리 및 I/O 버스 대역폭 양을 제한하고, 이에 따라 프로세서 시스템내에서 다수의 프로그램 애플리케이션들이 그 프로세서 시스템내에서 효과적으로 협조적으로 공존하는 환경을 제공한다. 자원 관리자는 메모리 및 I/O 버스의 사용을 제한 또는 한정함으로써 메모리 대역폭 및 I/O 버스 대역폭을 제어한다. 이러한 자원 관리자가 없으면, 하나의 애플리케이션이 비한정적으로 I/O 자원을 사용하여, 다른 애플리케이션이 적절한 시간 프레임내에 애플리케이션 작업을 완료하는 데에 충분한 버스 대역폭을 수신할 수 없게 할 수도 있다. 메모리 버스 또는 I/O 버스의 불충분한 자원 관리에 의해, 계속적인 재시도 또는 프로그램 정지(halt)와 같은 원하지 않는 상태가 야기될 수도 있다. 보다 구체적으로, 불충분한 버스 자원 관리로 인해, 프로세서 시스템이 제한된 버 스 대역폭 자원을 불충분하게 사용하게 할 수도 있다.
오늘날 프로세서 시스템은, 프로세서 또는 신호 집적 회로가 다수의 코어 또는 프로세서 엘리멘트들, 그리고 I/O 제어기를 포함하는 것이 일반적이다. 이러한 프로세서 시스템을 멀티-코어 프로세서 또는 SoC(system-on-a-chip)라 하기도 한다. 이러한 프로세서 시스템은 메모리 및 I/O 자원에 대한 액세스를 요청할 수 있는 하나 이상의 하드웨어 유닛(HU)을 포함할 수 있다. HU는 범용 프로세서 코어(들), 주문형 프로세서 코어(들) 및 I/O 장치를 대신하여 요청을 개시하는 I/O 제어기를 포함할 수 있다. 이러한 멀티-코어 프로세서의 자원 관리자는 프로세서 시스템의 하드웨어 유닛의 RAG(resource allocation groups)에 메모리 및 I/O 대역폭 부분을 할당할 수도 있다. 불행히도, 이러한 할당은 대체적으로 비교적 정확하지 않다(coarse). 예를 들어, 이는 단일의 하드웨어 유닛상에서 실행 중인 다수의 운영체제 또는 프로그램 애플리케이션들간에 상이한 자원 요구 문제를 해결하지 못한다. 이러한 정확하지 않은 자원 할당으로 인해, 프로세서 시스템 또는 IHS에서 운영상의 문제가 야기될 수도 있다. 예를 들어, 이러한 정확하지 않은 자원 할당으로 인해, 바이러스 스캔과 같은 고 대역폭 애플리케이션이 그래픽 사용자 인터페이스와 같은 사용자 대화식 인터페이스의 실행을 실질적으로 방해할 수도 있다. 이로 인해, 사용자에게 불리한 결과를 초래할 수도 있다.
제 1 양상에 따르면 복수의 하드웨어 유닛을 포함하는 프로세서가 공유 자원을 액세스하는 방법을 제공한다. 본 방법은 프로세서의 하드웨어 유닛이 공유 자원에 대한 액세스 요청을 요구하는 실행 명령어를 수신하는 단계를 포함한다. 본 방법은 또한 상기 명령어가 상기 하드웨어 유닛의 복수의 파이프라인 스테이지(pipelined stages)를 통과할 때 상기 명령어에 자원 할당 식별 정보를 제공하는 단계를 포함하며, 상기 자원 할당 식별 정보는 상기 하드웨어 유닛의 파이프라인 스테이지로부터 파이프라인 스테이지로의 명령어를 수반한다.
파이프라인 스테이지 중 하나가 명령어에 대한 실제 어드레스 변환을 수행하는 어드레스 변환 파이프라인 스테이지인 실시예에서, 자원 할당 식별 정보는 어드레스 변환 파이프라인 스테이지에서의 명령어와 연관된다. 파이프라인 스테이지 중 하나가 저장 큐(store queue)인 일 실시예에서, 저장 큐는 상기 어드레스 변환 파이프라인 스테이지가 어드레스를 변환한 이후에 명령어와 그와 연관된 자원 할당 식별 정보를 수신한다.
제 2 양상에 따르면, 반도체 다이에 위치한 복수의 하드웨어 유닛을 포함하는 프로세서를 제공한다. 복수의 하드웨어 유닛은 공유 자원을 액세스하도록 구성된다. 복수의 하드웨어 유닛은 제 1 하드웨어 유닛을 포함한다. 제 1 하드웨어 유닛은 복수의 파이프라인 스테이지를 포함하는데, 여기서 제 1 하드웨어 유닛은 공유 자원에 대한 액세스 요청을 요구하는 실행 명령어를 수신한다. 제 1 하드웨어 유닛은 명령어가 제 1 하드웨어 유닛의 복수의 파이프라인 스테이지를 통과할 때 그 명령어에 자원 할당 식별 정보를 제공하도록 구성된다.
공유 자원은 바람직하게 복수의 하드웨어 유닛의 외부에 있다.
제 1 하드웨어 유닛의 파이프라인 스테이지 중 하나는 명령어에 대한 실제 어드레스 변환을 수행하는 어드레스 변환 파이프라인 스테이지인 일 실시예에서, 자원 할당 식별 정보는 어드레스 변환 파이프라인 스테이지에서 명령어와 연관된다. 파이프라인 스테이지 중 하나가 저장 큐인 일 실시예에서, 저장 큐는 어드레스 변환 파이프라인 스테이지가 어드레스 변환을 한 이후에 명령어와 연관된 자원 할당 식별 정보를 수신한다. 일 실시예에서, 복수의 하드웨어 유닛 중 제 1 하드웨어 유닛 외의 각 하드웨어 유닛은 복수의 파이프라인 스테이지를 포함하는데, 여기서 이러한 하드웨어 유닛은 공유 자원에 대한 액세스 요청을 요구하는 실행 명령어를 수신한다. 제 1 하드웨어 유닛 외의 이러한 하드웨어 유닛들은 그들의 복수의 파이프라인 스테이지를 통과하는 각각의 명령어에 자원 할당 식별 정보를 제공한다.
도 1은 본 발명의 바람직한 실시예에 따른 프로세서 시스템을 위한 자원 관리자의 블록도를 도시한다.
도 2는 본 발명의 바람직한 실시예에 따른 도 1의 프로세서 시스템의 자원 할당 맵을 도시한다.
도 3은 본 발명의 바람직한 실시예에 따른 도 1의 프로세서 시스템에서 가용 하드웨어 유닛의 블록도를 도시한다.
도 4는 본 발명의 바람직한 실시예에 따른 프로세서 시스템에서 상기? 가용 하드웨어 유닛의 블록도를 도시한다.
도 5는 본 발명의 바람직한 실시예에 따른 도 4의 하드웨어 유닛을 포함하는 상기 프로세서 시스템의 블록도를 도시한다.
도 6은 본 발명의 바람직한 실시예에 따른 도 4의 상기 하드웨어 유닛의 ERAT 룩업 테이블의 예를 도시한다.
도 7은 본 발명의 바람직한 실시예에 따른 도 4의 상기 하드웨어 유닛의 FIFO 저장 큐의 예를 도시한다.
도 8은 본 발명의 바람직한 실시예에 따른 상기 방법을 이용하는 프로세서 시스템에서의 저장 요청 처리를 설명하는 순서도이다.
도 9는 본 발명의 바람직한 실시예에 따른 상기 자원 할당 방법을 채용하는 정보 처리 시스템의 블록도이다.
이하 본 발명의 바람직한 실시예를 예로서 제공된 첨부 도면을 참조하여 설명한다.
다수의 프로세서 유닛을 포함하는 프로세서 시스템에서, 자원 할당 관리자(RAM)는 메모리 또는 I/O 액세스를 요청할 수 있는 각각의 프로세서 유닛에게 메모리 및 I/O 대역폭 할당 레이트를 할당함으로써 다수의 프로그램 애플리케이션들간에 자원 대역폭 레이트를 관리할 수 있다. 용어 HU(hardware unit)는 메모리 또는 I/O 액세스 요청을 할 수 있는 프로세서 시스탬내의 각 프로세서 유닛에 해당된다. 이러한 하드웨어 유닛내에서 실행 중인 시스템 소프트웨어 프로그램 애플리케이션에서의 로드 또는 저장 명령어는 특정한 메모리 또는 I/O 요청을 생성할 수도 있다. 토큰 관리자(token manager)는 프로세서 시스템이 채용할 수 있는 RAM(resource allocation manager)의 일 예시적인 유형이다. 토큰 관리자는 각각의 하드웨어 유닛(HU)에 대하여 자원 대역 할당 레이트를 통치하는 일 이상의 자원 제어 레지스터를 포함할 수 있다. RAM은 하드웨어 유닛(HU)을 자원 할당 그룹(RAG)으로 그룹화한다. 자원 제어 레지스터는 토큰 관리자에서 개별 식별자를 할당함으로써 프로세서 시스템 내의 각 특정 RAG를 식별한다. 토큰 관리자는 토큰 부여 과정을 통해 요청 하드웨어 유닛(HU)에게 메모리 및 I/O 인터페이스 버스의 사용을 허용한다. 토큰은 HU가 메모리 및 I/O 버스 대역폭 사용을 제어함으로써 버스 대역폭 요청에 대하여 개별적인 제어를 한다. 토큰 관리자가 각각의 자원 할당 그룹(RAG)을 연관시키는 버스 대역폭의 양은 토큰 레이트, 즉 주어진 RAG내에 요청 HU에게 토큰 관리자가 토큰을 부여하는 레이트로 공지되어 있다. 토큰 관리자는 토큰 관리자의 자원 제어 레지스터에서 특정 토큰 레이트를 RAG의 식별자와 연관시킴으로써 특정 RAG에 특정 대역폭 할당 레이트를 할당할 수도 있다.
하이퍼바이저는 프로세서 시스템에 있는 HU 각각에 대한 RAG 할당을 위한 토큰 레이트 또는 대역폭 할당 레이트를 수정하기 위하여 토큰 관리자 내의 자원 제어 레지스터를 재프로그램할 수 있다. RAG를 빠져나가기 위한 토큰 레이트를 수정하기 위한 시간 또는 시스템 버스 싸이클 양은 프로그램 실행 중에 RAG 할당을 변경하는데 있어서 주요 결점이다. 실행 프로그램은 먼저 현재 눈에 뜨이는 자원 요청 모두, 즉, 자원 요청 또는 빠져나가는 자원 할당 설정치를 사용하는 명령어를 완전히 사용해버리거나 "플러시(flush)"해야 한다. 프로세서 시스템은 "SYNC" 명령으로 이러한 명령어 플러시를 수행한다. 더욱이, 프로그램 애플리케이션은 신규 대역폭 할당 레이트가 작용하게 되는 기존의 명령어 이전에 SYNC 명령어를 삽입해야 한다. SYNC 명령은 프로그램 명령어의 기존 파이프라인 큐가 파이프라인 큐가 완료될 때까지 연속 처리하게 하거나, 또는 다음 명령어 이전에 SYNC 명령 이후에 프로그램 명령어의 기존 파이프라인 큐를 비운다. 모든 버스 I/O 연산은 신규의 대역폭 레이트가 작용할 수 있게 되기 이전에 완료해야 한다. 이러한 SYNC 명령 기반 프로세스는 바람직하지 않게 많은 시간을 소비할 수도 있다.
일단 SYNC 명령 프로세스가 완료되면, 파이프라인 큐의 다음 명령어는 RAM 제어 레지스터를 결과적으로 RAG 대역폭 할당 레이트를 변경할 수 있다. RAM의 제어 레지스터를 변경하는 프로세스는 또한 RAM과 신규 RAG 할당을 요청하는 HU간의 거리가 상대적으로 크므로 바람직하지 않게 많은 시간을 소비할 수 있다. 일단 신규의 RAG 할당이 완료되면, HU의 명령어 파이프라인 큐는 후속 명령어에 대한 새로운 영역폭 할당 레이트로 프로세싱을 계속할 수 있다. 불행히도, 이러한 느린 RAG 할당 변경 프로세스는 대역폭 할당 레이트 변경 중에 실행하는 복잡한 시스템 클럭 싸이클과 연관되는 시스템 지연을 초래할 수도 있다. 이러한 이유로, 상술한 RAG 할당 변경 프로세스는 대역폭 할당 레이트를 변경하는 바람직한 방법이 아니다.
RAG 할당 변경의 또 다른 방법으로는, 각 HU가 특정 RAG에 대한 HU 할당을 식별하기 위해 각각의 HU 내에서 자원 할당 식별자(resource allocation identifier : RAID) 레지스터를 이용하는 것이다. RAID 할당을 그리고 따라서 특정 HU에 대한 자원 대역폭 할당 레이트를 변경하는 것은 개별 명령어들간에 자원 대역폭 레이트를 조정하는 데에 보다 실용적인 방법이다. HU가 RAID 정보를 지역적으로 유지하므로, 프로세서 시스템은 RAID를 변경하고 따라서 그 HU를 잠재적으로 상이한 대역폭 할당 레이트를 갖는 다른 RAG와 연관시키는 데에 이용하는 시스템 버스 싸이클 시간이 더 짧다. 이러한 지역적 RAID 저장 방법은 지역적 RAID 저장이 아닌 방법에 비해 속도가 빠르다. 그러나, 이러한 지역적 RAID 저장 방법에서는 프로세서 시스템이 새로운 대역폭 할당 레이트가 새로운 레이트를 요구하는 다음 명령어와 동기화할 수 있게 하기 위해 명령어 파이프라인 큐를 또한 플러시해야 한다. 따라서, 지역적 RAID 저장 방법 또한 시스템 자원 시간의 측면에서 바람직하지 않게 손실이 크다.
프로세서 시스템내의 하드웨어 유닛(HU) 중심적인 자원 할당 관리자(RAM)는 메모리 액세스 및 I/O 인터페이스 액세스에 대한 HU 요청을 관리한다. 더욱이 RAM은 HU의 각 자원 할당 그룹(RAG)에 대해 각각의 대역폭 할당 레이트를 제어함으로써 버스 사용량을 관리한다. 시스템 소프트웨어가 프로세서 시스템내의 특정 작업에 시스템 메모리 저장을 할당할 수 있지만, 메모리 버스는 다수의 애플리케이션들이 공유해야 하는 자원을 나타낸다. 또한, RAM은 메모리 자원의 효율적인 사용을 효과적으로 제공하기 위하여 메모리 버스 대역폭을 관리해야 한다.
도 1은 프로세서 시스템(100)내에서 중앙 집중형 자원 관리를 나타내는 블록도이다. 프로세서 시스템(100)은 중앙 집중된 자원 할당 관리자 RAM(110)이 집적된 멀티-코어 프로세서(105)를 포함한다. 멀티-코어 프로세서의 일 예는 그 전체 가 본 명세서에서 참조로서 인용되는 2005년 8월 8일에 IBM사가 개시한 "Cell Boradband Engine Architecture, Version 1.0"에 개시한 것과 같은 CBE(cell broadband engine) 프로세서이다. RAM(110)은 범용 컴퓨팅 기능을 제공하는 파워 프로세서 엘리먼트 PPE(115)에 결합된다. 이러한 방식으로, RAM(110)은 요청하는 HU에게의 메모리 또는 I/O 버스 인가를 위한 토큰을 부여하는 토큰 관리자이다. 각 토큰 관리자는 128 바이트 예를 들면 특정 애플리케이션에 따라 다른 값과 같이 버스 대역폭의 특정 할당 레이트를 나타낼 수도 있다.
파워 프로세서 엘리먼트 PPE(115)는 RAM(110)으로부터 토큰을 축적 또는 보유할 수 있다. 보다 구체적으로, PPE(115)는 RAM(110)으로부터 토큰을 요청하고, RAM(110)으로부터 토큰을 보유 또는 유지할 수도 있다. PPE(115)는 차후 메모리 또는 I/O 요청에 대한 인증으로서 토큰을 이용할 수도 있다. 이러한 특별한 프로세서 시스템(100)은 도 1에 도시하는 바와 같이 RAM(100)에 결합되는 8개의 상승적인 프로세서 엘리먼트, 즉 SPE-1, SPE-2, SPE-3, SPE-4, SPE-5, SPE-6, SPE-7 및 SPE-8을 포함한다. PPE(115)와 8개의 SPE 각각은 RAM(110)으로부터 개별적으로 토큰을 요청할 수도 있다. 따라서 각 SPE 및 PPE는 본 명세서에서 정의하는 하드웨어 유닛(HU)이다. 이러한 특별한 프로세서 시스템(100)에서, SPE 및 PPE는 4개의 자원 할당 그룹(RAG)을 나타낸다. RAM(110)내의 제어 레지스터는 각각의 RAG에 대해 대역폭 할당 레이트를 저장한다.
메모리 제어기(160)는 RAM(110)에 결합되어 메모리 버스(165)에 대한 인터페이스를 관리한다. 메모리 버스(165)는 이후에 설명할 IHS(정보 처리 시스템)의 시 스템 메모리(미도시)에 인터페이스한다. 시스템 메모리는 동일한 메모리 사이즈의 8개 뱅크를 포함할 수 있다. PPE 또는 SPE와 같은 HU는 메모리 각 뱅크에 개별적으로 메모리 로드 또는 저장 액세스를 요청한다. RAM(110)은 각 뱅크에 대해 별도이 토큰을 발행한다. 메모리의 개별 뱅크는 액세스 로드 및 저장 도중 셋업 및 안정 시간을 필요로 한다. 메모리의 각 뱅크는 임의의 로드 또는 저장 연산을 완료하기 위해 다수의 버스 싸이클을 필요로 한다. RAM(110)은 임의의 메모리 버스 연산을 위한 긴 잠복으로 인해 동일한 메모리 뱅크에 반복된 토큰을 연속으로 발행하는 것을 방지한다.
I/O 인터페이스 제어기(170)는 RAM(110)에 결합하여 고속 및 저속 인터페이스 버스에 대한 I/O 인터페이스를 관리한다. 보다 구체적으로 입력 버스 IPIFO-IN(175) 및 고속 인터페이스 출력 버스 IOIF0-OUT(180)은 또 다른 CBE 또는 그래픽 디스플레이와 같은 고속 장치에 프로세서(105)를 결합시킨다. 저속 인터페이스 입력 버스 IOIF1-IN(185) 및 저속 인터페이스 출력 버스 IOIF1-OUT(190)은 키보드 및 소형 판독/기록 드라이브와 같은 보다 저속 인터페이스 장치에 프로세서(105)를 결합시킨다. I/O 버스는 입/출력 인터페이스 버스(175 내지 190)에 대한 단축 용어이다.
하드웨어 유닛(HU)은 하드웨어 엘리먼트, 프로세서 엘리먼트 또는 기능적 유닛이다. RAM(110)은 프로세싱 시스템(100)에서 메모리 어드레스 또는 I/O에 대한 로드 또는 저장 요청을 생성함으로써 메모리 또는 I/O 인터페이스 대역폭 양을 제어한다. 도 1에 도시하는 바와 같이, 프로세서 시스템(100)은 PPE(115), 그리고 SPE 1-8과 같은 HU를 포함한다. I/O 인터페이스 제어기(170)는 I/O 장치를 위하여 DMA(direct memory access)를 요청하는 인터페이스 제어기(170) 기능으로 인해 이러한 특정 프로세서 시스템(100)내의 제 10 HU를 제한한다. 메모리 제어기(160) 및 메모리 버스(165)는 하드웨어 유닛 HU를 제한하지 않는데, 그 이유는 메모리 제어기(160)와 메모리 버스(165) 중 어느 것도 메모리 또는 I/O 버스의 사용을 직접 요청하지 않기 때문이다. 10개의 HU 모두가 RAM(110)과의 동작 및 상호작용을 통해 CBE의 메모리 및 I/O 대역폭 사용을 경쟁한다.
RAM(110)은 동일한 대역폭 할당 레이트 그룹, 즉 자원 할당 그룹 또는 RAG로 HU들을 그룹화한다. RAM(110)은 전체 I/O 버스 대역폭의 소정 부분을 각 RAG에 할당한다. RAM(110)을 생성하여 주어진 RAG에 부여한다. 또한, RAM(100)은 토큰의 발행 또는 부여 레이트에 의해서 자원 할당을 관리한다. 각 토큰은 메모리 버스 및 I/O 인터페이스 버스 자원 할당을 위한 메카니즘을 제공한다. 이러한 예에서 각 토큰은 메모리 또는 I/O를 위하여 128 바이트의 대역폭을 지원한다. RAM(110)이 HU에게 부여되는 토큰을 발행하면, HU는 승인 I/O 또는 메모리 버스 프로세스를I/O 버스 사용량의 128 바이트 토큰 사이즈까지 개시하고 I/O 또는 메모리 버스 프로세스가 완료될 때까지 관리한다.
도 2는 도 1의 프로세서 시스템(100)의 RAM(110)이 채용할 수 있는 자원 할당 맵의 일 예를 도시하는 도표이다. 이 도표는 자원 할당 그룹 번호 또는 RAG 번호(RAG #)를 나타내는 칼럼(210)을 포함한다. RAM(110)는 도 2가 도시하는 자원 할당 맵에 따라 동작한다. 하이퍼바이저를 포함할 수 있는 시스템 소프트웨어는 프로세서 시스템(100)을 위한 대역폭 할당 레이트를 결정한다. 또한, 시스템 소프 트웨어는 RAM(110)의 로드 자원 레지스터(195)에 RAG 할당된 대역폭 레이트를 싣는다. RAM(110)은 4개의 자원 할당 그룹 RAG 각각에 대한 특정 메모리 버스 및 I/O 인터페이스 대역폭 할당 레이트를 관리한다. RAM(110)은 특수한 하드웨어 유닛(HU)에 I/O 대역폭 할당 레이트를 관리하고, 시스템 소프트웨어가 특정 RAG에 할당하는 RAG 번호를 할당 레이트가 기초로 하게 한다. 메모리 액세스 또는 인터페이스 I/O 전송을 요청하는 소프트웨어 명령어는 RAG 번호가 도 2의 칼럼(215)의 HU와 칼럼(210)의 RAG 사이에서 연과시키는 자원 할당 레이트 할당을 이용한다.
위에서 살펴본 바와 같이, 하드웨어 유닛(HU)은 메모리 액세스 또는 I/O 인터페이스 전송을 요청할 수 있는 프로세서 시스템의 하드웨어 프로세싱 엘리먼트이다. 도 1과 도 2의 칼럼(215)의 예에서, 하드웨어 유닛(HU)은 PPE, SPE-1, SPE2, SPE-3, SPE-4, SPE-5, SPE-6, SPE-7, SPE-8 그리고 마지막으로 I/O 인터페이스 제어기(170)이다. 시스템 소프트웨어는 각 HU의 각각의 RAID 레지스터에 특정한 RAID 비트를 할당함으로써 칼럼(210)에 나타낸 바와 같이 각각의 HU에 특정한 RAG 번호 연관성을 할당한다. 게다가, 칼럼(210)의 RAG 번호 할당은 동적으로 변할 수도 있어, 프로세서 시스템(100)이 시스템 소프트웨어가 원하는 플라이에서의 I/O 버스 대역폭 배치 레이트 할당을 변경할 수도 있다. 도 2의 맵에 도시하는 바와 같이, RAM(110)은 하드웨어 유닛 PPE(115) 및 SPE-1을 0 또는 RAG0과 동일한 RAG 번호에 할당한다. RAG0 할당은 RAG0에서 하드웨어 유닛 HU에 대한 특정한 대역폭 할당 레이트를 나타낸다. 메모리 액세스 또는 I/O 인터페이스에 대한 추후의 요청에 대한 대역폭 배치 레이트 할당은 시스템 소프트웨어, 보다 구체적으로 하이퍼바 이저가 할당치를 변경할 때까지 RAG0 할당에 대응될 것이다. 도 2의 예에서, RAM(110)은 SPE-2, SPE-3, SPE-4 및 SPE-5를 1 또는 RAG1의 RAG 번호 1에 더 할당한다. RAM(110)은 SPE-6 및 SPE-7을 RAG 번호 2 또는 RAG2에 할당한다. RAM(110)은 SPE-8을 RAG 번호 3에 할당한다. I/O 제어기(170)는 RAG 번호 칼럼(210)에서 인접 I/O 제어기(170)로 도시한 바와 같이 각각이 특정한 RAG 번호, 즉, RAG0 내지 RAG3에 대응하는 4개의 가상의 I/O 채널(미도시)를 포함한다. 또한, RAM(110)은 I/O 장치로부터 주어진 가상 채널로 향하는 각각의 I/O 요청을 할당하여 그 I/O 요청을 해당 RAM로 요청한다.
일 예에서 프로세서 시스템(100)은 또한 메모리 뱅크(220)를 8개의 별도의 뱅크로 더 분할할 수도 있다. 메모리의 각각의 별도의 배으는 고유한 메모리 로드 또는 저장 동작을 나타낸다. 메모리 뱅크 액세스 또는 메모리 데이터 전송은 RAM(100)에 대한 토큰 요청과 이에 대응하는 RAM(100)의 토큰 승인을 필요로 한다. RAM(110)은 메모리 뱅크 로드 또는 저장 동작의 전송 대역폭을 관리한다. RAM(110)은 단일 대역폭 레이트와 각각의 메모리 뱅크 로드 또는 저장 요청을 연관시킨다. 메모리 제어기(160)는 프로세싱 시스템(100)에서 각각의 개별 메모리 뱅크 I/O 로드 및 저장 동작을 관리한다. RAM(100) 토큰 요청 및 토큰 승인 프로세스는 전체 버스 대역폭 가용성의 백분율이다. 또한, 대역폭 할당 레이트는 전체 버스 가용성, 즉 100%의 백분율이다. 도 2의 예에서, 대역폭 백분율은 메모리 뱅크(220)의 각 칼럼에 도시되어 있다. RAG0은 전체 메모리 버스 대역폭의 20%를 나타낸다. RAG1은 전체 메모리 버스 대역폭의 30%를 나타낸다. RAG2는 메모리 버스 대역폭의 15%를 나타낸다. 도 2에 도시하는 바와 같이, RAG3은 전체 메모리 버스 대역폭의 10%를 나타낸다. 마지막으로, I/O 제어기(170)의 4개의 가상의 채널에 대응되는 RAG0-RAG3은 메모리 버스 대역폭의 10%를 나타낸다. 메모리 버스의 전체 버스 대역폭은 100%이지만, 버스 대역폭 백분률에 대한 총 전체 RAG 할당은 100%와 반드시 동일하지는 않다. 보다 구체적으로, 전체 버스 이용이 항상 프로세서 시스템(100)의 정상 상태에서가 아니므로, 메모리 대역폭의 전체 백분율은 100%보다 작은 것으로 결합될 수 있다. 도 2의 예에서, 메모리 대역폭의 총 백분율인 즉, 85%는 칼럼(22)에 나타낸 백분율들 전체의 합을 나타낸다.
도 2의 I/O 인터페이스 칼럼(230)은 RAM(110)이 관리하는 제 2 내지 제 5 자원을 도시한다. 이들 링크 자원은 I/O 버스{IOIF0-IN(175), IOIFO-OUT(180), IOIF0-IN(185), IOIFO-OUT(190)}를 포함한다. 이들 4개의 I/O 인터페이스 버스들 각각은 RAM(110)에 대해 특정한 대역폭 배치 자원과 I/O 인터페이스 버스 배치 백분율 레이트를 나타낸다. 보다 구체적으로, 도 2가 도시하는 바와 같이, RAM(110)은 특정한 HU 특정 RAG 번호를 할당하고, 이 번호는 이어서 백분율로 나타내는 대역폭 배치 레이트를 5개의 관련된 자원 즉, 메모리 뱅크(220) 각각과 4개의 I/O(230) 각각에 할당한다. IOIF0-In(175)는 RAG0에 대하여 10% I/O 버스 대역폭 할당 레이트, RAG1에 대하여 20%, RAG2에 대하여 15%, RAG3에 대하여 15% 그리고 마지막으로 RAG3에 대하여 20%를 나타내며 도 2에 도시되어 있다. 메모리 버스의 경우와 같이, 총 버스 대역폭 배치 백분율들은 결합되어 100%의 총 I/O 인터페이스 버스 대역폭 할당을 형성한다. IOIF0-Out(180)은 칼럼(230)에서 RAG0에 대하여 15% I/O 인터페이스 버스 대역폭 할당 레이트를, RAG1에 대하여 10%, RAG2에 대하여 20%, RAG3에 대하여 25%를 그리고 마지막으로 RAG0 내지 RAG3에 대하여 15%를 나타낸다. IOIF1-In(185)은 RAG0에 대하여 15% I/O 인터페이스 버스 대역폭 할당 레이트, RAG1에 대하여 20%, RAG2에 대하여 10%, RAG3에 대하여 10% 그리고 마지막으로 RAG0 내지 RAGE3에 대하여 10%를 나타낸다. 도 2에 도시된 바와 같이 IOIF1-Out(190)은 RAG0에 대하여 10%의 I/O 인터페이스 버스 대역폭 할당 레이트, RAG1에 대하여 10%, RAG2DP EOGKDU 30%, RAG3에 대하여 15% 그리고 마지막으로 RAG0 내지 RAG3에 대하여 15%를 나타낸다. 몇몇 예에서 RAM(110)은 현재 할당된 할당된 대역폭 또는 토큰 승인이 없는 요청 HU로부터 메모리 또는 I/O 요청을 관리하기 위해 추가의 RAG 번호 할당을 이용할 수도 있다.
도 3은 자원 할당 식별자(RAID) 레지스터(355)를 포함하는 하드웨어 유닛(HU)(300)의 블록도를 도시한다. 프로세서 시스템(100)과 같은 멀티-코어 프로세서 시스템은 임의의 그리고 모든 그 하드웨어 유닛들처럼 HU(300)를 사용할 수도 있다. 보다 구체적으로, 프로세서 시스템(100)은 PPE(115), SPE-1 내지 SPE-8 그리고 I/O 제어기(170)처럼 HU(300)를 사용할 수도 있다. 그러나 이러한 HU(300) 구성을 갖는 프로세서 시스템(100)은 아래와 같이 버스 대역폭 할당 배정 문제가 있다.
하드웨어 유닛(HU : 300)은 명령어 처리기(305) 및 기타 하드웨어(306)를 포함한다. 명령어 처리기(305)는 아래에 설명하는 바와 같이 명령어 실행을 처리하는 멀티-스테이지 명령어 파이프라인을 포함한다. 기타 하드웨어(306)는 로컬 캐 시 메모리, ALU(arithmeic logic unit) 또는 특정 유형의 HU에 적합한 기타 하드웨어 등 하드웨어를 포함한다. 예를 들어, PPE 또는 SPE 유형의 HU는 ALU를 포함할 수 있으나, I/O 제어기 유형의 HU는 ALU를 포함하지 않을 수 있다.
각각의 특수하게 구성된 HU 예를 들어 프로세서 시스템(100)내의 HU(300)예는 프로세서 시스템내에서 실행되는 보다 큰 소프트웨어 애플리케이션 또는 프로그램 애플리케이션의 일부로서 일련의 프로그래밍 소프트웨어 명령어들을 개시할 수도 있다. 특정 하드웨어 유닛 HU(300)는 프로세서 시스템(100)내에서 실행하는 프로그램 애플리케이션으로부터 명령어 시퀀스를 수신한다. 프로그램 애플리케이션 출력은 명령어 큐(307)의 입력으로 들어간다. HU(300)는 HU(300) 내에서 명령어 처리기(305)의 명령어 큐(307)내의 명령어를 위치시킨다. 명령어 큐(307)는 HU(300)내에서 실행될 다음 명령어를 포함하는 명령어 레지스터(310)에 결합된다. HU(300)내에서 실행될 다음 명령어, 예를 들어 메모리 저장 또는 I/O 인터페이스 저장 명령어를 디코딩한다. 저장 명령어는 메모리 또는 인터페이스 I/O 요청을 필요로 한다. 이러한 저장 명령어 이후에 HU(300)가 시작하는 다음 명령어는 명령어 큐(307)로부터 명령어 레지스터(301)로의 이동한다.
명령어 저장 시퀀스 도중, HU(300)는 HU가 저장 명령어의 실행을 완료하면 HU가 데이터를 기록하는 위치인 유효 어드레스(EA)를 먼저 평가한다. 명령어 처리기(305)는 기록 명령어의 유효 어드레스(EA) 컴퓨팅을 용이하게 하는 오퍼랜드들을 포함하는 범용 레지스터의 세트(GPR : 315)를 포함한다. 범용 레지스터(GPR : 315)는 오퍼랜드 레지스터(320) 및 오퍼랜드 레지스터(325)에 결합된다. 명령어 레지스터(310), 오퍼랜드 레지스터(320) 및 오퍼랜드 레지스터(324) 모두는 EA 생성기(330)의 각각의 입력에 결합된다. EA 생성기(330)는 명령어 레지스터(310)내의 저장 명령어를 위한 유효 어드레스(EA)를 계산한다. EA 생성기(330)의 출력은 EA 레지스터(335)의 입력에 결합되고 거기에 저장 명령어의 유효 어드레스를 제공한다. EA 레지스터(335)의 출력은 실제 어드레스 변환기(ERAT : 340)에 유효 입력을 결합시킨다. ERAT(340)는 입력으로서 유효 어드레스 데이터를 EA 레지스터(335)로부터 수신한다.
메모리 또는 I/O 저장 요청 도중에, HU(300)는 실제 어드레스를 생성하기 위하여 소프트웨어 애플리케이션 연산 구조내에서의 유효 어드레스 변환을 이용한다. 실제 어드레스는 메모리 어드레스 위치와 직접적으로 연관된다. 보다 구체적으로, 실제 어드레스는 IHS의 시스템 메모리(미도시)에서와 같이 HU 외부의 메모리 위치에 대응된다. ERAT(340)는 연관 어레이내의 페이지 테이블 변환 데이터의 페이지 테이블 캐시를 이용하여 LUT(lookup table)의 기능을 할 수도 있다. 또한, ERAT(340)내의 각 엔트리는 페이지 테이블 엔트리(PTE)이다. ERAT(340)의 각 엔트리는 메모리 페이지에 대한 실제 어드레스(RA)에 대해 유효 어드레스(EA)를 매핑한다. 유효 어드레스(EA) 또는 가상의 어드레스는 ERAT(340) 페이지 테이블 캐시 또는 메모리 맵 어레이로의 입력을 나타낸다. ERAT(340) 데이터 테이블은 실제 어드레스(RA), 및 그 EA 입력과 연관시키는 WIMG 비트를 저장한다. HU(300)는 메모리 페이지에 의해 ERAT 캐시를 조직화한다. ERAT(340)의 메모리 페이지는 고정된 사이즈 또는 여러 다른 사이즈 중 하나를 띨 수 있다. 이들 메모리 페이지는 변환 중인 어드레스의 최상 비트 세트를 나타낸다. 일 예에서, ERAT(340)는 4Kbyte 유효 어드레스를 변환할 수도 있다. 이 특정 예에서 ERAT(340)는 변환에 유효 어드레스의 하위 12개의 비트를 이용하지 않는다. 보다 구체적으로, ERAT(340)는 유효 어드레스의 하위 12개의 비트를 페이지 오프셋으로서 변환한다. 4Kbyte 유효 어드레스의 하위 12개의 비트는 변환 후에 그대로 남는다. 따라서 페이지는 유효 및 실제 어드레스(RA)의 나머지 상위 어드레스 비트들을 나타낸다.
ERAT(340)는 메모리 어드레스 전달 속성으로서 WIMG 비트들을 저장한다. 보다 구체적으로, 도 3의 예에서, RERAT(340)는 WIMG 비트를 어드레스 저장 속성으로서 저장한다. WIMG 비트는 프로세서 시스템내의 소프트웨어 및 하드웨어가 메모리를 액세스하는 방식을 결정한다. WIMG 비트는 어드레스 요청에 대하여 라이트 백(wirte-bakc) 또는 라이트 스루(write-through) 상태에 해당되는 W 비트와, 저장 요청의 캐시 인에이블(cache-enabled) 또는 캐시 금지(cache-inhibited) 상태 중 하나를 의미하는 I 비트를 포함한다. M 비트는 저장 요청의 지역적 또는 전역적 액세스 권한을 나타낸다. G 비트는 어드레스 저장 요청의 보호 또는 비보호 상태에 대응한다. ERAT(340)의 출력은 RA, WIMG, 레지스터(345)의 입력에 결합된다. ERAT(340)는 출력으로서 저장 속성 WIMG 비트 세트와 물리적 또는 실제 어드레스 RA를 생성한다. RA, WIMG 레지스터(345)는 실제 어드레스 변환 모듈 ERAT(340)에 유효한 출력을 입력으로서 수신한다. RA, WIMG 레지스터(345)는 선입선출(FIFO) 파이프라인 저장 큐(350)에서 제 1 입력에 결합된다. 저장 큐(350)는 RA, WIMG 레지스터(345)로부터 명령어 시퀀스를 수신한다. 또한, HU(300)는 이들 명령어 시퀀스를 수집하여 FIFO 파이프라인 저장 큐(350)에 저장한다. 명령어 파이프라인 저장 큐(350)는 RA, WIMG 레지스터(345)로부터 후속 명령어들을 유지한다. 저장 큐(350)를 채움으로써, HU(300)가 현재의 명령어를 실행하는 동안 신규의 어드레스가 ERAT(340)를 통해 변환을 할 수 있게 한다. 현재의 명령어는 파이프라인(FIFO) 저장 큐(350)의 최하 위치에 있다. HU(300)는 전체 또는 부분적으로 가득찬 저장 큐(350)의 현재 명령어를 실행하고 현재 명령어를 위한 메모리 또는 I/O 버스 액세스를 대기한다.
HU(300)는 도 3에 도시하는 바와 같이 하이퍼바이저 소프트웨어 레이어(352)를 포함한다. 또한, HU(300)내에서 실행 중인 하이퍼바이저(352)는 RAID 레지스터(355)를, RAG 식별자를 나타내는 2개의 비트 2진 코드로 채운다. RAD 레지스터(344)의 출력은 토큰 요청자(360)의 입력에 결합된다. 토큰 요청자(360)는 HU(300)가 메모리 또는 I/O 버스 동작을 필요로 하면 자원 할당 관리자 RAM(110)으로부터 토큰을 요청한다. RAID 레지스터(355)는 4개의 RAG, 즉, RAG0, RAG1, RAG2 또는 RAG3 중 하나를 식별하는 2개의 2진 데이터 비트를 포함한다. 보다 구체적으로, RAG0 내지 RAG3은 RAM(110) 내의 각각의 대역폭 할당 레이트에 직접 대응된다. HU(300)는 저장 큐(350)의 최하위 엔트리를 판독하고 RAID 레지스터(355)내의 RAID 비트 값을 토큰 요청자(360)로 전송함으로써 I/O 요청을 개시한다. 그 후, 토큰 요청자(360)는 RAM(110)에 결합되는 출력 신호 토큰 요청 라인(365) 상에 출력 신호 토큰 요청을 한다. 이러한 방식으로, 토큰 요청자(360)는 자원 할당 관리자 RAM(110)으로 메모리 버스 액세스에 대한 요청을 전송한다. 출력 신호 토큰 요청은 RAID 레지스터(355)로부터 2개의 HU(300) RAID 비트를 포함한다. RAID 레지스터(355)로부터의 2개의 RAID 비트는 HU(300)에 대한 RAG 식별자 RAG0 내지 RAG3을 가각 나타낸다. RAM(110)은 토큰 요청을 수신하고 HU(300)가 필요로 하는 대역폭 할당 레이트를 평가한다. RAM(110)는 현재의 대역폭 사용량에 대하여 HU(300)의 RAID 식별자를 평가하고, 토큰 요청자(360)에게 토큰 승인을 전달하는 토큰 승인 라인(370)상에 토큰 승인 신호를 생성함으로써 토큰 승인을 한다.
보다 구체적으로, RAM(110)은 RAM(110) 내에서 적절한 타이밍 및 대역폭 분석이 완료되면 입력(370) 라인 상에 토큰 승인 신호를 생성한다. 저장 큐(350)의 출력은 스위치(375)의 일 입력에 결합된다. 스위치(375)는 토큰의 승인 이후에 자원 요청이 진행될 수 있게 하는 하드웨어를 나타낸다. 저장 큐(350)의 출력이 메모리 저장 명령어이면, 저장 요청은 메모리 버스(165)의 이용을 요구한다. 저장 큐(350)의 출력이 I/O 저장 명령어이면, 저장 요청은 I/O 버스(175 내지 190)의 이용을 요구한다. HU(300)는 저장 큐(350)의 출력을 평가하여 저장 요청이 요구하는 버스, 즉 메모리 버스(165) 또는 I/O 버스(175 내지 190) 중 어느 것을 결정한다. 스위치(375)는 도 1의 프로세서 시스템(100)의 메모리 제어기(160)/시스템 메모리(165) 또는 I/O 제어기(170) I/O 버스(175 내지 190)에 저장 큐(350)이 출력을 효과적으로 연결 및 연결해제한다. 이러한 스위칭은 HU(300)의 스위치(375)에 결합되는 토큰 요청기(360)에 의해 제어된다. 토큰 요청자(360)가 RAM(110)으로부터 토큰 승인 라인(370) 상에 토큰 승인 신호를 수신하면, HU(300)는 스위치(375)를 효과적으로 폐쇄하고 저장 동작의 마지막 스테이지를 개시한다. 또한, HU(300)는 저장 큐(350)의 최하위 엔트리가 스위치(375)를 통해 전달되어 메모리 버스(165) 또는 I/O 버스(175 내지 190)를 액세스할 수 있게 하고, 따라서 저장 동작의 유형에 따라 메모리 또는 I/O 버스상에 실제 어드레스 및 WIMG 비트를 배치한다. 저장 데이터 및 데이터 사이즈는 실제 어드레스 및 WIMG 비트 데이터를 수반한다.
상술한 방법은 도 1의 프로세서 시스템(100) 내의 저장 동작을 묘사한다. 이와 다르게 프로세서 시스템(100)은 기록 데이터를 생성하지 않고 기록 데이터를 요청하는 로드 동작을 처리할 수도 있다. 보다 구체적으로 로드 동작 도중, 프로세서 시스템(100)은 I/O 인터페이스 버스(170 내지 190)상에 또는 메모리 버스(165)를 통하여 시스템 메모리내로 데이터를 기록하지 않는다. 로드 동작은 2개의 단계(phase)를 포함한다. 제 1 단계에서, HU는 로드 요청을 개시하고 메모리 버스(165) 또는 I/O 인터페이스 버스(170 내지 190) 상에 실제 어드레스를 궁극적으로 배치한다. 제 2 단계에서, 프로세서 시스템이 로드 데이터를 검색한 이후에, 프로세서 시스템은 그 로드 데이터를 요청 중인 HU로 제출하고 로드 동작이 완료된다. 실제 어드레스, WIMG 비트 및 RAID 비트는 그들이 저장 동작시 하는 것처럼 로드 동작에서 동일한 역할을 수행한다. 그러나, 간략하게 하기 위해, 아래에선 저장 동작을 중심으로 설명한다.
도 1 및 도 2를 참조하면, RAM(100)은 프로세서 시스템(100)의 각 HU를 RAM(110)의 제어 레지스터(195)내의 특정 RAG 번호에 할당한다. 또한, RAG 번호 할당은 프로세서 시스템의 각 하드웨어 유닛 HU마다 특정 대역폭 할당 레이트를 상이하게 하는 데에 융통성을 제공한다. 그러나, 각 HU내의 프로그램 애플리케이션 또는 특정 명령어들간에 대역폭 할당 레이트를 상이하게 하는 것은 추가의 동작을 요구한다.
도 1 및 도 2를 참조하면, RAM(110)내의 제어 레지스터(195)내의 데이터를 변경하는 것은 각 명령어를 기초로 하여 버스 대역폭 할당 레이트 할당을 변경하는 방법을 제공한다. 보다 구체적으로, 하이퍼바이저(352)는 새로운 버스 대역폭 값으로 RAM(110)내에서 자원 제어 레지스터(195)를 다시 프로그램함으로써 대역폭 할당 레이트를 변경할 수도 있다. 일단 자원 제어 레지스터(195)로의 저장 동작이 완료되면, 저장을 요청한 특정 HU는 새로운 버스 대역폭 할당 레이트가 적용되는 새로운 RAG 번호 할당으로 전체 새로운 버스 동작을 개시한다. 프로세서 시스템(100)의 시스템 소프트웨어는 명령어를 실행시키고, 명령어는 새로운 대역폭 할당 레이트를 나타내는 RAG 또는 RAG들과 연관시킨다. 궁극적으로, 이러한 방법은 다수의 버스 싸이클을 가질 수 있으며, 프로세서 시스템(100)을 비효율적으로 처리하는 결과를 초래한다.
RAID 레지스터(355)에서 RAID 비트 할당을 다시 프로그램하는 것은 각 명령어를 기초로 하여 대역폭 할당 레이트 할당을 변경하는 또 다른 방법을 제공한다. 도 3의 RAID 레지스터(355)에 대한 변경은 특정 HU 내부에 이루어져 저장 동작 외적인 긴 싸이클 시간을 필요로 하지 않게 된다. 궁극적으로, RAM(110)은 RAM(110)의 제어 레지스터 내에 이미 존재하는 RAM 번호 및 대역폭 할당 레이트 할당으로 새로운 RAID 레지스터(355) 할당을 제한한다. 시스템 프로그래머 또는 프로세서 시스템 컴파일러는 RAID 재할당을 인지하고 적절한 명령어 시퀀스를 생성하여 특정 HU 내에서 충돌없이 변경이 이루어질 수 있게 한다. 또한, HU(300)는 마지막 RAID 변경 이전에 저당 명령어 모두의 명령어 큐(307)를 먼저 플러시하는 저장 명령과, 새로운 대역폭 할당 레이트를 요청하는 다음 저장 동작을 위해 그 큐를 유지하는 저장 명령의 임의의 2개의 인접 저장 명령어들 사이에 SYNC 스테이트먼트를 삽입해야 한다. 보다 구체적으로, 큐는 유지 상태로 가야하고, 새로운 대역폭 할당 레이트를 요구하는 저장 동작에 앞서 모든 명령어들을 비워야 한다. 다음으로, 하이퍼바이저(352)는 RAID 레지스터(355)에 새로운 자원 할당 식별자 로드를 한다. 일단 HU(300)가 SYNC 커맨드로 큐를 플러시하면, 선행 저장 동작들은 다음 동작을 위해 버스를 자유롭게 하기 이전에 그 버스 싸이클들을 완료해야 한다. 그 후, 특정 HU는 새로운 RAID 비트 할당으로부터 이익을 얻는 저장 명령을 실행한다. 불행히도 전술한 방식으로 SYNC 커맨드를 내리는 것은 프로세서 시스템 성능에 상당히 부정적인 영향을 미칠 수도 있는데, 그 이유는 SYNC 스테이트먼트가 다수의 명령어 큐 파이프라인 지연을 야기하기 때문이다. 이러한 이유로 도 3의 HU(300)의 HU 구성은 바람직하지 않을 수 있다.
도 4는 특정 HU내에서 각 명령어를 기초로 하여 또는 각 액세스 요청을 기초로 하여 서로 다른 대역폭 할당 레이트를 허용하는 상술한 방법을 실시하는 하드웨어 유닛(HU : 400)예의 블록도를 도시한다. 상술한 방법 및 장치의 일 실시예에서, 각 명령어는 바람직하지 않은 긴 잠복 SYNC 명령어 또는 RAM(110) RAID 레지스터 데이터를 변경하는 추가의 저장 명령어를 도입하지 않으며 특정 I/O 버스 대역폭 할당 레이트에 대응할 수 있다.
도 5는 반도체 다이(505)를 포함하는 프로세서 시스템(500)의 블록도이다. 프로세서 시스템(500)은 그 하드웨어 유닛에 대한 HU(400)와 같은 각각의 하드웨어 유닛을 채용한다. 보다 구체적으로, 프로세서 시스템(500)은 SPE(511) 내지 SPE-(518), PPE(519) 그리고 제어기(520)과 같은 HU(400)를 이용할 수 있다. 프로세서 시스템(500)은 이러한 멀티-코어 프로세서 시스템을 형성하는 다수의 코어를 구성하도록 상기 CBE(cell broadband engine)의 구조를 채용할 수도 있다. 프로세서 시스템(500)은 메모리 버스(530)에 결합되는 메모리 제어기(525)를 포함한다. 메모리 버스(530)는 시스템 메모리(미도시)에 결합된다. I/O 인터페이스(IOIF) 제어기(520)라고도 하는 프로세서 시스템(500)의 I/O 제어기(520)는 I/O 버스(535)에 결합된다. I/O 버스(535)는 도 5에 도시하는 바와 같이 IOIF0-IN 버스(540), IOIF0-OUT 버스(545), IOIF1-IN 버스(550) 및 IOIF1-OUT 버스(555)를 포함한다.
프로세서 시스템(500)은 메모리 버스(530) 및 I/O 버스(535)에 대한 액세스 요청을 처리하는 자원 할당 관리자(RAM : 560)를 포함한다. RAM(560)은 요청자에 대한 자원 할당을 제어하는 자원 제어 레지스터(565)를 포함한다. 일 실시예에서, 도 5의 RAM(560)은 도 1의 RAM(110)과 동일한 구성 및 기능을 나타낼 수 있다.
도 4를 참조하면, 하드웨어 유닛(HU : 400)은 명령어 처리기(405) 및 기타 하드웨어(406)를 포함한다. 명령어 처리기(405)는 후술하는 바와 같이 명령어 실행을 처리하는 멀티-스테이지 명령어 파이프라인을 포함한다. 하드웨어(406)는 로컬 캐시 메모리, ALU(arithmetic logic unit) 또는 특정한 유형의 HU에 적절한 기타 하드웨어 등의 하드웨어를 포함할 수 있다. 예를 들어, PPE 또는 SPE 유형의 하드웨어 유닛은 ALU를 포함할 수 있고, I/O 제어기 HU는 ALU를 포함하지 않을 수 있다.
프로세서 시스템(500)내의 HU(400)예와 같이 각각의 특정적으로 구성되는 HU는 프로세서 시스템내에서 실행되는 보다 큰 소프트웨어 애플리케이션 또는 프로그램 애플리케이션의 일부로서 일련의 소프트웨어 프로그램 명령어를 개시할 수 있다. 특정한 하드웨어 유닛 HU(400)은 프로세서 시스템(500)내에서 실행 중인 프로그램 애플리케이션으로부터 명령어 시퀀스를 수신한다. 프로그램 애플리케이션 출력은 명령어 큐(407)의 입력으로 들어간다. HU(400)는 명령어 처리기(405)의 명령어 큐(407)에 명령어를 배치한다. 명령어 큐(407)는 HU(400)내에서 실행될 다음 명령어를 포함하는 명령어 레지스터(410)에 결합된다. HU(400)는 디코더(미도시)를 채용하여 HU내에서 실행될 다음 명령어, 예를 들어, 시스템 메모리 요청 또는 I/O 인터페이스 요청을 요구하는 저장 명령어를 디코딩한다. 이러한 저장 명령어 이후에, HU(400)가 개시하는 다음 명령어는 명령어 큐(407)로부터 명령어 레지스터(410)로 이동된다. 명령어 저장 시퀀스 도중, HU(400)는 HU가 저장 명령어의 실행을 완료하면 HU가 데이터를 기록할 유효 어드레스를 먼저 평가한다.
명령어 처리기(405)는 기록 명령어의 유효 어드레스(EA)의 디코딩을 용이하게 하기 위한 오퍼랜드를 포함하는 범용 레지스터(GPR : 415)의 세트를 포함한다. 범용 레지스터(415)는 제 1 오퍼랜드 레지스터(420) 및 제 2 오퍼랜드 레지스터(425)에 결합된다. 명령어 레지스터(410), 제 1 오퍼랜드 레지스터(420) 및 제 2 오퍼랜드 레지스터(425) 모두는 EA 생성기(430)의 각각의 입력에 모두 결합된다. EA 생성기(430)는 명령어 레지스터(410)내 저장 명령어에 대한 유효 어드레스(EA)를 계산한다. EA 레지스터(435)는 EA 생성기(430)의 출력에 결합되고, EA 생성기(430)로부터 유효 어드레스의 계산을 입력으로서 수신한다. EA 레지스터(435)의 출력은 실제 어드레스 변환기(ERAT : 440)의 유효 입력에 결합된다. 명령어 처리기(405)의 엘리먼트들은 스테이지들간에 또는 엘리먼트들간에 정보가 전달되는 파이프라인 구조를 형성한다. 예를 들어, 명령어 큐(407), ERAT(440), 레지스터(445) 및 FIFO 저장 큐(700)는 이러한 파이프라인의 스테이지의 일부 예이다.
도 6은 페이지 번호 엔트리의 ERAT(440) 예를 도시한다. 통상적인 ERAT는 32개의 엔트리를 포함할 수 있으나, 보다 많은 혹은 보다 적은 EART도 가능하다. 또한, ERAT(440)내의 각 엔트리는 PTE(페이지 테이블 엔트리)이다. ERAT(440)는 캐시 변환 데이터의 다수의 엔트리를 포함하고 기록 명령어 또는 저장 명령어의 유효 어드레스(EA) 또는 유효 페이지 번호(EPN)을 입력으로서 이용한다. 도 6에 도시하는 바와 같이, 캐시 변환 데이터의 다수의 엔트리 중 상위 3개가 상세히 도시되어 있다. ERAT(440) 룩업 테이블(LUT)은 실제 어드레스(RA) 또는 실제 페이지 번호(RPN) 데이터에 대한 유효 어드레스(EA)를 포함한다. ERAT 테이블의 각 행은 유효 페이지 번호(EPN)을 실제 페이지 번호(RPN)으로 매핑시킨다. ERAT(440)는 또한 WIMG 비트, 그리고 RA 데이터와 연관시키는 RAID 비트를 포함한다. 보다 구체적으로, RAID 비트는 ERAT(440)의 페이지 테이블 엔트리(PTE)의 속성이다. ERAT(440)는 다른 속성(미도시)을 포함할 수도 있다. ERAT(440)는 페이지 오프셋 또는 EA 입력의 하위 비트를 변환할 필요는 없다. 또한, ERAT(440)는 EA 및 RA 페이지 테이블 데이터의 하위 비트를 저장할 필요가 없다. 이러한 예에서, ERAT(440)의 상위 엔트리에서 HU(400)는 ERAT(440)에 대한 입력으로서 유효 어드레스(EA3)를 이용한다. ERAT(440)는 실제 어드레스(RA3) 데이터를 출력한다. 0101로 나타낸 WIMG 비트는 각각 W, I, M, G 비트를 나타낸다. 실제 어드레스 RA3에 대한 라이트-백 또는 라이트 스루 상태에 해당되는 W 비트는 0이고, 따라서 라이트-백을 지정한다. RA3에 대한 캐시 인에비블 또는 캐시 금지에 해당되는 I 비트는 1이고, 따라서 캐시 금지를 지정한다. 실제 데이터(RA3)에 대한 지역적 액세스 또는 전역적 액세스에 해당되는 M 비트는 0이고, 따라서 지역적 액세스를 지정한다. 실제 어드레스(RA3)에 대한 비보호 또는 보호 상태에 해당되는 G 비트는 1이고, 따라서 보호된 상태를 지정한다. 00(즉, 0)의 RAID 할당은 ERAT(440)에 대한 RA3 데이터 및 EA3 입력과 연관된다.
변환 데이터의 ERAT(440) 캐시의 다음 엔트리는 EA2의 유효 어드레스로서 도시되어 있다. HU(400)는 ERAT(440)에 대한 입력으로서 유효 어드레스(EA2)를 이용한다. ERAT(440)는 실제 어드레스(RA2) 데이터를 출력한다. 0101로서 나타낸 WIMG 비트는 각각 W, I, M, G 비트를 나타낸다. 실제 어드레스 RA2에 대한 라이트-백 또는 라이트 스루 상태에 해당되는 W 비트는 0이고, 따라서 라이트-백을 지정한다. RA2에 대한 캐시 인에비블 또는 캐시 금지에 해당되는 I 비트는 1이고, 따라서 캐시 금지를 지정한다. 실제 데이터(RA2)에 대한 지역적 액세스 또는 전역적 액세스에 해당되는 M 비트는 0이고, 따라서 지역적 액세스를 지정한다. 실제 어드레스(RA2)에 대한 비보호 또는 보호 상태에 해당되는 G 비트는 1이고, 따라서 보호된 상태를 지정한다. 11(즉, 3)의 RAID 할당은 ERAT(440)에 대한 RA2 데이터 및 EA2 입력과 연관된다.
변환 데이터의 ERAT(440) 캐시의 다음 엔트리는 EA1의 유효 어드레스로서 도시되어 있다. HU(400)는 ERAT(440)에 대한 입력으로서 유효 어드레스(EA1)를 이용한다. ERAT(440)는 실제 어드레스(RA1) 데이터를 출력한다. 0101로서 나타낸 WIMG 비트는 각각 W, I, M, G 비트를 나타낸다. 실제 어드레스 RA1에 대한 라이트-백 또는 라이트-스루 상태에 해당되는 W 비트는 0이고, 따라서 라이트-백을 지정한다. RA1에 대한 캐시 인에비블 또는 캐시 금지에 해당되는 I 비트는 1이고, 따라서 캐시 금지를 지정한다. 실제 데이터(RA1)에 대한 지역적 액세스 또는 전역적 액세스에 해당되는 M 비트는 0이고, 따라서 지역적 액세스를 지정한다. 실제 어드레스(RA1)에 대한 비보호 또는 보호 상태에 해당되는 G 비트는 1이고, 따라서 보호된 상태를 지정한다. 01(즉, 1)의 RAID 할당은 ERAT(440)에 대한 RA1 데이터 및 EA1 입력과 연관된다. 도 6에서 다수의 엔트리(미도시)는 실제 어드레스 트랜지스터(EA)(440)에 대한 변환 데이터의 전체 캐시를 나타낸다.
ERAT(400)는 입력으로서 EA 레지스터(435)로부터 유효 어드레스 데이터를 수신한다. 저장 요청 중에, HU(400)는 소프트웨어 애플리케이션내 유효 어드레스 변환 연산 구조를 채용하여 실제 어드레스를 생성한다. 실제 어드레스는 메모리 어드레스 위치에 직접적으로 관련된다. 보다 구체적으로, 실제 어드레스는 IHS의 시스템 메모리와 같이 HU 외부의 물리적 메모리 위치에 대응된다. ERAT(440)는 통상 도 6에 도시하는 바와 같이 연관 어레이의 변환 데이터의 페이지 테이블 캐시를 이용하는 룩업 테이블(LUT)로서 동작한다. 유효 어드레스(EA) 또는 가상의 어드레스는 ERAT(440) 페이지 테이블 캐시 어레이에 대한 입력을 나타낸다. ERAT(440) 페이지 테이블은 실제 어드레스(RA), 기록될 데이터의 사이즈, 기록될 데이터, WIMG 비트 및 EA 입력과 연관시키는 RAID(자원 할당 식별자) 비트를 유지한다. RAG 식별자를 나타내는 2개의 RAID 비트는 ERAT(440)내에 존재한다. RAID 비트가 ERAT(440)내에 있기 때문에, HU(400)는 도 3의 HU(300)가 그러한 것처럼 RAID 레지스터를 요구하지 않는다. 또한, 이 특정 실시예에서, HU(400)는 하이퍼바이저(442), 즉 ERAT(440)내의 페이지로 2개의 RAID 비트를 할당하여 ERAT(440)가 수행하는 어드레스 처리 도중에 각 명령어에 대하여 고유 RAID를 제공하는 소프트웨어 또는 펌웨어 계층을 HU(400)내에 포함한다. 하이퍼바이저(442)는 프로세서 시스템(100)의 다른 시스템 소프트웨어보다 판독 액세스 및 변경 권리와 같은 보다 높은 프로세서 시스템 특권을 나타내는 특권 시스템 소프트웨어 계층을 나타낸다. 하이퍼바이저(442)는 HU 상에서 실행할 수도 있는 명령어를 포함한다. 하이퍼바이저 명령어는 RAID 레지스터, RAM(110) 및 ERAT(330)가 캐시하는 어드레스 변환 테이블과 같은 시스템 제어 설비에 대한 액세스를 갖는다. 운영 체제 또는 수퍼바이저 코드 및 애플리케이션 프로그램은 통상적으로 이러한 액세스 특권을 가지지 않는다. 프로세서 시스템(100)의 하이퍼바이저(442)는 SPE, 즉 SPE-1 내지 SPE-8상에서 직접적으로 실행하지 않는다. 그러나, 하이버파이저(442)는 PEE(115) 상에서 직접 실행하고, 메카니즘(미도시)을 이용하여 SPE내에서 시스템 제어 설비를 변경할 수 있는 기능을 나타낸다. 일 실시예에서, 하이퍼바이저(442)는 ERAT가 캐시로서 작용하는 어드레스 변환 테이블을 유지한다. RAID 정보는 하이퍼바이저가 유지하는 어드레스 변환 테이블과 연관된다. RAID 정보는 ERAT(440)내의 페이지 테이블 엔트리(PTE)의 속성이다. I/O 인터페이스 동작 및 메모리 동작은 양 I/O 인터페이스 동작 및 메모리 동작이 고유한 자원 할당 식별자 RAID를 이용 가능하게 갖도록 실행 도중 ERAT(440)를 통해서 동작한다. 하이퍼바이저(442)는 고유 RAID 비트 할당을 변환 데이터의 ERAT(440) 캐시의 각 엔트리에 할당한다. 또한, 하이퍼바이저(442)는 고유 RAID 비트 할당을 할당하여 각 엔트리 따라서 ERAT(440) 캐시내 명령어에 대하여 서로 다른 대역폭 할당 레이트를 채용한다. 프로세서 시스템(500)의 HU내에서 실행하는 애플리케이션 소프트웨어는 특정 버스 대역폭 할당 레이트에 대한 요구를 인터프리트할 수 있고, 또한 각 명령어를 기초로 하여 ERAT(440)내의 RAID 비트 할당을 하이퍼바이저(4420가 변경하게 지시할 수도 있다. ERAT(440)의 페이지 테이블 캐시내의각 엔트리는 페이지 테이블 엔트리(PTE)에 대응한다. ERAT(440)는 변환 중인 어드레스 또는 유효 어드레스(EA)에 대하여 최상위 비트 세트를 나타낸다. 상술한 장치 및 방법의 일 실시예에서, ERAT(440)는 4Kbyte 유효 어드레스(EA)를 실제 어드레스(RA)로 변환한다. 이러한 변환 프로세스에서, ERAT(440)는 변환되는 유효 어드레스(EA)의 하위 12개의 비트를 무시한다. 보다 구체적으로, ERAT(440)는 유효 어드레스(EA)의 하위 12개의 비트를 페이지 오프셋으로서 변환하며, 여기서 4Kbyte 유효 어드레스(EA)의 하위 12개 비트는 변환 후에 그대로 남는다. 변환 중인 EA의 페이지 또는 상위 비트는 유효 어드레스(EA)의 나머지 상위 어드레스 비트를 실제 어드레스(RA) 변환으로 나타낸다.
ERAT(440)는 메모리 어드레스 변환 속성으로서 WIMG를 저장한다. 보다 구체적으로, 도 4의 실시예에서, ERAT(440)는 어드레스 저장 속성으로서 WIMG를 저장한다. WIMG 비트는 프로세서 시스템내의 소프트웨어 및 하드웨어가 시스템 메모리를 액세스하는 방식을 결정한다. WIMG 비트는 어드레스 요청에 대해 라이트-백 또는 라이트-스루 상태에 대응하는 W 비트를 포함한다. I 비트는 저장 요청의 캐시-인에이블 또는 캐시-금지 상태 중 하나를 나타낸다. M 비트는 저장 요청의 지역적 또는 전역적 액세스 권리를 나타낸다. ERAT(440)의 추리력은 RA, WIMG, RAID 레지스터(445)의 입력에 결합된다. ERAT(440)는 그 출력에서 물리적 또는 실제 어드레스(RA), 저장 속성 세트 WIMG 비트 및 RAID 비트를 생성한다. RA, WIMG, RAID 레지스터(445)는 실제 어드레스 변환기 ERAT(440)에 유효한 출력을 입력으로서 수신한다. RA, WIMG, RAID 레지스터(445)는 HU(400)가 실행하는 RA, WIMG 및 대응 RAID 비트에 대하여 임시 저장소를 제공한다. RA, WIMG, RAID 레지스터(445)의 출력은 도 7의 FIFO 저장 큐(700)내의 파이프라인의 입력에 결합된다. FIFO 저장 큐(700)는 RA, WIMG, RAID 레지스터(445)로부터 명령어 시퀀스를 수신한다. HU(400)는 파이프라인(FIFO) 저장 큐(700)내에 이들 명령어 시퀀스를 수집 및 저장한다. 또한, 파이프라인 명령어(FIFO) 저장 큐(700)는 RA, WIMG, RAID 레지스터(445)로부터 후속 명령어를 유지한다. FIFO 큐(700)를 채우는 것은, HU(400)가 현재 명령어에 대한 메모리 버스 액세스를 대기하는 동안 새로운 어드레스가 ERAT(400)를 통해서 변환될 수 있게 한다. 현재 명령어는 FIFO 저장 큐(700)의 하위 위치에 있다. HU(400)는 전체 또는 부분적으로 전체 FIFO 저장 큐(700)의 현재 명령어를 실행하고 현재 명령어에 대한 메모리 또는 I/O 버스 액세스를 대기한다.
FIFO 저장 큐(700)내의 RAID 비트는 4개의 RAG, 즉, RAG0, RAG1, RAG2 또는 RAG3 중 하나를 식별하는 2개의 2진 데이터 비트이다. 보다 구체적으로, RAG0 내지 RAG3은 RAM(110)내 대역폭 할당 레이트에 직접 대응된다. FIFO 저장 큐(700)의 출력은 토큰 요청자(460)의 입력에 결합되어 거기에 RAID 비트 데이터를 제공한다. HU(400)는 FIFO 저장 큐(700)의 최하위 엔트리를 판독하고 FIFO 저장 큐(700)내의 RAID 비트를 토큰 요청자(460)에게 전송함으로써 메모리 버스 액세스 또는 I/O 버스 액세스에 대한 요청을 개시한다. 그 후, 토큰 요청자(460)는 토큰 요청 라인(465) 상에 토큰 요청을 생성한다. 이러한 토큰 요청은 메모리 버스 액세스 또는 I/O 버스 액세스에 대한 요청으로서 토큰 요청 라인(465) 상에서 자원 할당 관리자(RAM : 560)로 이동한다. 라인(465)상의 토큰 요청은 RA, WIMG, RAID 레지스터(445)로부터 HU(400) RAID 비트를 포함한다. RAM(560)는 토큰 요청을 수신하고 대응 HU(400)에 대해 대역폭 할당 레이트를 평가한다. RAM(560)은 현재의 대역폭 사용량에 대하여 HU(400)의 RAID 식별자 비트를 평가하고 토큰 요청자(460)에게 다시 토큰 승인을 전달하는 토큰 승인 라인(470)상에 토큰 승인 신호를 생성하여 토큰 승인을 한다. RAM(560)은 RAM(560)내의 적절한 타이밍 및 대역폭 분석이 완료되면 토큰 승인을 한다.
FIFO 저장 큐(700)의 출력은 스위치(475)의 일 입력에 결합된다. FIFO 저장 큐(700)의 출력이 메모리 저장 명령, 즉, 저장 데이터에 대한 메모리 액세스 요청을 발행하면, 저장 요청은 메모리 버스(530)의 사용을 요구한다. FIFO 저장 큐(700)의 출력이 I/O 저장 명령을 발행하면, 저장 요청은 I/O 버스(535)의 사용을 요구한다. HU(400)는 저장 요청이 요구하는 버스, 즉 메모리 버스(530) 또는 I/O 버스(535) 중 어느 버스를 결정하기 위하여 FIFO 저장 큐(700)의 출력을 평가한다. 스위치(475)는 FIFO 저장 큐(700)의 출력을 도 5의 프로세서 시스템(500)의 메모리 제어기(525)/시스템 메모리 버스(530) 또는 I/O 제어기(520)/I/O 버스(535)로 효과적으로 연결 및 연결 해제한다. 이러한 스위칭은 HU(400)의 스위치(475)에 결합되는 토큰 요청자(460)에 의해 제어된다. 토큰 요청자(460)가 RAM(560)으로부터의토큰 승인 라인(470) 상에서 토큰 승인 신호를 수신하면, HU(400)는 스위치(475)를 폐쇄하고 저장 동작의 마지막 스테이지를 시작한다. 또한, HU(400)는 FIFO 저장 큐(700)의 최하위 엔트리가 스위치(475)를 통해 액세스 메모리 버스(530) 또는 I/O 버스(535)로 전달되고, 따라서 실제 어드레스 및 WIMG 비트가 메모리 또는 I/O 버스 상에 배치될 수 있게 한다. 저장 데이터 및 데이터 사이즈는 실제 어드레스 및 WIMG 비트 데이터를 수반한다.
상술한 방법은 저장 동작의 예를 설명하는데, 여기서 도 5의 프로세서 시스템(500)은 도 4의 특정적으로 구성된 하드웨어 유닛(HU : 400)을 채용한다. 이러한 예가 저장 동작을 수반하는 것과 동시에, 프로세서(500)내의 HU는 개시한 방법을 이용하여 로드 동작을 또한 실행할 수 있다. 로드 동작은 기록 데이터를 생성하지 않으나 판독 데이터는 요청한다. 로드 동작 도중, 프로세서 시스템(500)은 I/O 인터페이스 버스(535) 상으로 또는 메모리 버스(530)를 통해 시스템 메모리내로 데이터를 기록하지 않는다. 로드 동작은 2개의 단계(phase)를 포함한다. 로드 동작의 제 1 단계에서, HU(400)는 ERAT(400)가 실제 어드레스를 변환한 이후에 로드 요청을 개시하고, 결과적으로 메모리 버스(530) 상에 실제 어드레스를 배치한다. 로드 동작의 제 2 단계에서, 프로세서 시스템(500)은 특정 타겟 어드레스에서 메모리 데이터를 검색하고 그 메모리 데이터를 메모리 버스(530) 상에서 HU에게 제공한다. 그 다음 로드 동작은 완료된다. HU(400)에 의한 저장 동작과 HU(400)에 의한 로드 동작을 비교해보면, 실제 어드레스, WIMG 비트 및 RAID 비트 모두는 이들 각각의 동작에서 본질적으로 동일한 역할을 한다. 따라서, HU(400)에 의한 저장 동작의 실행에 대한 위의 설명은 HU(400)가 실행하는 로드 동작에도 적용된다.
프로세서 시스템(500)의 HU(400)예에서의 명령어 레벨 대역폭 할당은 각각이 서로 다른 제각각의 I/O 버스 사용 레이트 및/또는 메모리 버스 액세스 레이트를 요구하는 다수의 애플리케이션들을 관리하는 기능을 제공한다. 개시한 방법은 동일한 HU상에서 동작하는 다수의 운영체제 각각이 I/O 버스 사용 및 메모리 버스 사용을 위하여 운영 체제마다 특정한 서로 다른 대역폭 할당 레이트를 요구할 때 특히 유리하다.
도 7은 도 4의 HU(400)에서 사용되는 FIFO 저장 큐(700)예의 구성을 도시한다. 보다 구체적으로, 도 7은 ERAT(440)가 이들 명령어를 변환한 이후에 RA, WIMG RAID 레지스터(445)에 일시적으로 있었던 최하위 3개의 저장 명령어들을 나타낸다. ERAT(440)는 이들 저장 명령어를 변환하고, 그 다음 변환된 명령어들을 레지스터(445)를 통해서 FIFO 저장 큐(700)의 제각각의 저장 위치에 배치한다. 도 7은 각 명령어마다 실제 어드레스 RA, WIMG 비트, 명령어 데이터 사이즈, 저장 데이터 및 RAID 비트로서 FIFO 저장 큐(700)의 엘리멘트들을 도시한다. 저장 명령어, 즉, 저장-1 명령어는 FIFO 저장 큐(7800)를 떠나 HU에 의한 실행이 완료되는 다음 명령어를 나타낸다. RA1은 64개의 비트 어드레스를 나타낼 수 있는데, 여기서 하위 12개의 비트는 ERAT(440)에 대한 유효 어드레스 입력과 동일하다. 일 실시예에서, FIFO 저장 큐(700)는 이들 하위 12개의 비트를 저장하지 않을 수 있다. EA 및 RA의 하위 12개의 비트는 4Kbyte 어드레스 페이지 오프셋을 나타낸다. 이 예에서, 64개 비트 실제 어드레스(RA) 중 나머지 상위 52개의 비트는 실제 어드레스(RA1) 엔트리를 나타낸다. 0101로 나타내는 WIMG 비트 예는 각각 W, I, M 및 G 비트를 나타낸다. WIMG 비트는 하드웨어 유닛(HU)이 메모리 또는 I/O 버스를 액세스하는 방식을 결정할 수 있는 메모리 어드레스 전달 속성이다. 실제 어드레스 RA1에 대한 라이트-백 또는 라이트-스루 상태에 해당되는 W 비트는 0이고, 따라서 라이트-백을 지정한다. RA1에 대한 캐시 인에비블 또는 캐시 금지에 해당되는 I 비트는 1이고, 따라서 캐시 금지를 지정한다. 실제 데이터(RA1)에 대한 지역적 액세스 또는 전역적 액세스에 해당되는 M 비트는 0이고, 따라서 지역적 액세스를 지정한다. 실제 어드레스(RA1)에 대한 비보호 또는 보호 상태에 해당되는 G 비트는 1이고, 따라서 보호된 상태를 지정한다. 도 7에서 FIFO 저장 큐(700)는 명령어 저장-1을 위한 데이터 사이즈예를 4 바이트로 도시한다. 저장-1의 저장 동작을 위한 데이터 사이즈는 따라서 4 데이터 바이트이다. 따라서 저장-1의 저장 동작을 위한 데이터 사이즈는 4 데이터 바이트이다. FIFO 저장 큐(700)는 도 7에서 D1 및 4 바이트 사이즈로 나타낸 저장 동작 저장-1에 대한 데이터를 포함한다. 저장-1 명령어는 결합 RAID 비트 01(즉, 1)을 나타낸다. 이러한 예에서, 1이란 RAID 할당은 저장-1 명령어가 RAG 번호 할당 1을 가지고 RAM(560)이 RAG1에 할당하는 결합 버스 대역폭 레이트를 가질 것이라는 것을 나타낸다.
도 7 FIFO 저장 큐(770) 표시에 도시하는 바와 같이, 저장-1 명령어 다음의 FIFO 저장 큐(700)내 다음 명령어는 저장-2 명령어이다. FIFO 저장 큐(700)는 저장-2 명령어에 대하여 RA2의 실제 어드레스(RA)를 저장한다. RA2는 64 비트 어드레스를 나타낼 수 있는데, 64 비트 어드레스에서 하위 12개 비트는 ERAT(440)으로의 유효 어드레스 입력과 동일하다. 일 실시예에서, FIFO 저장 큐(700)는 하위 12개의 비트를 저장하지 않을 수도 있다. EA 및 RA의 하위 12개의 비트는 4KB 어드레스 페이지 오프셋을 나타낸다. 이 예에서, 실제 어드레스 RA의 상위 52개의 비트는 실제 어드레스 RA2 엔트리를 나타낸다. 1101로 나타낸 WIMG 비트 예는 W, I, M 및 G 비트를 각각 표시한다. 실제 어드레스 RA2에 대한 라이트-백 또는 라이트-스루에 해당되는 W 비트는 1이고, 따라서 라이트-스루 동작을 지정한다. RA2에 대한 캐시-인에이블 또는 캐시-금지에 해당되는 I 비튼 1이고, 따라서 캐시 금지를 지정한다. 실제 어드레스 RA2에 대한 지역적 액세스 또는 전역적 액세스에 해당되는 M 비트는 0이고, 따라서 지역적 액세스를 지정한다. 실제 어드레스 RA2에 대하여 비보호 또는 보호 상태에 해당되는 G 비트는 1이고, 따라서 보호 상태를 지정한다. 도 7에서, FIFO 저장 큐(700)는 저장-2 명령어에 대한 사이즈예를 8 바이트로 나타낸다. 저장-2의 저장 동작에 대한 데이터 사이즈는 따라서 8 바이트 데이터이다. FIFO 저장 큐(700)는 D2 및 8 바이트 사이즈로 나타낸 저장 동작 저장-2 에 대한 데이터를 포함한다. RAID 할당 11(즉, 3)은 저장-2 명령어와 연관된다. 따라서, RAM(560)은 RAG3의 버스 대역폭 레이트를 저장-2 명령어로 할당한다.
FIFO 저장 큐(700)에서 저장-2 명령어 다음의 명령어는 저장-3 명령어로 도시되어 있다. FIFO 저장 큐(700)는 도 7에서 저장-3 명령어에 대한 실제 어드레스 RA3을 저장한다. RA3은 64 비트 어드레스를 나타낼 수 있으며, 64 비트는 위에서와 마찬가지로, 하위 12개의 비트는 ERAT(400)에 대한 유효 어드레스 입력과 동일하다. 일 실시예에서, FIFO 저장 큐(700)는 이들 하위 12개의 비트를 저장하지 않을 수도 있다. EA 및 RA의 하위 12개의 비트는 4KB 어드레스 페이지 오프셋을 나타낸다. 이 예에서, 실제 어드레스 RA의 상위 52개의 비트는 실제 어드레스 RA2 엔트리를 나타낸다. 0110로 나타낸 WIMG 비트 예는 각각 W, I, M 및 G 비트를 나타낸다. 실제 어드레스 RA3에 대한 라이트-백 또는 라이트-스루에 해당되는 W 비트는 0이고, 따라서 라이트-백 동작을 지정한다. RA3에 대한 캐시-인에이블 또는 캐시-금지에 해당되는 I 비튼 1이고, 따라서 캐시 금지를 지정한다. 실제 어드레스 RA3에 대한 지역적 액세스 또는 전역적 액세스에 해당되는 M 비트는 1이고, 따라서 전역적 액세스를 지정한다. 실제 어드레스 RA3에 대하여 비보호 또는 보호 상태에 해당되는 G 비트는 0이고, 따라서 비보호 상태를 지정한다. 도 7에서, FIFO 저장 큐(700)는 저장-3 명령어에 대한 사이즈예를 2바이트로 나타낸다. 저장-3의 저장 동작에 대한 데이터 사이즈는 따라서 2 바이트 데이터이다. FIFO 저장 큐(700)는 D3 및 2 바이트 사이즈로 나타낸 저장 동작 저장-3에 대한 데이터를 포함한다. RAID 할당 00(즉, 0은 저장-3 명령어와 연관된다. 따라서, RAM(560)은 RAG0의 버스 대역폭 레이트를 저장-3 명령어로 할당하고, 따라서 저장 명령 데이터를 FIFO 저장 큐(700)에 채우는 것을 완료한다. RAID 비트 할당은 0, 1, 2 및 3이며, 여기서 서로 다른 2 비트 쌍이 각각의 RAID 비트 할당에 대응된다. RAID 비트 할당은 RAG 번호 할당 RAG0, RAG1, RAG2 및 RAG3과 직접 연관된다. 어떤 애플리케이션에서는 프로세서 시스템(500) 및 HU(400)가 특정 애플리케이션에 대해 보다 적은 수의 RAG가 바람직한 경우에 2 미만의 비트를 사용할 수도 있다. 예를 들어, 0 또는 1의 단일 비트 필드는 2개의 RAG를 나타낼 수도 있다. 어떤 애플리케이션에서는 프로세서 시스템(500) 및 HU(400)가 그 애플리케이션에 4보다 많은 수의 RAG가 바람직한 경우에 2보다 많은 수의 비트를 사용할 수도 있다.
도 8은 도 4의 하드웨어 유닛(HU : 400)예에 의한 저장 명령어 또는 기록 명령어의 실행을 설명하는 순서도이다. 프로세서 시스템(500)내의 하드웨어 유닛(HU)은 이러한 저장 요청을 실행할 수 있다. 저장 명령어의 실행은 시작 블록(805)에서 시작한다. 임의의 HU상에서 실행되는 애플리케이션 소프트웨어는 기록 명령어 또는 기록 동작이라고도 하는 저장 명령어를 개시할 수 있다. 하이퍼바이저(442)는 변환 테이블(미도시)에 의해 간접적으로 EART(440)를 로드할 수 있다. 각 블록(810)에서 자원 할당 식별(RAID) 비트를 포함하는 ERAT(440)내의 각 엔트리는 룩업 어드레스 또는 유효 어드레스 EA에 대응하는 명령어를 포함한다. 특정 HU의 명령어 디코더(미도시)는 각 블록(815)에서 명령어를 디코딩한다. 그 다음 각 판정 블록(820)에서 HU(400)내의 명령어 디코더 또는 관련 하드웨어는 디코딩된 명령어가 저장 명령어, 즉, 기록 요청인 지를 판정하기 위한 검사를 수행한다. 디코딩된 명령어 검사가 폴스 결과를 리턴하며, 여기서 디코딩된 명령어가 저장 명령어가 아니면, 프로세서 비저장 명령어 블록(822)에서는 비저장 명령어가 실행된다. 흐름은 블록(815)로 리턴하여 명령어 디코더는 다음 명령어를 디코딩한다. 그러나, 판정 블록(820)에서 저장 명령어 검사가 트루 결과를 리턴하면, 유효 어드레스(EA) 판정 블록(825)에서는 HU가 저장 명령어의 유효 타겟 어드레스를 결정한다. 그 다음 HU는 평가를 위해 그 유효 어드레스를 이용하여 저장 명령어 데이터를 ERAT(440)로 이동시킨다. EA 엔트리가 실제 어드레스 변환기(ERAT)내에 이미 존재하면 ERAT(440)는 유효 어드레스(EA)를 대응 실제 어드레스(RA)로 변환한다. 보다 구체적으로, 블록(830)에서 EART(440)는 룩업 테이블(LUT)내의 룩업 데이터로서 유효 어드레스(EA)를 이용하고, ERAT(440)내에서 EA 데이터를 탐색한다. ERAT(440)이 현재 EA를 그 LUT 메모리에 저장하고 있으며, ERAT(440)는 LUT 메모리내에 대응 RA를 출력한다. 이는 "히트(hit)" 또는 판정 블록(840)에서의 성공적인 변환을 의미한다. 그런, ERAT LUT 메모리가 검사 중인 특정 EA에 대한 값을 포함하고 있지 않으면, 판정 블록(840)의 히트 검사는 폴스 결과를 리턴한다. 판정 블록(840)에서의 EA가 히트되면 HU는 블록(845)에서 서비스 변환 요청을 개시한다. 서비스 변환 요청은 블록(850)에서 적절한 ERAT 변환 데이터가 생성되게 하고 이 RAT 변환 데이터가 ERAT LUT 메모리로 로드되게 한다. ERAT LUT 메모리의 성공적인 로드 이후에, HU는 블록(830)에서 다시 ERAT(440)내에서 EA 룩업을 시도한다. 블록(840)의 유효 어드레스 히트 검사가 대상 저장 명령어 또는 동작에 대하여 트루 결과를 리턴하며, ERAT 캐시가 EA에 일치 값을 포함하면, HU는 블록(870)에서 그 명령어에 대한 대응 RA, WIMG 비트 및 자원 할당 식별(RAID) 비트를 FIFO 저장 큐(700)내로 전달한다. 이를 위하여, 블록(870)은 WIMG 비트를 참조한다. 그러나, 개시된 방법의 다른 실시예에서는 하드웨어 유닛(HU)이 WIMG 예 보다 많은 제어 비트 또는 적은 수의 제어 비트를 이용할 수도 있으며, 이러한 제어 비트는 특정 애플리케이션에 따른 기타 어드레스 전달 속성에 대응된다.
일 실시예에서, HU(400)는 명령어로 FIFO 저장 큐(700)를 채우며 각 명령어를 그 명령어가 로드되는 순서로 실행한다. 예로서, 도 7에서는 큐에서 실행될 다음 명령어는 최하위 명령어 저장-1이다. 저장-1 명령어가 실행된 이후에, FIFO 저장 큐(700)내 최하위로 저장-2 명령어가 이동되어 다음 실행될 명령어가 된다. 저장-3 명령어가 저장 큐의 하위로 이동되고 다음 명령어가 저장 큐의 최상위 위치로 들어간다. 도 8의 순서도를 참조하면, 큐내의 다음 명령어는 FIFO 저장 큐(700)의 최하위 엔트리이다. HU(400)는 블록(875)에서 FIFO 저장 큐(700)의 전방부로 진행한다. 그 다음 HU(400)는 블록(880)에서 토큰 요청을 개시하여 토큰을 요청한다. 보다 구체적으로, HU(400)의 토큰 요청자(460)는 자원 할당 관리자(RAM : 560)으로부터 요청을 하여 즉, 저장 명령어를 위해 메모리 버스(530) 또는 I/O 인터페이스 버스(535)의 이용을 요청한다. HU(400)는 토큰 요청이 승인되고 나서야 저장 명령어 동작을 계속한다. 토큰 요청자(460)는 토큰 승인 판정 블록(885)에서 RAM(560)이 토큰을 승인하여 응답하는 지를 판정하는 검사를 한다. 토큰 승인 검사가 폴스 결과를 리턴하면, HU(400)는 블록(885)에서 유지 및 주시 상태(hold and watch status)를 유지한다. 그러나, 토큰 승인 검사가 트루 결과를 리턴하면, HU(400)는 블록(890)에서 메모리 버스(530) 또는 I/O 인터페이스 버스(535)에 저장 요청 데이터를 로드한다. 메모리 저장 동작의 경우, 그 후 메모리 버스(530)는 저장 요청 데이터를 내부 저장을 위해 시스템 메모리로 전달한다. HU는 또한 상술한 것과 동일한 방식으로 I/O 인터페이스 버스(535) 전달을 요청한다. 그 경우, HU는 결과 I/O 데이터를 I/O 인터페이스 제어기(520)까지인 I/O 인터페이스 버스(535)상에 로드한다. 따라서, 블록(890)에서 "버스 상에 요청 로드"는 메모리 버스(165)상의 저장 명령어로부터 나오는 데이터를 배치하는 것과 I/O 버스(535)상의 I/O 요청 명령어로부터 나오는 결과 데이터를 배치하는 것 둘 다에 적용된다. 마지막으로, 성공적인 저장 명령어 동작 이후에, HU(400)는 블록(815)에서 다음 명령어를 디코딩하고 동작 순서를 계속한다. 도 8에 도시한 예는 프로세서 시스템(100)의 대표적인 저장 또는 기록 동작을 도시한다. 도시한 실시예의 유효성을 설명하는 또 다른 유형의 동작은 로드 또는 판독 동작이다. 데이터의 저장 및 로드의 변환, 즉, 버스상의 데이터의 판독 또는 기록이 2개의 동작 유형들간의 차를 나타내지만, 도 8에 도시한 메카니즘 및 방법은 그 구조의 동일한 기초 엘리멘트들을 나타낸다. 또한, RAID 비트의 특별한 사용은 로드와 저장 동작들간에 공통의 엘리멘트를 나타낸다.
도 9는 프로세서(905)를 채용하는 대표적인 정보 처리 시스템(IHS)의 간략화된 블록도를 도시한다. 일 실시예에서, 프로세서(905)는 HU(400)를 포함하는 프로세서 시스템(500)이다. IHS(900)는 프로세서(905)를 메모리 제어기(525) 및 비디오 그래픽 제어기(920)로 결합시키는 버스(910)를 더 포함한다. 보다 구체적으로, 시스템 메모리 버스(530)는 도시한 바와 같이 시스템 메모리(915)에 결합된다. 실제로, 버스(910)는 다수의 버스, 예를 들어 메모리 버스 및 I/O 버스를 포함할 수 있다. 디스플레이(925)는 비디오 그래픽 제어기(920)에 결합된다. 비휘발성 저장소(930) 예를 들어, 하드 디스크 드라이브, CD 드라이브, DVD 드라이브 등의 비휘발성 저장소가 버스(910)에 결합되어 IHS(900)에 정보 영구 저장소를 제공한다. 운영 체제(935)는 메모리(915)에 로드되어 IHS(900)의 동작을 통치한다. 다른 시스템 소프트웨어, 즉, 애플리케이션 소프트웨어(940) 및 하이퍼바이저(945)는 메모리(915)내에 상주하여 IHS(900)의 동작을 더 제어한다. I/O 장치, 예를 들어, 키보드 및 마우스 포인팅 장치는 I/O 버스(535) 및 I/O 제어기(520)를 통해 버스(910)에 결합된다. 하나 이상의 연장 버스(955), 예를 들어, USB, IEEE 1394 버스, ATA, SATA, PCI, PCIE 및 기타 버스는 버스(910)에 결합되어 주변 장치들의 IHS(900)로의 접속을 용이하게 한다. 네트워크 인터페이스 어댑터(960)는 버스(910)에 결합되어 IHS(900)가 유선으로 또는 무선으로 네트워크 및 기타 정보 처리 시스템에 접속될 수 있게 한다. 도 9에서는 프로세서 시스템(500)을 프로세서(905)로 채용하는 일 IHS를 도시하고 있으나, IHS는 다수의 형태를 가질 수도 있다. 예를 들어, IHS(900)는 데스크탑, 서버, 휴대용, 랩탑, 노트북 또는 다른 폼 팩터 컴퓨터 혹은 데이터 처리 시스템일 수도 있다. IHS(900)는 게임 장치, PDA(personal digital assistant), 휴대용 전화 장치, 통신 장치 또는 프로세서 및 메모리를 포함하는 기타 장치들과 같이 다른 폼 팩터를 가질 수도 있다.
상술한 설명은 향상된 메모리 버스 및 I/O 인터페이스 버스 대역폭을 제공할 수 있는 프로세서 시스템 및 방법을 개시하였다. 일 실시예에서, 프로세서 시스템은 각 명령어 또는 요청을 기초로 하여 메모리 버스 및/또는 I/O 버스 대역폭을 할당할 수도 있다.
당업자라면 본 발명의 기술 내에서 수정 및 변경이 가능할 것이다. 따라서, 상술한 설명은 당업자가 본 발명을 수행하는 방식을 교시하려는 것으로 예로서 제공된 것이다. 도시하고 설명한 본 발명의 형태는 실시예를 구성한다. 당업자라면 부분의 형태, 사이즈 및 배치를 다양하게 변경할 수 있을 것이다. 예를 들어, 당업자라면 본 명세서에서 도시하고 설명한 엘리멘트들을 등가의 엘리멘트들로 대체할 수 있을 것이다. 또한, 당업자라면 본 발명의 기술 내용을 습득한 후에, 본 발명의 범주로부터 벗어남이 없이 다른 특징부의 이용에 독립적으로 본 발명의 어떤특징부를 이용할 수도 있을 것이다.

Claims (10)

  1. 복수의 하드웨어 유닛(HU)들을 포함하는 프로세서에 의해 공유 자원을 액세스하는 방법으로서,
    상기 프로세서 내의 복수의 하드웨어 유닛(HU)들 중 특정 하드웨어 유닛(HU)에 의해, 상기 공유 자원에 대한 액세스 요청을 요구하는 실행 명령어를 수신하는 단계;
    상기 프로세서에 의해, 상기 복수의 HU들을 복수의 자원 할당 그룹(RAG)들로 그룹핑하는 단계 ? 각각의 RAG는 적어도 하나의 HU를 포함하고, 각각의 RAG에는 상기 공유 자원을 액세스하는 것과 관련되는 개별적인 대역폭이 할당됨 ? ; 및
    상기 명령어가 상기 특정 HU의 명령어 처리기(handler) 내의 복수의 파이프라인 스테이지들을 통과할 때 상기 명령어와 자원 할당 식별(RAID) 정보를 연관시키는 단계를 포함하고,
    상기 RAID 정보는 상기 특정 HU가 어떠한 특정 자원 할당 그룹(RAG)에 속하는지를 나타내고, 상기 RAID 정보는 상기 특정 HU 내의 파이프라인 스테이지들 중 하나로부터 파이프라인 스테이지들 중 다른 하나로 상기 명령어와 함께 이동하고, 상기 RAID 정보는 상기 명령어와 연관되는 상기 RAG 및 개별적인 대역폭을 지정하기 위해 개개의 명령어 별로 변화가능하며,
    상기 파이프라인 스테이지들 중 하나는 상기 명령어에 대해 유효 어드레스에서 실제 어드레스로의 변환을 수행하는 어드레스 변환 파이프라인 스테이지이고,
    상기 자원 할당 식별(RAID) 정보는 상기 어드레스 변환 파이프라인에 상주하고, 상기 어드레스 변환 파이프라인 스테이지에서 상기 명령어와 연관되는,
    복수의 HU들을 포함하는 프로세서에 의해 공유 자원을 액세스하는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 명령어 처리기 내의 파이프라인 스테이지들 중 하나는 저장 큐이고,
    상기 저장 큐는 상기 어드레스 변환 파이프라인 스테이지에 의한 어드레스 변환 이후에 상기 명령어 및 연관되는 자원 할당 식별(RAID) 정보를 수신하는,
    복수의 하드웨어 유닛(HU)들을 포함하는 프로세서에 의해 공유 자원을 액세스하는 방법.
  4. 제 1 항에 있어서,
    상기 연관시키는 단계는 상기 특정 HU에서 실행하는 하이퍼바이저(hypervisor)에 의해, 상기 자원 할당 식별(RAID) 정보를 연관시키는 단계를 포함하는,
    복수의 하드웨어 유닛(HU)들을 포함하는 프로세서에 의해 공유 자원을 액세스하는 방법.
  5. 제 3 항에 있어서,
    상기 특정 HU의 액세스 요청자는 상기 공유 자원에 대한 액세스를 위한 액세스 요청을 자원 할당 관리자에게 전송하고,
    상기 자원 할당 관리자는 상기 특정 HU 외부에 존재하고, 상기 프로세서 내의 복수의 HU들과 통신하며,
    상기 액세스 요청자는 상기 저장 큐 내의 명령어 및 연관되는 자원 할당 식별(RAID) 정보에 대해 개개의 명령어 별로 액세스 요청을 전송하고, 따라서 상기 저장 큐 내의 각각의 명령어들의 자원 할당 식별(RAID) 정보를 포함하는 액세스 요청을 제공하는,
    복수의 하드웨어 유닛(HU)들을 포함하는 프로세서에 의해 공유 자원을 액세스하는 방법.
  6. 제 5 항에 있어서,
    상기 자원 할당 관리자에 의해, 상기 액세스 요청 내의 상기 자원 할당 식별(RAID) 정보에 기초하여 상기 액세스 요청에 대해 상기 공유 자원의 대역폭을 할당하는 단계를 더 포함하는,
    복수의 하드웨어 유닛(HU)들을 포함하는 프로세서에 의해 공유 자원을 액세스하는 방법
  7. 제 1 항, 제 3 항 내지 제 6 항 중 어느 하나의 항에 있어서,
    상기 액세스 요청은 메모리 액세스 요청 및 I/O 액세스 요청 중 하나인,
    복수의 하드웨어 유닛(HU)들을 포함하는 프로세서에 의해 공유 자원을 액세스하는 방법
  8. 제 1 항, 제 3 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 공유 자원은 메모리 및 I/O 장치 중 하나인,
    복수의 하드웨어 유닛(HU)들을 포함하는 프로세서에 의해 공유 자원을 액세스하는 방법
  9. 프로세서로서,
    반도체 다이 상에 위치하는, 복수의 하드웨어 유닛(HU)들을 포함하고,
    상기 복수의 HU들은 공유 자원을 액세스하도록 구성되고, 상기 복수의 HU들은 특정 하드웨어 유닛(HU)을 포함하며,
    상기 프로세서는 상기 복수의 HU들을 복수의 자원 할당 그룹(RAG)들로 그룹핑하고, 각각의 RAG는 적어도 하나의 HU를 포함하고, 각각의 RAG에는 상기 공유 자원에 액세스하는 것과 관련되는 개별적인 대역폭이 할당되고;
    상기 특정 HU는 복수의 파이프라인 스테이지들을 포함하고, 상기 특정 HU는 상기 공유 자원에 대한 액세스 요청을 요구하는 실행 명령어를 수신하고;
    상기 프로세서는 상기 명령어가 상기 특정 HU의 명령어 처리기 내의 복수의 파이프라인 스테이지들을 통과할 때 상기 명령어와 자원 할당 식별(RAID) 정보를 연관시키고, 상기 RAID 정보는 상기 특정 HU가 어떠한 특정 자원 할당 그룹(RAG)에 속하는지를 나타내고, 상기 RAID 정보는 상기 특정 HU 내의 파이프라인 스테이지들 중 하나로부터 파이프라인 스테이지들 중 다른 하나로 상기 명령어와 함께 이동하고, 상기 RAID 정보는 상기 명령어와 연관되는 상기 RAG 및 개별적인 대역폭을 지정하기 위해 개개의 명령어 별로 변화가능하며,
    상기 파이프라인 스테이지들 중 하나는 상기 명령어에 대한 유효 어드레스에서 실제 어드레스로의 변환을 수행하는 어드레스 변환 파이프라인 스테이지이고,
    상기 자원 할당 식별(RAID) 정보는 상기 어드레스 변환 파이프라인에 상주하고, 상기 어드레스 변환 파이프라인 스테이지에서 상기 명령어와 연관되는,
    프로세서.
  10. 정보 처리 시스템으로서,
    공유 자원; 및
    상기 공유 자원에 커플링되는 프로세서를 포함하고,
    상기 프로세서는 상기 공유 자원을 액세스하는 복수의 하드웨어 유닛(HU)들을 포함하고, 상기 복수의 HU들은 특정 하드웨어 유닛(HU)을 포함하고, 상기 프로세서는 상기 복수의 HU들을 복수의 자원 할당 그룹(RAG)들로 그룹핑하고, 각각의 RAG는 적어도 하나의 HU를 포함하고, 각각의 RAG에는 상기 공유 자원에 액세스하는 것과 관련되는 개별적인 대역폭이 할당되고;
    상기 특정 HU는 복수의 파이프라인 스테이지들을 포함하고, 상기 특정 HU는 상기 공유 자원에 대한 액세스 요청을 요구하는 실행 명령어를 수신하고;
    상기 프로세서는 상기 명령어가 상기 특정 HU의 명령어 처리기 내의 복수의 파이프라인 스테이지들을 통과할 때 상기 명령어와 자원 할당 식별(RAID) 정보를 연관시키고, 상기 RAID 정보는 상기 특정 HU가 어떠한 특정 자원 할당 그룹(RAG)에 속하는지를 나타내고, 상기 RAID 정보는 상기 특정 HU 내의 파이프라인 스테이지들 중 하나로부터 파이프라인 스테이지들 중 다른 하나로 상기 명령어와 함께 이동하고, 상기 RAID 정보는 상기 명령어와 연관되는 상기 RAG 및 개별적인 대역폭을 지정하기 위해 개개의 명령어 별로 변화가능하며,
    상기 파이프라인 스테이지들 중 하나는 상기 명령어에 대한 유효 어드레스에서 실제 어드레스로의 변환을 수행하는 어드레스 변환 파이프라인 스테이지이고,
    상기 자원 할당 식별(RAID) 정보는 상기 어드레스 변환 파이프라인에 상주하고, 상기 어드레스 변환 파이프라인 스테이지에서 상기 명령어와 연관되는,
    정보 처리 시스템.
KR1020097012333A 2007-02-06 2008-01-30 프로세서 시스템에서 명령어 레벨에서의 자원 할당 식별을 가능하게 하는 방법 및 장치 KR101123443B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/671,508 US8407451B2 (en) 2007-02-06 2007-02-06 Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
US11/671,508 2007-02-06
PCT/EP2008/051122 WO2008095844A1 (en) 2007-02-06 2008-01-30 Method and apparatus for enabling resource allocation identification at the instruction level in a processor system

Publications (2)

Publication Number Publication Date
KR20090115115A KR20090115115A (ko) 2009-11-04
KR101123443B1 true KR101123443B1 (ko) 2012-06-12

Family

ID=39471983

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097012333A KR101123443B1 (ko) 2007-02-06 2008-01-30 프로세서 시스템에서 명령어 레벨에서의 자원 할당 식별을 가능하게 하는 방법 및 장치

Country Status (7)

Country Link
US (1) US8407451B2 (ko)
EP (1) EP2115584B1 (ko)
JP (1) JP5241737B2 (ko)
KR (1) KR101123443B1 (ko)
CN (1) CN101606130B (ko)
TW (1) TWI417792B (ko)
WO (1) WO2008095844A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046524B2 (en) * 2007-08-08 2011-10-25 Sandisk Technologies Inc. Managing processing delays in an isochronous system
US8102865B2 (en) * 2008-05-16 2012-01-24 Microsoft Corporation Group based allocation of network bandwidth
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
US8838796B2 (en) * 2008-12-19 2014-09-16 Adobe Systems Incorporated System and method for allocating online storage to computer users
US9542231B2 (en) 2010-04-13 2017-01-10 Et International, Inc. Efficient execution of parallel computer programs
GB2481232A (en) * 2010-06-16 2011-12-21 Advanced Risc Mach Ltd Cache for a multiprocessor system which can treat a local access operation as a shared access operation
US9134771B2 (en) * 2010-08-06 2015-09-15 Dhk Storage, Llc Raid devices, systems, and methods
CN103262064A (zh) 2010-12-16 2013-08-21 Et国际有限公司 分布式计算体系结构
US8918791B1 (en) 2011-03-10 2014-12-23 Applied Micro Circuits Corporation Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID
TWI550408B (zh) * 2011-04-22 2016-09-21 晨星半導體股份有限公司 多核心電子系統及其速率調節裝置
KR101867960B1 (ko) 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
US20150229583A1 (en) * 2012-06-27 2015-08-13 Qatar Foundation Arrangement configured to allocate resources of a plurality of data storage media to a plurality virtual machines and associated method
US20150007189A1 (en) * 2013-06-29 2015-01-01 Robert de Gruijl Service rate redistribution for credit-based arbitration
US9026681B2 (en) 2013-08-08 2015-05-05 Qualcomm Incorporated Flexible hardware module assignment for enhanced performance
US10394731B2 (en) 2014-12-19 2019-08-27 Amazon Technologies, Inc. System on a chip comprising reconfigurable resources for multiple compute sub-systems
US10523585B2 (en) * 2014-12-19 2019-12-31 Amazon Technologies, Inc. System on a chip comprising multiple compute sub-systems
US11200192B2 (en) 2015-02-13 2021-12-14 Amazon Technologies. lac. Multi-mode system on a chip
US10853077B2 (en) 2015-08-26 2020-12-01 Huawei Technologies Co., Ltd. Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability
US11221853B2 (en) 2015-08-26 2022-01-11 Huawei Technologies Co., Ltd. Method of dispatching instruction data when a number of available resource credits meets a resource requirement
CN105183565B (zh) * 2015-09-30 2018-12-07 华为技术有限公司 计算机、服务质量控制方法及装置
US10628373B2 (en) * 2015-12-01 2020-04-21 Marvell International Ltd. Systems and methods for transmitting an access request via a flexible register access bus
CN107067240B (zh) 2016-12-12 2020-09-08 创新先进技术有限公司 资源调配方法和装置以及电子支付方法
US10649678B2 (en) * 2017-01-13 2020-05-12 Arm Limited Partitioning of memory system resources or performance monitoring
US10268379B2 (en) * 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
US10394454B2 (en) * 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring
CN107800644A (zh) * 2017-11-08 2018-03-13 中国人民解放军国防科技大学 一种可动态配置的流水化令牌桶限速方法与装置
TWI681362B (zh) * 2018-03-01 2020-01-01 瑞昱半導體股份有限公司 有限記憶體頻寬系統及其動態限制圖形處理器的記憶體頻寬的方法
CN111708622B (zh) * 2020-05-28 2022-06-10 山东云海国创云计算装备产业创新中心有限公司 一种指令组调度方法、架构、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083244A1 (en) * 2000-12-27 2002-06-27 Hammarlund Per H. Processing requests to efficiently access a limited bandwidth storage area
KR20050057199A (ko) * 2002-09-04 2005-06-16 에이알엠 리미티드 데이터 처리장치에서의 파이프라인들간의 동기화

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2685484B2 (ja) * 1988-04-13 1997-12-03 株式会社日立製作所 記憶制御方式
US5600805A (en) * 1992-06-15 1997-02-04 International Business Machines Corporation Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems
JPH06332701A (ja) * 1993-05-26 1994-12-02 Hitachi Ltd 情報処理装置
US6801995B1 (en) * 1998-08-04 2004-10-05 Agere Systems, Inc. Method for optimally encoding a set of instruction codes for a digital processor having a plurality of instruction selectable resource types and an associated optimized set of instruction codes
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6820142B2 (en) * 2000-12-14 2004-11-16 International Business Machines Corporation Token based DMA
US6567897B2 (en) * 2001-03-01 2003-05-20 International Business Machines Corporation Virtualized NVRAM access methods to provide NVRAM CHRP regions for logical partitions through hypervisor system calls
US7530068B2 (en) * 2003-12-17 2009-05-05 International Business Machines Corporation Method of resource allocation using an access control mechanism
US6996647B2 (en) * 2003-12-17 2006-02-07 International Business Machines Corporation Token swapping for hot spot management
US20060015772A1 (en) * 2004-07-16 2006-01-19 Ang Boon S Reconfigurable memory system
US7386687B2 (en) * 2005-01-07 2008-06-10 Sony Computer Entertainment Inc. Methods and apparatus for managing a shared memory in a multi-processor system
US20060259733A1 (en) * 2005-05-13 2006-11-16 Sony Computer Entertainment Inc. Methods and apparatus for resource management in a logically partitioned processing environment
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083244A1 (en) * 2000-12-27 2002-06-27 Hammarlund Per H. Processing requests to efficiently access a limited bandwidth storage area
KR20050057199A (ko) * 2002-09-04 2005-06-16 에이알엠 리미티드 데이터 처리장치에서의 파이프라인들간의 동기화

Also Published As

Publication number Publication date
CN101606130A (zh) 2009-12-16
TW200901040A (en) 2009-01-01
US8407451B2 (en) 2013-03-26
KR20090115115A (ko) 2009-11-04
CN101606130B (zh) 2014-05-07
JP2010518472A (ja) 2010-05-27
EP2115584A1 (en) 2009-11-11
JP5241737B2 (ja) 2013-07-17
EP2115584B1 (en) 2016-01-27
WO2008095844A1 (en) 2008-08-14
TWI417792B (zh) 2013-12-01
US20080189522A1 (en) 2008-08-07

Similar Documents

Publication Publication Date Title
KR101123443B1 (ko) 프로세서 시스템에서 명령어 레벨에서의 자원 할당 식별을 가능하게 하는 방법 및 장치
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
CN102906716B (zh) 促进计算环境的系统存储器的管理的方法
JP7379502B2 (ja) フォールバックを伴う有向割り込みの仮想化方法、システム、プログラム
RU2608000C2 (ru) Представление фильтрации наблюдения, ассоциированной с буфером данных
US9384132B2 (en) Emulated message signaled interrupts in a virtualization environment
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP7398465B2 (ja) 有向割り込みの仮想化のための割り込み信号伝達方法、システム、プログラム
US6728858B2 (en) Method and apparatus including heuristic for sharing TLB entries
US7073044B2 (en) Method and apparatus for sharing TLB entries
JP7450627B2 (ja) 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
US20120079241A1 (en) Instruction execution based on outstanding load operations
US20130159628A1 (en) Methods and apparatus for source operand collector caching
JP7448550B2 (ja) ブロッキング・インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
CN102906721A (zh) 与访问地址空间并行地对地址空间调整大小
CN102906719A (zh) 输入/输出地址到存储器地址的转换
CN111752615A (zh) 用于确保多线程处理器核的服务质量的装置、方法和系统
US20140156950A1 (en) Emulated message signaled interrupts in multiprocessor systems
CN112148641A (zh) 用于跟踪由cpu或设备进行的物理地址访问的系统和方法
EP3716080A1 (en) System, apparatus and method for application specific address mapping
US20200012514A1 (en) Systems, Methods, and Apparatuses for Resource Monitoring
CN113849427A (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
LAPS Lapse due to unpaid annual fee