전형적인 컴퓨터 시스템에서, 시스템의 중앙 처리 장치(CPU)는 그 시스템에서의 안정된(robust) 전력 관리를 가능하게 하기 위해 다양한 전력 상태를 지원한다. 예를 들어, CPU는 C0, C1, C2, C3 및 C4 상태 등의 5가지 전력 상태를 지원할 수 있다. 하나의 시스템에서, C0 상태는 CPU가 명령어를 실행하는 활성 전력 상태(active power state)이고, 나머지 상태들, 즉, C1, C2, C3 및 C4 상태들은 절전 상태(sleeping state)이다. 절전 상태에서, CPU는 C0 상태에서보다 적은 전력을 소모하고 적은 열을 발산하는데, 그 이유는 CPU가 절전 상태에 있는 동안에는 어떤 명령어도 실행하지 않기 때문이다. 게다가, C4 상태에서의 전력 소모는 일반적으로 C3 상태에서의 전력 소모보다 적은데, 그 이유는 CPU가 C4 상태에 들어갈 때 CPU 공급 전압이 하강하기 때문이다.
각각의 절전 상태는 진입(entry) 및 탈출(exit)과 연관된 대기시간(latency)을 가지며, 각각의 상태에서의 전력 절감과 관계가 있다. 일반적으로, 더 많은 전 력을 절감하기 위해 더 많은 회로 또는 로직을 셧다운(shutdown)시키면, 그 회로 및/또는 로직 셧다운에 전원을 재공급(re-energize)하기 위해 더 많은 노력과 더 긴 탈출 대기시간이 소비된다. 예를 들어, CPU의 위상 동기 루프(PLL) 및 입력/출력(IO)은 CPU가 C3 또는 C4 상태에 있을 때 더 많은 전력을 절감하기 위해 셧다운될 수 있는데, 그 이유는 CPU가 C3 또는 C4 상태에 있는 동안 스누프(snoop)하지 않기 때문이다. 그러나, 일반적으로 CPU가 C3 또는 C4 상태에서 빠져 나온 후에 PLL 및 IO에 전원을 재공급하는 데 더 많은 시간이 걸린다.
예시적인 시스템에서, CPU는 C0 상태 동안 메모리에 액세스하거나, C1 또는 C2 상태 동안에 버스-마스터 개시 메모리 트래픽(bus-master initiated memory traffic)을 스누프할 수 있다. 버스 마스터는 예를 들어 외부 그래픽 코어 등의, 주어진 시간에 버스를 제어하는 주변 장치이다. 따라서, 한 장치로부터 다른 장치로의 버스를 통한 데이터 이동은, 버스 마스터링 이벤트(bus mastering event)라고 한다. 이와 반대로, C3 또는 C4 상태에서, CPU는 더 깊은 절전 상태의 일부로서 스누프 또는 메모리 액세스를 일시정지(suspend)한다. 버스 마스터 개시 메모리 트래픽을 스누프하기 위해, C3 또는 C4 상태에 있는 CPU는 C3 또는 C4 상태에서 빠져 나와야만 한다. C3 및 C4 상태의 더 높은 탈출 대기시간으로 인해, 시스템은 CPU가 C3 또는 C4 상태에 들어가기 전에 스누프하는 것을 요구할 수 있는 시스템 내의 임의의 주변 장치로부터의 진행중인 버스 마스터링 이벤트가 있는지 여부를 검증해야만 한다. 진행중인 버스 마스터링 이벤트가 있는 경우, CPU는 C3 또는 C4 상태보다 전력 소모가 높지만 탈출 대기시간이 낮은 전력 상태(예를 들어, C1 또는 C2)를 받아들인다.
주변 장치와 관련하여, 주변 장치는 PCI 익스프레스 상호연결(PCI Express interconnect) 등의 직렬 상호연결을 거쳐 루트 복합 장치(root complex device)를 통해 CPU에 연결될 수 있다. 루트 복합 장치는 호스트 브리지 및 하나 이상의 루트 포트를 포함한다. 루트 복합 장치의 예는, 메모리 컨트롤러, 즉, IO 컨트롤러 기능 장치를 포함한다. 상호연결은 한 장치를 다른 장치에 연결하는 기반구조이다. PCI 익스프레스는 고속의 점대점 직렬 상호연결 표준이다. 예를 들어, 1세대 PCI 익스프레스 상호연결은 레인(lane)당 2.5Gb/sec 데이터 전송을 지원한다. 하나의 예시적인 시스템에서, 그래픽 장치가 16-레인 PCI 익스프레스 상호연결을 통해 시스템(예를 들어, 메모리 컨트롤러 허브)의 칩셋에 연결되어 있다.
게다가, PCI 익스프레스는 PCI 익스프레스 상호연결을 통해 트래픽을 추적하기 위해 크레디트(credit)를 갖는 계정 방식(accounting scheme)을 지원함으로써 흐름 제어를 가능하게 해준다. 크레디트는 상호연결을 통한 다양한 유형의 트랜잭션을 위한 장치에서의 이용가능한 버퍼링을 나타낸다. 예를 들어, 메모리 컨트롤러는 정보를 다수의 레지스터에 기입함으로써 데이터를 전송하는 루트 복합 장치의 기능의 소프트웨어에 보고할 수 있다. PCI 익스프레스 프로토콜에 따르면, 판독 요청(read request), 기입 요청(write request), 완료(completion) 등의 다양한 트랜잭션에 대한 다수의 미리 정해진 크레디트가 존재한다. 예를 들어, 그래픽 장치가 루트 복합 장치에 대해 트랜잭션(예를 들어, 판독 요청)을 발행하고 이들 트랜잭션이 보류 중에 있을 때, 메모리 컨트롤러에서 보류중인 트랜잭션이 차지하는 버 퍼링의 양을 반영하기 위해 크레디트가 소모된다. 이들 트랜잭션이 메모리 컨트롤러에 의해 처리 또는 폐기(retire)된 경우, 크레디트는 해제(release) 또는 해방(free up)된다. 소모된 크레디트에 의해 반영되는 보류중인 트랜잭션의 수는, C3 또는 C4 상태에의 진입을 금지할 수 있는 버스 마스터링 이벤트의 가능성을 나타낸다.
진행중인 버스 마스터링 트래픽을 나타내는 종래의 기술은 측파대 신호(sideband signal)를 사용한다. 예를 들어, 그래픽 장치는, AGP(Accelerated Graphics Port)를 사용하여 그래픽 장치를 부착하고 있는 시스템에 대한 진행중인 버스 마스터링 트래픽을 나타내기 위해 신호 AGP_BUSY를 컴퓨터 시스템의 루트 복합 장치에 전송한다. 그러나, 측파대 신호는 각각의 장치 상에 측파대 신호당 하나의 부가 핀을 필요로 하기 때문에 비용이 많이 든다. 게다가, 장래의 기술 혁신이 이러한 측파대 신호를 전혀 사용하지 않을 수 있더라도, 시스템에서 측파대 신호를 위해 영구적인 커넥터 기반구조가 제공되어야만 한다.
본 발명은 이하의 상세한 설명 및 첨부 도면으로부터 보다 충분히 이해될 것이지만, 이는 첨부된 청구항을 도시된 특정의 실시예로 제한하는 것으로 간주되어서는 안되며 단지 설명 및 이해를 위한 것에 불과하다.
이하의 설명에서, 다수의 특정 세부사항이 기술되어 있다. 그러나, 본 발명의 실시예들이 이들 특정 세부사항 없이 실시될 수 있음을 잘 알 것이다. 다른 예에서, 본 설명의 이해를 모호하게 하지 않도록 공지의 회로, 구조 및 기술은 상세히 도시되어 있지 않다.
본 명세서에서의 "일 실시예" 또는 "실시예"에 대한 언급은, 그 실시예와 관련하여 기술된 특정의 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되어 있음을 의미한다. 본 명세서의 여러 곳에서 나타나는 용어 "일 실시예에서"가 반드시 모두 동일한 실시예를 지칭하는 것은 아니다.
컴퓨터 시스템에서의 전력 관리 방법 및 장치가 개시되어 있다. 일 실시예에서, 본 방법은 컴퓨터 시스템 내의 칩셋 장치와 주변 장치를 연결하는 상호연결을 통한 트랜잭션들을 모니터링하는 단계를 포함하며, 트랜잭션들은 칩셋 장치가 트랜잭션들을 추적할 수 있게 하는 흐름 제어 프로토콜에 따라 주변 장치와 칩셋 장치 간에 전송된다. 이 실시예는 또한 칩셋 장치의 버퍼에 보류중인 다수의 코히런트 트랜잭션(coherent transaction)이 소정의 임계값을 초과하는 경우, 컴퓨터 시스템 내의 프로세서로 하여금, 전력 상태로부터 빠져나오게 하는 단계를 포함한다. 특정 실시예에서, 제어 흐름 프로토콜은 PCI 익스프레스이다. 다른 특징들은 첨부 도면 및 이하의 상세한 설명으로부터 명백하게 될 것이다.
도 1a는 컴퓨터 시스템에서 전력을 관리하는 프로세스의 일 실시예의 흐름도를 나타낸 것이다. 이 프로세스는 하드웨어(예를 들어, 회로, 전용 로직 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 머신 상에서 실행되는 것 등) 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행된다. 상기한 바와 같이, 예시적인 CPU는 C3 또는 C4 상태에 있는 동안 메모리 액세스를 개시하거나 버스-마스터 개시 트래픽을 스누프하지 않을 수 있다. 따라서, C3 또는 C4 상태에 들어가기 위한 CPU 요청(프로세싱 블록(101))에 응답하여, 프로세싱 로직은 시스템 내의 주변 장치들이 버스 마스터를 스누프하거나 또는 스누프하지 않고 시스템 메모리에 직접 액세스하도록 CPU에 요청할 가능성이 있는지 여부를 결정하기 위한 일련의 동작을 수행한다. 주변 장치들의 예는 외부 그래픽 코어, 이더넷 컨트롤러 등을 포함한다. 프로세싱 로직은 주변 장치들 중 하나로부터 트랜잭션(103)을 수신할 수 있다(프로세싱 블록(104)). 트랜잭션(103)은 코히런트 또는 인코히런트(incoherent)일 수 있다. 코히런트 트랜잭션은 CPU의 캐시에서 현재 사용 또는 수정 중이거나 사용 또는 수정될 가능성이 있는 데이터를 수반한다. 이와 반대로, 인코히런트 트랜잭션은 메모리로부터의 데이터를 수반하며, 이 데이터는 CPU의 캐시에서 현재 저장, 사용 또는 수정되고 있는 것이 아니다.
도 1a를 참조하면, 프로세싱 로직은 수신된 트랜잭션(103)이 코히런트인지 또는 컴퓨터 시스템에서의 메모리 컨트롤러에 임의의 보류중인 코히런트 트랜잭션이 있는지를 검사한다(프로세싱 블록(110)). 둘 중 어느 하나가 참이면, 프로세싱 로직은 CPU가 C3 또는 C4 상태에 들어가지 못하도록 버스 마스터링 표시자를 어써트(assert)한다(프로세싱 블록(130)). 일 실시예에서, CPU는 이어서 C1 또는 C2 상태일 수 있는 디폴트 상태로 들어간다.
그러나, 수신된 트랜잭션(103)이 인코히런트이고 루트 복합 장치에 보류중인 코히런트 트랜잭션이 없는 경우, 프로세싱 로직은 인코히런트 트랜잭션(103)이 차지하는 메모리 컨트롤러에서의 버퍼의 부분을 반영하기 위해 다수의 크레디트를 소모하고 그 트랜잭션(103)을 보류 상태로 유지한다(프로세싱 블록(112)). 프로세싱 로직은 소모된 크레디트의 총 수가 진입 임계값을 초과하거나 그와 같은지를 검사할 수 있다(프로세싱 블록(120)). 소모된 크레디트의 총 수가 진입 임계값을 초과하거나 그와 같은 경우, 보류중인 트랜잭션에 의해 채워진 루트 복합 장치에서의 버퍼의 부분은 진입 임계값에 대응하는 특정 레벨을 초과하였다. 메모리 컨트롤러에서의 이용가능한 버퍼링이 적은 경우, 주변 장치가 부가의 트랜잭션들을 메모리 컨트롤러에 전송할 가능성이 더 적다. 따라서, CPU가 스누프하도록 요청받을 가능성이 더 적고, 이로써, CPU는 C3 또는 C4 상태에 들어갈 수 있다. 그 결과, 프로세싱 로직은 CPU가 C3 또는 C4 상태에 들어갈 수 있게 하기 위해 버스 마스터링 표시자를 디어써트(de-assert)한다(프로세싱 블록(129)).
한편, 소모된 크레디트의 총 수가 진입 임계값보다 작은 경우, 프로세싱 로직은 타이머가 만료되었는지 여부를 검사할 수 있다(프로세싱 블록(122)). 타이머 가 만료된 경우, 프로세싱 로직은 CPU가 C3 또는 C4 상태에 들어갈 수 있게 하기 위해 버스 마스터링 표시자를 디어써트한다(프로세싱 블록(130)). 그렇지 않은 경우, 프로세싱 로직은 프로세싱 블록(110)을 반복한다. 다른 대안으로서, 소모된 크레디트의 총 수가 진입 임계값보다 작은 것으로 결정되면, 프로세싱 로직은 타이머를 전혀 검사하지 않고 단지 프로세싱 블록(110)을 반복할 수 있다.
도 2a는 진입 임계값의 일 실시예를 나타낸 것이다. 루트 복합 장치에 보류중인 인코히런트 트랜잭션이 있는 경우에도, 진입 임계값(210)은, 예시적인 CPU로 하여금, C3 또는 C4 상태에 들어가게 하기 위해 버스 마스터링 표시자를 수정하도록 설정될 수 있다. 다시 말하면, CPU에 대하여 버스 마스터링 표시자를 어써트하는 것을 지연시키기 위해 소모된 크레디트의 수가 진입 임계값(210)을 초과하거나 그와 같을 때까지, 트랜잭션들은, 어떠한 서비스도 시도되지 않은 채, 의도적으로 메모리 컨트롤러에 보류중인 상태로 보유될 수 있다. 그 결과, CPU는 C3 또는 C4 상태에 들어갈 수 있는 더 많은 기회를 갖게 되어, 평균 CPU 전력 소모를 감소시킨다. 그래픽 애플리케이션 등의 성능에 매우 민감한 애플리케이션에 대해, 진입 임계값(210)은 0%로 설정될 수 있다.
그러나, 랩톱 컴퓨터 등의 모바일 시스템에서, 시스템이 배터리로만 동작하고 있을 때, 진입 임계값은 시스템의 하나 이상의 배터리에 남아 있는 전하의 양에 따라 서로 다른 값으로 설정될 수 있다. 더 낮은 CPU 전력 소모에 대한 트레이드오프(tradeoff)는, 저하된 CPU 성능 상태일 수 있다는 것에 주목한다. 게다가, 일 실시예에서, 타이머는, 어떤 대기시간에 민감한 애플리케이션들에 대한 트레이드오 프의 영향을 완화시키기 위해 초기의 보류중인 트랜잭션의 제공을 얼마나 오래 지연(stall)시킬지를 제한(qualify)하는데 사용된다. 진입 임계값(210)에 도달하기 전에 타이머가 만료되면, 버스 마스터링 표시자는 트래픽이 적거나 유휴 상태(idle state)인 경우에 CPU가 C3 또는 C4 상태에 들어갈 수 있게 하기 위해 리셋될 수 있다.
도 1b는 컴퓨터 시스템에서 전력을 관리하는 프로세스의 일 실시예의 흐름도를 나타낸 것이다. 이 프로세스는 하드웨어(예를 들어, 회로, 전용 로직 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 머신 상에서 실행되는 것 등) 또는 이 둘의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행된다. CPU가 C3 또는 C4 상태에 있을 때(프로세싱 블록(105)), 프로세싱 로직은 주변 장치로부터 코히런트 트랜잭션을 수신할 수 있다(프로세싱 블록(140)). 주변 장치의 예는 외부 그래픽 코어, 이더넷 컨트롤러 등을 포함한다. 코히런트 트랜잭션의 수신 시에, 프로세싱 로직은 수신된 코히런트 트랜잭션이 차지하는 버퍼의 부분을 반영하기 위해 다수의 크레디트를 소모한다(프로세싱 블록(142)). 이어서, 프로세싱 로직은 코히런트 트랜잭션에 대한 소모된 크레디트의 총 수가 탈출 임계값을 초과하거나 그와 같은지를 검사한다(프로세싱 블록(144)). 소모된 크레디트의 총 수가 탈출 임계값을 초과하거나 그와 같은 경우, 프로세싱 로직은 CPU로 하여금 C3 또는 C4 상태로부터 빠져나오게 한다(프로세싱 블록(150)). 프로세싱 로직은 CPU에 C3 또는 C4 상태로부터 빠져나오도록 지시하기 위해 CPU에 신호를 전송할 수 있다. C3 또는 C4 상태로부터 빠져 나온 후에, 일 실시예에서, CPU는 C0 상태에 들어간다.
그러나, 소모된 크레디트의 총 수가 탈출 임계값을 초과하거나 그와 같지 않은 경우, 프로세싱 로직은 타이머가 만료되었는지를 검사한다(프로세싱 블록(146)). 타이머가 만료된 경우, 프로세싱 로직은 CPU로 하여금 C3 또는 C4 상태로부터 빠져나오게 한다(프로세싱 블록(150)). 그렇지 않은 경우, 프로세싱 로직은 트랜잭션을 큐잉 업(queue up)하고(프로세싱 블록(148)), 프로세싱 블록(140)을 반복한다. 다른 대안으로서, 소모된 크레디트의 총 수가 탈출 임계값보다 작은 것으로 결정되면, 프로세싱 로직은 타이머를 전혀 검사하지 않고 단지 트랜잭션을 큐잉 업하고(프로세싱 블록(148)) 프로세싱 블록(140)을 반복한다.
도 2b는 탈출 임계값의 일 실시예를 나타낸 것이다. 도 2b를 참조하면, 탈출 임계값(250)은, 예시적인 CPU로 하여금 C3 또는 C4 상태로부터 빠져나오게 하기 위해 버스 마스터링 표시자를 설정해야 하는 때를 결정하기 위해 설정된다. CPU가 C3 또는 C4 상태에 있을 때 트랜잭션들은 큐잉 업될 수 있으므로, CPU가 특정 기간 동안 C3 또는 C4 상태에 있게 함으로써, 특정 레벨의 전력 절감을 달성할 수 있다. 소모된 크레디트의 수가 탈출 임계값(250)보다 작은 경우, CPU는 탈출 조건이 일어났음을 통지받지 않게 된다. 일 실시예에서, 타이머는 애플리케이션들이 대기시간에 민감한 것인 경우에 초기의 보류중인 트랜잭션들의 제공을 얼마나 오래 지연시킬지를 제한하는데 사용된다. 타이머가 만료되면, 보류중인 코히런트 트랜잭션들에 대응하는 소모된 크레디트의 총 수가 탈출 임계값(250)보다 작은 경우에도 CPU로 하여금 C3 또는 C4 상태로부터 빠져나오게 하기 위해 신호가 전송된다. 이와 유사하게, 어떤 성능에 매우 민감한 애플리케이션들의 경우, 탈출 임계값(250)은 이러한 애플리케이션들의 성능 규격을 만족시키기 위해 0%로 설정될 수 있다. 게다가, 어떤 실시예에서, 탈출 임계값(250)은 배터리만으로 시스템에 전원을 공급하는 경우에 시스템에서의 남아 있는 배터리 전하 용량에 따라 서로 다른 값으로 설정된다.
진입 및 탈출 임계값을 정의하는 다수의 방법이 있다는 것을 알아야 한다. 일 실시예에서, 진입 임계값은 탈출 임계값과 실질적으로 같다. 예를 들어, 성능 지향적인 애플리케이션을 실행하기 위해서는, 진입 및 탈출 임계값은 0%의 단일 값으로 하드와이어드(hardwired)될 수 있다.
대안적인 실시예에서, 진입 및 탈출 임계값은 서로 다른 값으로 설정된다. 예를 들어, 진입 임계값은 탈출 임계값보다 높을 수 있다. 또한, 진입 및 탈출 임계값이 동작 중에 서로 다른 값으로 설정될 수 있게 함으로써, CPU는 남아 있는 배터리 전하 용량에 기초하여 성능을 조정할 수 있다. 게다가, CPU는 임계값 수정을 통해 CPU의 진입 및 탈출 거동(behavior)을 적응적으로 수정할 수 있다. 진입 및 탈출 임계값의 적응적 수정에 의해, CPU는 C3 또는 C4 상태 진입 결정의 타이밍과 일치할 수 있는 특정한 주기적인 트래픽으로 인한 낮은 전력 상태의 빈번한 쓰래싱(thrashing)을 피할 수 있다. 다른 이점은, CPU가 C3 또는 C4 상태에 있는 체류 기간을 조정 및 증가시키기 위해 비대칭적인 진입 및 탈출 거동을 제공하는 것이다. 예를 들어, CPU는 C3 또는 C4 상태에서 빠져나오는 데 수백 마이크로초가 걸릴 수 있으며, 그 동안에 CPU의 위상 동기 루프(phase lock loop)는 스핀 업(spin up)하기 위해 초기의 10 마이크로초 동안에 소모된 전력의 2배를 소모할 수 있다. 따라서, CPU의 C3 또는 C4 체류 기간이 탈출 대기시간보다 작은 경우, 순 효과는 전력 절감이 거의 없거나 무시할 정도이거나, 더 나쁜 경우, 전력 소모가 더 많을 수 있다는 것이다.
도 3a 내지 도 3c는 컴퓨터 시스템에서의 칩셋 파티션의 다양한 실시예를 나타낸 것이다. 도 3a는 메모리 컨트롤러(310), 입력/출력 컨트롤러(320), 및 전력 관리 회로(330)를 도시하고 있다. 전력 관리 회로(330)는 메모리 컨트롤러(310)와 입력/출력 컨트롤러(320) 둘다의 외부에 있다. 메모리 컨트롤러(310)는 링크(315)를 통해 입력/출력 컨트롤러(320)에 연결되어 있다. 링크(315)는 디지털 미디어 인터페이스(digital media interface: DMI) 링크를 포함할 수 있다. 메모리 컨트롤러(310)는 또한, 예를 들어, PCI 익스프레스 등의, 크레디트-기반 흐름 제어 계정 방식(credit-based flow control accounting scheme)을 갖는 프로토콜을 채택하는 하나 이상의 버스 또는 상호연결(도시되지 않음)을 통하여 하나 이상의 주변 장치(도시되지 않음)에 연결되어 있다.
일 실시예에서, 전력 관리 회로(330)는 측파대 신호(322, 324)를 통해 메모리 컨트롤러(310) 및/또는 입력/출력 컨트롤러(320)와 통신한다. 측파대 신호(332, 334)는 AGP(advance graphic port)와 같은 주변 장치로부터의 임의의 버스 마스터링 활동이 있는지 여부를 나타낸다. 측파대 신호(332, 334)는 일반적으로 XX_BUSY로 표시된다. 예를 들어, AGP에 대응하는 측파대 신호는 AGP_BUSY로 표시된다. 측파대 신호가 하나 이상의 공유 신호를 포함할 수 있다는 것을 알아야 한다.
일 실시예에서, 메모리 컨트롤러(310)와 입력/출력 컨트롤러(320) 중 하나는, 메모리 컨트롤러(310)와 입력/출력 컨트롤러(320) 간에 전송된 하나 이상의 메시지 패킷을 통해 버스 마스터링 활동 정보를 수집(roll up)하기 위해 중앙 에이전트(central agent)로서 동작한다. 메시지 패킷들은 DMI 메시지 패킷들(325)을 포함할 수 있다. 그러나, 중앙 에이전트는 여전히 측파대 신호들(334 및 332) 중 하나를 통해 전력 관리 회로(330)와 통신한다.
도 3b는 컴퓨터 시스템에서의 칩셋 파티션의 대안적인 실시예를 나타낸 것이다. 도 3b의 칩셋은 DMI 링크를 포함할 수 있는 링크(345)를 통해 서로 연결되어 있는 메모리 컨트롤러(340) 및 입력/출력 컨트롤러(350)를 포함한다. 그러나, 칩셋의 일부 실시예들은 도시되지 않은 부가의 장치들을 포함한다는 것을 알아야 한다. 메모리 컨트롤러(340)는 또한, 예를 들어, PCI 익스프레스 등의, 크레디트-기반 흐름 제어 계정 방식을 채택하는 상호연결(도시되지 않음)을 통해 주변 장치(도시되지 않음)에 연결되어 있다. 주변 장치는 외부 그래픽 코어, 이더넷 컨트롤러 등을 포함할 수 있다. 입력/출력 컨트롤러(350)는 상호연결을 통해 데이터 트래픽을 모니터링하는 전력 관리 회로(352)를 포함한다. 전력 관리 회로(352)가 입력/출력 컨트롤러(350)의 내부에 있기 때문에, 메모리 컨트롤러(340)는 주변 장치가 상호연결을 통한 임의의 진행중인 트래픽을 가지고 있는지 여부에 관해 입력/출력 컨트롤러(350)와 통신해야 한다. 일 실시예에서, 메모리 컨트롤러(340)는 링크(345)를 통해 입력/출력 컨트롤러(350)에 전송된 메시지 패킷(347) 내의 하나 이상의 비트를 설정한다. 메시지 패킷(347)은 DMI 패킷일 수 있다. 메시지 패 킷(347) 내의 비트(들)를 설정하는 것은, 측파대 신호(예를 들어, 도 3a의 측파대 신호들(332 및 334))와 반대로, 버스 마스터링 표시자 신호의 대역내 가상화(in-band virtualization)라고도 하는데, 그 이유는 컨트롤러들(340 및 350) 둘다에 있는 핀 및 커넥터 기반구조를 제거하기 위해 신호가 추상화되기 때문이다. 게다가, 전력 관리 회로(352)는 또한 다른 상호연결(도시되지 않음)을 통해 입력/출력 컨트롤러(350)에 연결되어 있는 다른 주변 장치(도시되지 않음)로부터의 버스 마스터링 활동을 모니터링할 수 있다.
도 3c는 컴퓨터 시스템에서의 칩셋 파티션의 대안적인 실시예를 나타낸 것이다. 도 3c에 도시된 칩셋은 통합형 메모리 및 입력/출력 컨트롤러(360)를 포함한다. 통합형 메모리 및 입력/출력 컨트롤러(360)는 내부 전력 관리 회로(365)를 포함한다. 전력 관리 회로(365)가 통합형 컨트롤러(360)의 일부이기 때문에, 컨트롤러(360)에 연결된 주변 장치들에 대한 버스 마스터링 표시들은 컨트롤러(360) 내의 로직 회로를 통해 내부적으로 등록될 수 있다.
도 3a 내지 도 3c의 칩셋 파티션의 다양한 실시예는 단지 개시된 기술을 설명하기 위해 도시된 것임을 알아야 한다. 개시된 기술은 컴퓨터 칩셋 파티션의 다른 실시예들에 적용될 수 있다.
도 4는 컴퓨터 시스템(400)의 예시적인 실시예를 나타낸 것이다. 컴퓨터 시스템(400)은 중앙 처리 장치(CPU)(410), 메모리 컨트롤러(MCH)(420), 다수의 듀얼 인-라인 메모리 모듈(dual in-line memory module: DIMM)(425), 다수의 메모리 장치(427), PCI 익스프레스 그래픽 포트(430), 입력/출력 컨트롤러(ICH)(440), 다수 의 USB(Universal Serial Bus) 포트(445), 오디오 코더-디코더(오디오 코덱)(460), 수퍼 입력/출력(수퍼 I/O)(450), 및 펌웨어 허브(FWH)(470)를 포함한다.
일 실시예에서, CPU(410), PCI 익스프레스 그래픽 포트(430), DIMM(425), 및 ICH(440)는 MCH(420)에 연결되어 있다. MCH(420)와 ICH(440) 간의 링크(435)는 DMI 링크를 포함할 수 있다. MCH(420)는 DIMM(425)을 통해 메모리 장치들(427)로/로부터 데이터를 라우팅한다. 메모리 장치들(427)은 예를 들어, DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory), DDR(double data rate) SDRAM 또는 플래시 메모리 등의 다양한 유형의 메모리를 포함할 수 있다. 일 실시예에서, 각각의 DIMM(425)은 MCH(420)에 연결하기 위해 DIMM 커넥터(도시되지 않음)를 거쳐 동일한 마더보드(도시되지 않음) 상에 실장되어 있다. 일 실시예에서, USB 포트(445), 오디오 코덱(460), 및 수퍼 I/O(450)는 ICH(440)에 연결되어 있다. 수퍼 I/O(450)는 또한 펌웨어 허브(470), 플로피 디스크 드라이브(451), 키보드, 마우스 등의 데이터 입력 장치(453), 다수의 직렬 포트(455), 및 다수의 병렬 포트(457)에 연결될 수 있다.
일 실시예에서, ICH(440)는 ICH(440) 및 MCH(420)를, 예를 들어 PCI 익스프레스 그래픽 포트(430) 등의 주변 장치들에 연결하는 다양한 상호연결을 통해 데이터 트래픽을 모니터링하기 위해 전력 관리 회로(442)를 포함한다. 전력 관리 회로(442)는 링크(435)를 통해 MCH(420)로부터 ICH(440)로 메시지 패킷(437) 내의 가상화된 신호로서 전송될 버스 마스터링 표시자를 생성할 수 있다. 다른 대안으로서, MCH(420) 및 ICH(440)는 버스 마스터링 표시자가 로직을 통해 내부적으로 등록 될 수 있도록 전력 관리 회로를 갖는 단일 컨트롤러 내에 집적될 수 있다.
대안적인 실시예에서, MCH(420) 및 ICH(440)는 별도의 장치들로서 유지되며, 전력 관리 회로는 MCH(420) 및 ICH(440) 둘다의 외부에 있다. MCH(420) 및 ICH(440) 중 어느 하나는 컨트롤러들(420 및 440) 간에 전송되는 메시지 패킷들을 사용하여 다른 컨트롤러로부터 시스템(400) 내의 주변 장치들로부터의 버스 트래픽의 정보를 수집하기 위해 중앙 에이전트로서 동작할 수 있다. 게다가, 중앙 에이전트는 하나 이상의 측파대 신호를 통해 외부의 전력 관리 회로와 정보를 통신할 수 있다.
도 4에 나타낸 컴포넌트들 및 연관된 하드웨어 중 임의의 것 또는 그 모두는 컴퓨터 시스템(400)의 다양한 실시예에서 사용될 수 있다는 것에 주목한다. 그러나, 컴퓨터 시스템의 다른 구성이 도 4에 도시되지 않은 하나 이상의 부가적인 장치를 포함할 수 있다는 것을 알아야 한다. 게다가, 개시된 기술이 멀티-드롭(multi-drop) 환경 또는 점대점 환경 등의 서로 다른 유형의 시스템 환경에 적용가능하다는 것을 알아야 한다. 이와 유사하게, 개시된 기술은 모바일 및 데스크톱 컴퓨팅 시스템 둘다에 적용가능하다.
이상의 설명은 단지 본 발명의 일부 예시적인 실시예들을 설명한 것이다. 이 기술분야의 당업자이면, 이러한 설명, 첨부 도면 및 특허청구범위로부터, 첨부된 특허청구범위의 사상 및 범위를 벗어나지 않고 다양한 수정이 행해질 수 있다는 것을 알아야 한다. 따라서, 본 설명은 한정적인 것이 아니라 예시적인 것으로 간주되어야 한다.