고속 비동기 링크 상에서 디버그 포트를 통한 통과{PASS THROUGH DEBUG PORT ON A HIGH SPEED ASYNCHRONOUS LINK}
본 발명의 기술분야
본 발명은 컴퓨터 시스템 분야에 관한 것이다. 더욱 구체적으로, 본 발명은 컴퓨터 시스템 내의 요소들 사이에 디버그 정보를 전달하는 분야에 관한 것이다.
본 발명의 배경기술
컴퓨터 시스템 요소를 디버깅하는 능력은 컴퓨터 시스템 요소 엔지니어 및 테크니션으로 하여금 문제점들을 식별하고 그들의 제품을 개선할 수 있게 하는 중요한 능력이다. 많은 컴퓨터 시스템 요소는 그 요소 상에 몇몇 핀을 포함할 수도 있는 디버그 포트로 전달될 수 있는 디버그 정보를 생성하는 회로를 포함한다. 이러한 디버그 정보는 핀 상의 활동을 로직 분석기로 관측함으로써 액세스될 수 있다. 이러한 접근의 불리한 점은 몇몇, 어쩌면 16 개 이상의 핀이 이러한 디버그 포트에 필요하다는 것이다. 디버그 포트를 위한 이러한 핀들의 추가는 요소 비용 및 더 낮은 실리콘 양품률 (yield) 뿐만 아니라, 다이 (die) 또는 패키지 사이즈의 증가를 초래한다.
도면의 간단한 설명
본 발명은 이하의 상세한 설명과 본 발명의 실시형태의 첨부된 도면으로부터 더욱 완전하게 이해될 것이지만, 이는 본 발명을 특정한 실시형태로 한정하는 것으로 이해되어서는 안 되며, 단지 설명과 이해를 목적으로 이해되어야 한다.
도 1 은 확장 메모리 브리지에 결합된 메모리 인터페이스 컨트롤러를 갖는 노스 브리지 (north bridge) 를 포함하는 컴퓨터 시스템의 일 실시형태의 블록도이다.
도 2 는 메모리 인터페이스 컨트롤러의 일 실시형태의 블록도이다.
도 3 은 확장 메모리 브리지의 일부의 일 실시형태의 블록도이다.
상세한 설명
일반적으로, 컴퓨터 시스템의 일 실시형태는 인터페이스 컨트롤러를 포함하는 제 1 브리지 디바이스를 포함한다. 이러한 인터페이스 컨트롤러는 브리지 디바이스 내에서 생성된 디버그 정보를 트레이닝 패턴과 결합한다. 제 1 브리지 디바이스는 고속 비동기 인터커넥트 (interconnect) 를 통해 제 2 브리지 디바이스로 연결된다. 제 1 브리지 디바이스는 디버그 정보 및 트레이닝 패턴을 인터커넥트를 통해 제 2 브리지 디바이스로 송신될 패킷으로 변환한다. 트레이닝 패턴은 제 2 브리지 디바이스로 하여금 디버그 정보의 전달동안 비트 및 심볼 동기를 유지할 수 있도록 지원한다. 제 2 브리지 디바이스는 결합된 디버그 정보 및 트레이닝 패턴의 패킷을 수신하고 트레이닝 패턴으로부터 디버그 정보를 분리한다. 그 후, 디버그 정보는, 디버그 정보가 로직 분석기에 의해 관측될 수 있는 메모리 버스로 출력될 수도 있다.
도 1 은 메모리 인터페이스 버스 (115) 를 통해 확장된 메모리 브리지 (XMB : extended memory bridge) (300) 에 연결된 메모리 인터페이스 컨트롤러 (200) 를 갖는 노스 브리지 (110) 를 포함하는 컴퓨터 시스템 (100) 의 예시적인 일 실시형태의 블록도이다. 메모리 인터페이스 (115) 는 고속 비동기 링크이다. 이러한 예시적인 실시형태에 있어서, 메모리 인터페이스 (115) 는 10 비트의 폭이며, 2.1-3.2 GHz 의 범위 내의 클럭 속도에서 동작한다. 컴퓨터 시스템 (100) 은 노스 브리지 (110) 에 연결된 프로세서 (102, 104, 106 및 108) 를 포함한다. 또한, 노스 브리지는 XMB (120, 130 및 140) 에 연결된다. XMB 각각은 메모리 디바이스에 연결될 수도 있다. XMB (300) 는 더블 데이터 레이트 (DDR : double data rate) 메모리 버스 (125) 에 연결된다.
예시적인 컴퓨터 시스템 (100) 은 폭넓게 다양한, 가능한 컴퓨터 시스템 구성 중 하나일 뿐이다. 또한, 여기에 설명한 실시형태가 DDR 메모리 버스를 언급한다고 할지라도, 다른 메모리 타입을 갖는 다른 실시형태도 가능하다.
노스 브리지 (110) 는 디버그 정보를 생성하는 회로 (미도시) 를 포함한다. 디버그 정보를 생성 또는 수집하는 폭넓게 다양한 기술 및 방법 중 어떠한 것도 본 실시형태에서 가능하다. 인터페이스 컨트롤러 (200) 는 생성된 디버그 정보 및 트레이닝 패턴을, DDR 버스 (125) 를 통해 XMB (300) 로 송신하기 위한 패킷으로 결합한다. 메모리 인터페이스 (115) 는 비동기이므로 (클럭 정보는 송신된 데이터의 에지 트랜지션 (edge transition) 으로부터 도출됨), 디버그 정보의 전달동안 XMB (300) 로 하여금 비트 및 심볼 동기를 유지할 수 있도록 충분한 데이터 트랜지션이 인터페이스 (115) 의 10 개의 와이어 상에서 발생하는 것을 보장하기 위하여, 트레이닝 패턴은 디버그 정보와 함께 송신된다.
메모리 인터페이스 컨트롤러 (200) 가 디버그 정보를 XMB (300) 로 전달할 수 있기 전에, XMB 에 디버그 정보의 임박한 전송을 경고하는 일련의 컨트롤 패킷을 우선 송신한다. 이러한 예시적인 실시형태에 있어서, 디버그 정보 전송은 노멀 메모리 인터페이스 프로토콜 외부에서 달성된다. 따라서, XMB (300) 는, 수신된 정보를 적절하게 처리할 수 있도록 디버그 정보 전송이 발생할 시기를 인지할 필요가 있다.
메모리 인터페이스 컨트롤러 (200) 로부터 XMB (300) 로 송신되는 컨트롤 패킷은 이하의 [표 1] 에 나타낸 바와 같이 포맷될 수도 있다.
W9 |
W8 |
W7 |
W6 |
W5 |
W4 |
W3 |
W2 |
W1 |
W0 |
CRC |
CRC |
CRC |
Control Packet |
10 |
CRC |
CRC |
CRC |
Control Packet |
9 |
CRC |
CRC |
CRC |
Control Packet |
8 |
CRC |
CRC |
CRC |
Control Packet |
7 |
CRC |
CRC |
CRC |
Control Packet |
6 |
CRC |
CRC |
CRC |
Control Packet |
5 |
CRC |
CRC |
CRC |
Control Packet |
4 |
CRC |
CRC |
CRC |
Control Packet |
3 |
CRC |
CRC |
CRC |
Control Packet |
2 |
CRC |
CRC |
CRC |
Control Packet |
1 |
[표 1] - 컨트롤 패킷 포맷팅
[표 1] 은 메모리 인터페이스 컨트롤러 (200) 로부터 XMB (300) 로 연속적으로 전송될 10 개의 컨트롤 패킷을 나타낸다. 패킷들 각각의 비트 0 (W0, "W" 는 "와이어 (wire)" 를 나타냄) 은 XMB 에게 디버그 정보 패킷의 전송 전에 얼마나 많은 수의 컨트롤 패킷이 발행될 것인지를 알려주는 오프셋 넘버를 포함한다. 예를 들어, W0 위치에서의 값이 1 이라면, XMB 는 다음 패킷이 디버그 정보일 것이라는 것을 예측할 것이다. 오프셋 값은 10 에서 시작하고 각각의 연속적인 컨트롤 패킷과 함께 카운트 다운한다. 복수의 컨트롤 패킷은, 하나 이상의 패킷이 에러 없이 송신 및 수신되는 것을 보장하기 위하여 전송된다. XMB (300) 가 성공적인 송신을 나타내는 응답 메커니즘이 존재하지 않으므로, 하나 이상의 컨트롤 패킷이 에러 없이 수신되는 것을 보장하기 위해 복수의 패킷은 중복 (redundancy) 을 제공한다. 컨트롤 패킷 각각은 몇개의 순환 중복 체크 (CRC : cyclic redundancy check) 비트를 포함하여, XMB (300) 로 하여금 패킷이 성공적으로 수신되는지 여부를 결정할 수 있게 한다.
이러한 예시적인 실시형태에 있어서, 디버그 및 트레이닝 패턴 정보는 80 비트 패킷으로 구성되는데, 72 비트는 디버그 정보이고 8 비트는 트레이닝 패턴이다. 이하의 [표 2] 는 디버그 및 트레이닝 정보 패킷을 구성하는 하나의 가능한 방식을 나타낸다 (10 개의 패킷을 나타냄).
W9 |
W8 |
W7 |
W6 |
W5 |
W4 |
W3 |
W2 |
W1 |
W0 |
Train |
71:64 |
62:56 |
55:48 |
47:40 |
39:32 |
31:24 |
23:16 |
15:8 |
7:0 |
71:64 |
Train |
62:56 |
55:48 |
47:40 |
39:32 |
31:24 |
23:16 |
15:8 |
7:0 |
63:56 |
71:64 |
Train |
55:48 |
47:40 |
39:32 |
31:24 |
23:16 |
15:8 |
7:0 |
55:48 |
71:64 |
62:56 |
Train |
47:40 |
39:32 |
31:24 |
23:16 |
15:8 |
7:0 |
47:40 |
71:64 |
62:56 |
55:48 |
Train |
39:32 |
31:24 |
23:16 |
15:8 |
7:0 |
39:32 |
71:64 |
62:56 |
55:48 |
47:40 |
Train |
31:24 |
23:16 |
15:8 |
7:0 |
31:24 |
71:64 |
62:56 |
55:48 |
47:40 |
39:32 |
Train |
23:16 |
15:8 |
7:0 |
23:16 |
71:64 |
62:56 |
55:48 |
47:40 |
39:32 |
31:24 |
Train |
15:8 |
7:0 |
15:8 |
71:64 |
62:56 |
55:48 |
47:40 |
39:32 |
31:24 |
23:16 |
Train |
7:0 |
7:0 |
71:64 |
62:56 |
55:48 |
47:40 |
39:32 |
31:24 |
23:16 |
15:8 |
Train |
[표 2] - 디버그 및 트레이닝 정보 패킷 구성
80 비트 패킷은 8 번의 연속적인 클럭 주기동안 1 회에 10 비트가 전송된다. 10 개의 패킷이 연속적으로 전송된다. 8 비트의 트레이닝 정보가 각각의 패킷에 대하여 다른 와이어로 이동됨으로써, 각각의 와이어가 10 개의 패킷의 스트링동안 트레이닝 패턴을 수신하는 것을 보장한다.
또한, 트레이닝 패킷은 각각의 패킷에 대한 패리티 (parity) 정보를 제공하는 이점을 가질 수도 있다. 예를 들어, 패킷에 대한 패리티가 짝수라면 1010_1010 의 8-비트 트레이닝 패턴이 송신될 수 있고, 패킷에 대한 패리티가 홀수라면 0101_0101 의 패턴이 송신될 수 있다.
XMB (300) 는 결합된 디버그 정보 및 트레이닝 패턴의 패킷을 수신하고 트레이닝 패턴으로부터 디버그 정보를 분리한다. 그 후, 디버그 정보는, 로직 분석기 (150) 에 의해 디버그 정보가 관측될 수 있는 메모리 버스 (125) 로 출력될 수도 있다.
도 2 는 메모리 인터페이스 컨트롤러 (200) 의 일부의 일 실시형태의 블록도이다. 디버그 정보 어셈블리 유닛 (240) 은 트레이닝 패턴 (201) 및 디버그 데이터 (205) 를 수신한다. 또한, 어셈블리 유닛 (240) 은 트레인 카운터 (210) 로부터 입력을 수신한다. 어셈블리 유닛 (240) 은 72 비트의 디버그 정보 및 8 비트의 트레이닝 패턴을 포함하는 80-비트 패킷을 생성한다. 트레이닝 패턴은 트레인 카운터 (210) 에 의해 지시되는 위치에 따라 적절한 장소에 위치된다. 디버그 및 트레이닝 정보 패킷은, 또한 노멀 메모리 인터페이스 트래픽 (203) 및 제어 패킷을 제어 패킷 시퀀스 유닛 (230) 으로부터 수신하는 멀티플렉서 (250) 에 의해 수신된다. 멀티플렉서 (250) 의 출력은 직렬화기 (serializer) 유닛 (220) 으로 전달된다. 직렬화기 (220) 는 80 비트 패킷을 입력받아 메모리 인터페이스 (115) 를 통한 전송을 위하여 10 개의 와이어로 이를 감소시킨다.
도 3 은 확장된 메모리 브리지 (300) 일부의 일 실시형태의 블록도이다. 디버그 및 트레이닝 패턴 패킷은 메모리 인터페이스 (115) 를 통해 역직렬화기 (deserializer) 유닛 (310) 에서 수신된다. 역직렬화기 유닛 (310) 은 트레이닝 데이터로부터 디버그 데이터를 분리시키는 디버그 데이터 추출 유닛 (320) 으로 수신된 패킷을 전달한다. 트레인 카운터 (330) 는 현재 패킷에 대한 트레이닝 패턴의 위치를 디버그 데이터 추출 유닛에게 나타낸다. 그 후, 디버그 데이터는 버퍼 (350) 로 전달된다. 디버그 버퍼 (350) 는, 메모리 인터페이스 (115) 가 DDR 버스 (125) 와 다른 클럭 속도에서 동작하는 상황을 허용한다. DDR 메모리 컨트롤러 (340) 는 버퍼 (350) 에 위치한 디버그 데이터를 DDR 버스 (125) 상으로 드라이빙하는데, 데이터는 메모리에 저장되거나 DDR 버스 (125) 로 연결된 로직 분석기에 의해 관측될 수 있다.
전술한 명세서에서, 본 발명이 그것의 구체적이고 예시적인 실시형태에 대하여 설명되었다. 그러나, 첨부된 청구 범위에서 제시된 본 발명의 보다 넓은 사상 및 범위를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있음은 명확하다. 따라서, 이러한 설명 및 도면은 한정적인 의미보다는 예시적인 것으로 고려되어야 한다.
명세서에서 "실시형태", "일 실시형태", "몇몇 실시형태", 또는 "다른 실시형태" 에 대한 언급은 이러한 실시형태와 관련하여 설명된 특유의 특성, 구성, 또는 특징이 본 발명의 적어도 몇몇 실시형태에 포함됨을 의미하며, 반드시 본 발명의 모든 실시형태에 포함됨을 의미하진 않는다. "실시형태", "일 실시형태", 또는 "몇몇 실시형태" 의 다양한 출현이 반드시 모두가 동일한 실시형태를 언급하는 것은 아니다.