KR100509009B1 - 소프트웨어 및 하드웨어 루프 압축 기능을 갖는 선입선출기록/후입선출 판독 트레이스 버퍼 - Google Patents

소프트웨어 및 하드웨어 루프 압축 기능을 갖는 선입선출기록/후입선출 판독 트레이스 버퍼 Download PDF

Info

Publication number
KR100509009B1
KR100509009B1 KR10-2003-7004528A KR20037004528A KR100509009B1 KR 100509009 B1 KR100509009 B1 KR 100509009B1 KR 20037004528 A KR20037004528 A KR 20037004528A KR 100509009 B1 KR100509009 B1 KR 100509009B1
Authority
KR
South Korea
Prior art keywords
address
register
pair
stored
new
Prior art date
Application number
KR10-2003-7004528A
Other languages
English (en)
Other versions
KR20030036856A (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 KR20030036856A publication Critical patent/KR20030036856A/ko
Application granted granted Critical
Publication of KR100509009B1 publication Critical patent/KR100509009B1/ko

Links

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/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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

일실시예에 있어서, 파이프라인 구성의 디지털 신호 처리기(DSP)와 함께 사용하는 트레이스 버퍼 회로는 기록 동작시에 선입선출(FIFO) 레지스터로서 동작하고 판독 동작시에 후입선출(LIFO) 레지스터로서 동작하는 일련의 상호 접속된 레지스터들을 포함한다. 기록 동작시에, 분기 목표/소스 어드레스 쌍은 제1의 트레이스 버퍼 레지스터 쌍에 기록되고 각 레지스터의 내용들은 하류쪽으로 2개의 레지스터씩 쉬프트될 수 있다. 판독 동작시에, 하나의 명령어 어드레스가 최상부 레지스터로부터 판독되고 각 레지스터의 내용들은 상류쪽으로 하나의 레지스터씩 쉬프트될 수 있다. 트레이스 버퍼는 프로그램 흐름에서 하드웨어 및 소프트웨어 루프의 압축을 행할 수 있는 구조를 또한 포함한다. 트레이스 버퍼 내의 각 명령어 어드레스에는 유효 비트가 할당될 수 있고, 트레이스 버퍼의 구조와 유사한 구조를 갖는 유효 비트 버퍼가 유효 비트를 트래킹하기 위해 제공될 수 있다.

Description

소프트웨어 및 하드웨어 루프 압축 기능을 갖는 선입선출 기록/후입선출 판독 트레이스 버퍼{A FIFO WRITE/LIFO READ TRACE BUFFER WITH SOFTWARE AND HARDWARE LOOP COMPRESSION}
본 발명은 파이프라인 프로세서에 관한 것으로, 특히 파이프라인 프로세서와 함께 사용하는 트레이스 버퍼에 관한 것이다.
디지털 신호 처리는 신호를 디지털 형태로 표시하는 것 및 그러한 신호 표시를 수치 연산을 이용하여 변환 또는 처리하는 것과 관련이 있다. 디지털 신호 처리는 무선 통신, 네트워크 및 멀티미디어와 같은 오늘날의 많은 하이테크 제품에 대하여 현장에서 널리 사용되고 있는 기술이다. 디지털 신호 처리 기술이 보급되고 있는 한가지 이유는 상기 제품들을 값싸고 효율적으로 실시할 수 있도록 신뢰성있는 연산 능력을 제공하는 저가의 강력한 디지털 신호 처리기(DSP)가 개발되고 있기 때문이다. DSP가 최초로 개발된 이래, DSP 구조 및 설계는 비디오 레이트 시퀀스의 복잡한 실시간 처리도 수행가능한 지점까지 개발되었다.
DSP는 디지털 비디오, 이미징 및 오디오와 같은 다양한 멀티미디어 분야에서 종종 사용된다. DSP는 디지털 신호의 생성을 취급할 수 있고 또한 그러한 멀티미디어 파일을 열 수도 있다.
MPEG-1(Motion Picture Expert Group), MPEG-2, MPEG-4 및 H.263은 디지털 비디오 압축 표준 및 파일 포맷 중에 포함된다. 이들 표준은 프레임 전체를 각각 저장하는 대신 주로 하나의 비디오 프레임으로부터 다른 비디오 프레임까지의 변화를 저장함으로써 디지털 비디오 신호의 높은 압축율을 달성한다. 이 때, 비디오 정보는 많은 다른 기술을 이용하여 추가로 압축될 수 있다.
DSP는 압축 중에 비디오 정보에 대하여 다양한 동작을 수행할 수 있다. 이러한 동작들 중에는 움직임 검색 및 공간 보간 알고리즘이 있다. 그 주요 목적은 인접 프레임 내의 블록들간 왜곡을 측정하는 것이다. 이러한 동작은 연산 집약적이고 높은 데이터 처리량을 필요로 할 수 있다.
MPEG 표준 계열은 멀티미디어 분야 및 파일의 증가하는 대역폭 요구와 보조를 맞추도록 개발되고 있다. 표준에 대한 각각의 새로운 버젼은 MPEG 호환 비디오 압축 설비에서 사용되는 DSP에 대하여 더 큰 처리 요구를 필요로 하는 더욱 복잡한 알고리즘을 제공한다.
비디오 처리 설비 제조업자는 MPEG 및 H.263 표준하에서의 비디오 엔코딩용으로 주문 생산된 분야 지정 집적 회로(application-specific integrated circuit: ASIC)에 가끔 의존한다. 그러나, ASIC는 설계가 복잡하고 생산 비용이 많이 들며 범용 DSP보다 그 적용에 있어서 유연성이 적다.
본 발명의 상기 및 다른 특징과 장점들은 첨부 도면을 참조한 이하의 설명으로부터 더욱 명백해질 것이다.
도 1은 본 발명에 따른 프로세서를 이용한 이동식 비디오 장치의 블록도이다.
도 2는 본 발명의 실시예에 따른 신호 처리 시스템의 블록도이다.
도 3은 본 발명의 실시예에 따른 다른 신호 처리 시스템의 블록도이다.
도 4는 본 발명의 실시예에 따른 프로세서의 대표적인 파이프라인 스테이지를 나타내는 도이다.
도 5는 본 발명의 실시예에 따른 트레이스 버퍼의 블록도이다.
도 6은 본 발명의 실시예에 따른 도 5의 트레이스 버퍼의 압축 동작을 설명하는 흐름도이다.
도 7은 본 발명의 실시예에 따른 도 5의 트레이스 버퍼의 유효 비트 버퍼의 블록도이다.
도 1은 본 발명의 실시예에 따른 트레이스 버퍼(102)를 포함하는 이동식 비디오 장치(100)를 도시한 것이다. 이동식 비디오 장치(100)는 안테나(105), 또는 예컨대 디지털 비디오 디스크(DVD) 또는 메모리 카드와 같은 디지털 비디오 기억 매체(120)로부터 수신한 엔코딩된 비디오 신호로부터 생성된 비디오 이미지를 디스플레이하는 휴대용 장치일 수 있다. 프로세서(110)는 프로세서 조작용 명령 및 데이터를 저장할 수 있는 캐시 메모리(115)와 통신한다. 프로세서(110)는 마이크로프로세서, 디지털 신호 처리기(DSP), 슬레이브 DSP를 제어하는 마이크로프로세서, 또는 하이브리드 마이크로프로세서/DSP 구조를 갖는 마이크로프로세서일 수 있다. 이 명세서에서는 프로세서(110)를 이하 DSP(110)라고 부르기로 한다.
DSP(110)는 예컨대 아날로그-디지털 변환, 복조, 필터링, 데이터 복구 및 디코딩 등 엔코드된 비디오 신호에 대한 각종 동작을 수행할 수 있다. DSP(110)는 MPEG 표준 계열 및 H.263 표준 등의 각종 디지털 비디오 압축 표준 중의 하나에 따라 압축 디지털 비디오 신호를 디코드할 수 있다. 그 다음에, 디코드된 비디오 신호는 디스플레이(125)상에 비디오 이미지를 생성하기 위해 디스플레이 드라이버(130)에 입력된다.
일반적으로 휴대용 장치는 전원에 의해 제한을 받는다. 또한, 비디오 디코딩 동작은 연산 집중식이다. 따라서, 이러한 장치에 사용되는 프로세서는 비교적 고속이고 저소비 전력 장치인 것이 좋다.
DSP(110)는 철저히 파이프라인형의 로드/스토어 구조를 가질 수 있다. 파이프라인 구조를 사용함으로써, DSP의 성능은 비파이프라인형 DSP에 비하여 증대될 수 있다. 제1 명령을 인출하여 실행한 후 제2 명령을 인출하는 대신에, 파이프라인형 DSP(110)는 제1 명령을 실행하는 것과 동시에 제2 명령을 인출할 수 있고, 따라서 명령 처리량을 개선한다. 또한, 파이프라인형 DSP의 클럭 사이클은 동일한 클럭 사이클에서 명령이 인출되어 실행되는 비파이프라인형 DSP의 클럭 사이클보다 더 짧을 수 있다.
이러한 DSP(110)는 비디오 캠코더, 화상 회의(teleconference), PC 비디오 카드 및 고선명 텔레비전(HDTV)에서 사용하는 것으로 생각된다. 또한 DSP(110)는 이동 전화, 음성 인식 및 기타 응용에서 사용되는 음성 처리와 같은 디지털 신호 처리를 이용하는 다른 기술과 관련하여 사용되는 것으로 생각된다.
도 2는 본 발명의 실시예에 따른 DSP(110)를 포함하는 신호 처리 시스템(200)의 블록도를 도시한다. 예컨대, 안테나(105) 등의 외부 소스에 의해 하나 이상의 아날로그 신호가 신호 조절기(202)에 제공될 수 있다. 신호 조절기(202)는 아날로그 신호에 대하여 특정의 전처리 기능을 수행하도록 구성된다. 대표적인 전처리 기능으로는 수개의 아날로그 신호를 함께 혼합하는 것, 필터링하는 것, 증폭하는 것 등이 있을 수 있다.
아날로그-디지털 변환기(ADC)(204)는 상기 신호 조절기(202)로부터 전처리된 아날로그 신호를 수신하도록 결합되어 그 전처리된 아날로그 신호를 전술한 바와 같이 복수의 샘플로 구성된 디지털 신호로 변환할 수 있다. 상기 샘플들은 신호 조절기(202)가 수신하는 아날로그 신호의 특성에 의해 결정된 샘플링 속도에 따라 취해진다. DSP(110)는 ADC(204)의 출력에서 디지털 신호를 수신하도록 결합된다. DSP(110)는 수신된 디지털 신호에 대하여 소정의 신호 변환을 수행하여 하나 이상의 출력 디지털 신호를 생성할 수 있다. 디지털-아날로그 변환기(DAC)(206)는 DSP(110)로부터 출력 디지털 신호를 수신하도록 결합될 수 있다. DAC(206)는 상기 출력 디지털 신호를 출력 아날로그 신호로 변환한다. 그 다음에, 출력 아날로그 신호는 다른 신호 조절기(208)로 전달될 수 있다. 신호 조절기(208)는 출력 아날로그 신호에 대하여 후처리 기능을 수행할 수 있다. 대표적인 후처리 기능은 전술한 전처리 기능과 유사하다. 임의의 적당한 구성으로 된 이들 장치가 DSP(110)를 구비한 신호 처리 시스템(200)에 결합될 수 있다.
도 3은 본 발명의 다른 실시예에 따른 신호 처리 시스템(300)을 도시한다. 이 실시예에서, 디지털 수신기(302)는 하나 이상의 디지털 신호를 수신하여 그 수신된 디지털 신호를 DSP(110)로 전달하도록 구성된다. 도 2의 실시예에서와 마찬가지로, DSP(110)는 수신된 디지털 신호에 대해 소정의 신호 변환을 수행하여 하나 이상의 출력 디지털 신호를 생성한다. 디지털 신호 송신기(304)는 상기 출력 디지털 신호를 수신하도록 결합될 수 있다. 하나의 대표적인 응용예에 있어서, 신호 처리 시스템(300)은 디지털 수신기(302)가 디지털 기억 장치(120)에 저장된 데이터를 나타내는 디지털 신호를 DSP(110)에 전달하는 디지털 오디오 장치이다. 그 다음에, DSP(110)는 상기 디지털 신호를 처리하고, 그 결과의 출력 디지털 신호를 디지털 송신기(204)에 전달한다. 이 때, 디지털 송신기(304)는 출력 디지털 신호의 값들이 디스플레이 드라이버(130)에 전송되어 디스플레이(125)상에 비디오 이미지를 생성하게 한다.
도 4에 도시된 파이프라인은 명령 인출(402-403), 디코드(404), 어드레스 계산(405), 실행(406-408) 및 재기록(409) 스테이지 등의 8개의 스테이지를 포함할 수 있다. 명령 i는 하나의 클럭 사이클에서 인출된 다음 그 후속 클럭 사이클에서 새로운 명령, 예를 들면 i+1 및 i+2를 인출함과 동시에 파이프라인에서 동작 및 실행될 수 있다.
파이프라인은 부가적인 조정 문제를 야기하여 프로세서 성능을 해칠 수 있다. 프로그램 흐름에서의 점프는 파이프라인에서 빈 슬롯 또는 "버블"을 생성할 수 있다. 조건 분기가 취해지거나 예외 또는 인터럽트가 발생되게 하는 상황은 명령의 순차적 흐름을 바꿀 수 있다. 이러한 상황이 발생한 후에는 새로운 명령이 순차적 프로그램 흐름의 외부에서 인출되어야 하므로 파이프라인에서의 나머지 명령을 부적절하게 만들 수 있다. 이러한 복잡한 문제를 해결하기 위하여 파이프라인에서의 데이터 전송, 동적 분기 예측 및 유효 비트를 명령어 어드레스와 연관시키는 방법이 사용될 수 있다.
트레이스 버퍼는 프로세서의 프로그램 카운터(프로그램 흐름) 정보를 기억할 수 있다. 트레이스 버퍼는 디버깅 도구(debugging tool)로서 사용되어 실행 중에 취해진 프로그램의 경로를 다시 생성할 수 있다. 프로그램을 실행할 때에 어떤 명령은 예기치않은 이벤트를 발생할 수 있다. 그러한 예기치않은 이벤트는 프로그램 흐름을 방해할 수 있다. 그러한 이벤트로는, 예를 들면, 시스템 내의 다른 장치에 의해 트리거된 결과 또는 인터럽트에 기초한 동적 분기가 있다. 트레이스 버퍼에서 실행된 명령(트레이스 데이터)의 이력 기록(log)은 바람직하지 않은 이벤트가 언제 발생하는지, 언제 코드를 실행하는지 및 무엇이 그것을 트리거하는지를 결정하기 위해 사용될 수 있다.
트레이스 버퍼(150; 도 1)는 기록 버스(152)에 의해 DSP(110)에 접속될 수 있다. 트레이스 버퍼(150)는 인출된 명령의 어드레스를 일련의 상호 접속된 레지스터에 저장할 수 있다. 저장된 어드레스는 트레이스 버퍼(150)로부터 판독되어 판독 버스(156)를 통해 트레이스 메모리(154)로 전달될 수 있다. 트레이스 메모리(154)는 DSP의 내부 또는 외부에 구성될 수 있다.
도 5는 본 발명의 실시예에 따른 트레이스 버퍼(500)의 구조를 도시한 것이다. 트레이스 버퍼(500)는 32 비트 명령어 어드레스를 직렬 연결된 32 개의 32 비트 트레이스 버퍼 레지스터(tbup.0∼tbup.31)에 저장할 수 있으며, 각각의 레지스터는 그와 연관된 입력 멀티플렉서(MUX)를 구비하고 있다. 본 발명의 실시예에 따라 트레이스 버퍼(150)는 64 비트 기록 버스(152; 도 1)와 32 비트 판독 버스(156)를 가질 수 있다.
프로그램 코드는 프로그램 코드(PC)가 코드 내의 다른 위치로 점프하게 하는 취해진 분기 또는 인터럽트와 같은 이벤트가 발생하지 않는 한 순차적으로 실행된다. 그러한 점프 이벤트 사이의 코드가 순차적이기 때문에, 프로그램 흐름은 점프 이벤트의 기록으로부터 재구성될 수 있다. 트레이스 버퍼용으로 필요한 메모리 및 그 동작 속도를 줄이기 위하여, 트레이스 버퍼는 프로그램이 점프 또는 중단되게 하는 명령, 예컨대 분기 명령, 예외, 인터럽트 및 분기 목표의 어드레스 등의 어드레스만을 저장할 수 있다.
분기는 프로그램 흐름에서 공통적인 점프 이벤트일 수 있다. 각각의 분기는 한 쌍의 어드레스, 즉 분기 목표 어드레스 및 분기 소스 어드레스에 의해 식별될 수 있다. 분기 목표 어드레스는 분기된 명령 세트의 제1 명령의 어드레스일 수 있고, 분기 소스 어드레스는 프로그램 흐름의 중단이 발생한 명령 또는 최종 완료된 명령의 어드레스이다.
트레이스 버퍼(150)는 기록 동작시에 선입선출(FIFO) 레지스터로서 동작할 수 있다. 어떤 분기의 분기 목표 어드레스 및 분기 소스 어드레스는 64 비트 기록 버스(152)를 통하여 64 비트 워드로서 동시에 트레이스 버퍼에 기록될 수 있다. 분기 목표 어드레스는 tbuf.0에 접속되고 pc.com이라고 표시된 레지스터(510)에 저장될 수 있고, 분기 소스 어드레스는 tbuf.1에 접속되고 pc.hold라고 표시된 레지스터(512)에 기록될 수 있다. pc.com 레지스터(510) 내의 분기 목표 어드레스가 tbuf.0에 기록될 때, tbuf.0에 동시에 저장된 분기 목표 어드레스는, 만일 있다면, 기록 경로(514)를 따라서 tbuf.2로 쉬프트될 것이다. 이와 유사하게, pc.hold 레지스터(512) 내의 분기 소스 어드레스가 tbuf.1에 기록될 때, tbuf.1에 동시에 저장된 분기 소스 어드레스는, 만일 있다면, 기록 경로(516)를 따라서 tbuf.3으로 쉬프트될 것이다. 그 다음의 기록 동작에서, tbuf.0에 저장된 분기 목표 어드레스는 tbuf.2로 쉬프트될 것이고, tbuf.2에 저장된 분기 목표 어드레스는 tbuf.4로 쉬프트될 것이다. tbuf.1 내지 tbuf.3에 저장된 분기 소스 어드레스 및 tbuf.3 내지 tbuf.5에 저장된 분기 소스 어드레스에 대해서도 유사한 쉬프트 동작이 발생한다. 이와 유사한 쉬프트 동작이 다른 트레이스 버퍼 레지스터에서도 발생할 수 있다. 즉, 트레이스 버퍼 레지스터 내의 각 명령어 어드레스는 각각의 기록 사이클에서 2개의 레지스터씩 하류쪽으로 쉬프트될 수 있다.
트레이스 버퍼는 판독 동작시 후입선출(LIFO) 레지스터로서 동작할 수 있다. 판독 버스(156)는 32 비트폭이기 때문에 32 비트의 분기 목표 어드레스 및 분기 소스 어드레스는 쌍으로 판독되지 않고 개별적으로 판독될 수 있다. tbuf.0의 어드레스가 판독될 때, tbuf.1의 어드레스는 판독 경로(520)를 따라 tbuf.0으로 좌측(상류)으로 쉬프트될 수 있다. 이와 유사하게, 다른 레지스터의 어드레스들은 상류쪽으로 하나의 레지스터씩 쉬프트된다. 유사한 쉬프트 동작이 다른 트레이스 버퍼 레지스터에서도 발생할 수 있다. 즉, 트레이스 버퍼 레지스터 내의 각 명령어 어드레스는 각각의 판독 사이클에서 1개의 레지스터씩 상류쪽으로 쉬프트될 수 있다.
트레이스 버퍼(150)가 충만(full) 상태일 때, 즉, tbuf.30과 tbuf.31이 채워졌을 때, 트레이스 버퍼는 트레이스 버퍼 충만 예외를 트리거할 수 있다. 이 예외는 예외 핸들러로 전송되고, 상기 예외 핸들러는 트레이스 버퍼 예외가 될 예외를 결정하고, 트레이스 버퍼(150)의 내용을 트레이스 버퍼(154)로 비우기 위한 판독 동작을 개시한다. 예외 핸들러는 또한 트레이스 버퍼(150)가 판독 동작인 동안에 프로그램 흐름을 중단하여 트레이스 정보의 손실을 방지한다. 트레이스 버퍼는 tbuf.0에서 판독된 각 어드레스가 트레이스 버퍼(150)의 내용을 위해 특별히 할당된 메모리 영역에 저장되는 메모리 맵 판독(MMR) 동작에서 판독될 수 있다.
다른 실시예에 따르면, 트레이스 버퍼(150)가 충만 상태일 때, 트레이스 버퍼는 트레이스 버퍼 충만 예외를 트리거하지 않을 수 있다. 그 대신, FIFO 레지스터로서 동작하는 트레이스 버퍼(150)는 트레이스 버퍼의 바닥에 있는 어드레스를 삭제할 수 있다. 즉, 어드레스들은 tbuf.30 및 tbuf.31의 외부로 빠져나갈 수 있다.
트레이스 버퍼 자원들을 더욱 보전하고 그에 따라 트레이스 버퍼(150)가 동작하는 성능 레벨 및 속도를 개선하기 위하여, 트레이스 코드를 압축하는 구성이 제공될 수 있다. 프로그램 흐름은 트레이스 버퍼를 급속하게 채워서 판독 동작의 주파수 및 그에 따른 트레이스 수집의 저속 성능을 증가시키는 소프트웨어 및 하드웨어 루프를 포함할 수 있다. n 사이클 루프에 있는 동안, 저장되어 있는 분기 목표/소스 어드레스 쌍들은 n회 반복되고 프로그램 흐름에 대하여 중요한 정보를 제공하지 않을 수 있다. 따라서, 반복된 목표/소스 어드레스 쌍들을 압축하는 것이 바람직하다.
트레이스 버퍼(150)는 레벨 1 압축과 레벨 2 압축을 행할 수 있는데, 상기 레벨 1 압축은 임의의 루프에 의해 트리거되고 상기 레벨 2 압축은 내부 루프를 내장한 루프에 의해 트리거될 수 있다. 도 6은 레벨 1 압축과 레벨 2 압축을 포함한 동작(600)을 설명하기 위한 흐름도이다. 이하의 설명은 단순히 동작(600)을 실행하는 하나의 실시예일 뿐이다. 다른 실시예에서는 일부의 스텝이 스킵되거나 또는 다른 순서로 수행될 수 있다.
새로운 분기 목표가 회부되면, 분기 목표/소스 어드레스 쌍은 pc.com 및 pc.hold 레지스터에 각각 저장되고, 동작(600)은 스텝 602로 복귀된다. pc.com 및 pc.hold 레지스터의 어드레스 쌍이 새로운 어드레스 쌍이면, 스텝 604에서 레벨 1 비교기(550)에 의해 상기 새로운 어드레스 쌍을 tbuf.0 및 tbuf.1에 저장된 어드레스 쌍과 비교한다.
본 발명의 실시예에 따르면, 명령어 어드레스는 16 비트 경계를 가질 수 있다. 명령어 어드레스의 최하위 비트(LSB)는 0이고 유용한 정보를 제공하지 않을 수 있다. 따라서, 명령어 어드레스의 LSB는 새로운 어드레스 쌍과 tbuf.0 및 tbuf.1에 내포된 저장 어드레스 쌍과의 비교시에 고려하지 않을 수도 있다.
본 발명의 실시예에 따르면, tbuf.0 내의 분기 목표 어드레스의 LSB는 레벨 1 압축을 나타내기 위해 사용될 수 있다. 어드레스 쌍들이 일치하면, tbuf.0 및 tbuf.1 내의 저장된 어드레스 쌍은 통상적으로 0인 tbuf.0 내의 분기 목표 어드레스의 LSB를 스텝 606에서 1로 설정함으로써 압축될 수 있다. 이 경우에, 새로운 어드레스 쌍은 트레이스 버퍼에 기록되지 않는다.
스텝 608에서 레벨 2 압축이 가능하지 않다고 판정되고 새로운 어드레스 쌍과 저장된 어드레스 쌍이 일치하지 않으면, 새로운 어드레스 쌍은 스텝 610에서 tbuf.0 및 tbuf.1에 기록될 수 있다.
스텝 608에서 레벨 2 압축이 가능하다고 판정되고 새로운 어드레스 쌍과 저장된 어드레스 쌍이 일치하지 않으면, pc.com 및 pc.hold 내의 새로운 어드레스 쌍과 tbuf.2 및 tbuf.3에 저장된 어드레스 쌍을 스텝 612에서 레벨 2 비교기(552)에 의해 비교할 수 있다. 새로운 어드레스 쌍과 tbuf.2 및 tbuf.3에 저장된 어드레스 쌍이 일치하면, tbuf.3 내의 분기 소스 어드레스의 LSB가 스텝 614에서 1로 설정될 수 있다. 이 경우에, 새로운 어드레스 쌍은 트레이스 버퍼에 기록되지 않는다.
새로운 어드레스 쌍과 tbuf.2 및 tbuf.3에 저장된 어드레스 쌍이 일치하지 않으면, 새로운 어드레스 쌍은 스텝 610에서 트레이스 버퍼에 기록될 수 있다.
표 1은 예시적인 레벨 1 압축 동작을 나타내는 것이다.
명령어 어드레스 명령
0x2000 I1
0x2002 I2
0x2006 I3
0x2008 I4
0x200a 루프가 종료하지 않았으면 I2로 분기
0x200c I5
표 1의 프로그램 흐름은 루프가 종료할 때까지 명령어 어드레스 0x200a(분기 소스 어드레스)에서 명령어 어드레스 0x2002(분기 목표 어드레스)에서의 명령 I2로 분기하는 순환 루프를 포함한다. 루프가 종료하면, PC는 명령어 어드레스 0x200c에서의 명령 I5로 루프를 빠져나간다.
루프를 최초 반복한 후에, tbuf.0은 명령어 어드레스 0x2002(분기 목표 어드레스)를 포함하고, tbuf.1은 명령어 어드레스 0x200a(분기 소스 어드레스)를 포함한다. 루프를 두번 반복할 때, 레벨 1 비교기(550)는 새로운 목표/소스 어드레스 쌍(0x2002, 0x200a)을 tbuf.0 및 tbuf.1에 저장된 어드레스 쌍(0x2002, 0x200a)과 비교하고, 어드레스의 LSB는 버린다. 새로운 어드레스 쌍과 저장된 어드레스 쌍이 일치하기 때문에, 새로운 어드레스 쌍은 tbuf.0 및 tbuf.1에 기록되지 않고 tbuf.0 내의 분기 목표 어드레스의 LSB는 1로 설정된다. 분기 목표 어드레스의 LSB를 설정하면 그 값이 0x2002로부터 0x2003으로 변한다.
루프를 세번 반복할 때, 레벨 1 비교기(550)는 새로운 어드레스 쌍(0x2002, 0x200a)을 tbuf.0 및 tbuf.1에 저장된 어드레스 쌍(0x2003, 0x200a)과 비교하고, 어드레스의 LSB는 버린다. 어드레스 쌍들이 일치하기 때문에, pc.com 및 pc.hold 레지스터 내의 새로운 어드레스 쌍은 tbuf.0 및 tbuf.1에 기록되지 않고 tbuf.0 및 tbuf.1 내의 어드레스 쌍은 그대로 유지된다(0x2003, 0x200a).
표 2는 예시적인 레벨 2 압축 동작을 나타내는 것이다.
명령어 어드레스 명령
0x2000 I1
0x2002 I2
0x2006 I3
0x2008 루프가 종료되지 않았으면 I2로 분기
0x200a I4
0x200c I5
0x2010 루프가 종료되지 않았으면 I1로 분기
0x2014 I6
표 2의 프로그램 흐름은 명령어 어드레스 0x2010에서 명령어 어드레스 0x2000에서의 명령 I1으로 분기하는 순환 외부 루프 및 명령어 어드레스 0x2008에서 명령어 어드레스 0x2002에서의 명령 I2로 분기하는 내부 루프를 포함한다.
내부 루프를 최초 반복한 후에, tbuf.0은 명령어 어드레스 0x2002(분기 목표 어드레스)를 포함하고, tbuf.1은 명령어 어드레스 0x200a(분기 소스 어드레스)를 포함한다. 내부 루프를 두번 반복할 때, 표 1을 참조하여 위에서 설명한 바와 같은 레벨 1 압축이 발생하고, tbuf.0의 분기 목표 어드레스, 즉 0x2002는 0x2003으로 설정된다.
내부 루프가 종료하면, PC는 명령 I1으로 복귀하기 위하여, 명령어 어드레스 0x2010에서의 분기 명령과 조우할 때까지 명령어 어드레스 0x200a에서의 명령 I4로 푸프를 빠져나간다. 외부 루프를 최초 반복할 때, 외부 루프의 분기 목표 어드레스, 즉 0x2000은 tbuf.0에 기록되고, 외부 루프의 분기 소스 어드레스, 즉 0x2010은 tbuf.1에 기록되며, tbuf.0 및 tbuf.1 내의 어드레스 쌍(0x2003, 0x2008)은 tbuf.2 및 tbuf.3으로 쉬프트된다. 외부 루프를 두번 반복할 때 내부 루프를 두번째 조우하면, 레벨 2 압축이 발생한다. 레벨 1 비교기(550)는 도 6의 스텝 604에서 새로운 어드레스 쌍을 tbuf.0 및 tbuf.1에 저장된 어드레스 쌍(0x2000, 0x2010)과 비교한다. 이들은 일치하지 않기 때문에, 레벨 2 비교기(552)는 그 다음에 스텝 612에서 새로운 어드레스 쌍(0x2002, 0x2008)을 tbuf.2 및 tbuf.3에 저장된 어드레스 쌍(0x2003, 0x2008)과 비교하고 LSB는 버린다. 이 어드레스 쌍들이 일치하기 때문에, 새로운 어드레스 쌍은 tbuf.0 및 tbuf.1에 기록되지 않는다. 레벨 2 압축은 tbuf.3 내의 소스 어드레스의 LSB를 0으로부터 1로 설정하고, 저장된 명령어 어드레스 값을 0x2008로부터 0x2009로 변경함으로써 표시된다.
외부 루프를 두번 반복할 때, 그 외부 루프에서 레벨 1 압축이 발생한다. 레벨 1 비교기(550)는 새로운 어드레스 쌍(0x2000, 0x2010)을 tbuf.0 및 tbuf.1에 저장된 어드레스 쌍(0x2000, 0x2010)과 비교하고 그 어드레스의 LSB는 버린다. 새로운 어드레스 쌍과 저장된 어드레스 쌍이 일치하기 때문에, 새로운 어드레스 쌍은 tbuf.0 및 tbuf.1에 기록되지 않고, tbuf.0 내의 목표 어드레스의 LSB는 0으로부터 1로 설정되어 저장된 명령어 어드레스 값을 0x2000으로부터 0x2001로 변경한다.
DSP(110)가 전원 차단 후 재시작될 때, 즉 파워 온 리셋시에, 트레이스 버퍼(150)는 DSP(110)가 폐쇄되기 전에 실행중이었던 프로그램 흐름으로부터 남아있는 무효 명령어 어드레스를 포함할 수 있다. 본 발명의 실시예에 따르면, 트레이스 버퍼 내의 각 명령어 어드레스는 관련된 1 비트 유효 비트를 갖는다. 이 유효 비트는 트레이스 버퍼(150) 내의 명령어 어드레스가 현재의 프로그램 흐름에 대하여 유효인지 무효인지를 각각 하이값과 로우값으로 표시한다. 명령어 어드레스가 무효이면 그 어드레스는 판독 동작시에 트레이스 메모리(154)에 기록되지 않을 수 있다.
도 7은 트레이스 버퍼(150) 내의 명령어 어드레스와 연관된 유효 비트를 추적하는 유효 비트 버퍼(700)를 도시한 것이다. 유효 비트 버퍼(700)는 트레이스 버퍼(150)의 구조와 유사한 구조를 가지며, 각각 관련된 입력 멀티플렉서(705)를 구비하고 vbuf.0 내지 vbuf.31로 표시된 32개의 1 비트 플립플롭(FF)을 포함한다. 각각의 유효 비트 버퍼에 대한 입력 멀티플렉서(705)는 리셋 게이트(710)를 포함할 수 있다. 파워 온 리셋시에, 각 유효 비트 버퍼 FF의 유효 비트는 0으로 설정되어 트레이스 버퍼(150) 내의 대응하는 명령어 어드레스가 무효임을 표시할 수 있다.
유효 비트 버퍼의 동작 역시 트레이스 버퍼의 동작과 유사하다. 기록 동작시에, pc.com 레지스터(510) 내의 분기 목표 어드레스에 대응하는 유효 비트는 FF 712로부터 vbuf.0으로 전달될 수 있으며, pc.hold 레지스터(512) 내의 분기 소스 어드레스에 대응하는 유효 비트는 FF 713으로부터 vbuf.1로 전달될 수 있다. 트레이스 버퍼(150)와 마찬가지로, 유효 비트는 기록 동작시에 기록 경로(714)를 따라 2개의 FF씩 쉬프트될 수 있고, 판독 동작시에는 판독 경로(716)를 따라 하나의 FF씩 쉬프트될 수 있다. vbuf.0으로부터 판독된 각각의 유효 비트에 대하여, 로우값을 갖는 1 비트 유효 비트는 유효 비트 발생기(720)에 의해 vbuf.31에 기록되어 vbuf.30에 쉬프트된 유효 비트를 교체할 수 있다.
본 발명의 여러가지 실시예에 따른 트레이스 버퍼는 프로그램 흐름에서의 모든 변화들을 포착하면서 정확한 예외를 발생하는 장점이 있다. 또한, 트레이스 버퍼를 FIFO/LIFO 구성으로 함으로써 FIFO만으로 또는 LIFO만으로 구성하는 경우보다 더 적은 다중화를 필요로 하며, 따라서 칩상에서 트레이스 버퍼(150)에 대한 공간 및 전력 소모를 줄일 수 있다.
지금까지 본 발명의 각종 실시예를 설명하였지만, 본 발명의 취지 및 범위로부터 일탈함이 없이 다양한 변경이 이루어질 수 있다. 예를 들어, 32비트 대신에 16비트 또는 64비트의 폭을 갖는 명령어 어드레스가 적절하게 조절된 트레이스 버퍼 레지스터 및 판독 버스와 기록 버스를 이용하여 트레이스 버퍼에 의해 트레이스될 수 있다. 따라서, 이러한 기타의 실시예들도 첨부된 청구범위의 범위 내에 있는 것으로 한다.

Claims (34)

  1. 트레이스 버퍼 회로에 있어서,
    다수의 상호 접속된 레지스터로서, 트레이스 동작 동안 페치되는 명령어들의 어드레스를 입력 및 출력하기 위한 제1 단부 레지스터, 제2 단부 레지스터, 및 상기 제1 단부 레지스터와 상기 제2 단부 레지스터 사이에 접속된 다수의 중간 레지스터를 포함하는 상기 다수의 상호 접속된 레지스터와,
    기록 동작시에 상기 다수의 상호 접속된 레지스터 중 하나에 있는 명령어 어드레스를 상기 제2 단부 레지스터쪽으로 2개의 레지스터씩 쉬프트시키기 위한 기록 경로와,
    제1 유지 레지스터와,
    제2 유지 레지스터와,
    상기 제1 유지 레지스터 내의 루프에 대응하는 새로운 분기 목표 어드레스와, 상기 제1 단부 레지스터 내에 저장된 분기 목표 어드레스를 비교하는 제1 비교기와,
    상기 제2 유지 레지스터 내의 루프에 대응하는 새로운 분기 소스 어드레스와, 제1 인접 레지스터 - 상기 제1 인접 레지스터는 판독 경로에서 상기 제1 단부 레지스터에 접속됨 - 내에 저장된 분기 소스 어드레스를 비교하는 제2 비교기와,
    상기 새로운 분기 목표 어드레스가 상기 저장된 분기 목표 어드레스와 일치하고, 상기 새로운 분기 소스 어드레스가 상기 저장된 분기 소스 어드레스와 일치하는 것에 응답하여, 압축 표시자를 생성하는 압축 표시 회로를 포함하는 트레이스 버퍼 회로.
  2. 제1항에 있어서, 판독 동작시에 상기 명령어 어드레스를 상기 제1 단부 레지스터쪽으로 하나의 레지스터 만큼 쉬프트시키기 위한 판독 경로를 더 포함하는 트레이스 버퍼 회로.
  3. 제1항에 있어서, 상기 트레이스 버퍼가 기록 동작시에는 선입선출(first-in first-out, FIFO) 레지스터로서 동작하고 판독 동작시에는 후입선출(last-in first-out, LIFO) 레지스터로서 동작하는 것인 트레이스 버퍼 회로.
  4. 제1항에 있어서, 상기 명령어 어드레스는 32 비트 워드를 포함하는 것인 트레이스 버퍼 회로.
  5. 제4항에 있어서, 상기 제1 단부 레지스터, 제2 단부 레지스터 및 다수의 상호 접속된 레지스터들은 각각 32 비트 레지스터를 포함하는 것인 트레이스 버퍼 회로.
  6. 제5항에 있어서, 상기 다수의 상호 접속된 레지스터는 32개의 레지스터를 포함하는 것인 트레이스 버퍼 회로.
  7. 제5항에 있어서, 기록 동작시에 64 비트 어드레스 쌍을 상기 제1 단부 어드레스 및 인접 레지스터에 기록하기 위한 64 비트 기록 버스와,
    판독 동작시에 상기 제1 단부 레지스터로부터 32 비트 명령어 어드레스를 판독하기 위한 32 비트 판독 버스를 더 포함하는 트레이스 버퍼 회로.
  8. 삭제
  9. 제1항에 있어서, 상기 압축 표시 회로는 상기 새로운 분기 목표 어드레스가 상기 저장된 분기 목표 어드레스와 일치하고 상기 새로운 분기 소스 어드레스가 상기 저장된 분기 소스 어드레스와 일치하는 것에 응답하여, 상기 저장된 분기 목표 어드레스의 최하위 비트를 설정하도록 동작하는 것인 트레이스 버퍼 회로.
  10. 제1항에 있어서,
    판독 경로에서 상기 제1 인접 레지스터에 접속된, 상기 다수의 레지스터 내의 제2 인접 레지스터와,
    판독 경로에서 상기 제2 인접 레지스터에 접속된, 상기 다수의 레지스터 내의 제3 인접 레지스터와,
    상기 제1 유지 레지스터 내의 새로운 분기 목표 어드레스와 상기 제2 인접 레지스터 내에 저장된 제2 분기 목표 어드레스를 비교하는 제3 비교기와,
    상기 제2 유지 레지스터 내의 새로운 분기 소스 어드레스와 상기 제3 인접 레지스터 내에 저장된 제2 분기 소스 어드레스를 비교하는 제4 비교기를 더 포함하고,
    상기 압축 표시 회로는 상기 새로운 분기 목표 어드레스가 상기 제2 인접 레지스터 내에 저장된 제2 분기 목표 어드레스와 일치하고 상기 새로운 분기 소스 어드레스가 상기 제3 인접 레지스터 내에 저장된 제2 분기 소스 어드레스와 일치하는 것에 응답하여 또한 압축 표시자를 발생하도록 동작하는 것인 트레이스 버퍼 회로.
  11. 제10항에 있어서, 상기 압축 표시 회로는 상기 새로운 분기 목표 어드레스가 상기 제2 인접 레지스터 내에 저장된 분기 목표 어드레스와 일치하고 상기 새로운 분기 소스 어드레스가 상기 제3 인접 레지스터 내에 저장된 분기 소스 어드레스와 일치하는 것에 응답하여, 상기 제3 인접 레지스터 내에 저장된 분기 소스 어드레스의 최하위 비트(LSB)를 설정하도록 동작하는 것인 트레이스 버퍼 회로.
  12. 제1항에 있어서, 유효 비트 버퍼를 더 포함하고, 이 유효 비트 버퍼는,
    상기 유효 비트 버퍼로부터 유효 비트들을 입력 및 출력하기 위한 제1 단부 플립플롭과,
    제2 단부 플립플롭과,
    상기 제1 단부 플립플롭과 상기 제2 단부 플립플롭 사이에 접속된 다수의 상호 접속된 플립플롭과,
    기록 동작시에 상기 다수의 상호 접속된 플립플롭 중의 하나에 있는 유효 비트를 하류(downstream) 플립플롭쪽으로 2개의 플립플롭 만큼 쉬프트시키기 위한 기록 경로와,
    판독 동작시에 상기 유효 비트를 상류(upstream) 플립플롭쪽으로 하나의 플립플롭 만큼 쉬프트시키기 위한 판독 경로를 포함하는 것인 트레이스 버퍼 회로.
  13. 파이프라인 프로세서에 있어서,
    트레이스 버퍼 회로를 포함하고, 상기 트레이스 버퍼 회로는,
    다수의 상호 접속된 레지스터로서, 트레이스 동작 동안 페치되는 명령어들의 어드레스를 입력 및 출력하기 위한 제1 단부 레지스터, 제2 단부 레지스터, 및 상기 제1 단부 레지스터와 상기 제2 단부 레지스터 사이에 접속된 다수의 중간 레지스터를 포함하는 상기 다수의 상호 접속된 레지스터와,
    기록 동작시에 상기 다수의 상호 접속된 레지스터 중 하나에 있는 명령어 어드레스를 상기 제2 단부 레지스터쪽으로 2개의 레지스터 만큼 쉬프트시키기 위한 기록 경로와,
    판독 동작시에 상기 명령어 어드레스를 상기 제1 단부 레지스터쪽으로 하나의 레지스터 만큼 쉬프트시키기 위한 판독 경로를 포함하는 것인 파이프라인 프로세서.
  14. 제13항에 있어서, 상기 트레이스 버퍼가 기록 동작시에는 선입선출(FIFO) 레지스터로서 동작하고 판독 동작시에는 후입선출(LIFO) 레지스터로서 동작하는 것인 파이프라인 프로세서.
  15. 제13항에 있어서, 상기 명령어 어드레스는 32 비트 워드를 포함하는 것인 파이프라인 프로세서.
  16. 제15항에 있어서, 상기 제1 단부 레지스터, 제2 단부 레지스터, 및 다수의 상호 접속된 레지스터들은 각각 32 비트 레지스터를 포함하는 것인 파이프라인 프로세서.
  17. 제16항에 있어서, 기록 동작시에 64 비트 어드레스 쌍을 상기 제1 단부 어드레스 및 인접 레지스터에 기록하기 위한 64 비트 기록 버스와,
    판독 동작시에 상기 제1 단부 레지스터로부터 32 비트 명령어 어드레스를 판독하기 위한 32 비트 판독 버스를 더 포함하는 파이프라인 프로세서.
  18. 페치된 명령어들을 트레이스 버퍼에 저장하는 것을 포함하는 트레이스 동작을 수행하는 단계 - 상기 저장은 트레이스 버퍼에 루프에 대응하는 어드레스 쌍을 저장하는 것을 포함함 - 와,
    압축 동작을 수행하는 단계를 포함하는 방법으로서,
    상기 압축 동작 수행 단계는,
    상기 저장된 어드레스 쌍과 새로운 어드레스 쌍을 비교하는 단계와,
    상기 새로운 어드레스 쌍이 상기 저장된 어드레스 쌍과 일치하는 것에 응답하여, 상기 저장된 어드레스 쌍 내의 어드레스의 최하위 비트를 설정하는 단계를 포함하는 것인 방법.
  19. 제18항에 있어서, 상기 새로운 어드레스 쌍과 상기 저장된 어드레스 쌍이 일치하는 것에 응답하여 상기 새로운 어드레스 쌍을 버리는 단계를 더 포함하는 방법.
  20. 제18항에 있어서,
    상기 저장된 어드레스 쌍을 제1 레지스터 쌍에 저장하는 단계와;
    상기 새로운 어드레스 쌍을 상기 저장된 어드레스 쌍과 비교하는 단계를 더 포함하는 방법.
  21. 제20항에 있어서, 상기 새로운 어드레스 쌍이 상기 저장된 어드레스 쌍과 일치하지 않는 것에 응답하여 상기 제1 레지스터 쌍에 상기 새로운 어드레스 쌍을 기록하는 단계를 더 포함하는 방법.
  22. 제20항에 있어서,
    상기 제1 레지스터 쌍에 인접한 제2 레지스터 쌍 내에 저장된 제2 어드레스 쌍을 상기 새로운 어드레스 쌍과 비교하는 단계와,
    상기 새로운 어드레스 쌍이 상기 저장된 제2 어드레스 쌍과 일치하는 것에 응답하여 상기 저장된 제2 어드레스 쌍 내의 어드레스의 최하위 비트를 설정하는 단계와,
    새로운 어드레스 쌍이 상기 제2의 저장된 어드레스 쌍과 일치하지 않는 것에 응답하여 새로운 어드레스 쌍을 제1 레지스터 쌍에 기록하는 단계를 더 포함하는 방법.
  23. 제22항에 있어서, 상기 새로운 어드레스 쌍이 상기 저장된 제2 어드레스 쌍과 일치하는 것에 응답하여 상기 새로운 어드레스 쌍을 버리는 단계를 더 포함하는 방법.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 트레이스 버퍼에 사용하기 위한 컴퓨터 프로그램이 저장된 컴퓨터로 판독가능한 기록 매체에 있어서, 상기 컴퓨터 프로그램은,
    페치된 명령어들을 트레이스 버퍼에 저장하는 것을 포함하는 트레이스 동작을 수행하는 단계 - 상기 저장은 트레이스 버퍼에 루프에 대응하는 어드레스 쌍을 저장하는 것을 포함함 - 와,
    압축 동작을 수행하는 단계를 수행하고,
    상기 압축 동작 수행 단계는,
    상기 저장된 어드레스 쌍과 새로운 어드레스 쌍을 비교하는 단계와,
    상기 새로운 어드레스 쌍이 상기 저장된 어드레스 쌍과 일치하는 것에 응답하여, 상기 저장된 어드레스 쌍 내의 어드레스의 최하위 비트를 설정하는 단계를 포함하는 것인 컴퓨터로 판독가능한 기록 매체.
  28. 제27항에 있어서, 상기 컴퓨터 프로그램은,
    상기 새로운 어드레스 쌍과 상기 저장된 어드레스 쌍이 일치하는 것에 응답하여 상기 새로운 어드레스 쌍을 버리는 단계를 더 수행하는 컴퓨터로 판독가능한 기록 매체.
  29. 제27항에 있어서, 상기 컴퓨터 프로그램은,
    상기 저장된 어드레스 쌍을 제1 레지스터 쌍에 저장하는 단계와,
    상기 새로운 어드레스 쌍을 상기 제1 레지스터 쌍 내에 저장된 어드레스 쌍과 비교하는 단계를 더 수행하는 컴퓨터로 판독가능한 기록 매체.
  30. 제29항에 있어서, 상기 컴퓨터 프로그램은,
    상기 새로운 어드레스 쌍과 상기 저장된 어드레스 쌍이 일치하지 않는 것에 응답하여 상기 제1 레지스터 쌍에 상기 새로운 어드레스 쌍을 기록하는 단계를 더 수행하는 컴퓨터로 판독가능한 기록 매체.
  31. 제29항에 있어서, 상기 컴퓨터 프로그램은,
    상기 제1 레지스터 쌍에 인접한 제2 레지스터 쌍 내에 저장된 제2 어드레스 쌍을 상기 새로운 어드레스 쌍과 비교하는 단계와,
    상기 새로운 어드레스 쌍이 상기 저장된 제2 어드레스 쌍과 일치하는 것에 응답하여 상기 저장된 제2 어드레스 쌍 내의 어드레스의 최하위 비트를 설정하는 단계와,
    상기 새로운 어드레스 쌍이 상기 저장된 제2 어드레스 쌍과 일치하지 않는 것에 응답하여 상기 새로운 어드레스 쌍을 제1 레지스터 쌍에 기록하는 단계를 더 수행하는 컴퓨터로 판독가능한 기록 매체.
  32. 제31항에 있어서, 상기 컴퓨터 프로그램은,
    상기 새로운 어드레스 쌍이 상기 저장된 제2 어드레스 쌍과 일치하는 것에 응답하여 상기 새로운 어드레스 쌍을 버리는 단계를 더 수행하는 컴퓨터로 판독가능한 기록 매체.
  33. 제18항에 있어서, 상기 어드레스 쌍 내의 어드레스는 분기 목표 어드레스를 포함하는 것인 방법.
  34. 제22항에 있어서, 상기 제2 어드레스 쌍 내의 어드레스는 분기 소스 어드레스를 포함하는 것인 방법.
KR10-2003-7004528A 2000-09-29 2001-09-26 소프트웨어 및 하드웨어 루프 압축 기능을 갖는 선입선출기록/후입선출 판독 트레이스 버퍼 KR100509009B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/675,569 2000-09-29
US09/675,569 US7155570B1 (en) 2000-09-29 2000-09-29 FIFO write/LIFO read trace buffer with software and hardware loop compression
PCT/US2001/042367 WO2002027483A2 (en) 2000-09-29 2001-09-26 Trace buffer for loop compression

Publications (2)

Publication Number Publication Date
KR20030036856A KR20030036856A (ko) 2003-05-09
KR100509009B1 true KR100509009B1 (ko) 2005-08-18

Family

ID=24711058

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7004528A KR100509009B1 (ko) 2000-09-29 2001-09-26 소프트웨어 및 하드웨어 루프 압축 기능을 갖는 선입선출기록/후입선출 판독 트레이스 버퍼

Country Status (6)

Country Link
US (1) US7155570B1 (ko)
JP (1) JP3818965B2 (ko)
KR (1) KR100509009B1 (ko)
CN (1) CN100346293C (ko)
TW (1) TWI249129B (ko)
WO (1) WO2002027483A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0403128D0 (sv) * 2004-12-22 2004-12-22 Xelerated Ab A method for a processor, and a processor
FR2882832A1 (fr) * 2005-03-04 2006-09-08 St Microelectronics Sa Dispositif de generation de suivi de branchement pour microprocesseur et microprocesseur dote d'un tel dispositif
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
KR100847727B1 (ko) 2007-01-22 2008-07-23 삼성전자주식회사 실시간 패킷 수신을 위한 장치 및 방법
US8473946B2 (en) 2008-07-03 2013-06-25 Vmware, Inc. Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
US9524227B2 (en) * 2014-07-09 2016-12-20 Intel Corporation Apparatuses and methods for generating a suppressed address trace
US10175912B1 (en) 2017-07-05 2019-01-08 Google Llc Hardware double buffering using a special purpose computational unit

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS50120529A (ko) 1974-03-08 1975-09-20
US3975717A (en) 1974-09-09 1976-08-17 Burroughs Corporation Charge coupled device stack memory organization and refresh method
JPS58103047A (ja) 1981-12-16 1983-06-18 Hitachi Ltd 命令トレ−ス装置
US5161217A (en) 1986-10-14 1992-11-03 Bull Hn Information Systems Inc. Buffered address stack register with parallel input registers and overflow protection
JPH0272440A (ja) 1988-09-07 1990-03-12 Nec Corp プログラム実行ステップ観測方式
JPH0748183B2 (ja) 1989-09-28 1995-05-24 横河電機株式会社 トレース回路
JPH05134848A (ja) * 1991-03-06 1993-06-01 Fujitsu Ltd 中央処理装置のデータシフト回路
JPH05100900A (ja) 1991-10-09 1993-04-23 Nec Corp 情報処理装置
JPH05324396A (ja) 1992-05-19 1993-12-07 Fujitsu Ltd プログラム走行履歴記録方式
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
JPH11306044A (ja) 1998-04-22 1999-11-05 Hitachi Ltd データプロセッサ
EP1039386A1 (en) 1999-03-19 2000-09-27 Motorola, Inc. Computer system with trace unit, and method therefor

Also Published As

Publication number Publication date
CN100346293C (zh) 2007-10-31
WO2002027483A3 (en) 2003-09-25
JP2004510248A (ja) 2004-04-02
KR20030036856A (ko) 2003-05-09
TWI249129B (en) 2006-02-11
JP3818965B2 (ja) 2006-09-06
CN1541356A (zh) 2004-10-27
WO2002027483A2 (en) 2002-04-04
US7155570B1 (en) 2006-12-26

Similar Documents

Publication Publication Date Title
US7804903B2 (en) Hardware-based CABAC decoder
US7286066B1 (en) Acceleration of bitstream decoding
US6754808B1 (en) Valid bit generation and tracking in a pipelined processor
US20020091905A1 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US8106799B1 (en) Data compression and decompression using parallel processing
KR100509009B1 (ko) 소프트웨어 및 하드웨어 루프 압축 기능을 갖는 선입선출기록/후입선출 판독 트레이스 버퍼
US6247112B1 (en) Bit manipulation instructions
US5781134A (en) System for variable length code data stream position arrangement
CN111279617A (zh) 数据解压缩的装置与方法
US7630585B2 (en) Image processing using unaligned memory load instructions
US6789184B1 (en) Instruction address generation and tracking in a pipelined processor
KR100545499B1 (ko) 가변폭 명령어 정렬 엔진
US7075462B2 (en) Speeding up variable length code decoding on general purpose processors
JP3692115B2 (ja) 命令幅に基づく効率的なエミュレーションの実行
KR100509006B1 (ko) 이벤트 벡터 테이블 오버라이드
KR100688139B1 (ko) 명령어 디코드용 다중 소스
CN115695819A (zh) 基于嵌套环形缓冲区的图像压缩码流解压缩方法及装置
JP2000209100A (ja) デコ―ダ及びデコ―ド方法

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

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20130723

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140722

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee