KR20110118810A - 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서 - Google Patents

다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서 Download PDF

Info

Publication number
KR20110118810A
KR20110118810A KR1020117021111A KR20117021111A KR20110118810A KR 20110118810 A KR20110118810 A KR 20110118810A KR 1020117021111 A KR1020117021111 A KR 1020117021111A KR 20117021111 A KR20117021111 A KR 20117021111A KR 20110118810 A KR20110118810 A KR 20110118810A
Authority
KR
South Korea
Prior art keywords
request
shared resource
priority
requestor
pending
Prior art date
Application number
KR1020117021111A
Other languages
English (en)
Other versions
KR101455899B1 (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 KR20110118810A publication Critical patent/KR20110118810A/ko
Application granted granted Critical
Publication of KR101455899B1 publication Critical patent/KR101455899B1/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]

Landscapes

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

Abstract

공유 자원들의 할당을 제어하는 시스템, 방법 및 컴퓨터 프로그램 제품이 제공된다. 상기 시스템은 공유 자원 및 요청자 식별자들에 의해 식별되는 다수의 요청들에 연결되는 다음 요청 우선권 모듈을 포함한다. 상기 다음 요청 우선 모듈은, 상기 공유 자원에 대한 펜딩 요청들에게 우선 순위를 부여하는 펜딩 요청 메커니즘, 상기 공유 자원에 대하여 이전에 부여된 우선권들과 연관된 요청자 식별자들을 로깅하는 로깅 메커니즘 및 다음 요청 우선권 논리를 포함한다. 상기 다음 요청 우선권 논리는, 다음 펜딩 요청에게 상기 공유 자원에 대한 우선권이 부여되어야 하는지를 결정하기 위해 상기 다음 펜딩 요청에 접근한다. 상기 결정은 로그된 요청자 식별자들 및 다음 요청자 식별자들에 반응하여 일어난다. 상기 다음 펜딩 요청이 상기 공유 자원에 대한 우선권을 부여 받아야 한다는 결정에 반응하여 상기 공유 자원에 대한 우선권은 상기 다음 펜딩 요청에 대하여 부여된다. 상기 부여에 반응하여 상기 다음 요청자 식별자가 로그된다.

Description

다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서{MICROPROCESSOR WITH SOFTWARE CONTROL OVER ALLOCATION OF SHARED RESOURCES AMONG MULTIPLE VIRTUAL SERVERS}
본 발명은 일반적으로 컴퓨팅 환경 내의 프로세싱에 관한 것이고, 더 상세하게는 컴퓨팅 환경 내의 공유 자원들을 할당하는 것에 관한 것이다.
전체 컴퓨터 시스템의 성능은 프로세서(들)의 성능/구조, 모든 메모리 캐시(들), 입/출력(I/O) 서브시스템(들), 메모리 제어 기능(들)의 효율, 메인 메모리 디바이스(들), 및 인터커넥션 인터페이스(들)의 유형 및 구조를 포함하여 컴퓨터 구조의 각 핵심 요소들에 의해 영향을 받는다.
시스템/서브시스템의 설계 및/또는 구조를 향상시킴으로써 전체 컴퓨터 시스템 성능 및 집적을 최대화 할 수 있는, 개선된 및/또는 혁신적인 해결책들을 만들기 위해 컴퓨팅 산업에서는 전방위적인 연구 및 개발에 지속적인 노력을 기울이고 있다. 고-가용성 시스템들은, 전체 시스템 신뢰성에 관하여 해결해야 할 과제들을 제시하는데, 상기 신뢰성은 새로운 컴퓨터 시스템들이 기존 시스템들보다 평균 고장 간격(MTBF: Mean-Time-Between-Failure)에서 우수할 뿐만 아니라, 추가 기능들의 제공, 향상된 성능, 향상된 저장 공간, 저렴한 작동 비용 등에 관하여 현저하게 우수할 것이라는 소비자의 기대에서 기인한다. 이 외의 흔한 소비자 요구사항들은 업그레이드의 용이함 및 감소된 시스템 환경 효과(예를 들면, 공간, 전력, 및 냉각)과 같은 항목들을 포함하는데, 이들은 컴퓨터 시스템 설계를 더욱 힘들게 한다.
오늘날 마이크로 프로세서들은 많은 프로세서들을 갖고, 각각의 프로세서들은 다수의 실행 스레드(threads of execution)들을 수행한다. 예를 들면, 오늘날의 마이크로 프로세서는 여덟개의 프로세서들 -각각의 프로세서들은 네 개의 스레드들을 갖음- 을 가질 수 있고, 다수의 가상 프로세서들을 관리하는데 이용되는 하이퍼바이저 소프트웨어를 가질 수 있다. 동시에 실행 가능한 스레드들의 개수는 증가할 것으로 예측되고 있고, 미래에는 마이크로 프로세서들이 12개의 스레드들을 동시에 수행시킬 수 있을 것이다.
마이크로 프로세서들은, 많은 하드웨어 자원들을 갖는데, 상기 하드웨어 자원들은 하이퍼바이저들의 제어 하에서 동작하는 다수의 가상 프로세서들에 의해 공유된다. 이들 공유 자원들은 물리적 프로세서들, 캐시들, 상호접속 네트워크들 -상기 상호접속 네트워크들은 다수의 캐시들, 메모리 컨트롤러들, 입/출력(I/O) 컨트롤러들 등 사이에 캐시 일관성(cache coherence)을 제공함- 을 포함한다. 오늘날의 마이크로 프로세서 하드웨어 설계들은 각 물리적 프로세서들 내의 하드웨어 타이머들(hardware timers)과 결합된 하이퍼바이저 소프트웨어에 의존하는데, 이는 가상 프로세서들이 물리적 하드웨어 자원들의 공평한 할당(fair share)를 받도록 하기 위해서이다. 오늘날의 설계를 보면, 가상 프로세서들은 하이퍼바이저에 의존하는데, 이는 캐시 액세스들(cache accesses) 및 메모리 컨트롤러 액세스들(memory controller accesses)과 같은 “다운-스트림(down-stream)” 공유 자원들이 각 프로세서에 공평하게 할당되도록 가상 프로세스들(virtual processes)을 물리적 프로세서들(physical processors) 상으로 디스패치(dispatch)하기 위함이다.
본 발명의 예시적 실시 예는, 공유 자원들의 할당을 제어하기 위한 시스템을 포함한다. 상기 시스템은 ‘다음 요청 우선권 모듈’(next request priority module)을 포함하는데, 상기 모듈은 공유 자원 및 다수의 요청자들(requestors) 상기 요청자 들은 요청자 식별자들(requestor identifiers)에 의해 식별됨- 에 접속된다. 다음 요청 우선 모듈은 펜딩 요청 메커니즘(pending request mechanism), 로깅 메커니즘(logging mechanism) 및 ‘다음 요청 우선권 논리’(next request priority logic)를 포함한다. 상기 펜딩 요청 메커니즘은, 하나 또는 그 이상의 요청자들로부터의 공유 자원에 대한 하나 또는 그 이상의 펜딩 요청들에 대하여 우선순위를 부여한다. 각각의 펜딩 요청은 연관된 요청자 식별자를 포함한다. 펜딩 요청들 중 하나가, 연관된 다음 요청자 식별자(next requestor identifier)를 갖는 다음 펜딩 요청(next pending request)으로 지정된다. 로깅 메커니즘은 공유 자원에 대해 우선권을 부여 받은 이전 요청(previous request)들과 연관된 요청자 식별자들을 로그(log)한다. 다음 요청 우선 논리는 다음 펜딩 요청 및 다음 요청자 식별자들에 접근하여, 다음 펜딩 요청이 공유 자원에 대해 우선권을 부여 받아야 하는지를 결정한다. 상기 결정은 로그된 요청자 식별자들 및 다음 요청자 식별자들에 반영하여 이루어진다. 다음 펜딩 요청이 공유자원에 대해 우선권을 부여 받아야 한다는 결정에 대한 응답으로 다음 펜딩 요청이 공유자원에 대해 우선권을 부여받는다. 상기 부여에 대한 응답으로 다음 요청자 식별자가 로그된다.
또 다른 예시적 실시 예는, 공유 자원의 할당을 제어하는 방법을 포함한다. 상기 방법은 공유 자원에 접근하는 요청을 수신하는 단계를 포함한다. 상기 요청은 프로세서 상에 실행 중인 요청자로부터 수신된다. 상기 수신은 프로세서 및 공유 자원에 접속된 다음 요청 우선 모듈에서 일어난다. 공유자원에 대해 부여된 특정 수(specified number)의 가장 최근 우선권들 중 어느 하나가 상기 요청자에 대한 것이었지가 결정된다. 공유자원에 대해 부여된 특정 수의 가장 최근 우선권들 중 어느 것도 상기 요청자에 대한 것이 아니었다면, 상기 요청은 공유 자원에 대해 우선권을 부여 받는다. 공유자원에 대해 부여된 특정 수의 가장 최근 우선권들 중 어느 하나가 상기 요청자에 대한 것이었다고 결정되면, 공유 자원에 대한 하나 또는 그 이상의 다른 요청들이 펜딩 중인지가 결정된다. 공유 자원에 대한 다른 요청들이 펜딩 중인 경우, 상기 다른 요청들 중 하나가 공유 자원에 대한 우선권을 부여 받아야 하는지가 결정된다.
다른 예시적 실시 예는, 공유 자원들의 할당을 제어하는 컴퓨터 프로그램 제품을 포함한다. 컴퓨터 프로그램 제품은 유형의 저장 매체(tangible storage medium)를 포함하는데, 상기 유형의 저장 매체는 처리 회로에 의해 읽기 가능하고, 방법을 수행하기 위해 상기 처리 회로에 의해 실행되는 명령들을 저장한다. 상기 방법은 공유 자원에 접근하기 위한 요청을 수신하는 단계를 포함한다. 상기 요청은 프로세서 상에 실행 중인 요청자로부터 수신된다. 상기 수신은 프로세서 및 공유 자원에 접속된 다음 요청 우선 모듈에서 일어난다. 공유자원에 대해 부여된 특정 수의 가장 최근 우선권들 중 어느 하나가 상기 요청자에 대한 것이었는지가 결정된다. 공유자원에 대해 부여된 특정 수의 가장 최근 우선권들 중 어느 것도 상기 요청자에 대한 것이 아니었다면, 상기 요청은 공유 자원에 대한 우선권을 부여 받는다. 공유자원에 대해 부여된 특정 수의 가장 최근 우선권들 중 어느 하나가 상기 요청자에 대한 것이었다고 결정되면, 공유 자원에 대한 하나 또는 그 이상의 다른 요청들이 펜딩 중인지가 결정된다. 공유 자원에 대한 다른 펜딩 중인 요청들이 없는 경우 상기 요청은 공유자원에 대한 우선권을 받는다. 공유 자원에 대한 다른 요청들이 펜딩 중인 경우, 상기 다른 요청들 중 하나가 공유 자원에 대한 우선권을 부여 받아야 하는지가 결정된다.
본 발명의 바람직한 실시 예들은 이하에서, 단지 예시로써, 첨부된 도면들을 참조하여 설명될 것이다.
도 1은 본 발명의 예시적 실시 예에서 구현될 수 있는 몇 개의 프로세서들 및 공유 시스템 자원들을 갖는 컴퓨팅 시스템을 도시한다.
도 2는 본 발명의 예시적 실시 예에서 구현될 수 있는 가상 서버 제어 논리 하드웨어를 도시한다.
도 3a는 선행기술인 메모리 컨트롤러를 도시한다.
도 3b는 본 발명의 예시적 실시 예에서 구현될 수 있는 메모리 컨트롤러를 도시한다.
도 4는 본 발명의 예시적 실시 예에서 구현될 수 있는 공유 시스템 자원으로 보내질 다음 요청을 선택하는 것에 관한 일반화된 플로우차트를 도시한다.
도 5는 본 발명의 예시적 실시 예에서 구현될 수 있는 컴퓨터 프로그램 제품을 도시한다.
본 발명의 예시적 실시 예는, 단일 가상 서버 또는 가상 서버들의 그룹으로 보내질 수 있는(can be dedicated to) 요청들의 수를 제한하는 하드웨어 제어들을 공유 자원들에 대한 접근 시작 단계들(entrances)에 제공한다.
오늘날의 마이크로 프로세서 하드웨어 설계를 보면, 다수의 가상 프로세서들을 갖는 단일 가상 서버는 마이크로 프로세서 코어 외부에 있는 공유 하드웨어 자원들을 많이 요구할 수 있다. 그러한 요구들로 인해 동일 하드웨어 시스템상에서 동시에 실행되고 있는 다른 가상 서버들이 성능 저하를 일으킬 수 있다. 과거에는, 하이퍼바이저 또는 다른 유사 소프트웨어 시스템이, 가상 서버들의 동작 진행(progress)을 감시하여 다른 서버들을 희생하면서 동작 진행을 하는 가상 프로세스의 디스패칭을 제한하는 것은 상대적으로 쉬웠다. 하지만, 가상 서버 당 스레드들이 더 많아지고, 단일 마이크로 프로세서 상의 물리적 프로세서 코어들(이하 코어 프로세서들 또는 프로세서들이라 함)의 수가 현재 하나에서 여덟 개 이상으로 증가하면 하이퍼바이져가 감시하기는 더욱 어렵게 된다.
또한, 조잡한 캐시 동작으로 작업을 수행하는 가상 서버에 의하거나 또는 물리적 서버 동작을 혼란시키도록 하는 고의적 바이러스 프로그램에 의하여(다른 가능성들도 존재함) 시스템 자원들에 대한 과다한 수요가 일어날 수 있다.
본 발명의 예시적 실시 예는, 하이퍼바이저 또는 다른 제어 프로그램들이 가상 서버 또는 가상 서버들의 그룹에 의하여 소비될 수 있는 하드웨어 자원들을 제한하도록 한다. 본 발명의 예시적 실시 예는, 단일 가상 서버들에 의해 소비될 수 있는 공유 자원들의 최대량을 제한하는 능력을 제공한다. 상기 제한들은 하이퍼바이저 또는 다른 제어 프로그램에 의해 설정될 수 있다. 예시적 실시 예에서, 가상 서버 식별자(VSID)가 하이퍼바이저의 제어하에 각각의 고유의(unique) 가상 서버에 할당된다. 상기 VSID는 모든 요청들과 함께 전송되는데, 즉 프로세서를 떠나 시스템 내의 마이크로 프로세서 칩 상 또는 다른 칩들 또는 인터페이스들 상의 공유 자원들을 사용하려고 시도하는 모든 요청들과 함께 전송된다. 하드웨어 및/또는 소프트웨어 제어들은, 어떤 단일 가상 서버 또는 가상 서버들의 그룹이 하드웨어 자원들의 특정 비율 이상을 차지하는 것을 방지한다.
도 1은 예시적 실시 예에 의해 구현될 수 있는 멀티 프로세서 컴퓨팅 시스템의 일부분을 도시한다. 각각의 코어 프로세서(100)는, 특정 인터페이스들(110, 140) 및 다음 요청 우선 모듈(120)을 통하여 하나 또는 그 이상의 공유 자원들(150)에 접속된다.
본 발명의 예시적 실시 예에서, 다음 요청 우선 모듈(120)은 소프트웨어 내에 구현된다. 본 발명의 예시적 실시 예에서, 다음 요청 우선 모듈(120)은, 코어 프로세서(100) 및 공유 자원(150) 사이에 위치한 시스템 컨트롤 논리(SCL: System Control Logic)의 일부분이다. 상기 SCL은 다수의 마이크로 프로세서 코어들간에 물리적 연결수단을 제공하고, 또한 상기 코어들과 다른 시스템 요소들, 예를 들면 메모리, 데이터 캐시들, I/O 컨트롤러들, 특수 가속기들(specialized accelerators), 데이터 압축 엔진들 등 사이에 물리적 연결수단을 제공한다. 집중형 스위치 구조(centralized switch structure)를 이용하는 현대의 컴퓨팅 시스템들은, 스위치 기능 전용의(dedicated) 하나 또는 그 이상의 칩들 상에 상기 SCL이 구현되도록 할 수 있다. 이들 스위치 칩들은 그 후, 마이크로 프로세서 칩들, 메모리 칩들의 어레이들 그리고 시스템의 다른 엘리멘트들에 접속된다. 분산형 스위치 구조를 이용하는 컴퓨팅 시스템들은 각각의 마이크로 프로세서 칩들 상에 상기 SCL의 부분을 구현할 수 있다.
이 경우, 마이크로 프로세서 칩들은 직접 서로에게 접속되고, 이들 접속들을 위해 사용된 인터페이스들은 상기 SCL에 의하여 제어된다. 상기 SCL은, 소스 마이크로 프로세서 코어(source microprocessor core)와 공유 시스템 자원 사이에서 요청들의 흐름을 제어하도록 동작한다.
집중형 스위치 또는 분산형 스위치 중 어느 경우에서나, 본 발명의 실시 예를 사용하는 컴퓨팅 시스템은 현재 시스템들에서 관찰되는 SCL을 위한 통상적인 위치들에 더하여, 공유 자원(예를 들면 메모리 DRAM)에서 가장 가까운 지점에 SCL의 부분을 배치시킬 수 있다. 본 발명의 다른 예시적 실시 예들에서는, 메모리 컨트롤러 논리(표준 메모리 인터페이스를 구동하는)와 같은 공유 통신 인터페이스의 한쪽 끝에 SCL의 일부분을 배치 시킬 수도 있다. 특정 컴퓨팅 시스템 설계 내에서 상기 SCL의 일부분들의 배치는 많은 요소들에 의해 영향을 받는데, 상기 요소들은 가용한 논리 공간(available logic space), 전력 소비(power dissipation) 및 설계 복잡성(design complexity)을 포함하되, 이들에 한정되지 않는다. 오늘날의 많은 설계들이 멀티스레드된 프로세서들(multithreaded processors)을 포함하고 있기 때문에, 예시적 실시 예들에서 중요 공유 자원들은 코어로서 동일 마이크로 프로세서 칩 상에 위치될 수 있고, 따라서 SCL의 일부분들도 마이크로 프로세서 칩 상에 위치될 수 있다. 다른 예시적 실시 예들은 상기 논리를 SRAM 또는 eDRAM 데이터 캐시와 같은 공유 자원으로 이끄는 논리의 공유 파이프라인의 시작 부분에 위치시킬 수 있다.
도 1에 도시된 시스템 내의 하나의 코어 프로세서(100b)는 인터페이스(110b)를 통해 다음 요청 우선 모듈(120a)에 접속된이다. 동일 코어 프로세서(100b)는 다른 전용(another dedicated) 인터페이스(110c)을 통해 다음 요청 우선 모듈(120b)에 접속된이다. 공유 자원들(150)에 대한 접근은 다음 요청 우선 모듈들(120)에 의해 제어된다.
도 1에 도시된 다음 요청 우선 모듈들(120)은 가상 서버 제어 논리(121) 및 다음 요청 우선 논리(122)를 포함한다. 가상 서버 제어 논리(121)의 예시적 실시 예는 아래의 도 2에서 자세히 설명된다. 다음 요청 우선 논리(122)의 예시적 실시 예는 아래의 도 4에서 자세히 설명된다.
본 발명의 예시적 실시 예는 다수의 IBM P6 마이크로 프로세서들을 사용하는데, 각각의 프로세서들은 네개의 프로세싱 코어들을 갖는다. 본 발명의 예시적 실시 예들은 어떤 수(any number)의 마이크로 프로세서 칩들을 갖는 시스템들에서도 사용될 수 있다. 또한, 예시적 실시 예들은 어떤 수의 코어 프로세서들을 포함하는 어떤 종류(any type)의 마이크로 프로세서에도 구현될 수 있다. 또한, 예시적 실시 예들은 많은 멀티스레딩(multithreading) 구현들 중 어느 것이라도(any) 지원하는 마이크로 프로세서들과 결합하여 사용 될 수 있다.
도 1에 도시된 것처럼, VSID 레지스터(160)는 시스템 내의 각 코어 프로세서들(100)에 제공된다. VSID 레지스터들(160)은 코어 프로세서들(100)상에 실행되는 소프트웨어에 의해서 기록될 수 있다. 본 발명의 예시적 실시 예는 위 작업을 수행하기 위해 하이퍼바이저를 사용한다. 멀티스레딩이 활성화(active)될 것이 예상되는 그리고 개별 스레드들이 다수의 가상 서버들로부터의 소프트웨어를 동시에 수행하도록 할당될 수 있는 시스템에서, VSID 레지스터(160)는 각 스레드에 제공될 수 있다. 본 발명의 예시적 실시 예에서, 상기 하이퍼바이저는 그가 제어하는 각각의 가상 서버에 대한 VSID를 선택한다. 가상 서버가 물리적 프로세서(예를 들면, 코어 프로세서(100))상으로 디스패치 되는 경우, 상기 VSID는 코어 프로세서(100)의 VSID 레지스터(160)에 기록된다.
VSID 레지스터(160)의 내용들은 명령, 주소 및 데이터를 포함하는데, 이들은 인터페이스들(110)을 통하여 공유 자원들(150)로 전송된다. 인터페이스들(110)은 현재 요청 인터페이스들(current request interfaces), 예를 들어 현재의(contemporary) 메모리 컨트롤러들에 연결하기 위해 사용된 것들과 유사할 수 있다. VSID 정보와 선행-기술의 명령, 주소, 및 데이터 정보의 조합은 공유 자원들(150)에 대한 접근을 제어하기 위해 코어 프로세서(100)로부터의 논리 다운스트림(logic downstream)에 의해 사용된다. 본 발명의 예시적 실시 예는 코어 프로세서들(100a-100c)을 갖는 마이크로 프로세서 칩 외부에 위치하는(칩 상에 위치하는 것이 아님) 공유 자원들(150)에 대한 접근을 제어하기 위해 다음 요청 우선 모듈(120)을 사용한다.
다른 실시 예들은 마이크로 프로세서 칩의 내부에 위치한 자원들, 예를 들면 온-칩 메모리 컨트롤러들, 온-칩 I/O 컨트롤러들, 온-칩 데이터 캐시들 또는 다른 모든 온-칩 자원에 대한 접근을 제어하기 위해 유사 하드웨어 및 방법들을 사용할 수 있다.
본 발명의 예시적 실시 예들에서, VSID는 하이퍼바이저가 컴퓨팅 시스템 상에서 현재 호스팅하는 각 가상 서버에 대하여 고유하다(unique). 본 발명의 다른 실시 예들은 고유 VSID의 해쉬(hash), 혹은 전체(full) VSID 비트들의 단순(simple) 서브셋를 사용할 수 있다. 본 발명의 한 예시적 실시 예는, 코어 프로세서들(100)로부터 공유 자원들(150)로 전송되어야 하는 요청 정보에 VSID를 추가하는데 요구되는 하드웨어 오버헤드를 감소시키기 위해 단지 VSID의 최하위 두 비트(two lowest order bits)만 사용한다. 상기 VSID의 서브셋을 사용하면, 가상 서브들에 대한 요청 슬롯들(request slots)의 분배 정확도 레벨은 감소하지만, 컴퓨팅 시스템 상에 실행 중인 대부분의 가상 서버들이 예측 불가능한 성능을 내지 않도록 할 수 있다.
여기서 사용되는, VSID는 요청자(예를 들면 가상 서버)를 공유 자원(예를 들면 메모리)에 대한 요청에 연관시키기 위해 사용될 수 있는 요청자 식별자(requestor identifier)의 한 예이다. 또 다른 실시 예들에서, 다른 요청자 식별자들이 사용될 수 있는데, 이는 이 기술분야에서 통상의 지식을 가진 자들에게 명백하게 이해가 될 것이다.
코어 프로세서들(100) 및 공유 자원들(150)간의 인터커넥션(interconnection)은 도 1에서 포인트-투-포인트(point-to-point) 버스들의 집합으로 도시된다. 본 발명의 다른 실시 예들은 기타 모든 종류의 인터커넥션을 사용할 수 있는데, 예를 들면 공유 버스(shared bus), 풀 크로스바 스위치(full crossbar switch) 또는 다른 많은 구성들 가운데 인터커넥션된 일련의 스위치들을 사용할 수 있다.
도 2는 본 발명의 예시적 실시 예에 의해서 사용될 수 있는 가상 서버 제어 논리(121)를 도시한다. 도 2에 도시된 가상 서버 제어 논리(121)는, 공유 자원(150)에 대한 펜딩 요청들을 저장하기 위하여 요청 큐를 구성하는 레지스터들(220)의 그룹을 포함한다. 레지스터들(220)은 또한 각각의 요청에 대한 요청자 식별자들(예를 들면 VSID들)을 포함한다. 상기 요청자 식별자들은 상기 요청을 상기 요청자(예를 들면, 코어 프로세서(100)상에 실행중인 가상 서버)와 연관시킨다. 상기 요청 큐가 정렬되고(예를 들어 각 요청이 큐에서 얼마나 오래 있었는지에 기초하여서, 또는 큐에 있었던 시간 및 요청자와 연관된 우선순위의 조합, 등에 기초하여 정렬됨), 그리고 공유 자원(150)이 새로운 요청을 처리하기 위해 이용 가능할 때 상기 요청들 중 하나가 다음 요청으로 지정되며, 지정된 다음 요청은 프로세싱을 위해 평가된다. 레지스터들(220)은 인터페이스들(110) 중 하나를 통하여 코어 프로세서(100)로부터 도달한 펜딩 요청들을 저장한다. 본 발명의 예시적 실시 예는, 네 개의 요청들이 펜딩 상태로 유지되도록 한다; 다른 실시 예들은 상기 기능을 위해 얼마던지 추가의(또는 몇개의) 레지스터들을 사용 할 수 있다. 큐에 유지되는 요청들의 개수는, 또한 프로그램 가능한 깊이(programmable depth)로 설계될 수 있다.
본 발명의 예시적 실시 예는, 또한 다수의 레지스터들(230)로 구성된 이전 요청자 큐(previous requestor queue) 를 포함한다. 본 발명의 예시적 실시 예들은, 공유 자원(150)에 대하여 우선권이 부여될 마지막(last) 네 개의 요청들을 유지하기 위해 네 자리 깊이의 선입선출 버퍼(four position deep first-in-first-out buffer)를 사용하여 이전 요청자 큐를 구현한다. 또한 다른 어떠한 깊이(any other depth)의 버퍼도 사용될 수 있다.
상기 버퍼는 또한 프로그램 가능 깊이로 설계될 수 있다. 예시적 실시 예에서, 상기 깊이는 하이퍼바이저 또는 다른 모든 적합한 관리(supervisor) 소프트웨어 또는 적합한 하드웨어 알고리즘에 의해 설정될 수 있다. 예시적 실시 예에서, 상기 버퍼의 깊이는 시스템의 초기 파우어-온 시퀀스(initial power-on sequence) 동안에 설정되고, 그 다음 하이퍼바이저에 의해서 나중에 변경된다.
도 2에 도시된 요청 큐(220)는 본 발명의 한 예시적 실시 예에서 구현될 수 있는 펜딩 요청 메커니즘(pending request mechanism)의 한 예이다. 하드웨어 및/또는 소프트웨어에 펜딩 요청 메커니즘을 구현하는 다른 방식들도 또한 본 발명의 예시적 실시 예들에서 사용될 수 있다. 예를 들면, 상기 펜딩 요청 메커니즘은 특정 VSID에 특혜를 주도록(favor) 설계될 수 있다. 특혜를 받은 VSID는 공유 자원 사용의 특정 부분(specific fraction), 예를 들면 25%를 보장 받을(guaranteed) 수 있다.
이와 유사하게, 도 2에 도시된 이전 요청자 큐(230)는 본 발명의 한 실시예에서 구현될 수 있는로깅 메커니즘(logging mechanism)의 한 예이다. 하드웨어 및/또는 소프트웨어에 로깅 메커니즘을 구현하는 다른 방식들 또한 본 발명의 예시적 실시 예들에서 사용될 수 있다. 예를 들면, 로그들(logs)은 카운터들의 세트(set of counters)로 구현될 수 있는데, 상기 카운터들의세트는 특정 VSID를 갖는 요청이 공유 자원의 다음 사용(next use)에 대하여 우선권(priority)이 부여될 때마다 하나씩 증가한다(increment). 각 카운터는 VSID들의 범위(range)에 할당될 수 있다. 펜딩 요청 메커니즘들 및 로깅 메커니즘들의 넓은 범위의 조합들이 본 발명의 실시 예들을 구현하는데 사용될 수 있다. 펜딩 요청 메커니즘의 상태(state)와 함께 로깅 메커니즘의 상태를 사용하는 모든 적절한 논리(any suitable logic)가, 공유 자원으로 보내질 다음 요청을 결정하는데 사용될 수 있다.
본 발명의 예시적 실시 예는 공유 자원(150)으로서, 메모리를 사용한다. 미국 특허 번호 7,320,047에 기재된 도 3a의, 메모리 시스템(300)은 본 발명의 실시 예에 사용될 수 있는 메모리 시스템 선행기술의 한 예이다. 메모리 시스템(300)은 메모리 컨트롤러(310), 다수의 포인트-투-포인트 링크들(320a-320n), 다수의 메모리 서브시스템들(330a-330c), 및 인터페이스(375)상의 다수의 메모리 서브시스템 포트들(378a-378n)을 포함한다. 메모리 서브시스템(330a)에 관한 상세한 묘사는 도 3a의 메모리 서브시스템(340)에 도시되어 있다. 메모리 서브시스템(340)은 메모리 서브시스템(340)상에 배치된 버퍼 디바이스(350) 및 다수의 메모리 디바이스들(360)을 포함한다. 버퍼 디바이스(350)은 채널들(370)을 통하여 다수의 메모리 디바이스들(360)에 결합된다.
도 3b에 도시된 메모리 시스템(300B)은, 도 3a에 도시된 메모리 시스템 선행 기술에 구현가능 한 예시적 실시 예를 도시한다. 도 3a와 유사하게, 도 3b는 메모리 컨트롤러(310B), 다수의 포인트-투-포인트 링크들(320aB-320nB), 다수의 메모리 서브시스템들(330aB-330cB), 및 인터페이스(375B)상의 다수의 메모리 서브시스템 포트들(378aB-378nB)을 포함한다. 메모리 서브시스템(330aB)에 관한 상세한 묘사는 도 3B의 메모리 서브시스템(340B)로 도시되어 있다. 메모리 서브시스템(340B)은 메모리 서브시스템(340B)상에 배치된 버퍼 디바이스(350B) 및 다수의 메모리 디바이스들(360B)을 포함한다. 버퍼 디바이스(350B)은 채널들(370B)을 통하여 다수의 메모리 디바이스들(360B)에 결합된다. 도 3b에 도시된 메모리 컨트롤러(310B)는, 또한 도 3b의 구성요소(390B)로 도시된 다음 요청 우선 논리(120,130)를 포함한다. 도시된 예시적 실시 예들은 메모리 컨트롤러(310B) 내에 다음 요청 우선 모듈(390B)를 위치시키지만, 상기 다음 요청 우선 모듈은 또한 메모리 버퍼 디바이스(350B) 또는 메모리 디바이스들(360B)내에 위치될 수 있다. 예시적 실시 예들은 메모리 시스템들 내에서만 사용되도록 한정되지 않는데, 이는 다른 모든 공유 자원이 유사한 방법으로 제어될 수 있기 때문이다.
도 4는 본 발명의 예시적 실시 예에서 구현될 수 있는 공유된 시스템 자원(150)으로 보내지는 다음 요청을 선택하는 일반화된 플로우차트를 도시한다. 도 4는, 가상 서버 제어 논리(121) 및 요청 인터페이스(140)을 관리하는 다음 요청 우선 논리(122)내에서 구현되는 기능들을 도시한다. 블록(410)에서, 다음 요청 우선 논리(122)는 요청 큐에서 다음 엔트리(next entry)를 검사한다. 전술한 것처럼, 본 발명의 한 예시적 실시 예에서 다음 엔트리는, 요청 큐에서 가장 오래된 엔트리이다. 블록(420)에서, 다음 엔트리와 연관된 요청자 식별자가 이전 요청자 큐의 엔트리들 중 어느 것과 매치(match)하는지를 결정한다. 도 4에 도시된 예시적 실시 예에서, 상기 이전 요청자 큐는 네 개 깊이의(four deep) 선입선출 버퍼로 구현되는데, 상기 버퍼는 공유 자원에 대해 우선권이 부여된 마지막 네 개의 요청들의 요청자 식별자들을 저장한다. 상기 예에서, 네 개(four)는 가장 최근 부여된 우선권들의 특정 수(specified number)일 뿐이고, 다른 실시 예들에서는 다른 특정 수들이 구현될 수 있다.
블록(420)에서, 요청자 식별자가 이전 요청자 큐에서의 요청자 식별자들 중 어떤 것과 매치하는 것으로 결정된 경우, 그 후 프로세싱은 다음 요청이 요청 큐에서 마지막 요청인지를 결정하는 블록(450)으로 진행한다. 이 경우 공유 자원(150)을 기다리는 다른 요청들이 없기 때문에, 상기 요청자는 블록 (460)에서 공유 자원(150)에 대한 우선권을 부여 받아야 한다; 또 다른 예시적 실시 예에서, 요청 큐에 하나의 요청만 존재하고 상기 요청과 연관된 요청자 식별자가 이전 요청자 큐에서 발견되는 경우에, 다른 조치가 취해진다. 즉, 그러한 경우 다음 요청에 대해 우선권이 부여되지 않고, 다음 사이클에 아무런 요청도 공유 자원(150)으로 보내지지 않는다. 공유 자원(150)이 한 번에 처리할 수 있는 요청들의 개수와 비교하여, 요청에 관한 서비스 타임이 길어지는 경우, 이러한 조치는 바람직할 것이다.
블록(450)에서 다음 요청이 요청 큐에서 마지막 요청이 아닌 것으로 결정되면, 큐 내의 다른 요청이 다음 요청으로 지정되고 (예를 들면, 그 요청이 다음으로 가장 오래된 요청이라는 것에 기초하여, 또는 다른 우선권 부여 계획에 기초하여) 그 다음에 프로세싱은 블록(410)으로 진행된다.
블록(420)에서, 요청자 식별자가 이전 요청자 큐 내의 요청자 식별자들 중 어떤 것과도 매치하지 않는다고 결정되면, 프로세싱은 블록(430)으로 진행한다. 블록(430)에서, 다음 요청이 공유 자원(150)에 대한 우선권을 부여 받는다. 블록(440)에서, 상기 다음 요청과 연관된 요청자 식별자는 상기 이전 요청자 큐에 더해진다. 본 발명의 예시적 실시 예에서, 상기 새로운 요청자 식별자는 상기 이전 요청자 큐에서 가장 오래된 엔트리를 대체한다. 우선권이 부여된 상기 요청은, 인터페이스(140)를 통해 공유 자원(150)으로 보내지는 다음 요청이 된다.
도 4는 예시적 실시 예에서 구현될 수 있는 하나의 프로세싱 플로우를 도시하고 다른 프로세싱 플로우들 또한 본 발명의 다른 예시적 실시 예들에서 구현될 수 있다. 예를 들면, 본 발명의 다른 예시적 실시 예에서, 다른 모든 가상 서버들의 요청들 중에서 하나 또는 그 이상의 특정 가상 서버들로부터의 요청들에게 특혜를 부여하는 우선권 기능(priority function)은, 하나 또는 그 이상의 가상 서버들에 하나의 요청자 식별자를 할당하고 이전 요청자 큐(또는 다른 로깅 메커니즘)에 얼마나 많은 이전 요청자 식별자들을 저장할 지를 선택함으로써 구현될 수 있다. 한 예로써, 특정 가상 서버는 많은 CPU들 사이에 공유되는 메모리 컨트롤러에 대하여 적어도 10%의 요청 슬롯들이 보장될 수 있다.
본 발명의 다른 예시적 실시 예에서는 VSID(요청자 식별자의 한 예)와 기능적으로 유사한 요청 태그가 사용되지만, 그것은 소프트웨어의 다른 층(different layer of software)에 의해 생성된다. 한 예시적 실시 예는 하이퍼바이저에 의해 생성된 VSID를 사용하지만, 모든(any) 개별 운영 체제는, 자신의 운영 체제상에서 실행 중인 작업의 개별 유닛들을 식별하는 한 세트의 프로세스 ID들(PIDs)을 생성할 수 있다. 이들 PID들은 구현될 수 있는 요청자 식별자의 다른 종류이며, 이들은 디스패치 동안 동일 하드웨어 레지스터들에 VSID들로서 직접 기록될 수 있다.
또 다른 예시적 실시 예에서, CPU의 VSID를 변경하여 CPU의 제어를 하이퍼바이저로 넘기려는 운영체제에 의한 시도를 가로채는 하드웨어가 설계된다. 이 경우에 있어서, 상기 하이퍼바이저는 상기 VSID 하드웨어 레지스터가 어떤 값에 설정되어야 하는 지를 결정하기 위해 사용할 수 있는 알고리즘들은 많다.
많은 수의 가상 서버들을 실행할 때 기술적 효과들 및 잇점들(technical effects and benefits)은 물리적 컴퓨터 서버가 높은 수준의 성능을 신뢰할만한 수준으로 제공하는 능력을 포함한다. 상기 서버는 하이퍼바이저 또는 다른 제어 프로그램으로 하여금 가상 서버 또는 가상 서버들의 그룹에 의해 소비될 수 있는 하드웨어 자원량에 대한 제한을 설정하도록 한다. 이는 단일 가상 서버에 의해 소비될 수 있는 최대 공유 자원양을 제한하는 능력을 제공하고 그 결과 프로세서의 성능이 향상될 수 있다.
여기서 사용된 전문 용어는 오직 특정한 실시 예들을 묘사하기 위함이지, 본 발명을 한정하기 위한 의도가 아니다. 이 설명에서 사용된 단수 형태의 단어들은 문맥상 명백하게 단수임을 표시하는 경우가 아닌 한 복수 형태도 포함한다. “포함하다” 및/또는 “포함하는”이란 용어는, 본 명세서의 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성들의 존재를 명시할 때 사용되지만, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성들 및/또는 그들의 그룹들의 추가사항을 배제하는 것은 아니다.
아래의 청구항들의 대응 구조들, 재료들, 동작들, 및 모든 수단 혹은 단계 플러스 기능 요소들의 균등물들은 모든 구조, 재료, 혹은 구체적으로 청구된 다른 청구된 요소들과 조합으로 기능을 수행하기 위한 동작을 포함한다. 본 발명의 설명은 예시 및 설명의 목적으로 제공될 뿐이며, 개시된 형태로서 본 발명을 모두 포함하고 있다거나(exhaustive) 혹은 제한 하려 하는 것은 아니다. 많은 수정들 및 변형들은 이 기술분야에서 통상의 지식을 가진 자들에게 본 발명의 범위 및 취지를 벗어남이 없이 명백하게 이해될 것이다. 상기 실시 예들은 본 발명의 원리 및 명세서의 실시를 잘 설명하기 위해서 선택되고 기재되었다. 또한 이 기술분야의 통상의 지식을 가진 자가 특정 사용에 적합한 다양한 변형들을 갖는 다양한 실시 예들을 위해 본 발명을 이해하도록 기재되었다.
이 기술분야에서 통상의 지식을 갖는 자에게 본 발명의 실시 예들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로써 구현될 수 있음이 이해될 것이다. 따라서, 본 발명의 실시 예들은 완전한 하드웨어 실시예, 완전한 소프트웨어 실시예(펌웨어, 상주 소프트웨어(resident software), 마이크로 코드(micro-code)등을 포함함) 또는 소프트웨어 및 하드웨어를 결합한 실시 예들 -일반적으로 여기서는 “회로”, “모듈”, 또는 “시스템”으로 언급됨-의 형태를 가질 수 있다. 또한, 본 발명의 실시 예들은 유형의 매체(컴퓨터 사용 가능 프로그램 코드가 포함되어 있음)에 구현된 컴퓨터 프로그램 제품의 형태를 가질 수 있다. 하나 또는 그 이상의 컴퓨터 사용 가능 또는 컴퓨터 읽기 가능 매체(들)의 모든 조합도 이용될 수 있다. 상기 컴퓨터 사용 가능 또는 컴퓨터 읽기 가능 매체는 예를 들면, 전기, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 전달 매체가 될 수 있지만 이에 한정되지 않는다. 상기 컴퓨터 읽기 가능 매체의 더 많은 특정한 예들(모두 예시한 것이 아님)은 아래의 것들을 포함할 수 있다. 하나 또는 그 이상의 배선들을 갖는 전기적 연결, 이동 가능한 컴퓨터 디스켓, 하드 디스크, RAM, ROM, EPROM(erasable programmable read-only memory) 또는 플래시 메모리, 광섬유, 이동 가능한 CD-ROM, 광 스토리지 장치, 전송 매체, 예를 들면 이들을 지지하는 인터넷 또는 인트라넷, 또는 마그네틱 스토리지 장치를 포함한다. 컴퓨터 사용 가능 또는 컴퓨터 읽기 가능 매체는 어떤 프로그램이 프린트(printed)되는지에 따라 종이 또는 다른 적합한 매체가 될 수 있다. 프로그램은 전기적으로 캡쳐될 수 있고(예를 들면 종이 또는 다른 매체의 광학 스캔을 통하여), 그 후 컴파일, 인터프리트, 또는 필요한 경우엔 다른 적합한 방법으로 진행될 수 있다. 그 후 컴퓨터 메모리에 저장된다. 본 명세서에서, 컴퓨터 사용 가능 또는 컴퓨터 읽기 가능 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의하여 혹은 연관되어 사용되는 프로그램을 저장, 저장, 전송, 전파 혹은 전달할 수 있는 모든 매체가 될 수 있다. 컴퓨터 사용가능 매체는, 베이스 밴드(baseband) 내 또는 캐리어 웨이브(carrier wave)의 일부로써, 컴퓨터 사용가능 프로그램 코드가 포함되어 전송된 데이터 신호를 포함할 수 있다. 컴퓨터 사용가능 매체에 포함된 프로그램 코드는 적절한 모든 매체를 사용하여 전해질 수 있는데, 무선, 유선, 광학 섬유 케이블, RF 등을 포함하지만 이에 한정되지 않는다.
본 발명의 실시 예들 위한 동작을 수행하는 컴퓨터 프로그램 코드는 하나 또는 그 이상의 프로그래밍 언어들의 모든 조합으로 기록될 수 있다. 상기 프로그래밍 언어는 객체 지향 프로그래밍 언어, 예를 들면 자바, Smalltalk, C++ 또는 이와 유사한 것들 과 종래의 절차적 프로그래밍 언어, 예를 들면 “C” 프로그래밍 언어 또는 유사한 프로그래밍 언어를 포함한다. 상기 프로그램 코드는 유저의 컴퓨터 상에 전체적으로, 유저의 컴퓨터 상에 부분적으로 실행할 수 있다. 또한 독립형 소프트웨어 패키지로써 유저의 컴퓨터 상에 부분적으로 실행할 수 있고, 원격 컴퓨터 상에 부분적으로, 또는 원격 컴퓨터나 서버상에 전체적으로 실행 할 수 있다. 위의 마지막 시나리오에서, 상기 원격 컴퓨터는 모든 타입의 네트워크 통하여 상기 유저의 컴퓨터에 연결될 수 있는데, 상기 네트워크는 LAN(local area network), 또는 WAN(wide area network)을 포함할 수 있다. 또한 상기 연결은 외부 컴퓨터에 만들어 질 수 있다(예를 들면, 인터넷을 통하여 인터넷 서비스 제공자(ISP)를 사용한다).
본 발명의 실시 예들은, 플로우차트 설명들 및/또는 본 발명의 실시 예들을 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 블록도들을 참조하여 설명된다. 상기 플로우차트 설명 및/또는 블록도들의 각 블록, 및 상기 플로우차트 설명 및/또는 블록도들의 블록들의 조합은, 컴퓨터 프로그램 명령들에 의해 구현될 수 있다.
이 컴퓨터 프로그램 명령들은 범용 컴퓨터, 특별용 컴퓨터, 또는 다른 프로그램 가능한 데이터 처리 장치의 프로세스에 머신(machine)을 생성하도록 제공된다. 그리하여 상기 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 장치의 프로세서를 통하여 실행되는 명령들은, 상기 플로우차트 내에 및/또는 블록도의 블록 또는 블록들에 명시된 상기 기능들/기술들을 구현하는 수단들을 생성한다. 이 컴퓨터 프로그램 명령들 또한 컴퓨터 읽기 가능 매체에 저장될 수 있는데, 상기 컴퓨터 읽기 가능 매체는 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치, 또는 다른 디바이스들이 특정한 방식으로 기능하도록 지시할 수 있다. 그리하여, 상기 컴퓨터 읽기 가능 매체에 저장된 명령들은 제품을 생성하는데, 이것은 플로우차트 내에 및/또는 블록도의 블록 또는 블록들에 명시된 상기 기능/기술을 구현하는 명령들을 포함한다.
상기 컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치, 또는 다른 디바이스들 상으로 로드 될 수 있는데, 이는 일련의 동작 단계들이 상기 컴퓨터, 다른 프로그램 가능한 장치 또는 다른 디바이스들 상에 수행되어 프로세스가 구현되는 컴퓨터를 생성하기 위함이다. 그리하여, 컴퓨터 또는 다른 프로그램 가능한 장치 상에 실행하는 상기 명령들은, 플로우차트 내 및/또는 블록도의 블록 또는 블록들에 명시된 상기 기능들/기술들을 구현하는 프로세스들을 제공한다.
전술한 것처럼, 실시 예들은 위의 프로세스들을 실시하기 위해, 컴퓨터로 구현된 프로세스들 및 장치들의 형태로 구현될 수 있다. 예시적 실시 예들에서, 본 발명은 하나 또는 그 이상의 네트워크 구성들에 의해 실행되는 컴퓨터 프로그램 코드로 구현된다. 실시 예들은 도 5에 도시된 컴퓨터 프로그램 제품(500)을 포함하는데, 상기 컴퓨터 프로그램 제품은 컴퓨터 프로그램 코드 논리(504) -상기 컴퓨터 프로그램 코드 논리는 제조물로써의 유형의 매체(tangible media)에서 구현되는 명령들을 저장함- 를 갖는 컴퓨터 사용가능 매체(502)에 관한 것이다. 컴퓨터 사용가능 매체(502)에 관한 예시적 제조물들은 플로피 디스켓들, CD-ROM들, 하드 드라이브들, 범용 직렬 버스(USB) 플래시 드라이브들, 또는 다른 모든 컴퓨터-읽기가능 스토리지 매체를 포함할 수 있되, 컴퓨터 프로그램 코드 논리(504)가 컴퓨터로 로드되어 실행되는 경우, 상기 컴퓨터는 본 발명의 실시 예들을 실시하기 위한 장치가 된다. 실시 예들은 컴퓨터 프로그램 코드 논리(504)(예를 들면, 그것이 스토리지 매체에 저장되었던지, 컴퓨터로 로드되어 및/또는 컴퓨터에 의해 실행되었던지, 또는 몇몇의 전송 매체, 즉 전기적 배선 또는 케이블링을 통하여, 광섬유 또는 전자기 방사선를 통하여 전송되었던지 간에)를 포함하되, 컴퓨터 프로그램 코드 논리(504)가 컴퓨터로 로드되어 실행되는 경우, 상기 컴퓨터는 본 발명의 실시 예들을 실시하기 위한 장치가 된다. 컴퓨터 프로그램 코드 논리(504) 세그먼트들이 범용 마이크로 프로세서상에 구현될 때, 상기 컴퓨터 프로그램 코드 논리 세그먼트들은 특정 논리 회로들을 생성하기 위해 마이크로 프로세서를 구성한다.
도면들 내에 있는 상기 플로우차트 및 블록도들은 본 발명의 다양한 실시 예에 따른 구조, 기능, 및 시스템, 방법 및 컴퓨터 프로그램 제품들의 가능한 동작 구현들을 설명한다. 이 점과 관련하여, 상기 플로우차트 내의 또는 블록도의 각 블록은 모듈, 구성, 세그먼트, 또는 코드의 일부를 나타낼 수 있다. 상기 코드는 명시된 논리 기능(들)을 구현하는 하나 또는 그 이상의 실행 가능한 명령들을 포함한다. 또한, 몇몇의 다른 구현들에서, 상기 블록에 기재된 기능들은 상기 도면들에 기재된 순서와는 다르게 일어날 수 있다. 예를 들면, 연속적으로 도시된 두 블록은 사실, 실제 동시적으로 실행되거나, 상기 블록들은 수반된 기능에 따라 때때로 역순으로 실행 될 수 있다. 또한, 상기 블록도들 및/또는 플로우차트 설명의 각 블록, 및 상기 블록도들 및/또는 플로우차트 설명 내의 블록들의 조합은, 상기 명시된 기능들 또는 기술들, 또는 특별용 하드웨어 및 컴퓨터 명령어들의 조합들을 수행하는 특별용 하드웨어 기반의 시스템들에 의해 구현될 수 있다.

Claims (20)

  1. 공유 자원의 할당을 제어하는 시스템에 있어서, 상기 시스템은 :
    공유 자원에 접속되고 그리고 요청자 식별자들(requestor identifiers)에 의해 식별되는 다수의 요청자들(requestors)에 접속되는 다음 요청 우선권 모듈(next request priority module)을 포함하되, 상기 다음 요청 우선권 모듈은 :
    하나 또는 그 이상의 상기 요청자들로부터의 상기 공유 자원에 대한 하나 또는 그 이상의 펜딩 요청들(pending requests)에게 우선순위를 부여하는(prioritizing) 펜딩 요청 메커니즘(pending request mechanism) -상기 펜딩 요청 각각은 연관된 요청자 식별자를 포함하고, 상기 펜딩 요청들 중 하나는 연관된 다음 요청자 식별자를 갖는 다음 펜딩 요청으로 지정됨-;
    상기 공유 자원에 대한 우선권이 부여된 이전 요청들과 연관된 요청자 식별자들을 로깅하는 로깅 메커니즘(logging mechanism); 및
    상기 다음 펜딩 요청 및 상기 다음 요청자 식별자들에 접근하여, 상기 다음 펜딩 요청이 상기 공유 자원에 대한 우선권을 부여 받아야 하는 지를 결정하고 - 상기 결정은 로그된 요청자 식별자들 및 상기 다음 요청자 식별자들에 반응하여 이루어짐 -, 상기 펜딩 요청이 공유 자원에 대한 우선권을 부여 받아야 한다는 결정에 반응하여 상기 공유 자원에 대한 우선권을 상기 다음 펜딩 요청에 대해 부여하며, 그리고 상기 부여에 반응하여 상기 다음 요청자 식별자를 로그하는, 다음 요청 우선 논리(next request priority logic)를 포함하는,
    시스템.
  2. 제 1항에 있어서,
    상기 다음 펜딩 요청이 유일한(only) 펜딩 요청인 것에 반응하여, 상기 다음 펜딩 요청이 상기 공유 자원에 대한 우선권을 부여 받아야 한다 것이 결정되는,
    시스템.
  3. 제 1항에 있어서,
    상기 다음 요청 우선권 논리(the next request priority logic)는, 상기 다음 펜딩 요청이 상기 공유 자원에 대한 우선권을 부여 받지 않아야 한다는 결정에 반응하여, 다른 펜딩 요청 및 연관된 요청자 식별자들을 다음 펜딩 요청 및 다음 요청자 식별자로 더 지정하는,
    시스템.
  4. 제 1항에 있어서,
    상기 공유자원에 대해 부여된 특정 수(specified number)의 가장 최근 우선권들의 요청 식별자들이 로그되는,
    시스템.
  5. 제 1항에 있어서,
    상기 다음 요청자 식별자가 로그된 요청자 식별자와 매치(match)하지 않는 것에 반응하여 상기 다음 펜딩 요청이 상기 공유 자원에 대한 우선권을 부여 받아야 한다는 것이 결정되는,
    시스템.
  6. 제 1항에 있어서,
    상기 요청자는 가상 서버인,
    시스템.
  7. 제 1항에 있어서,
    상기 요청자는 가상 서버들의 그룹인,
    시스템.
  8. 제 1항에 있어서,
    상기 공유 자원은 메모리이고, 상기 다음 요청 우선권 모듈은 메모리 컨트롤러(memory controller) 내에 위치하는,
    시스템.
  9. 제 1항에 있어서,
    상기 다음 요청 우선권 논리는, 상기 공유 자원에 대한 우선권을 상기 다음 요청에 대하여 부여하는 것에 반응하여 상기 다음 요청을 상기 공유 자원으로 더 전송하는,
    시스템.
  10. 제 1항에 있어서,
    상기 다음 요청 우선권 모듈은 시스템 제어 논리(SCL: System control logic)에 의해 구현되는,
    시스템.
  11. 공유 자원들의 할당을 제어하는 방법에 있어서, 상기 방법은 :
    공유 자원에 접근하기 위한 요청을 수신하는 단계 -상기 요청은 프로세서 상에서 실행 중인 요청자로부터 수신되고, 상기 수신은 상기 프로세서 및 상기 공유 자원에 접속된 다음 요청 우선권 모듈에서 일어남- ;
    상기 공유자원에 대해서 부여된 특정 수(specified number)의 가장 최근 우선권들 중 어느 것(any) 이 상기 요청자에 대한 것이었는지를 결정하는 단계;
    상기 공유자원에 대해서 부여된 특정 수의 최근 우선권들 중 어느 것도 상기 요청자에 대한 것은 없었다는 결정에 반응하여 상기 공유 자원에 대한 우선권을 상기 요청에게 부여하는 단계; 및
    상기 공유자원에 대해서 부여된 특정 수의 가장 최근 우선권들 중 어느 하나가 상기 요청자에 대한 것이었다는 결정에 반응하여:
    상기 공유 자원에 대한 하나 또는 그 이상의 다른 요청들이 펜딩 중인지 결정하는 단계; 및
    상기 공유 자원에 대한 하나 또는 그 이상의 다른 요청들이 펜딩 중이라는 결정에 반응하여 상기 다른 요청들 중 하나에게 상기 공유 자원에 대한 우선권이 부여되어야 하는 지를 결정하는 단계를 포함하는,
    방법.
  12. 제 11항에 있어서, 상기 방법은
    상기 공유 자원에 대한 다른 요청들이 펜딩 중이 아니라는 결정에 반응하여, 상기 공유 자원에 대한 우선권을 상기 요청에 대하여 부여하는 단계를 더 포함하는,
    방법.
  13. 제 11항에 있어서,
    상기 다음 요청 우선권 모듈은 SCL에 의해 구현되는,
    방법.
  14. 제 11항에 있어서, 상기 방법은
    상기 공유 자원에 대한 우선권을 상기 요청에 대하여 부여하는 것에 반응하여, 상기 요청을 상기 공유 자원으로 전송하는 단계를 더 포함하는,
    방법.
  15. 공유 자원들의 할당을 제어하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 :
    유형의 저장 매체를 포함하되, 상기 유형의 저장 매체는 처리 회로에 의해 읽기 가능하고 방법을 수행하기 위해 상기 처리 회로에 의해 실행되는 명령들을 저장하며, 상기 방법은 :
    공유 자원에 접근하기 위한 요청을 수신하는 단계 -상기 요청은 프로세서 상에서 실행 중인 요청자로부터 수신되고, 상기 수신은 상기 프로세서 및 상기 공유 자원에 접속된 다음 요청 우선권 모듈에서 일어남- ;
    상기 공유자원에 대해서 부여된 특정 수(specified number)의 가장 최근 우선권들 중 어느 것이 상기 요청자에 대한 것이었는지를 결정하는 단계;
    상기 공유자원에 대해서 부여된 특정 수의 가장 최근 우선권들 중 어느 것도 상기 요청자에 대한 것은 없었다는 결정에 반응하여 상기 공유 자원에 대한 우선권을 상기 요청에게 부여하는 단계; 및
    상기 공유자원에 대해서 부여된 특정 수의 가장 최근 우선권들 중 어느 하나가 상기 요청자에 대한 것이었다는 결정에 반응하여:
    상기 공유 자원에 대한 하나 또는 그 이상의 다른 요청들이 펜딩 중인지 결정하는 단계;
    상기 공유 자원에 대한 상기 다른 요청들이 펜딩 중이 아니라는 결정에 반응하여 상기 공유 자원에 대한 우선권을 상기 요청에 대하여 부여하는 단계; 및
    상기 공유 자원에 대한 하나 또는 그 이상의 다른 요청들이 펜딩 중이라는 결정에 반응하여
    상기 다른 요청들 중 하나에게 상기 공유 자원에 대한 우선권이 부여되어야 하는 지를 결정하는 단계를 포함하는,
    컴퓨터 프로그램 제품.
  16. 제 15항에 있어서,
    상기 요청자는 가상 서버인,
    컴퓨터 프로그램 제품.
  17. 제 15항에 있어서,
    상기 요청자는 가상 서버들의 그룹인,
    컴퓨터 프로그램 제품.
  18. 제 15항에 있어서, 상기 방법은
    상기 공유 자원에 대한 다른 요청들이 펜딩 중이 아니라는 결정에 반응하여, 상기 공유 자원에 대한 우선권을 상기 요청에 대하여 부여하는 단계를 더 포함하는,
    컴퓨터 프로그램 제품.
  19. 제 15항에 있어서, 상기 방법은
    상기 공유 자원에 대한 우선권을 상기 요청에 대하여 부여하는 것에 반응하여, 상기 요청을 상기 공유 자원으로 전송하는 단계를 더 포함하는,
    컴퓨터 프로그램 제품.
  20. 제 15항에 있어서,
    상기 다음 요청 우선 모듈은 SCL에 의해 구현되는,
    컴퓨터 프로그램 제품.
KR1020117021111A 2009-02-25 2010-02-18 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서 KR101455899B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/392,665 2009-02-25
US12/392,665 US8676976B2 (en) 2009-02-25 2009-02-25 Microprocessor with software control over allocation of shared resources among multiple virtual servers
PCT/EP2010/052076 WO2010097331A2 (en) 2009-02-25 2010-02-18 Microprocessor with software control over allocation of shared resources among multiple virtual servers

Publications (2)

Publication Number Publication Date
KR20110118810A true KR20110118810A (ko) 2011-11-01
KR101455899B1 KR101455899B1 (ko) 2014-11-03

Family

ID=42631868

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117021111A KR101455899B1 (ko) 2009-02-25 2010-02-18 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서

Country Status (7)

Country Link
US (2) US8676976B2 (ko)
EP (1) EP2401677A2 (ko)
JP (1) JP5536807B2 (ko)
KR (1) KR101455899B1 (ko)
CN (1) CN102334103B (ko)
TW (1) TWI459297B (ko)
WO (1) WO2010097331A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180105554A (ko) * 2017-03-15 2018-09-28 삼성전자주식회사 지역 베이스보드 관리 제어기를 이용하여 패브릭 시스템에 걸쳐 불휘발성 메모리 익스프레스 내에서 공유된 그래픽 처리부 자원들을 할당하는 방법
US10572309B2 (en) 2014-04-30 2020-02-25 Huawei Technologies Co., Ltd. Computer system, and method for processing multiple application programs

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027354B1 (en) * 2009-04-29 2011-09-27 Cisco Technology, Inc. Network consolidation for virtualized servers
KR101568098B1 (ko) * 2011-06-28 2015-11-10 노키아 코포레이션 상황정보 추출
US9191435B2 (en) * 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US9075789B2 (en) * 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US9515899B2 (en) * 2012-12-19 2016-12-06 Veritas Technologies Llc Providing optimized quality of service to prioritized virtual machines and applications based on quality of shared resources
US9396007B2 (en) 2013-03-22 2016-07-19 Facebook, Inc. Cache management in a multi-threaded environment
US9692706B2 (en) 2013-04-15 2017-06-27 International Business Machines Corporation Virtual enhanced transmission selection (VETS) for lossless ethernet
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
WO2017209876A1 (en) 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Buffer manager
US10353736B2 (en) 2016-08-29 2019-07-16 TidalScale, Inc. Associating working sets and threads
US20180131633A1 (en) * 2016-11-08 2018-05-10 Alibaba Group Holding Limited Capacity management of cabinet-scale resource pools
US10705872B2 (en) 2016-12-08 2020-07-07 International Business Machines Corporation Predictive virtual server scheduling and optimization of dynamic consumable resources to achieve priority-based workload performance objectives
US11113101B2 (en) * 2017-06-05 2021-09-07 Marvell Asia Pte, Ltd. Method and apparatus for scheduling arbitration among a plurality of service requestors
US11023135B2 (en) 2017-06-27 2021-06-01 TidalScale, Inc. Handling frequently accessed pages
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
EP3543861B1 (en) * 2018-03-23 2022-12-14 Imagination Technologies Limited Arbitration systems and methods
JP7141905B2 (ja) * 2018-10-12 2022-09-26 株式会社日立産機システム コントロール装置及びコントロール方法
US10970132B2 (en) * 2019-03-19 2021-04-06 International Business Machines Corporation Deadlock resolution between distributed processes

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61167647A (ja) * 1985-01-19 1986-07-29 Sumitomo Chem Co Ltd 第一菊酸エステルのラセミ化方法
DE69521549T2 (de) 1994-04-04 2001-10-25 Hyundai Electronics America, Milpitas Verfahren zur Verwaltung gemeinsamer Mittel mehrerer Verarbeitungseinheiten
TW346574B (en) * 1997-05-09 1998-12-01 Ind Tech Res Inst Method and apparatus for selecting non-blocking multiple interrupt requests in a multi-processor system
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
US6754206B1 (en) * 1997-12-04 2004-06-22 Alcatel Usa Sourcing, L.P. Distributed telecommunications switching system and method
US6233645B1 (en) 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
US7010642B2 (en) 2000-01-05 2006-03-07 Rambus Inc. System featuring a controller device and a memory module that includes an integrated circuit buffer device and a plurality of integrated circuit memory devices
AU2002242067A1 (en) * 2001-01-30 2002-08-12 Nomadix, Inc. Methods and systems providing fair queuing and priority scheduling to enhance quality of service in a network
JP4018900B2 (ja) 2001-11-22 2007-12-05 株式会社日立製作所 仮想計算機システム及びプログラム
US8005979B2 (en) 2002-10-28 2011-08-23 Oracle America, Inc. System and method for uniquely identifying processes and entities in clusters
US7394808B2 (en) * 2004-05-24 2008-07-01 Nortel Networks Limited Method and apparatus for implementing scheduling algorithms in a network element
US7356631B2 (en) * 2005-01-21 2008-04-08 Himax Technologies, Inc. Apparatus and method for scheduling requests to source device in a memory access system
US7249210B2 (en) 2005-03-01 2007-07-24 Qualcomm Incorporated Bus access arbitration scheme
US7779424B2 (en) 2005-03-02 2010-08-17 Hewlett-Packard Development Company, L.P. System and method for attributing to a corresponding virtual machine CPU usage of an isolated driver domain in which a shared resource's device driver resides
US20060206891A1 (en) 2005-03-10 2006-09-14 International Business Machines Corporation System and method of maintaining strict hardware affinity in a virtualized logical partitioned (LPAR) multiprocessor system while allowing one processor to donate excess processor cycles to other partitions when warranted
US8255912B2 (en) * 2005-04-13 2012-08-28 Qualcomm Incorporated Techniques for setting events in a multi-threaded system
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US7506090B2 (en) 2006-06-14 2009-03-17 Honeywell International Inc. System and method for user-configurable resource arbitration in a process control system
JP5031538B2 (ja) 2007-06-21 2012-09-19 株式会社日立製作所 データ分配方法、データ分配プログラム、及び並列データベースシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10572309B2 (en) 2014-04-30 2020-02-25 Huawei Technologies Co., Ltd. Computer system, and method for processing multiple application programs
KR20180105554A (ko) * 2017-03-15 2018-09-28 삼성전자주식회사 지역 베이스보드 관리 제어기를 이용하여 패브릭 시스템에 걸쳐 불휘발성 메모리 익스프레스 내에서 공유된 그래픽 처리부 자원들을 할당하는 방법

Also Published As

Publication number Publication date
US8676976B2 (en) 2014-03-18
WO2010097331A2 (en) 2010-09-02
US20120271952A1 (en) 2012-10-25
JP2012518825A (ja) 2012-08-16
US8788672B2 (en) 2014-07-22
CN102334103B (zh) 2014-05-21
TWI459297B (zh) 2014-11-01
US20100217868A1 (en) 2010-08-26
EP2401677A2 (en) 2012-01-04
WO2010097331A3 (en) 2010-11-18
JP5536807B2 (ja) 2014-07-02
TW201040840A (en) 2010-11-16
CN102334103A (zh) 2012-01-25
KR101455899B1 (ko) 2014-11-03

Similar Documents

Publication Publication Date Title
KR101455899B1 (ko) 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서
US9710310B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
Hassan et al. Bounding dram interference in cots heterogeneous mpsocs for mixed criticality systems
US9436640B1 (en) Full bandwidth packet handling with server systems including offload processors
US20160378545A1 (en) Methods and architecture for enhanced computer performance
US8271989B2 (en) Method and apparatus for virtual processor dispatching to a partition based on shared memory pages
US9378161B1 (en) Full bandwidth packet handling with server systems including offload processors
EP2192496B1 (en) Arbitration in multiprocessor device
US10932202B2 (en) Technologies for dynamic multi-core network packet processing distribution
US9158713B1 (en) Packet processing with dynamic load balancing
US11343177B2 (en) Technologies for quality of service based throttling in fabric architectures
US11144473B2 (en) Quality of service for input/output memory management unit
US10331581B2 (en) Virtual channel and resource assignment
US20190196978A1 (en) Single instruction multiple data page table walk scheduling at input output memory management unit
US20110055831A1 (en) Program execution with improved power efficiency
Deri et al. Exploiting commodity multi-core systems for network traffic analysis
Guo et al. Storeapp: A shared storage appliance for efficient and scalable virtualized hadoop clusters
US20230305720A1 (en) Reservation of memory in multiple tiers of memory
Guan et al. CIVSched: Communication-aware inter-VM scheduling in virtual machine monitor based on the process
KVALNES et al. Scheduler control over all resource consumption
US8688880B2 (en) Centralized serialization of requests in a multiprocessor system

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: 20170927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 5