KR100536019B1 - 하드웨어 루프에 대한 보안 제공 방법 및 장치 - Google Patents

하드웨어 루프에 대한 보안 제공 방법 및 장치 Download PDF

Info

Publication number
KR100536019B1
KR100536019B1 KR10-2003-7008769A KR20037008769A KR100536019B1 KR 100536019 B1 KR100536019 B1 KR 100536019B1 KR 20037008769 A KR20037008769 A KR 20037008769A KR 100536019 B1 KR100536019 B1 KR 100536019B1
Authority
KR
South Korea
Prior art keywords
mode
processor
register
instruction address
significant
Prior art date
Application number
KR10-2003-7008769A
Other languages
English (en)
Other versions
KR20030064888A (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 KR20030064888A publication Critical patent/KR20030064888A/ko
Application granted granted Critical
Publication of KR100536019B1 publication Critical patent/KR100536019B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

일실시예에서, 프로세서는 사용자 모드와 감시자 모드에서 동작할 수 있다. 프로세스는 사용자 모드에서 최상위 명령어 어드레스를 LOOP_TOP 레지스터에, 최하위 명령어 어드레스를 LOOP_BOT 레지스터에 로딩함으로써 하드웨어 루프를 초기화할 수 있다. 사용자 프로그램은 감시자 명령어 어드레스 공간에서 이벤트 서비스 루틴의 목료 어드레스를 LOOP_BOT 레지스터에, 사용자 명령어 어드레스 공간에서 어드레스를 LOOP_TOP 레지스터에 로딩함으로써 감시자 모드로의 액세스를 손쉽게 획득할 수 있다. 이벤트가 감시자 모드에서 일어난다면, 프로그램 흐름은 LOOP_TOP 레지스터에 있는 어드레스로 분기할 수 있으며, 감시자 모드에서 사용자 프로그램 제어가 주어진다. 이 보안 위험의 가능성을 피하기 위하여, 프로세서는 프로세서가 사용자 모드를 종료할 때 하드웨어 루프 동작을 디스에이블할 수 있다.

Description

하드웨어 루프에 대한 보안 제공 방법 및 장치{SECURITY OF HARDWARE LOOPS}
디지털 신호 처리(DSP) 시스템 등의 프로그램 가능한 프로세서를 설계할 때, 처리 속도와 소비 전력은 서로 상충적인 관계를 형성할 수 있다. 종래의 프로세서에는 소프트웨어 명령어의 실행 속도를 향상시키기 위하여 다양하게 설계된 하드웨어가 설치된다. 그러나, 통상적으로 하드웨어를 추가하면 프로세서의 소비 전력도 증가한다.
"하드웨어 루프"는 프로그램 가능한 프로세서의 속도를 향상시킬 수 있다. 이러한 프로세서의 속도 향상은 구성 범위 내에서 소프트웨어 명령어를 고속으로 실행할 수 있도록 설계된 전용 하드웨어를 이용하여 구현될 수 있다. 하드웨어 루프는 명령어들을 로컬 레지스터에 캐시함으로써 소프트웨어 루프를 실행하는데 사용되는 클록 사이클의 수를 줄일 수 있으며, 그에 따라 메모리 소자 또는 명령어 캐시로부터 동일 명령어를 여러번 인출해야 하는 필요성을 줄일 수 있다.
하드웨어 루프는 여러가지 난제를 가지고 있다. 이들 난제는 셋업 패널티나 분기 패널티 등의 패널티를 회피하는 것을 포함한다. 셋업 패널티는 하드웨어 루프의 셋업과 관련된 성능 손실(통상적으로 처리 시간 증가)을 포함한다. 이와 유사하게, 분기 패널티는 분기와 관련된 성능 손실(통상적으로 처리 시간 증가)이다.
도 1은 본 발명의 실시예에 따른 파이프라인형 프로그램 가능한 프로세서의 일례를 나타내는 블록도이다.
도 2는 본 발명의 실시예에 따른 프로그램 가능한 프로세서의 실행 파이프라인의 일례를 나타내는 블록도이다.
도 3은 본 발명의 실시예에 따른 하드웨어 루프 제어 구조를 나타내는 블록도이다.
도 4는 본 발명의 실시예에 따라 하드웨어 루프상에 보안을 제공하기 위한 동작을 나타내는 흐름도이다.
도 5는 본 발명의 실시예에 따른 프로세서를 포함하는 이동식 비디오 유닛의 블록도이다.
도 1은 소비 전력의 실질적인 증가없이 하드웨어 루프와 이 하드웨어 루프 동작시에 보안을 제공하도록 구성된 프로그램 가능한 프로세서(100)를 도시하는 블록도이다.
프로세서(100)는 감시자 모드와 사용자 모드에서 동작될 수 있다. 프로세서(100)는 운영체계와 같은 감시자 프로그램에 의해 사용될 때 감시자 모드에서 동작할 수 있다. 프로세서(100)는 애플리케이션과 같은 사용자 프로그램에 의해 사용될 때 사용자 모드에서 동작할 수 있다.
감시자 모드에서, 프로세서(100)는 소정의 특권을 가질 수 있다. 이들 특권에는 소정 명령어의 사용, 소정 자원, 예를 들면 레지스터로 액세스, 및 메모리에 확장된 판독/기록 액세스가 있을 수 있다. 이들 특권으로 말미암아 감시자 프로그램은 예컨대 "시스템"을 "휴면(sleep)" 상태에 있게 하고, 구조적 레지스터(architectural register)에 기록하며, 핵심 시스템 동작을 위해 사용되는 메모리 위치에 판독/기록 동작을 수행함으로써, 시스템의 전반적인 상태를 제어할 수 있다.
사용자 모드에서, 프로세서(100)는 그러한 특권을 가질 수 없다. 이 제한 사항들은 보안 척도로서, 사용자 프로그램이 고의로 또는 실수로 시스템 레벨 동작에 영향을 끼치는 것을 막을 수 있다. 예를 들어, 바이러스와 같은 유해한 사용자 프로그램은 운영체계 파일을 손상시키거나 삭제할 수 있으며, 그 밖에 적절한 액세스 특권을 가진 시스템의 동작을 금지할 수 있다.
프로세서(100)는 사용자 모드에서 하드웨어 루프를 이용할 수 있다. 하드웨어 루프 동작이 실행되면 감시자 모드에서 백도어(backdoor)에 사용자 프로그램을 제공하며, 그에 따라 보안 위험이 발생된다. 일실시예에서, 하드웨어 루프 동작에는, 하드웨어에서 실행되어 이 보안 위험을 제거할 수 있는 보안 기능이 포함된다.
하드웨어 루프를 지원하기 위해서, 프로세서(100)는 루프의 진입 및 종료 조건을 설정함으로써 하드웨어를 초기화하는 루프 셋업 명령을 지원할 수 있다. 진입 및 종료 조건은 루프 상태, 즉 최상위(top), 최하위(bottom) 및 카운트(count)에 의해 정의될 수 있다. 최상위 상태는 루프의 첫번째 명령어(또는 최상위)를 정의한다. 최하위 상태는 루프의 최종 명령어(또는 최하위)를 정의한다. 카운트 상태는 루프의 반복 횟수를 정의한다.
프로세서(100)에 의해 실행되는 프로그램 코드의 명령어는 관련된 명령어 어드레스, 또는 프로그램 카운트(PC)를 가질 수 있기 때문에, 메모리에서 그 명령어의 위치를 가리킬 수 있다. 일실시예에서, 명령어는 짝수 어드레스로 정렬될 수 있으며, 예컨대 그 명령어 어드레스의 폭은 2바이트(16 비트) 또는 4바이트(32비트)가 될 수 있다.
선택된 분기 또는 인터럽트 등에 의해 프로그램 카운터가 다른 위치로 분기하게 이벤트가 발생하지 않는다면, 프로그램 코드는 순차적으로 실행될 수 있다. 그러므로, 프로그램 흐름에 변화가 없다면, 그 다음 명령어의 PC는 명령어 어드레스 공간에서 그 다음 명령어의 어드레스가 된다. 예를 들어, 현재 명령어의 PC가 2002(16진수)이고, 그 명령어의 폭이 16비트(2바이트)이라면, 다음 명령어의 PC는 2004가 될 것이다.
하드웨어 루프의 진입은 처음에 "최상위 정합(top match)"에서 일어날 수 있다. 최상위 정합은 PC가 루프의 최상위 명령어를 지시하고 있을 때 발생할 수 있다. 하드웨어 루프의 종료는 마지막 "최하위 정합(bottom match)"에서 일어날 수 있다. 최하위 정합은 PC가 루프의 최하위 명령어를 지시하고 있을 때 발생할 수 있다.
처음의 최상위 정합에서 카운트를 초기화하고 그 카운터를 각각의 최하위 정합에서 감소시킴으로써, 하드웨어는 마지막 최하위 정합에 직면하였을 때를 추적할 수 있다. 이러한 방식으로, 루프 상태의 최상위, 최하위 및 카운트는 하드웨어 루프의 진입 및 종료 조건을 정할 수 있다.
프로세서(100)는 실행 파이프라인(102)과 제어 유닛(104)을 포함할 수 있다. 제어 유닛(104)은 클록 사이클 동안 파이프라인(102)을 통해 명령어 및/또는 데이터의 흐름을 제어할 수 있다. 예를 들어, 명령어의 처리시에, 제어 유닛(104)은 파이프라인의 다양한 구성 요소들에게 지시하여 명령어를 디코딩하고, 그 해당하는 동작, 예컨대 그 디코딩 결과를 메모리에 재기록하는 동작을 정확히 수행할 수 있다.
명령어는 파이프라인(102)의 제1 스테이지에 로딩되어 그 후속 스테이지들을 통해 처리될 수 있다. 스테이지는 다른 스테이지들과 동시에 처리할 수 있다. 데이터는 시스템의 한 사이클 동안 파이프라인(102)의 스테이지 사이를 통과할 수 있다. 명령의 결과는 파이프라인(102)의 끝단에서 신속하게 나타날 수 있다.
제어 유닛(104)은 후술하겠지만, 프로세서(100)의 소비 전력을 실질적으로 증가시키는 일없이 하드웨어 루프의 고속 실행을 가능하게 하는 하드웨어 루프 유닛(108)을 포함할 수 있다.
도 2는 파이프라인(200)의 일례를 나타내는 블록도이다. 이 파이프라인(200)은 단일 클록 사이클 동안 다수개의 명령어의 실행을 용이하게 하는 다수개의 스테이지를 구비한다. 파이프라인(200)에서, 하나의 명령어는 제1 클록 사이클 동안 명령어 인출(IF) 스테이지(202)에 입력될 수 있다. 그 명령어는 후속하는 클록 사이클 동안 그 파이프라인 아래로 계속해서 진행된다. 다른 명령어는 이전 명령어가 종료한 후에 IF 스테이지(202)에 입력할 수 있다. 그에 따라, 통상적으로 다른 명령어는 그 후속 클록 사이클 동안 IF 스테이지(202)에 입력된 후에, 후속하는 클록 사이클 동안 계속해서 파이프라인 아래로 진행된다. 유사하게, 추가 명령어는 후속하는 클록 사이클 동안 각각 IF 스테이지(202)에 입력된다. 파이프라인의 스테이지수는 그 파이프라인이 동시에 서비스할 수 있는 명령어의 수를 한정할 수 있다.
그 파이프라인의 다른 스테이지들은 다음과 같이 동작할 수 있다. 명령어들은 인출 유닛(202)에 의해 IF 스테이지 동안에 인출되어 디코드(DEC) 스테이지(208) 동안에 명령어 레지스터(206)로부터 디코딩될 수 있다. 어드레스 계산(AC) 스테이지(210) 동안에, 데이터 어드레스 발생기(212)는 그 동작을 수행하는데 이용된 임의의 메모리 어드레스를 계산할 수 있다.
실행 스테이지(EX 1 내지 EX n)(214, 220) 동안, 실행 유닛(222, 224)은 에컨대 2개 숫자를 더하거나 곱하는 등의 지정된 연산을 수행할 수 있다. 실행 유닛은 예컨대 하나 이상의 산술 로직 유닛(ALU), 부동 소수점 유닛(FPU) 및 배럴 시프터(barrel shifter)를 비롯한, 연산을 수행하는 특정 하드웨어를 포함할 수 있다.
각종의 데이터는 데이터 어드레스 발생기에 의해 생성되는 어드레스, 메모리로부터 검색된 데이터, 또는 데이터 레지스터로부터 검색된 데이터와 같이 실행 유닛에 입력될 수 있다. 재기록 스테이지(WB)(230) 동안, 그 결과는 파이프라인 외부에 있는 메모리 위치나 데이터 레지스터 또는 구조 레지스터(232)와 같이 파이프라인에 있는 데이터 레지스터에 기록될 수 있다. 파이프라인(200)의 스테이지들은 데이터를 저장하기 위해, 플립플롭과 같은 하나 이상의 저장 유닛을 포함할 수 있다.
도 3은 도 1의 루프 유닛(108)의 블록도이다. 그 하드웨어 루프 유닛(108)은 LOOP_TOP 레지스터(302), LOOP_BOT 레지스터(304), LOOP_CNT 레지스터(306), 및 루프 제어 유닛(312)을 포함할 수 있다. 그 하드웨어 루프 유닛은 루프의 최상위 명령어의 어드레스를 LOOP_TOP 레지스터(302)에 로딩하고, 루프의 최하위 명령어의 어드레스를 LOOP_BOT 레지스터(304)에 로딩하며, 완료될 루프 횟수를 나타내는 카운트를 LOOP_CNT 레지스터(306)에 로딩함으로써 루프를 초기화할 수 있다. 루프 제어 유닛은 LOOP_TOP 레지스터(302) 및 LOOP_BOT 레지스터(304)의 값과 현재 PC를 비교할 수 있다. 최상위 정합을 검출할 때, 루프 제어 유닛은 하드웨어 루프 동작을 시작할 수 있다. 최하위 정합이 일어날 때, 루프 제어 유닛(312)은 LOOP_CNT 레지스터(306)의 값을 감소시키고, PC를 최상위 명령어의 어드레스로 다시 분기시킬 수 있다. 이 하드웨어 루프는 루프의 종료 조건이 충족될 때까지, 예컨대 최하위 정합 카운트가 제로가 될 때까지 파이프라인에서 동작할 수 있다.
보안성 위험은 사용자 프로그램이 감시자 프로그램 어드레스 공간에서 명령어의 어드레스, 예컨대 이벤트 벡터 테이블(EVT)(120 : 도 1)에서의 명령어 어드레스를 획득하는 경우에 있을 수 있다. EVT는 이벤트 서비스 루틴에 대한 목표 어드레스를 포함할 수 있다. 이벤트는 프로그램 흐름을 차단시키는 예외 상태를 포함할 수 있다. I/O 장치 인터럽트, 오정렬된 메모리 액세스, 하드웨어 불능 등과 같은 이벤트는 해당 이벤트 서비스 루틴에 의해 프로세서(100)에서 처리될 수 있다. 특정의 이벤트가 발생할 때, 그 프로세서(100)는 그 이벤트를 처리하기 위하여, EVT(120)에서 그 이벤트에 대한 이벤트 서비스 루틴의 적절한 목표 어드레스를 룩업하여, PC를 그 이벤트 서비스 루틴에 분기시킬 수 있다. 프로세서(100)가 이벤트를 서비스할 때, 프로세서는 감시자 모드에 진입하여 해당 특권을 취득한다. 그 이벤트가 처리된 후에, 프로세서(100)는 사용자 모드로 복귀하여 인터럽트된 프로그램 흐름을 지속한다.
EVT(120)에서 예컨대, 공통 I/O 장치 인터럽트를 처리하는 이벤트 서비스 루틴의 목표 어드레스를 취득한 사용자 프로그램은 이벤트 서비스 루틴의 어드레스를 LOOP_BOT 레지스터(304)에 로딩하고, 사용자 프로그램 어드레스 공간에 있는 명령어의 어드레스를 LOOP_TOP 레지스터(302)에 로딩할 수 있다.
감시자 코드가 16진수 어드레스 1000 내지 2000에 위치되고, 사용자 코드가 16진수 어드레스 10,000 내지 20,000에 위치되는 상황을 고려할 때, 이 예에서, I/O 장치 인터럽트에 대한 이벤트 서비스 루틴의 목표 어드레스는 명령어 어드레스 1004이고, 사용자 프로그램은 어드레스 1004를 LOOP_BOT 레지스터에 로딩하며, 어드레스 10,000를 LOOP_TOP 레지스터에 로딩한다. I/O 장치 인터럽트가 발생할 때, 감시자 프로그램은 EVT(120)를 점검하고, PC를 명령어 1004에 분기시킨다. 이것에 의해 최하위 정합이 발생한다. 최하위 정합에 응답하여, 하드웨어 루프 유닛(108)에 의해 PC는 LOOP_TOP 레지스터(302)에 있는 명령어 어드레스 10,200로 암시적으로 분기시키고, 그 명령어 어드레스는 사용자 어드레스 공간에 상주한다. PC가 사용자 코드에 있는 명령어로 분기할 때, 사용자 프로그램은 프로세서의 제어를 획득한다. 그러나, 프로세서(100)는 감시자 모드를 유지한다. 따라서 사용자 프로그램은 대개 이 프로그램에게는 주어지지 않는 감시 특권을 취득하게 된다. 유해한 사용자 프로그램은 그 특권을 사용하여 시스템을 손상시키거나 시스템의 동작을 금지할 수 있다.
도 4는 일실시예에 따른 동작(400)의 흐름도이다. 다음의 설명은 그 동작(400)을 실시하는 일실시예에 관한 것이다. 다른 실시예에서는 블록을 생략하거나 다른 순서로 수행될 수 있다.
도 3에 도시하는 바와 같이, 모드 검출기(320)는 LOOP_BOT 레지스터(304)에 연결될 수 있다. 블록(402)에서, 모드 검출기(320)는 프로세서가 사용자 모드를 종료할 때를 검출할 수 있다. 프로세서(100)가 사용자 모드를 종료할 때, 모드 검출기(320)는 블록(404)에서 LOOP_BOT 레지스터에 있는 명령어 어드레스의 최하위 비트(LSB)를 1로 설정할 수 있다.
명령어 어드레스가 짝수 어드레스로 정렬되기 때문에, 루프 제어 유닛(310)은 홀수 어드레스와 충돌이 일어나지 않으며, 즉 LSB는 항상 제로이어야 한다. 따라서, 최하위 정합은 프로세서가 감시자 모드에 있을 때 일어날 수 없다. 전술한 예를 고려해 보면, 사용자 프로그램은 사용자 모드에서 명령어 어드레스 1004(2진수 - "0000 0011 1110 1100")를 LOOP_BOT 레지스터(304)에 로딩한다. 프로세서가 사용자 모드를 종료할 때, 그 모드 검출기(320)는 어드레스의 LSB를 1로 설정하고, LOOP_BOT 레지스터의 값은 1005("0000 0011 1110 1101")가 된다.
모든 명령어 어드레스가 짝수로 정렬되어야 하기 때문에, 블록(406)에서, PC가 프로그램 흐름에서 홀수 어드레스와 충돌하면, 프로세서(100)는 블록(408)에서 예외 상황을 취할 수 있다. 일실시예에 있어서, 예외 상황은 최하위 정합보다 상위 우선순위를 갖는다. 그러므로, 최하위 정합이 발생할 지라도, 프로세서(100)는 LOOP_TOP 레지스터(302)에 있는 어드레스로 분기하기보다는 예외 상황을 처리하는 이벤트 서비스 루틴으로 분기하며, 그에 따라 보안 위험을 피할 수 있다.
프로세서가 블록(410)에서 사용자 모드에 재진입할 때, 모드 검출기(320)는 블록(412)에서 LOOP_BOT 레지스터(306)의 LSB 값을 0으로 다시 설정하고, 그에 따라 하드웨어 루프 구조의 동작을 다시 허가할 수 있다.
이러한 프로세서(100)는 비디오 캠코더, 원격회의, PC 비디오 카드 및 고화질 텔레비젼(HDTV) 용도로 고려된다. 또한, 이 프로세서(100)는 이동 전화, 음성 인식 및 기타 응용예에 사용된 음성 처리 등의 디지털 신호 처리를 이용하는 기타 기술과 연계하여 이용하는 것이 고려된다.
예를 들어, 도 5는 일실시예에 따른 프로세서(100)를 포함하는 이동식 비디오 장치(500)을 도시하고 있다. 이동식 비디오 장치(500)는 안테나(502) 또는 디지털 비디오 디스크(DVD) 또는 메모리 카드 등의 디지털 비디오 기억 매체(504)로부터 생성된 비디오 이미지를 디스플레이하는 휴대용 장치일 수 있다. 프로세서(100)는 프로세서 동작을 위해 명령어와 데이터를 기억할 수 있는 캐시 메모리(506), 및 기타 장치, 예컨대 SRAM(508)과 통신할 수 있다.
프로세서(100)는 마이크로프로세서, 디지털 신호 처리기(DSP), 슬레이브 DSP를 제어하는 마이크로프로세서, 또는 하이브리드 마이크로프로세서/DSP 구조를 갖는 프로세서일 수 있다. 프로세서(100)는, 예컨대 아날로그-디지털 변환, 복조, 필터링, 데이터 복원 및 디코딩을 비롯한, 인코딩된 비디오 신호에 대한 다양한 동작을 수행한다. 프로세서(100)는 MPEG족 표준 및 H.263 표준과 같은 다양한 디지털 비디오 압축 표준 가운데 하나에 따라 압축된 디지털 비디오 신호를 디코딩할 수 있다. 디스플레이 드라이버(510)에 그 디코딩된 비디오 신호를 입력하여 그 비디오 이미지를 디스플레이(512)상에 표시할 수 있다.
이상에서, 본 발명의 여러 실시예들을 설명하였다. 그러나, 본 발명의 사상과 범위에 벗어나지 않는 다양한 변형 실시예들을 구상할 수 있을 것이다. 따라서, 기타 실시예들도 다음의 청구범위의 범위내에 있다.

Claims (32)

  1. 적어도 제1 및 제2 동작 모드에서 프로세서를 동작시키는 단계와,
    상기 제1 동작 모드를 종료할 때 상기 프로세서에 관련된 하드웨어 루프 동작을 금지하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 제1 동작 모드는 사용자 모드인 것인 방법.
  3. 제2항에 있어서, 상기 제2 동작 모드는 감시자 모드인 것인 방법.
  4. 제1항에 있어서, 상기 제1 동작 모드에서 상기 하드웨어 루프 동작을 초기화하는 단계와,
    상기 제1 동작 모드로부터 종료를 검출하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 하드웨어 루프 동작을 초기화하는 단계는,
    짝수로 정렬된 최상위 명령어 어드레스를 제1 레지스터에 로딩하는 단계와,
    짝수로 정렬된 최하위 명령어 어드레스를 제2 레지스터에 로딩하는 단계를 포함하는 것인 방법.
  6. 제5항에 있어서, 상기 하드웨어 루프 동작을 금지하는 단계는 상기 제2 레지스터에 있는 최하위 명령어 어드레스의 최하위 비트를 1로 설정하는 단계를 포함하는 것인 방법.
  7. 제5항에 있어서, 상기 최상위 명령어 어드레스 및 최하위 명령어 어드레스는 짝수로 정렬된 바이트의 어드레스를 포함하는 것인 방법.
  8. 제1항에 있어서, 상기 제1 동작 모드에 진입할 때 하드웨어 루프 동작을 허가하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서,
    짝수로 정렬된 최상위 명령어 어드레스를 제1 레지스터에 로딩하는 단계와,
    짝수로 정렬된 최하위 명령어 어드레스를 제2 레지스터에 로딩하는 단계와,
    상기 제1 동작 모드로의 진입을 검출하는 단계와,
    상기 제2 레지스터에 있는 최하위 명령어 어드레스의 최하위 비트를 0으로 설정하는 단계를 더 포함하는 방법.
  10. 제8항에 있어서, 상기 최상위 명령어 어드레스 및 최하위 명령어 어드레스는 짝수로 정렬된 바이트 어드레스를 포함하는 것인 방법.
  11. 프로세서에 보안을 제공하기 위한 머신 실행 가능한 명령어를 기억하는 머신 판독 가능한 매체를 포함하고, 상기 명령어에 의해 머신은,
    상기 프로세서를 적어도 제1 및 제2 동작 모드에서 동작시키고,
    제1 동작 모드를 종료할 때 하드웨어 루프 동작을 금지시키는 것인 물품.
  12. 제11항에 있어서, 상기 제1 모드는 사용자 모드인 것인 물품.
  13. 제12항에 있어서, 상기 제2 모드는 감시자 모드인 것인 물품.
  14. 제11항에 있어서, 상기 머신이,
    상기 제1 동작 모드에서 상기 하드웨어 루프 동작을 초기화시키고,
    상기 제1 동작 모드로부터 종료를 검출하게 하는 명령어 더 포함하는 물품.
  15. 제14항에 있어서, 상기 머신이 상기 하드웨어 루프 동작을 초기화시키는 명령어는, 상기 머신이,
    짝수로 정렬된 최상위 명령어 어드레스를 제1 레지스터에 로딩시키고,
    짝수로 정렬된 최하위 명령어 어드레스를 제2 레지스터에 로딩시키는 명령어를 포함하는 것인 물품.
  16. 제15항에 있어서, 상기 머신이 상기 하드웨어 루프 동작을 금지하는 명령어는 상기 머신이 상기 제2 레지스터에 있는 최하위 명령어 어드레스의 최하위 비트를 1로 설정하게 하는 명령어를 포함하는 것인 물품.
  17. 제15항에 있어서, 상기 최상위 명령어 어드레스 및 최하위 명령어 어드레스는 짝수로 정렬된 바이트 어드레스를 포함하는 것인 물품.
  18. 제11항에 있어서, 상기 머신이,
    상기 제1 동작 모드에 진입할 때 하드웨어 루프 동작을 허가하는 명령어를 더 포함하는 물품.
  19. 제18항에 있어서, 상기 머신이,
    짝수로 정렬된 최상위 명령어 어드레스를 제1 레지스터에 로딩시키고,
    짝수로 정렬된 최하위 명령어 어드레스를 제2 레지스터에 로딩시키며,
    상기 제1 동작 모드로의 진입을 검출하게 하고,
    상기 제2 레지스터에 있는 최하위 명령어 어드레스의 최하위 비트를 제로로 설정시키는 명령어를 더 포함하는 물품.
  20. 제18항에 있어서, 상기 최상위 명령어 어드레스 및 최하위 명령어 어드레스는 짝수로 정렬된 바이트 어드레스를 포함하는 것인 물품.
  21. 하드웨어 루프에서 최상위 명령어의 어드레스를 기억하기 위한 제1 레지스터와,
    상기 하드웨어 루프에서 최하위 명령어의 어드레스를 기억하기 위한 제2 레지스터와,
    상기 제1 및 제2 레지스터에 연결되어, 상기 하드웨어 루프 동작을 수행하는 하드웨어 루프 컨트롤러와,
    제1 동작 모드를 종료하는 프로세서에 응답하여 상기 하드웨어 루프 컨트롤러의 동작을 금지하는 모드 검출기를 포함하는 프로세서.
  22. 제21항에 있어서, 상기 제1 동작 모드는 사용자 모드인 것인 프로세서.
  23. 제22항에 있어서, 상기 프로세서는 감시자 모드에서도 동작 가능한 것인 프로세서.
  24. 제21항에 있어서, 상기 모드 검출기는 상기 제1 동작 모드에 진입하는 상기 프로세서에 응답하여 상기 하드웨어 루프 컨트롤러의 동작을 허가하는 것인 프로세서.
  25. 제21항에 있어서, 상기 최하위 명령어의 어드레스는 짝수로 정렬된 것인 프로세서.
  26. 제25항에 있어서, 상기 최상위 명령어 어드레스 및 최하위 명령어 어드레스는 짝수로 정렬된 바이트 어드레스를 포함하는 것인 프로세서.
  27. 제25항에 있어서, 상기 모드 검출기는 상기 제1 동작 모드를 종료하는 프로세서에 응답하여 상기 제2 레지스터에 있는 어드레스의 최하위 비트를 1로 설정하도록 동작하는 것인 프로세서.
  28. 제25항에 있어서, 상기 모드 검출기는 상기 제1 동작 모드에 진입하는 프로세서에 응답하여 상기 제2 레지스터에 있는 어드레스의 최하위 비트를 제로로 설정하도록 동작하는 것인 프로세서.
  29. 정적 랜덤 액세스 메모리와,
    상기 정정 랜덤 액세스 메모리에 연결된 프로세서를 포함하고, 상기 프로세서는,
    하드웨어 루프에서 최상위 명령어의 어드레스를 기억하기 위한 제1 레지스터와,
    상기 하드웨어 루프에서 최하위 명령어의 어드레스를 기억하기 위한 제2 레지스터와,
    상기 제1 및 제2 레지스터에 연결되어, 상기 하드웨어 루프 동작을 수행하도록 동작하는 하드웨어 루프 컨트롤러와,
    제1 동작 모드를 종료하는 프로세서에 응답하여 상기 하드웨어 루프 컨트롤러의 동작을 금지하는 모드 검출기를 포함하는 것인 시스템.
  30. 제29항에 있어서, 상기 제1 동작 모드는 사용자 모드인 것인 시스템.
  31. 제30항에 있어서, 상기 프로세서는 감시자 모드에서도 동작 가능한 것인 시스템.
  32. 제29항에 있어서, 상기 모드 검출기는 상기 제1 동작 모드에 진입하는 프로세서에 응답하여 상기 하드웨어 루프 컨트롤러의 동작을 허가하는 것인 시스템.
KR10-2003-7008769A 2000-12-28 2001-12-20 하드웨어 루프에 대한 보안 제공 방법 및 장치 KR100536019B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/753,081 2000-12-28
US09/753,081 US6763453B2 (en) 2000-12-28 2000-12-28 Security on hardware loops
PCT/US2001/050508 WO2002054226A2 (en) 2000-12-28 2001-12-20 Security of hardware loops

Publications (2)

Publication Number Publication Date
KR20030064888A KR20030064888A (ko) 2003-08-02
KR100536019B1 true KR100536019B1 (ko) 2005-12-14

Family

ID=25029073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7008769A KR100536019B1 (ko) 2000-12-28 2001-12-20 하드웨어 루프에 대한 보안 제공 방법 및 장치

Country Status (6)

Country Link
US (1) US6763453B2 (ko)
JP (1) JP3720807B2 (ko)
KR (1) KR100536019B1 (ko)
CN (1) CN100342327C (ko)
TW (1) TWI232401B (ko)
WO (1) WO2002054226A2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266414B2 (en) 2008-08-19 2012-09-11 Freescale Semiconductor, Inc. Method for executing an instruction loop and a device having instruction loop execution capabilities
KR100986412B1 (ko) * 2010-07-01 2010-10-08 안재주 제트원리를 이용한 수중 추진장치
WO2013101059A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Supervisor mode execution protection

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0221741A3 (en) 1985-11-01 1991-01-16 Advanced Micro Devices, Inc. Computer microsequencers
US4979148A (en) * 1988-12-09 1990-12-18 International Business Machines Corporation Increasing options in mapping ROM in computer memory space
JP3102027B2 (ja) 1990-11-20 2000-10-23 日本電気株式会社 ループ制御のネスティング管理機構
US6116768A (en) 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
US5710913A (en) 1995-12-29 1998-01-20 Atmel Corporation Method and apparatus for executing nested loops in a digital signal processor
WO1998006038A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Architectural support for software pipelining of loops
JP3842474B2 (ja) * 1999-02-02 2006-11-08 株式会社ルネサステクノロジ データ処理装置

Also Published As

Publication number Publication date
JP3720807B2 (ja) 2005-11-30
CN1483160A (zh) 2004-03-17
TWI232401B (en) 2005-05-11
WO2002054226A2 (en) 2002-07-11
US20020087853A1 (en) 2002-07-04
KR20030064888A (ko) 2003-08-02
WO2002054226A3 (en) 2002-11-28
JP2004521413A (ja) 2004-07-15
US6763453B2 (en) 2004-07-13
CN100342327C (zh) 2007-10-10

Similar Documents

Publication Publication Date Title
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
KR100412920B1 (ko) 데이터 밀도가 높은 risc 프로세서
US5710913A (en) Method and apparatus for executing nested loops in a digital signal processor
JP2010066892A (ja) データプロセッサ及びデータ処理システム
JPH0496825A (ja) データ・プロセッサ
JP2000330787A (ja) 命令ループを実行するコンピュータシステムおよび命令ループ実行方法
KR100571332B1 (ko) 프로그래머블 프로세서의 리셋팅
US6898693B1 (en) Hardware loops
KR100536019B1 (ko) 하드웨어 루프에 대한 보안 제공 방법 및 장치
KR100551544B1 (ko) 하드웨어 루프
JPH03233630A (ja) 情報処理装置
US10481913B2 (en) Token-based data dependency protection for memory access
JP2002229779A (ja) 情報処理装置
EP0385136B1 (en) Microprocessor cooperating with a coprocessor
JP2010015375A (ja) メモリ制御回路および集積回路
US7124259B2 (en) Methods and apparatus for indexed register access
JPH0384632A (ja) データ処理装置
US4935849A (en) Chaining and hazard apparatus and method
JPH03158929A (ja) データ処理装置
KR20180118699A (ko) 레지스터 액세스 제어
JP2944563B2 (ja) パイプライン型情報処理装置
JP2001014161A (ja) プログラマブルコントローラ
JP2004516572A (ja) スペキュレーティブ・レジスタの調整
US20050071830A1 (en) Method and system for processing a sequence of instructions
JP3147884B2 (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: 20121123

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131119

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141124

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 12