KR20080059652A - 다중 스레드 디지털 신호 프로세서에서의 배경 스레드 처리 - Google Patents

다중 스레드 디지털 신호 프로세서에서의 배경 스레드 처리 Download PDF

Info

Publication number
KR20080059652A
KR20080059652A KR1020087012037A KR20087012037A KR20080059652A KR 20080059652 A KR20080059652 A KR 20080059652A KR 1020087012037 A KR1020087012037 A KR 1020087012037A KR 20087012037 A KR20087012037 A KR 20087012037A KR 20080059652 A KR20080059652 A KR 20080059652A
Authority
KR
South Korea
Prior art keywords
processing
background
interrupt
thread
digital signal
Prior art date
Application number
KR1020087012037A
Other languages
English (en)
Other versions
KR100953777B1 (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 KR20080059652A publication Critical patent/KR20080059652A/ko
Application granted granted Critical
Publication of KR100953777B1 publication Critical patent/KR100953777B1/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/48Program initiating; Program switching, e.g. by interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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

Landscapes

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

Abstract

통신(예를 들어, CDMA) 시스템에서의 송신 처리를 포함하는 디지털 신호 프로세서의 설계 및 사용을 위한 기술이 제공된다. 개시된 방법 및 시스템은 배경화 및 다른 배경 연산을 위해 다중 스레드 디지털 신호 프로세서에 배경 스레드 처리를 제공한다. 상기 방법 및 시스템은 다수의 인터럽트 타입들 중 하나로서 배경 스레드 인터럽트를 형성하고, 배경 스레드 인터럽트는 다중 스레드 디지털 신호 프로세서의 다수의 처리 스레드들 중 하나를 이용하여 낮은 우선순위 배경 처리를 시작한다. 상기 처리는 상기 배경 스레드 인터럽트를 인터럽트 레지스터에 저장하는 단계를 포함하고, 상기 다중 스레드 디지털 신호 프로세서의 처리 스레드에 관련시키기 위한 배경 처리 마스크를 포함하며, 이는 상기 다수의 처리 스레드들의 적어도 서브셋에 관련시킨다. 다중 스레드 처리중 처리 스레드 중 하나인 캐시 누락과 같은 이벤트 감지시, 인터럽트 레지스터는 배경 스레드 인터럽트를 발생시키고 디지털 신호 프로세서는 관련 배경 처리 마스크를 갖는 처리 스레드 중 하나를 이용하여 배경 처리를 시작한다.

Description

다중 스레드 디지털 신호 프로세서에서의 배경 스레드 처리{BACKGROUND THREAD PROCESSING IN A MULTITHREAD DIGITAL SIGNAL PROCESSOR}
개시된 대상은 데이터 통신에 관한 것이다. 보다 구체적으로, 본 개시는 다중 스레드 디지털 신호 프로세서에 대한 신규하고 개선된 배경 스레드 처리 방법 및 시스템에 관한 것이다.
점차 전자기기 및 지원 소프트웨어 애플리케이션은 신호 처리를 수반한다. 홈 시어터, 컴퓨터 그래픽, 의료 이미징 및 통신은 모두 신호 처리 기술에 의존한다. 신호 처리는 복잡하지만 반복적인 알고리즘에 고속의 수학적 처리를 필요로 한다. 많은 애플리케이션은 실시간 계산을 필요로 하며, 다시 말하면 신호는 시간의 연속 함수이고, 이는 수적인 처리를 위해 샘플링되어 디지털로 변환되어야 한다. 따라서 프로세서는 샘플 도착시 샘플들에 이산 계산을 수행하는 알고리즘을 수행해야 한다. 디지털 신호 프로세서(DSP)의 구조는 이러한 알고리즘을 취급하도록 최적화된다. 양호한 신호 처리 엔진의 특성은 고속이고 유연성 있는 수치 연산 유닛, 계산 유닛에 대한 제약 없는 데이터 흐름, 계산 유닛의 확장된 정확도 및 동적 범위, 이중 어드레스 생성기, 효율적인 프로그램 시퀀스 및 프로그래밍 용이함을 포함한다.
DSP 기술의 한 가지 유망한 애플리케이션은 위성 또는 지상 링크를 통해 사용자들 간 음성 및 데이터 통신을 지원하는 코드 분할 다중 접속(CDMA) 시스템과 같은 통신을 포함한다. 다중 접속 통신 시스템에서의 CDMA 기술 사용은 "위성 또는 지상 중계기를 이용한 확산 스펙트럼 다중 접속 통신 시스템이라는 명칭의 미국 특허 4,901,307호, 및 "CDMA 셀룰러 텔레핸드셋 시스템에서 파형을 생성하는 시스템 및 방법"이라는 명칭의 미국 특허 5,103,459호에 개시되어 있으며, 둘 다 청구범위의 양수인에게 양도되었다.
CDMA 시스템은 통상적으로 하나 이상의 통신 그리고 현재 스트리밍 비디오 표준에 따르도록 설계된다. 이러한 1세대 표준은 "이중 모드 광대역 확산 스펙트럼 셀룰러 시스템에 대한 TIA/EIA/IS-95 단말-기지국 호환성 표준"이며, 이하 IS-95 표준으로 지칭된다. IS-95 CDMA 시스템은 음성 데이터 및 패킷 데이터를 전송할 수 있다. 패킷 데이터를 더 효율적으로 전송할 수 있는 더 신세대 표준은 "3세대 파트너십 프로젝트"(3GPP)라는 명칭의 협회에 의해 제공되며, 이는 3G TS 25.211호, 3G TS 25.212호, 3G TS 25.213호, 3G TS 25.214호 문서를 포함하는 문서 세트로 구현되고, 이는 공개적으로 쉽게 이용 가능하다. 이하, 3GPP 표준은 W-CDMA 표준으로 지칭된다. 또한, MPEG-1, MPEG-2, MPEG-4, H.263, WMV(Windows Media Video)와 같은 비디오 압축 표준, 및 이러한 무선 핸드셋이 점점 이용하게 될 많은 다른 표준들이 있다.
이러한 많은 장치에서, 완전한 소프트웨어 기반 솔루션이 상당히 바람직하다. 압축 표준이 항상 개발되고 있으며 새로운 표준들이 항상 나타나고 있어, 개 발자들은 이러한 표준들을 신속히 구현하는 DSP들에 기대하고 있다. 그러나 DSP는 어떤 한계, 특히 이용 가능한 메모리의 특성들에 관한 한계들을 나타낸다.
수학적으로 복잡한 알고리즘을 포함하는 압축 표준이 일반적으로 알려져 있지 않아, 통신 또는 다른 DSP 플랫폼에 비디오 압축 표준을 포팅(port)하고자 하는 개발자들이 직면한 중요한 문제점은 제한적 데이터 흐름, 한정된 대역폭 및 메모리의 과도한 레이턴시를 포함한다.
상당한 처리 용량을 제공할 수 있는 어떤 타입의 DSP는 단일 프로세서 코어와 관련된 다수의 신호 처리 스레드의 다중 스레드를 이용한다. 이들 프로세서가 속도 및 전력을 얻고, 비디오 처리 애플리케이션에 이상적인 명령 세트가 이들을 보완하기 때문에, 비디오 시퀀스의 실시간 인코딩이 더 쉬워진다. 고속 프로세서 및 처리할 많은 데이터로, DSP의 메모리 구조는 실시간 인코딩 및 관련 연산을 심하게 제한할 수 있다. 외부 메모리에 비해 한정된 고속 내부 메모리 및 한정된 대역폭으로, 프로세서와 데이터 간에 종종 병목 현상이 나타난다.
따라서 DSP 또는 비슷한 신호 처리 환경에서 메모리 레이턴시를 극복하는 방법 및 시스템이 필요하다.
더욱이, 통신 및 다른 애플리케이션에 대한 로드 레이턴시가 감소한 다중 스레드화된 DSP를 동작시키기 위한 방법 및 시스템이 필요하다.
다중 스레드 디지털 신호 프로세서에 배경 스레드 처리 방법 및 시스템을 제공하는 기술이 개시되며, 이러한 기술들은 디지털 신호 프로세서의 동작 및 개인용 컴퓨터, 개인 휴대 단말, 무선 핸드셋 및 비슷한 전자기기에 대한 점점 증가하는 확고한 소프트웨어 애플리케이션을 처리하고 관련 디지털 프로세서 속도 및 서비스 품질을 높이기 위한 디지털 신호 프로세서 명령의 효율적인 사용을 모두 개선한다.
개시된 대상의 한 형태에 따르면, 통신(예를 들어, CDMA) 시스템에서의 송신 처리를 포함하는 디지털 신호 프로세서의 설계 및 사용을 위한 기술이 제공된다. 개시된 방법 및 시스템은 배경화 및 다른 배경 연산을 위해 다중 스레드 디지털 신호 프로세서에 배경 스레드 처리를 제공한다. 상기 방법 및 시스템은 다수의 인터럽트 타입들 중 하나로서 배경 스레드 인터럽트를 형성하고, 배경 스레드 인터럽트는 다중 스레드 디지털 신호 프로세서의 다수의 처리 스레드들 중 하나를 이용하여 낮은 우선순위 배경 처리를 시작한다. 상기 처리는 상기 배경 스레드 인터럽트를 인터럽트 레지스터에 저장하는 단계를 포함하고, 상기 다중 스레드 디지털 신호 프로세서의 처리 스레드에 관련시키기 위한 배경 처리 마스크를 포함하며, 이는 상기 다수의 처리 스레드들의 적어도 서브셋에 관련시킨다. 다중 스레드 처리중 처리 스레드 중 하나인 캐시 누락과 같은 이벤트 감지시, 인터럽트 레지스터는 배경 스레드 인터럽트를 발생시키고 디지털 신호 프로세서는 관련 배경 처리 마스크를 갖는 처리 스레드 중 하나를 이용하여 배경 처리를 시작한다.
새로운 추가 특징뿐 아니라, 개시된 대상의 상기 및 다른 이점들은 본원에 제공된 설명으로부터 명백할 것이다. 이러한 요약의 목적은 청구 대상의 포괄적인 설명이 아니라 대상의 일부 기능의 짧은 개략을 제공하기 위한 것이다. 여기서 제공되는 다른 시스템, 방법, 특징 및 이점들은 다음 도면 및 상세한 설명의 검토시 당업자들에게 명백해질 것이다. 이러한 설명 내에 포함되는 모든 추가 시스템, 방법, 특징 및 이점들은 첨부된 청구범위 내에 있는 것이다.
개시된 대상의 특징, 특성 및 이점들은 도면과 관련하여 후술하는 상세한 설명으로부터 더 명백해질 것이며, 도면에서 동일한 참조 부호들이 명세서 전반에서 대응하게 관계된다.
도 1은 본 실시예를 구현할 수 있는 통신 시스템의 간소화된 블록도이다.
도 2는 본 실시예의 교지를 실행하기 위한 DSP 구조를 설명한다.
도 3은 개시된 대상의 기술적 이점을 제공하는 디지털 신호 프로세서의 일 실시예의 구조 블록도를 제공한다.
도 4는 개시의 이벤트 핸들링의 기능 블록도를 나타낸다.
도 5는 개시된 대상에 사용하기 위한 마스크 레지스터 포맷을 나타낸다.
도 6은 개시된 대상에 사용하기 위한 펜딩 인터럽트 레지스터 포맷을 나타낸다.
도 7은 본 개시의 일 실시예의 메모리 관리 기능의 흐름도를 제공하며, 이것에 의해 청구 대상이 동작한다.
도 8은 본 개시의 배경 인터럽트 처리 방법 및 시스템의 흐름도를 제공한다.
다중 스레드 디지털 신호 프로세서를 위한 공유 배경 스레드 처리 방법 및 시스템에 대해 개시된 대상은 다중 스레드 처리를 포함하는 매우 다양한 디지털 신 호 처리 애플리케이션의 응용을 포함한다. 이러한 애플리케이션은 통신, 특히 하나 이상의 디지털 신호 처리 회로를 이용하는 무선 핸드셋에 나타난다.
이러한 무선 핸드셋이 어떻게 사용될 수 있는지를 설명할 목적으로, 도 1은 개시된 인터럽트 처리 방법 및 시스템의 제시된 실시예들을 구현할 수 있는 통신 시스템(10)의 간소화된 블록도를 제공한다. 송신기 유닛(12)에서, 데이터는 데이터 소스(14)로부터 데이터를 포맷화, 코딩 및 처리하여 하나 이상의 아날로그 신호를 생성하는 송신(TX) 데이터 프로세서(16)로 통상적으로 블록으로 전송된다. 아날로그 신호들은 송신기(TMTR; 18)에 제공되어 기저대역 신호를 변조, 필터링, 증폭 및 상향 변환하여 변조된 신호를 생성한다. 변조된 신호는 안테나(20)를 통해 하나 이상의 수신기 유닛으로 전송된다.
수신기 유닛(22)에서, 전송된 신호는 안테나(24)에 의해 수신되어 수신기(RCVR; 26)에 제공된다. 수신기(26) 내에서 수신된 신호는 증폭, 필터링, 하향 변환, 복조 및 디지털화되어 위상 (I) 및 (Q) 샘플을 생성한다. 샘플들은 수신(RX) 데이터 프로세서(28)에 의해 디코딩 및 처리되어 전송된 데이터를 복원한다. 수신기 유닛(22)에서의 디코딩 및 처리는 송신기 유닛(12)에서 수행된 코딩 및 처리에 상보적인 방식으로 수행된다. 복원된 데이터는 데이터 싱크(30)에 제공된다.
상술한 신호 처리는 한 방향으로 음성, 비디오, 패킷 데이터, 메시징 및 다른 타입의 통신의 전송을 지원한다. 양방향 통신 시스템은 양방향 데이터 전송을 지원한다. 그러나 간소화를 위해 다른 방향에 대한 신호 처리는 도시되지 않는다. 통신 시스템(10)은 코드 분할 다중 접속(CDMA) 시스템, 시분할 다중 접속(TDMA) 통신 시스템(예를 들어, GSM 시스템), 주파수 분할 다중 접속(FDMA) 통신 시스템, 또는 지상 링크를 통해 사용자들 간 음성 및 데이터 통신을 지원하는 다른 다중 접속 통신 시스템일 수 있다. 특정 실시예에서, 통신 시스템(10)은 W-CDMA 표준에 따르는 CDMA 시스템이다.
도 2는 도 1의 송신 데이터 프로세서(16) 및 수신 데이터 프로세서(28)의 역할을 할 수 있는 DSP(40) 구조를 나타낸다. DSP(40)는 여기서 제시된 교지 및 개념을 효율적으로 이용할 수 있는 상당수의 가능한 디지털 신호 프로세서 실시예 중에서 단지 한 실시예를 나타낸다는 점이 중요하다. 따라서 DSP(40)에서, 스레드(T0:T5)(참조부호 42-52)는 서로 다른 스레드로부터의 명령 세트를 포함한다. 회로(54)는 명령 액세스 메커니즘을 나타내고 스레드(T0:T5)에 대한 명령들을 패치하는데 사용된다. 회로(54)에 대한 명령들은 명령 큐에 대기 정렬된다. 명령 큐(56)의 명령들은 프로세서 파이프라인(66)에서 발생할 준비가 된다(아래 참조). 명령 큐(56)로부터 단일 스레드, 예를 들어 스레드(T0)가 이슈(issue) 로직 회로(58)에 의해 선택될 수 있다. 선택된 스레드의 레지스터 파일(60)이 판독되고 판독된 데이터는 SLOT0 내지 SLOT3에 대한 실행 데이터 경로로 전송된다. SLOT0 내지 SLOT3은 이 예에서 본 실시예에 이용되는 패킷 그룹화 조합을 제공한다.
실행 데이터 경로(62)로부터의 출력은 레지스터 파일 기록 회로(64)로 전달되고, 이는 또한 DSP(40)의 동작으로부터의 결과를 반환하기 위한 개별 스레드(T0:T5)를 수용하도록 구성된다. 따라서 각종 스레드에 따라 분할되는 회로(54) 로부터 레지스터 파일 기록 회로(64) 전까지의 데이터 경로는 처리 파이프라인(66)을 형성한다.
본 실시예는 6개까지의 스레드(T0:T5)를 갖는 단일 마이크로프로세서를 사용하는 이종 엘리먼트 프로세서(BEP) 시스템의 하이브리드를 이용할 수 있다. 프로세서 파이프라인(66)은 6개의 스테이지를 가지며, 이는 회로(54)로부터 레지스터(60, 64)로의 데이터 항목 패치에 필요한 최소 프로세서 사이클 수와 매치한다. DSP(40)는 프로세서 파이프라인(66) 내의 서로 다른 스레드(T0:T5)의 명령들을 동시에 실행한다. 즉, DSP(40)는 6개의 독립 프로그램 카운터, 프로세서 파이프라인(66) 내의 스레드(T0:T5)의 명령들을 구별하기 위한 내부 태그 메커니즘, 및 스레드 전환을 일으키는 메커니즘을 제공한다. 스레드 전환 오버헤드는 0 내지 단지 몇 사이클로 달라진다.
따라서 DSP(40)는 다양한 신호, 이미지 및 비디오 처리 애플리케이션에 걸쳐 고성능 및 저전력을 위해 설계된 범용 디지털 신호 프로세서를 제공한다. 도 3은 개시된 대상의 한 가지 표현을 위한 관련 명령 세트 구조의 일부 형태를 포함하는 DSP(40) 구조의 간략한 개요를 제공한다. DSP(40) 구조의 구현은 인터리빙된 다중 스레드(IMT)를 지원한다. 이러한 실행 모델에서, 하드웨어는 파이프라인에서 서로 다른 스레드로부터의 명령들을 인터리빙함으로써 다수의 하드웨어 스레드(T0:T5)의 동시 실행을 지원한다. 이러한 특징은 DSP(40)가 여전히 높은 코어 및 메모리 이용을 유지하면서 과감한 클록 주파수를 포함할 수 있게 한다. IMT는 비순차적 실행, 광대한 포워딩 네트워크 등과 같은 고가의 보상 메커니즘의 필요성 없이 높은 스루풋을 제공한다. 더욱이, DSP(40)는 " Variable Interleaved Multithreaded Processor Method and System " 및 " Method and System for Variable Thread Allocation and Switching in a Multithreaded Processor "라는 명칭으로 M. Ahmed 등에 의해 공동 양도된 미국 특허 출원에 개시된 변형 및 새로운 접근과 같은 IMT의 변형을 포함할 수 있다.
도 3은 특히 다중 스레드 디지털 신호 프로세서에 대한 배경 스레드 처리 제어 방법 및 시스템을 포함하는 개시된 대상의 교지를 이용할 수 있는 단일 스레드에 대한 프로그래밍 모델의 일 실시예의 구조 블록도를 제공한다. 블록도(70)는 AXI 버스(74)로부터 명령들을 수신하는 개별 명령 캐시(72)를 나타내며, 명령들은 스레드(T0:T5)의 시퀀서(76), 사용자 제어 레지스터(78) 및 감시자 제어 레지스터(80)에 대한 혼합된 16 비트 및 32 비트 명령을 포함한다. 시퀀서(76)는 S-파이프 유닛(82), M-파이프 유닛(84), Ld-파이프(86) 및 Ld/St-파이프 유닛(88)에 하이브리드 양방향 수퍼스칼라 명령 및 4방향 VLIW 명령을 제공한다. AXI 버스(74)는 또한 공유 데이터 캐시(90)에 의해 스레드(T0:T5)에 LD/ST 명령을 전달한다. 외부 DMA 마스터(96)에 의해 공유 데이터 TCM(98)은 LD/ST 명령을 전달하고, LD/ST 명령들은 또한 스레드(T0:T5)로 흐른다. AHB 주변 버스(100)로부터 MSM 사양 제어기(102)는 TO:T5에 의해 인터럽트 제어기 명령, 디버깅 명령 및 타이밍 명령을 포함하는 인터럽트 핀들을 전달한다. 전역 제어 레지스터(104)는 스레드(T0:T5)에 의해 제어 레지스터 명령을 전달한다.
도 4는 개시의 이벤트 핸들링의 기능 블록도를 나타낸다. 이벤트 핸들러 구 조(110)에서, MSM 사양 블록(112)은 인터럽트 제어기 블록(114), 디버그 및 성능 모니터 블록(116) 및 타이머 블록(118)을 포함한다. MSM 사양 블록(110)은 16개의 일반 인터럽트(120)를 전역 제어 레지스터(122)에 제공하고 마스크 불가능 인터럽트(NMI; 124)를 이벤트 핸들링 레지스터(126)에 제공한다. 전역 제어 레지스터(122)는 IPEND 레지스터(128), 벡터 기반 레지스터(130), 모드 제어 레지스터(132)를 포함한다. IPEND 레지스터(128)로부터 16개의 인터럽트 타입(129)이 이벤트 핸들링 레지스터(126)로 전달될 수 있다. 벡터 기반 레지스터(130)는 20개의 인터럽트(131)를 이벤트 핸들링 레지스터(126)에 전송할 수 있는 한편, 모드 제어 레지스터(132)는 1×6 리셋 인터럽트(133)를 이벤트 핸들링 레지스터(126)에 제공할 수 있다.
이벤트 핸들링 레지스터(126)는 인터럽트 마스크(IMASK) 레지스터(134)를 포함하고, 이는 프로세스 이벤트 레지스터(136)에 마스크 데이터를 제공한다. 프로세스 이벤트 레지스터(136)는 또한 TLB 누락, 에러 및 트랩 명령 요청을 포함하는 내부 예외 요청을 수신한다. 전력 제어 레지스터(122)로부터 일반 명령 레지스터(R0-R31)(90) 및 감시자 제어 레지스터(80)에 의한 통신이 일어난다.
따라서 개시된 대상에 의한 인터럽트 처리는 3가지 타입의 외부 인터럽트를 포함하며, 이는 소프트 리셋 인터럽트(133), 일반적인 마스크 가능 인터럽트(120, 129, 131) 및 마스크 불가능 인터럽트(124)를 포함한다. 모든 스레드 사이에 공유되는 16개의 마스크 가능 일반 인터럽트가 있다. 16개의 일반 인터럽트(120) 중 하나가 일어나면, 전역 IPEND 레지스터(128)의 해당 비트가 이러한 인터럽트가 펜 딩중임을 지시하도록 설정된다. 스레드는 이들이 전역 IPEND 레지스터와 로컬 IMASK 레지스터와의 논리 AND에 의해 인터럽트를 일으킬 수 있는지 결정한다.
개시된 대상의 프로세스는 배경 인터럽트에 대한 트리거에 의해 시작되어 어느 인터럽트가 일어나야하는지를 결정할 수 있다. 이러한 목적으로, 특징을 셋업하는 구성 레지스터가 설정될 수 있다. 구성 레지스터는 단일 레지스터이며, 예를 들어 하위 16 비트가 어느 인터럽트가 일어나야 하는지를 지시한다. 그 다음, 다음 6 비트가 6개의 하드웨어 스레드(T0:T5)에 대한 비트를 가능하게 할 수 있다. 따라서 비트 16은 스레드(T0)가 배경 인터럽트를 일으켜야 하는지를 지시할 수 있고, 비트 17은 스레드(T1)가 배경 인터럽트를 일으켜야 하는지를 지시할 수 있으며, 계속해서 비트 21은 스레드(T5)가 배경 인터럽트를 일으켜야하는지를 지시할 수 있다. 물론, 다른 설계 고려대상의 필요에 따라 다른 초기화 방식이 사용될 수도 있다. 이러한 모든 변형은 개시된 대상의 의도에 잘 맞는다.
동작시, 스레드(T0:T5)(a)가 인터럽트 인에이블을 갖고(IE = 1) (b) 예외 핸들러에 있지 않으며(EX = 0), (c) (IPEND & IMASK)의 결과가 0이 아니라면, 해당 스레드에 의해 인터럽트가 일어날 수 있다. 스레드는 인터럽트를 취하도록 권한이 주어져야 한다. 1보다 많은 인터럽트가 펜딩중인 경우, 우선순위는 인터럽트 0(최고 우선순위)에서 인터럽트 15(최저 우선순위)이다. 전역 인터럽트가 IPEND 레지스터에 들어와 표시되면, 6개의 하드웨어 스레드 중 임의의 스레드가 잠재적으로 인터럽트를 서비스할 수 있다. 인터럽트 권한이 주어지는 하드웨어 스레드 세트 중에서 세트의 단 하나만 인터럽트를 취하게 된다.
개시된 대상의 중요한 형태는 권한이 주어진 스레드 및 마스크 가능한 인터럽트의 무작위성으로부터 이익을 얻는다. 즉, 임의의 소정 타입의 인터럽트의 도착 및 프로세스는 랜덤하기 때문에 권한이 주어진 스레드 중 어느 것이 인터럽트를 서비스할지 결정될 수 없다. 하드웨어는 권한이 주어진 세트로부터 스레드를 선택할 것이고, 그 스레드가 인터럽트되고, IPEND 레지스터(128)로부터 인터럽트가 제거되어 어떤 추가 스레드도 그 인터럽트를 서비스하지 않을 것이다.
소프트웨어는 적절한 IMASK 레지스터(134) 프로그래밍에 의해 특정 하드웨어 스레드에 특정 인터럽트를 지시할 수 있다. 예를 들어, 하드웨어 스레드(T1:T5)만이 인터럽트 6 세트에 대한 IMASK 비트를 갖는다면, 하드웨어 스레드(T1:T5)만이 그 인터럽트를 수신할 수 있다. 스레드에 의해 인터럽트가 허용되면, 기계는 우선 IPEND 레지스터(128)에서 적절한 비트를 제거할 것이다. 인터럽트는 선택된 스레드에 대해 디스에이블되고, 예외 비트는 스레드가 이제 감시자 모드임을 지시하도록 설정될 것이며, SSR의 원인 필드는 인터럽트 번호로 채워지고, 기계는 적절한 인터럽트 서비스 루틴으로 점프할 것이다.
도 5의 일 실시예는 개시된 대상에 대한 마스크 레지스터 포맷(140)을 나타내며, 이는 특정 마스크를 포함하는 IMASK 비트 0 내지 15를 포함한다. 비트 16-31은 본 실시예를 위해 예약될 수 있는 동시에 설정이 허가된다. 따라서 마스크 레지스터(140)는 소프트웨어가 인터럽트 제어기(114)로부터 16개의 외부 인터럽트(120)를 각각 개별적으로 마스크 오프할 수 있게 하는 마스크에 대한 16 비트 읽기/쓰기 필드(142)를 포함한다. 마스크 필드(142)의 특정 비트가 설정되면, 16개 의 외부 인터럽트(120)의 해당 인터럽트는 인에이블되고 이 스레드에 의해 허용될 것이다. 대안으로, 비트가 제거되면, 해당 인터럽트는 허용되지 않을 것이다.
도 6은 개시된 대상의 일 실시예에 대한 IPEND 레지스터 포맷(150)의 예를 나타낸다. 특히, IPEND 레지스터 포맷(150)은 예약 필드(152)를 포함하고, 이는 나중 버전에 일반적인 인터럽트 타입 비트를 포함하는 IPEND 레지스터 비트 필드(154)에 채워질 수 있다. IPEND 레지스터 비트 필드(154)에서, 비트 0은 최상위 우선순위 인터럽트 타입을 지시하는 1 값을 가정한다. 최하위 우선순위 인터럽트 타입은 1 값을 가정하는 비트 15에 의해 지정될 수 있다. 다른 일반 인터럽트 타입을 지정하기 위한 다른 방식이 있을 수 있으며, 이들 모두 청구 대상의 교지에 부합한다.
청구 대상의 일 실시예에서, 메모리 관리 프로세스의 일부로서 배경 처리 인터럽트, 예를 들어 배경 프리패치 처리 인터럽트가 검색되어 인터럽트 제어기(114)에 제공될 수 있다. 즉, 배경 처리 동안 전경 프로세스 대신 "프리패치" 명령이 실행된다. 이에 따라, 도 7은 배경 처리 인터럽트를 가능하게 하고 개시된 배경 처리 방법 및 시스템의 특정 동작들을 수행하기 위한 변환 참조 버퍼(TLB)의 사용에 있어 다양한 메모리 액세스 단계를 설명하는 메모리 관리 프로세스(160)의 흐름도를 제공한다. 메모리 관리 프로세스(160)는 변환 참조 버퍼(TLB)를 통해 물리적 어드레스로 변환되는 플랫 가상 어드레스 공간을 이용하여 어드레스 변환 및 보호를 제공하며, TLB는 명령 및 데이터 액세스를 모두 지원한다. 적절한 액세스 허가를 위해 사용자 모드 메모리 액세스가 체크된다. TLB는 관리되는 소프트웨어이고 많은 다른 운영 시스템 및 다중 스레드 모델을 지원할 수 있다. DSP(40)의 6개의 스레드(T0:T5)에 대한 어드레스 공간은 공통 물리적 어드레스 공간을 공유한다. 각 스레드는 32 비트 가상 어드레스에 미리 펜딩되어 38 비트 태그 확장 가상 어드레스를 형성하는 개별 6 비트 ID(어드레스 공간 식별자 또는 ASID)이다. MMU 프로그래밍을 통해 이러한 가상 어드레스는 임의의 물리적 어드레스에 매핑될 수 있다.
일 실시예에서, 물리적 어드레스 공간은 4 Gbytes 32 비트 공간이며, 이들 중 16 Mbytes는 DSP(40)에 의한 사용을 위해 예약된다. 이 메모리 영역의 위치는 프로그래밍 가능하다. 이 영역은 인터럽트 제어기, 디버거 및 성능 모니터 및 타이머를 포함하는 프로그래밍 사양 블록을 허용하는 메모리 매핑 레지스터를 포함한다. MMU가 인에이블 되면, 로드 또는 저장 명령에 의해 생성된 각 어드레스는 가상 어드레스로 지칭된다. 이 어드레스는 TLB의 모든 프로그래밍된 엔트리와 병렬로 비교된다. 로드 또는 저장 어드레스의 가상 페이지 번호(VPN)가 TLB의 엔트리와 매치하고 전역 비트가 해당 엔트리에 대해 설정되거나 해당 엔트리에 대한 ASID가 현재 스레드의 ASID와 매치할 때 매치가 일어난다.
흐름도(160)에서, 단계(162)에서 ASID 가상 어드레스를 수신하면, 단계(164)는 TLB 검색을 시작하여 TLB 매치의 존재를 결정한다. TLB 매치가 일어나는 경우, 로드 또는 저장 명령으로부터의 VPN은 TLB의 매칭 엔트리로부터의 물리적 페이지 번호로 대체된다. 페이지 오프셋 부분은 TLB를 통과하지 않는다. 매치가 일어나지 않는다면, 단계(166)에서 메모리 관리 프로세스(160)가 TLB 누락 예외를 발생시킨다. 즉, 매치 상태가 없다면, 정확한 TLB 누락 예외가 일어난다. 이는 소프트 웨어가 메모리의 페이지 테이블로부터 누락 변환을 검색하고 TLB에 누락 엔트리를 삽입할 수 있게 한다. TLB 누락 예외로 돌아가면, 예외를 일으킨 명령 또는 패킷이 다시 실행되고, 이때 정확한 변환이 가능하다.
매치가 일어나면, 처리는 이러한 테스트가 일어나는 G-비트 또는 ASID 매치 단계로 진행한다. TLB는 모든 DSP(40) 스레드 사이의 공유 자원이다. TLB를 조작하기 위한 전역 제어 레지스터 세트, 및 스레드가 TLB를 대기 정렬하고 수정하는데 사용할 수 있는 명령 세트가 있다. 메모리 관리 프로세스가 MMU를 인에이블하고 데이터 캐시 또한 인에이블되면, TLB의 C 비트가 로드/저장 동작이 어떻게 수행되어야 하는지를 정의한다. 캐시, 밀결합 메모리(TCM), I/O 등과 같이 DSP(40)가 액세스할 수 있는 다른 타입의 메모리가 있다. 각 타입의 메모리는 메모리에 대한 액세스와 관련된 동작 및 가능하면 프로그래밍 공식을 정의한다. 지원되는 메모리 타입 및 그 동작들은 이 섹션에서 설명된다.
이와 같이 G 비트 또는 ASID 매치가 일어나지 않으면, 단계(170)에서 TLB 누락 예외가 발생한다. 그렇지 않으면, 처리는 단계(172)로 진행하여, 사용자 모드가 1이고 예외가 없는지(즉, EX = 0)를 테스트한다. 없다면, 단계(174)에서 캐시 가능한 명령이 존재하는지의 테스트가 이루어진다. 있다면, 단계(176)에서 캐시 액세스가 일어난다. 그렇지 않으면, 처리는 단계(178)로 진행하여 필요한 패치, 로드 및 기록 허가가 존재하는지의 테스트가 이루어진다. 있다면, 처리는 단계(174)로 돌아가 명령이 캐시 가능한지를 결정한다. 그렇지 않으면, 처리는 단계(180)로 진행하여 메모리 관리 프로세스(160)가 권한 위배 예외를 발생한다.
DSP(40)는 데이터 액세스를 위한 밀결합 메모리(TCM)를 지원한다. TCM에 로드 또는 저장이 예상됨을 지시하기 위해, MMU 엔트리의 캐시 속성 비트들은 TCM으로 설정될 수 있다. 캐시 메모리로부터의 연산을 가능하게 하는 프로그램 패치 및 로드/저장 연산은 캐시 액세스로 지칭된다. 캐시 가능 명령 패치는 명령 캐시(Icache)에 의해 취급된다. DSP(40)의 일 실시예에 각 스레드에 개별적인 6개의 4 Kbyte 명령 캐시가 있다. 데이터 로드 및 저장은 공유 32 Kbytes 데이터 캐시에서 이루어진다. 따라서 단계(170)에서 메모리 관리 프로세스(160)는 캐시 가능 명령이 존재하는지를 결정하고, 처리는 단계(182)로 진행하여 TCM 액세스가 일어날 수 있는지를 테스트한다. 일어날 수 있다면, 처리는 단계(184)로 진행하여 TCM에 액세스한다. 그렇지 않으면, 프로세스 흐름은 단계(186)로 진행하여 메모리 관리 프로세스(160)가 캐시 메모리를 바이패스하여 외부 메모리에 액세스한다.
캐시 누락 또는 비슷한 타입의 다른 미리 결정된 이벤트가 일어나면, 본 실시예는 유휴 스레드를 이용한 배경 처리를 제공한다. 이러한 프로세스는 바람직하게는 예를 들어 메모리 레이턴시를 감소시키기 위한 프리패치 연산을 달성할 수 있다. 따라서, 도 8은 배경 처리 인터럽트 타입에 응답하여 스레드(T0:T5) 중 하나를 이용한 배경 처리를 위해 개시된 대상의 어떤 새로운 기능을 설명하기 위한 배경 처리 흐름도(190)를 제공한다. 흐름도(190)는 단계(192)에서 시작하여, 배경 처리가 캐시 누락 또는 배경 처리가 유리한 다른 미리 결정된 이벤트를 감지한다. 질문(194)에서, 캐시 누락이 일어나면, 처리는 단계(196)로 진행하여 배경 인터럽트가 IPEND 레지스터(128)에 저장된다. 또한, 배경 처리 마스크가 IMASK 레지스 터(134)에 저장될 수 있다. 인터럽트 제어기(114)는 16개의 일반 인터럽트 타입(120) 중 하나로서 배경 처리 인터럽트를 일반 제어 레지스터(122)의 IPEND 레지스터(128)에 제공할 수 있다. 단계(198)에서, IMASK 레지스터(134)는 DSP(40)의 각종 스레드(T0:T5)와 관련시키기 위한 배경 처리 인터럽트를 저장할 수 있다. 따라서 배경 처리 레지스터를 포함하는 IPEND 및 해당 배경 처리 마스크를 잠재적으로 저장하는 IMASK 레지스터(134)에 의해 흐름도(190)는 우선 질문(200)에서 유휴 스레드가 존재하는지 여부를 결정한다. 있다면, 프로세스(190)는 질문(202)에서 특정 유휴 스레드에 대해 스레드 인터럽트 처리가 가능한지를 결정한다. 그 다음, 질문(204)에서 프로세스는 특정 스레드가 예외 핸들러로서 동작하지 않고 있다고 결정한다.
질문(206)에서, IPEND 레지스터(128) 및 IMASK 레지스터(134)의 논리 AND를 취한 후 결과가 0이 아닌지의 테스트가 일어남으로써 IPEND 레지스터(128)의 배경 처리 레지스터와 IMASK 레지스터(134)의 배경 처리 마스크 간의 매치가 존재하는지를 결정한다. 0이 아닌 결과가 발생하면, 흐름은 단계(208)로 진행하여 특정 스레드가 특정 마스크에 대응하는 인터럽트를 처리한다. 임의의 질문(202, 264 또는 206)의 테스트가 실패하면, 처리는 단계(214)로 진행하여 프로세스 흐름(160)은 스레드가 검사되고 있는 인터럽트(들)를 처리할 수 있다고 결정한다. 그렇지 않으면, 언급한 바와 같이 배경 스레드 처리가 일어날 수 있다. 이는 질문(210)이 지시하는 바와 같이 처리 스레드(T0:T5)가 유용할 수 있는 높은 우선순위 인터럽트가 발생할 때까지 계속될 수 있다. 이러한 인터럽트가 발생하면, 프로세스 흐름은 단 계(212)로 진행하여 특정 스레드를 이용한 전경 처리가 재개될 수 있다.
따라서 배경 처리 흐름도(190)는 다수의 인터럽트 타입 중 하나로서 동작을 위한 배경 스레드 인터럽트를 포함하는 인터럽트들을 처리하기 위해 DSP(40)와 관련하여 동작하는 방법 및 시스템을 제공한다. 배경 스레드 인터럽트는 다중 스레드 DSP(40)의 다수의 처리 스레드 중 하나를 이용하여 배경 프로세스를 시작한다. IPEND 인터럽트 레지스터(128)는 배경 스레드 인터럽트를 저장할 수 있다. 배경 처리 마스크는 DSP(40)의 처리 스레드(T0:T5) 중 하나와 관련된다. IMASK 레지스터(134)는 배경 처리 마스크를 다수의 처리 스레드의 적어도 서브셋에 관련시킨다. 이벤트 감지 명령(192)은 DSP(40)의 다중 스레드 처리 동안 다수의 처리 스레드 중 하나에서 미리 결정된 이벤트의 존재를 감지한다. 인터럽트 발생 명령(206)은 미리 결정된 이벤트에 응답하여 배경 스레드 인터럽트를 발생시키는 IPEND 레지스터와 관련된다.
배경 처리 회로는 관련 배경 처리 마스크를 갖는 다수의 처리 스레드의 서브셋 중 하나를 이용하여 배경 처리를 시작한다. 스레드 인터럽트 형성 명령은 DSP(40)와 관련된 변환 참조 버퍼의 데이터 엘리먼트로서 배경 스레드 인터럽트를 형성한다. 스레드 인터럽트 형성 명령은 DSP(40)의 동작 변화에 따라 변환 참조 버퍼의 데이터 엘리먼트를 변경한다. 스레드 선택 회로 및 명령은 배경 처리를 위한 처리 스레드로서 유휴 처리 스레드를 선택한다.
본원에 개시된 처리 특징 및 기능들은 다양한 방식으로 구현될 수 있다. 예를 들어, DSP(40)는 상술한 동작들을 수행할 수 있을 뿐 아니라 본 실시예들은 주 문형 집적 회로(ASIC), 마이크로컨트롤러, 마이크로프로세서, 또는 본원에서 설명한 기능들을 수행하도록 설계된 다른 전자 회로로 구현될 수 있다. 따라서 바람직한 실시예들의 상기 설명은 당업자들이 청구 대상을 제작 또는 사용할 수 있도록 제공된다. 이들 실시예에 대한 다양한 변형이 당업자들에게 쉽게 명백할 것이며, 본원에 정의된 일반 원리들은 혁신적인 기능의 사용 없이도 다른 실시예들에 적용될 수 있다. 따라서 청구 대상은 본원에 나타낸 실시예에 한정되는 것이 아니라 본원에 개시된 원리 및 새로운 특징들에 부합하는 가장 넓은 범위에 따르는 것이다.

Claims (28)

  1. 다수의 처리 스레드(thread)들을 포함하는 다중 스레드 디지털 신호 프로세서에서 배경 처리를 수행하는 방법으로서,
    다수의 인터럽트 타입들 중 하나로서 배경 스레드 인터럽트를 형성하는 단계 - 상기 스레드 인터럽트는 다중 스레드 디지털 신호 프로세서의 다수의 처리 스레드들 중 하나를 이용하여 배경 처리를 시작함 -;
    상기 배경 스레드 인터럽트를 인터럽트 레지스터에 저장하는 단계;
    상기 다중 스레드 디지털 신호 프로세서의 처리 스레드에 관련시키기 위한 배경 처리 마스크를 형성하는 단계;
    상기 배경 처리 마스크를 상기 다수의 처리 스레드들의 적어도 서브셋에 관련시키는 단계;
    상기 디지털 신호 프로세서의 다중 스레드 처리중에 상기 다수의 처리 스레드들 중 하나에서 미리 결정된 이벤트의 존재를 감지하는 단계;
    상기 미리 결정된 이벤트에 응답하여 상기 인터럽트 레지스터로부터 상기 배경 스레드 인터럽트를 발생시키는 단계; 및
    관련 배경 처리 마스크를 갖는 상기 다수의 처리 스레드들의 서브셋을 이용하여 배경 처리를 시작하는 단계를 포함하는, 배경 처리 방법.
  2. 제 1 항에 있어서,
    배경 프리패치 인터럽트로서 상기 배경 스레드 인터럽트를 저장하는 단계;
    배경 프리패치 처리 마스크로서 상기 배경 처리 마스크를 형성하는 단계; 및
    배경 프리패치 처리 단계로서 상기 배경 처리 단계를 시작하는 단계를 더 포함하는 것을 특징으로 하는 배경 처리 방법.
  3. 제 1 항에 있어서,
    상기 다수의 처리 스레드들의 서브셋을 이용하여 저-우선순위 배경 처리를 수행하기 위한 저-우선순위 스레드 인터럽트로서 상기 배경 스레드 인터럽트를 형성하는 단계; 및
    상기 미리 결정된 이벤트의 발생시 상기 저-우선순위 스레드 인터럽트를 발생시키는 단계를 더 포함하는 것을 특징으로 하는 배경 처리 방법.
  4. 제 1 항에 있어서,
    상기 디지털 신호 프로세서의 다중 스레드 처리중에 상기 다수의 처리 스레드들 중 하나에서 상기 미리 결정된 이벤트로서 캐시 누락의 존재를 감지하는 단계; 및
    상기 캐시 누락에 응답하여 상기 인터럽트 레지스터로부터 상기 배경 스레드 인터럽트를 발생시키는 단계를 더 포함하는 것을 특징으로 하는 배경 처리 방법.
  5. 제 1 항에 있어서,
    디지털 신호 프로세서와 관련된 변환 참조 버퍼의 데이터 엘리먼트로서 상기 배경 스레드 인터럽트를 형성하는 단계를 더 포함하는 것을 특징으로 하는 배경 처리 방법.
  6. 제 6 항에 있어서,
    상기 디지털 신호 프로세서에 대한 동작들의 변화에 따라 상기 변환 참조 버퍼의 상기 데이터 엘리먼트를 변경하는 단계를 더 포함하는 것을 특징으로 하는 배경 처리 방법.
  7. 제 1 항에 있어서,
    상기 다수의 처리 스레드들 중 유휴 처리 스레드들로서 상기 다수의 처리 스레드들의 서브셋을 선택하는 단계를 더 포함하는 것을 특징으로 하는 배경 처리 방법.
  8. 제 1 항에 있어서,
    상기 다수의 처리 스레드들의 인터리빙된 다중 스레드 동작중에 상기 배경 처리를 수행하는 단계를 더 포함하는 것을 특징으로 하는 배경 처리 방법.
  9. 제 1 항에 있어서,
    상기 인터럽트 레지스터가 상기 배경 처리 인터럽트보다 높은 우선순위를 갖 는 인터럽트를 발생시킬 때 상기 다수의 처리 스레드들의 서브셋에서 상기 배경 처리를 종료하는 단계를 더 포함하는 것을 특징으로 하는 배경 처리 방법.
  10. 다중 스레드 프로세서에서 일어나는 인터럽트들을 처리하기 위해 디지털 신호 프로세서와 관련하여 동작하기 위한 인터럽트 처리 시스템으로서,
    다수의 인터럽트 타입들 중 하나로서 동작하기 위한 배경 스레드 인터럽트 - 상기 배경 스레드 인터럽트는 다중 스레드 디지털 신호 프로세서의 다수의 처리 스레드들 중 하나를 이용하여 배경 처리를 시작함 -;
    상기 배경 스레드 인터럽트를 저장하기 위한 인터럽트 레지스터;
    상기 다중 스레드 디지털 신호 프로세서의 처리 스레드에 관련시키기 위한 배경 처리 마스크;
    상기 배경 처리 마스크를 상기 다수의 처리 스레드들의 적어도 서브셋에 관련시키기 위한 마스크 레지스터;
    상기 디지털 신호 프로세서의 다중 스레드 처리중에 상기 다수의 처리 스레드들 중 하나에서 미리 결정된 이벤트의 존재를 감지하기 위한 이벤트 감지 명령들;
    상기 미리 결정된 이벤트에 응답하여 상기 인터럽트 레지스터로부터 상기 배경 스레드 인터럽트를 발생시키기 위해 상기 인터럽트 레지스터와 관련되는 인터럽트 발생 명령들; 및
    관련 배경 처리 마스크를 갖는 상기 다수의 처리 스레드들의 상기 서브셋 중 하나를 이용하여 배경 처리를 시작하기 위한 배경 처리 회로를 포함하는, 인터럽트 처리 시스템.
  11. 제 10 항에 있어서,
    배경 프리패치 인터럽트로서 상기 배경 스레드 인터럽트를 저장하기 위해 상기 인터럽트 레지스터와 관련되는 회로 및 명령들;
    배경 프리패치 처리 마스크로서 상기 배경 처리 마스크를 형성하기 위해 상기 마스크 레지스터와 관련되는 회로 및 명령들; 및
    배경 프리패치 처리 단계로서 상기 배경 처리 단계를 시작하기 위한 배경 처리 회로 및 명령들을 더 포함하는 것을 특징으로 하는 인터럽트 처리 시스템.
  12. 제 10 항에 있어서,
    상기 다수의 처리 스레드들의 서브셋을 이용하여 저-우선순위 배경 처리를 수행하기 위한 저-우선순위 스레드 인터럽트로서 상기 배경 스레드 인터럽트를 형성하는 처리 명령들 및 회로; 및
    상기 미리 결정된 이벤트의 발생시 상기 저-우선순위 스레드 인터럽트를 발생시키기 위해 상기 인터럽트 레지스터와 관련되는 발생 명령들을 더 포함하는 것을 특징으로 하는 인터럽트 처리 시스템.
  13. 제 10 항에 있어서,
    상기 디지털 신호 프로세서의 다중 스레드 처리중에 상기 다수의 처리 스레드들 중 하나에서 상기 미리 결정된 이벤트로서 캐시 누락의 존재를 감지하기 위한 이벤트 감지 회로 및 명령들; 및
    상기 캐시 누락에 응답하여 상기 인터럽트 레지스터로부터 상기 배경 스레드 인터럽트를 발생시키기 위한 인터럽트 발생 회로 및 명령들을 더 포함하는 것을 특징으로 하는 인터럽트 처리 시스템.
  14. 제 10 항에 있어서,
    디지털 신호 프로세서와 관련된 변환 참조 버퍼의 데이터 엘리먼트로서 상기 배경 스레드 인터럽트를 형성하기 위한 스레드 인터럽트 형성 명령들을 더 포함하는 것을 특징으로 하는 인터럽트 처리 시스템.
  15. 제 14 항에 있어서,
    상기 스레드 인터럽트 형성 명령들은 상기 디지털 신호 프로세서에 대한 동작들의 변화에 따라 상기 변환 참조 버퍼의 상기 데이터 엘리먼트를 변경하기 위한 명령들을 더 포함하는 것을 특징으로 하는 인터럽트 처리 시스템.
  16. 제 15 항에 있어서,
    상기 다수의 처리 스레드들 중 유휴 처리 스레드들로서 상기 다수의 처리 스레드들의 서브셋을 선택하기 위한 스레드 선택 회로 및 명령들을 더 포함하는 것을 특징으로 하는 인터럽트 처리 시스템.
  17. 제 10 항에 있어서,
    상기 프로세서는 상기 다수의 처리 스레드들의 인터리빙된 다중 스레드 동작중에 상기 배경 처리를 수행하기 위한 처리 명령들을 더 포함하는 것을 특징으로 하는 인터럽트 처리 시스템.
  18. 제 10 항에 있어서,
    상기 프로세서는 상기 인터럽트 레지스터가 상기 배경 처리 인터럽트보다 높은 우선순위를 갖는 인터럽트를 발생시킬 때 상기 다수의 처리 스레드들의 서브셋에서 상기 배경 처리를 종료하기 위한 처리 회로 및 명령들을 더 포함하는 것을 특징으로 하는 인터럽트 처리 시스템.
  19. 개인 전자기기의 지원으로 동작하며, 배경 처리를 수행하는 수단을 포함하는 디지털 신호 프로세서로서, 상기 배경 처리 수단은,
    다수의 인터럽트 타입들 중 하나로서 배경 스레드 인터럽트를 형성하는 수단 - 상기 배경 스레드 인터럽트는 다중 스레드 디지털 신호 프로세서의 다수의 처리 스레드들 중 하나를 이용하여 배경 처리를 시작함 -;
    상기 배경 스레드 인터럽트를 인터럽트 레지스터에 저장하는 수단;
    상기 다중 스레드 디지털 신호 프로세서의 처리 스레드에 관련시키기 위한 배경 처리 마스크를 형성하는 수단;
    상기 배경 처리 마스크를 상기 다수의 처리 스레드들의 적어도 서브셋에 관련시키는 수단;
    상기 디지털 신호 프로세서의 다중 스레드 처리중에 상기 다수의 처리 스레드들 중 하나에서 미리 결정된 이벤트의 존재를 감지하는 수단;
    상기 미리 결정된 이벤트에 응답하여 상기 인터럽트 레지스터로부터 상기 배경 스레드 인터럽트를 발생시키는 수단; 및
    관련 배경 처리 마스크를 갖는 상기 다수의 처리 스레드들의 상기 서브셋 중 하나를 이용하여 배경 처리를 시작하는 수단을 포함하는, 디지털 신호 프로세서.
  20. 제 19 항에 있어서,
    배경 프리패치 인터럽트로서 상기 배경 스레드 인터럽트를 저장하는 수단;
    배경 프리패치 처리 마스크로서 상기 배경 처리 마스크를 형성하는 수단; 및
    배경 프리패치 처리 단계로서 상기 배경 처리 단계를 시작하는 수단을 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  21. 제 19 항에 있어서,
    상기 다수의 처리 스레드들의 서브셋을 이용하여 저-우선순위 배경 처리를 수행하기 위한 저-우선순위 스레드 인터럽트로서 상기 배경 스레드 인터럽트를 형성하는 수단; 및
    상기 미리 결정된 이벤트의 발생시 상기 저-우선순위 스레드 인터럽트를 발생시키는 수단을 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  22. 제 19 항에 있어서,
    디지털 신호 프로세서와 관련된 변환 참조 버퍼의 데이터 엘리먼트로서 상기 배경 스레드 인터럽트를 형성하는 수단을 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  23. 제 19 항에 있어서,
    상기 디지털 신호 프로세서에 대한 동작들의 변화에 따라 상기 변환 참조 버퍼의 상기 데이터 엘리먼트를 변경하는 수단을 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  24. 제 19 항에 있어서,
    상기 다수의 처리 스레드들 중 유휴 처리 스레드들로서 상기 다수의 처리 스레드들의 서브셋을 선택하는 수단을 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  25. 제 19 항에 있어서,
    상기 다수의 처리 스레드들의 인터리빙된 다중 스레드 동작중에 상기 배경 처리를 수행하는 수단을 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  26. 제 19 항에 있어서,
    상기 인터럽트 레지스터가 상기 배경 처리 인터럽트보다 높은 우선순위를 갖는 인터럽트를 발생시킬 때 상기 다수의 처리 스레드들의 서브셋에서 상기 배경 처리를 종료하는 수단을 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  27. 다수의 처리 스레드들을 포함하는 다중 스레드 디지털 신호 프로세서에서 배경 처리를 수행하기 위해 구현된 컴퓨터 판독 가능 프로그램 코드 수단을 포함하는 컴퓨터 사용 가능 매체로서,
    다수의 인터럽트 타입들 중 하나로서 배경 스레드 인터럽트를 형성하기 위한 컴퓨터 판독 가능 프로그램 코드 수단 - 상기 배경 스레드 인터럽트는 다중 스레드 디지털 신호 프로세서의 다수의 처리 스레드들 중 하나를 이용하여 배경 처리를 시작함 -;
    상기 배경 스레드 인터럽트를 인터럽트 레지스터에 저장하기 위한 컴퓨터 판독 가능 프로그램 코드 수단;
    상기 다중 스레드 디지털 신호 프로세서의 처리 스레드에 관련시키기 위한 배경 처리 마스크를 형성하기 위한 컴퓨터 판독 가능 프로그램 코드 수단;
    상기 배경 처리 마스크를 상기 다수의 처리 스레드들의 적어도 서브셋에 관련시키기 위한 컴퓨터 판독 가능 프로그램 코드 수단;
    상기 디지털 신호 프로세서의 다중 스레드 처리중에 상기 다수의 처리 스레드들 중 하나에서 미리 결정된 이벤트의 존재를 감지하기 위한 컴퓨터 판독 가능 프로그램 코드 수단;
    상기 미리 결정된 이벤트에 응답하여 상기 인터럽트 레지스터로부터 상기 배경 스레드 인터럽트를 발생시키기 위한 컴퓨터 판독 가능 프로그램 코드 수단; 및
    관련 배경 처리 마스크를 갖는 상기 다수의 처리 스레드들의 상기 서브셋 중 하나를 이용하여 배경 처리를 시작하기 위한 컴퓨터 판독 가능 프로그램 코드 수단을 포함하는, 컴퓨터 사용 가능 매체.
  28. 제 27 항에 있어서,
    배경 프리패치 인터럽트로서 상기 배경 스레드 인터럽트를 저장하기 위한 컴퓨터 판독 가능 프로그램 코드 수단;
    배경 프리패치 처리 마스크로서 상기 배경 처리 마스크를 형성하기 위한 컴퓨터 판독 가능 프로그램 코드 수단; 및
    배경 프리패치 처리 단계로서 상기 배경 처리 단계를 시작하기 위한 컴퓨터 판독 가능 프로그램 코드 수단을 더 포함하는 것을 특징으로 하는 컴퓨터 사용 가능 매체.
KR1020087012037A 2005-10-20 2006-10-20 다중 스레드 디지털 신호 프로세서에서의 배경 스레드 처리 KR100953777B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/256,350 US7913255B2 (en) 2005-10-20 2005-10-20 Background thread processing in a multithread digital signal processor
US11/256,350 2005-10-20

Publications (2)

Publication Number Publication Date
KR20080059652A true KR20080059652A (ko) 2008-06-30
KR100953777B1 KR100953777B1 (ko) 2010-04-21

Family

ID=37834216

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087012037A KR100953777B1 (ko) 2005-10-20 2006-10-20 다중 스레드 디지털 신호 프로세서에서의 배경 스레드 처리

Country Status (5)

Country Link
US (1) US7913255B2 (ko)
EP (1) EP1941366A2 (ko)
KR (1) KR100953777B1 (ko)
BR (1) BRPI0617525A2 (ko)
WO (1) WO2007048132A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870372B2 (en) * 2006-08-14 2011-01-11 Marvell World Trade Ltd. Interrupt handling
US7681012B2 (en) * 2007-01-30 2010-03-16 Texas Instruments Incorporated Method, system and device for handling a memory management fault in a multiple processor device
US8656145B2 (en) * 2008-09-19 2014-02-18 Qualcomm Incorporated Methods and systems for allocating interrupts in a multithreaded processor
US9207943B2 (en) * 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method
US8423750B2 (en) * 2010-05-12 2013-04-16 International Business Machines Corporation Hardware assist thread for increasing code parallelism
US8429378B2 (en) 2010-07-06 2013-04-23 Qualcomm Incorporated System and method to manage a translation lookaside buffer
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US8789055B1 (en) * 2012-08-01 2014-07-22 Kabam, Inc. Maintaining time fidelity for an instance of a virtual space placed in a background state
US11403110B2 (en) * 2019-10-23 2022-08-02 Texas Instruments Incorporated Storing a result of a first instruction of an execute packet in a holding register prior to completion of a second instruction of the execute packet

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4494189A (en) * 1982-04-26 1985-01-15 International Business Machines Corporation Method and means for switching system control of CPUs
US4901307A (en) 1986-10-17 1990-02-13 Qualcomm, Inc. Spread spectrum multiple access communication system using satellite or terrestrial repeaters
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor
US6032245A (en) * 1997-08-18 2000-02-29 International Business Machines Corporation Method and system for interrupt handling in a multi-processor computer system executing speculative instruction threads
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6134710A (en) 1998-06-26 2000-10-17 International Business Machines Corp. Adaptive method and system to minimize the effect of long cache misses
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
EP1247195A4 (en) 1999-12-22 2005-01-05 Ubicom Inc SYSTEM AND METHOD FOR MULTITHREADING WORKING ON COMMAND LEVEL IN AN EMBEDDED PROCESSOR WITH ZERO-TIME CONTEXT SWITCHING
US6845419B1 (en) 2000-01-24 2005-01-18 Freescale Semiconductor, Inc. Flexible interrupt controller that includes an interrupt force register
DE60210990D1 (de) * 2002-11-19 2006-06-01 St Microelectronics Srl Verfahren zur Erzeugung von Unterbrechungsbefehlen in einem Mikroprozessorsystem und bezügliches Prioritätsunterbrechungssteuerungsgerät
US20050050305A1 (en) 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7774585B2 (en) 2003-11-12 2010-08-10 Infineon Technologies Ag Interrupt and trap handling in an embedded multi-thread processor to avoid priority inversion and maintain real-time operation

Also Published As

Publication number Publication date
WO2007048132A3 (en) 2007-06-07
WO2007048132A2 (en) 2007-04-26
US20070094660A1 (en) 2007-04-26
US7913255B2 (en) 2011-03-22
EP1941366A2 (en) 2008-07-09
BRPI0617525A2 (pt) 2011-07-26
KR100953777B1 (ko) 2010-04-21

Similar Documents

Publication Publication Date Title
KR100953777B1 (ko) 다중 스레드 디지털 신호 프로세서에서의 배경 스레드 처리
US8024554B2 (en) Modifying an instruction stream using one or more bits to replace an instruction or to replace an instruction and to subsequently execute the replaced instruction
US6751706B2 (en) Multiple microprocessors with a shared cache
US8533530B2 (en) Method and system for trusted/untrusted digital signal processor debugging operations
US10089229B2 (en) Cache allocation with code and data prioritization
EP2591420B1 (en) System and method to manage a translation lookaside buffer
US20010049726A1 (en) Data path engine
US6851072B2 (en) Fault management and recovery based on task-ID
JPWO2003025743A1 (ja) Javaアクセラレータを備えたプロセッサシステム
JP2013058207A (ja) マルチスレッド化デジタル信号プロセッサに関する非侵入型、スレッド選択式デバッギング方法及びシステム
RU2395835C2 (ru) Способ и система вычисления указателя для масштабируемого программируемого кольцевого буфера
JPH08320796A (ja) データ処理装置
US20020103942A1 (en) Wireless java device
JP2005514678A (ja) 集中デバイス・アプリケーション用の効果的な処理を備えたマルチスレッド・プロセッサ
JP2013050966A (ja) 電力遷移中におけるデジタル信号プロセッサデバッギングに関する方法
US20020016869A1 (en) Data path engine
EP1941352B1 (en) Shared interrupt control method and system for a digital signal processor
JP2009537912A (ja) キャッシュメモリの最大レジデンシー交換のための方法およびシステム
EP1387253B1 (en) Dynamic translation and execution of instructions within a processor
JP2005011353A (ja) プロセッサにおけるスタックをベースとするメモリの利用の管理
WO2021061269A1 (en) Storage control apparatus, processing apparatus, computer system, and storage control method
JP2001034484A (ja) デジタル処理信号プロセッサによりリアルタイムタスクを実行する方法
WO2001095096A2 (en) Data path engine (dpe)
MX2008005092A (en) Shared interrupt control method and system for a digital signal processor
JP2009176311A (ja) Javaアクセラレータを備えたプロセッサシステム

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee