KR101697548B1 - Fifo 로드 명령 - Google Patents

Fifo 로드 명령 Download PDF

Info

Publication number
KR101697548B1
KR101697548B1 KR1020147011807A KR20147011807A KR101697548B1 KR 101697548 B1 KR101697548 B1 KR 101697548B1 KR 1020147011807 A KR1020147011807 A KR 1020147011807A KR 20147011807 A KR20147011807 A KR 20147011807A KR 101697548 B1 KR101697548 B1 KR 101697548B1
Authority
KR
South Korea
Prior art keywords
instruction
register
data
item
memory location
Prior art date
Application number
KR1020147011807A
Other languages
English (en)
Other versions
KR20140073553A (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 KR20140073553A publication Critical patent/KR20140073553A/ko
Application granted granted Critical
Publication of KR101697548B1 publication Critical patent/KR101697548B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Abstract

명령은 레지스터 및 메모리 위치를 식별한다. 프로세서에 의한 명령의 실행 시에, 아이템이 메모리 위치로부터 로딩되고, 시프트 및 삽입 연산은 레지스터 내의 데이터를 시프팅하고 아이템을 레지스터로 삽입하도록 수행된다.

Description

FIFO 로드 명령{FIFO LOAD INSTRUCTION}
본 발명은 일반적으로 FIFO(first-in-first-out) 로드 명령에 관한 것이다.
기술의 발전들은 더 작고 더 강력한 컴퓨팅 디바이스들을 창출해 왔다. 예를 들어, 작고 가벼우며 사용자들이 쉽게 휴대하는 휴대용 무선 전화들, 개인용 디지털 보조기기(PDA: personal digital assistant)들 및 페이징 디바이스들과 같은 무선 컴퓨팅 디바이스들을 포함하여, 현재 다양한 휴대용 개인 컴퓨팅 디바이스들이 존재한다. 보다 구체적으로, 셀룰러 전화들과 인터넷 프로토콜(IP) 전화들과 같은 휴대용 무선 전화들은 무선 네트워크들을 통해 음성 및 데이터 패킷들을 통신할 수 있다. 또한, 이러한 많은 무선 전화들은 그 안에 통합되는 다른 형태들의 디바이스들을 포함한다. 예를 들어, 무선 전화는 또한 디지털 스틸 카메라, 디지털 비디오 카메라, 디지털 레코더 및 오디오 파일 플레이어를 포함할 수 있다. 또한, 이러한 무선 전화들은 인터넷을 액세스하는데 사용될 수 있는 웹 브라우저 애플리케이션과 같은 소프트웨어 애플리케이션들을 포함하는, 실행 가능 명령들을 프로세싱할 수 있다. 이로써, 이러한 무선 전화들은 상당한 컴퓨팅 능력들을 포함할 수 있다.
무선 전화들 및 디지털 카메라들과 같은 멀티미디어 디바이스들은 멀티미디어 디지털 신호 프로세서들을 포함할 수 있다. 멀티미디어 디지털 신호 프로세서들에 의해 수행되는 하나의 프로세스는 FIR(finite impulse response) 필터링이다. FIR 필터링에서, 슬라이딩 윈도우 FIR은 재귀적으로(recursively) 입력 데이터 스트림에 적용될 수 있고, 여기서 각각의 윈도우 내의 데이터에는 곱셈 및 누산 연산들이 행해진다. 예를 들면, 메모리에 저장된 입력 데이터 스트림이 로딩될 수 있고, 슬라이딩 윈도우 필터는 제 1 출력을 획득하기 위해 데이터 스트림의 제 1 부분에 적용될 수 있다. 다음에, 데이터 스트림은 (예를 들면, 남아있는 데이터 스트림에 걸쳐 윈도우를 "슬라이딩"하기 위해) 값만큼 시프팅될 수 있고, 슬라이딩 윈도우 필터는 제 2 출력을 획득하기 위해 데이터 스트림의 제 2 부분에 적용될 수 있다. 멀티미디어 신호 프로세서들에 의해 수행되는 또 다른 프로세스는 모션 추정이고, 모션 추정은 각각의 윈도우 내의 데이터에 절대차 및 누산 연산들을 실시할 수 있다.
현재 FIR 및 모션 추정 기술들은 임의의 바이트 정렬로 데이터 스트림을 메모리로 로딩하는 것을 지원하는 하드웨어(예를 들면, 임의의 바이트 어드레스로부터 로드 정렬 연산을 수행하기 위한 커스텀 하드웨어)를 사용할 수 있다. 그러나, 그러한 커스텀 하드웨어는 비용이 많이 들 수 있고, 커스텀 하드웨어가 차지하는 부가적인 공간으로 인해 작은 디바이스들(예를 들면, 모바일 폰들)에서 바람직하지 않을 수 있다. 다른 기술들은 메모리로부터 타겟 데이터 스트림을 로딩하고 시프트 연산을 수행하기 위해 다수의 명령들의 사용을 사용할 수 있다. 예를 들면, 제 1 명령은 타겟 데이터 스트림(예를 들면, D7 D6...D0)을 메모리로부터 제 1 레지스터(예를 들면, RF(0))로 로딩할 수 있고, 제 2 명령은 타겟 데이터 스트림에 대해 시프트 좌측 연산을 수행하고, 제 2 레지스터(예를 들면, RF(1))에 이전에 저장된 데이터에 대해 시프트 우측 연산을 수행할 수 있다. 이어서, 시프팅된 타겟 데이터는 제 3 레지스터(예를 들면, RF(2))로 삽입 및 시프팅될 수 있다.
데이터 로드, 시프트(즉, 정렬) 및 삽입 연산들을 수행하는 단일 명령이 개시된다. 예를 들면, 명령은 전자 디바이스(예를 들면, 모바일 디바이스들 및 디지털 카메라들)에서 FIR 필터링 및 모션 추정을 수행하기 위한 다른 실행 가능 명령과 함께 데이터 로드, 시프트 및 삽입 연산들을 수행하는데 사용될 수 있다. 예를 들면, FIR 필터링 동안에, 곱셈 및 누산 연산들이 수행될 수 있다. 또 다른 예로서, 모션 추정 동안에, 절대차들의 합산 연산들이 수행될 수 있다. 일 구현예에서, 명령은 레지스터 및 메모리 위치를 식별할 수 있다. 레지스터는 이전에 저장된 데이터(예를 들면, FIFO 버퍼를 나타냄)를 포함할 수 있고, 메모리 위치는 레지스터로 삽입될 아이템(예를 들면, 바이트, 하프-워드 또는 워드)을 포함할 수 있다. 명령이 프로세서에 의해 실행될 때, 아이템이 메모리 위치로부터 레지스터로 로딩될 수 있고, 시프트 및 삽입 연산은 레지스터 내의 이전 데이터를 시프팅하고 아이템을 레지스터로 삽입하도록 수행될 수 있다. 로드 연산, 시프트 연산, 및 삽입 연산은 명령의 동일한 실행 사이클로 수행될 수 있다. 또한, 명령은 VLIW(very long instruction word) 아키텍쳐들의 명령 레벨 병렬성(parallelism)을 이용할 수 있다. 예를 들면, 단일 VLIW 패킷은 병렬로 실행 가능한 다수의 그러한 명령들을 포함할 수 있다.
특정 실시예에서, 장치는 레지스터 및 메모리 위치를 식별하는 명령을 저장하는 메모리를 포함한다. 프로세서에 의한 명령의 실행 시에, 아이템이 메모리 위치로부터 로딩되고, 시프트 및 삽입 연산은 레지스터 내의 데이터를 시프팅하고 아이템을 레지스터로 삽입하도록 수행된다.
또 다른 특정 실시예에서, 방법은 레지스터 및 메모리 위치를 식별하는 명령을 수신하는 것을 포함한다. 상기 방법은 명령을 실행하는 것을 포함한다. 명령을 실행하는 것은 메모리 위치로부터 아이템을 로딩하는 것, 레지스터 내의 데이터를 시프팅하는 것, 및 아이템을 레지스터로 삽입하는 것을 포함한다.
또 다른 특정 실시예에서, 장치는 레지스터 및 메모리 위치를 식별하는 명령을 저장하기 위한 수단을 포함한다. 상기 장치는 또한 명령을 실행하기 위한 수단을 포함한다. 명령을 실행하기 위한 수단은 메모리 위치로부터 아이템을 로딩하기 위한 수단, 레지스터 내의 데이터를 시프팅하기 위한 수단, 및 아이템을 레지스터로 삽입하기 위한 수단을 포함한다.
또 다른 특정 실시예에서, 비일시적인 컴퓨터-판독 가능 매체는, 프로세서에 의해 실행될 때, 프로세서로 하여금, 레지스터 및 메모리 위치를 식별하는 단일 명령을 수신하고 단일 명령을 실행하게 하는 프로그램 코드를 포함한다. 단일 명령을 실행하는 것은 메모리 위치로부터 아이템을 로딩하는 것, 레지스터 내의 데이터를 시프팅하는 것, 및 아이템을 레지스터로 삽입하는 것을 포함한다.
개시된 실시예들 중 적어도 하나에 의해 제공되는 하나의 특정 이점은, 데이터 로드, 시프트(즉, 정렬) 및 삽입 기능을 수행하기 위한 단일 명령의 사용으로 인해, 감소된 코드 크기 및 애플리케이션들(예를 들면, 임베딩된 멀티미디어 프로세싱 애플리케이션들)에 대한 더 적은 실행 사이클들이다. 또 다른 특정 이점은, 추가의 맞춤화된 하드웨어를 사용하지 않고 오정렬된 데이터를 지원하기 위한 개시된 명령의 능력으로 인해, 더 작고, 더 저렴하고, 더 적은 전력-집약형 전자 디바이스들이다.
본 발명의 다른 양상들, 이점들 및 특징들은 다음 섹션들: 도면의 간단한 설명, 발명을 실시하기 위한 구체적인 내용 및 특허청구범위를 포함하는 전체 출원의 검토 후 명백해질 것이다.
도 1은 레지스터 및 메모리 위치를 식별하는 명령을 실행하는 것을 예시한 도면이다.
도 2는 레지스터 및 메모리 위치를 식별하는 명령을 실행하는 것을 예시한 또 다른 도면이다.
도 3은 레지스터 및 메모리 위치를 식별하는 명령을 저장하는 메모리를 포함하는 시스템의 특정 예시적인 실시예의 도면이다.
도 4는 레지스터 및 메모리 위치를 식별하는 명령을 실행하는 방법의 특정 예시적인 실시예의 흐름도이다.
도 5는 레지스터 및 메모리 위치를 식별하는 명령을 실행하는 또 다른 도면이다.
도 6은 레지스터 및 메모리 위치를 식별하는 명령을 실행하도록 동작 가능한 프로세서를 포함하는 무선 디바이스의 특정 실시예의 블록도이다.
데이터 로드, 시프트 및 삽입 기능을 수행하기 위한 명령은 레지스터 및 메모리 위치를 식별할 수 있다. 명령이 실행될 때, 아이템(예를 들면, 바이트, 하프-워드, 또는 워드)은 메모리 위치로부터 로딩될 수 있고, 시프트 및 삽입 연산은 레지스터 내의 데이터를 시프팅하고 아이템을 레지스터로 삽입하기 위해 수행될 수 있다. 로드, 시프트 및 삽입 연산들은 동일한 실행 사이클 동안에 수행될 수 있다. 시프트 및 삽입 연산은 레지스터에 삽입될 아이템을 위한 공간(room)을 만들기 위해 레지스터로부터 데이터의 일부분을 제거할 수 있다. 제거된 부분은 FIFO(first-in-first-out) 버퍼의 앞으로부터 "팝핑되는(popped)" 데이터 엘리먼트를 나타낼 수 있고, 새롭게 부가되는 아이템은 FIFO 버퍼의 뒤로 "푸싱되는(pushed)" 데이터 엘리먼트를 나타낼 수 있다. 명령은 레지스터에 저장된 데이터에 대해 필터링 연산을 수행하기 위해 다른 실행 가능 명령(예를 들면, 곱셈 및 누산 명령들)과 관련하여 실행 가능할 수 있다. 필터링 연산은 FIR(finite impulse response) 연산(예를 들면, 모뎀, 음성 코덱(coder/decoder), 오디오 코덱, 이미지 프로세서 또는 비디오 코덱에 의해 사용됨)일 수 있다. 명령은 또한 레지스터에 저장된 데이터에 대해 모션 추정 연산을 수행하기 위해 다른 실행 가능 명령들(예를 들면, 절대차들의 합산 명령)과 관련하여 실행 가능할 수 있다.
도 1 및 도 2는 레지스터 및 메모리 위치를 식별하는 FIFO 로드 명령의 실행의 2 개의 예들을 도시한다. 도 1을 참조하면, FIFO 로드 명령의 실행의 제 1 예시적인 예가 개시되고, 일반적으로 (100)으로 표기된다.
FIFO 로드 명령은 레지스터 및 메모리 위치를 식별할 수 있고, 여기서 메모리 위치는 레지스터로 로딩될 아이템을 포함한다. 레지스터는 레지스터 쌍 또는 단일 레지스터일 수 있다. 예를 들면, 도 1에 예시된 바와 같이, FIFO 로드 명령은 "R1:0 = MEM_FIFO(Rs)"이고, 여기서 'MEM_FIFO'는 FIFO 로드 명령의 연산 코드(opcode)이고, 'Rs'는 아이템(150)에 대한 어드레스를 저장하는 메모리(102) 내의 레지스터이고, 'R1'은 아이템(150)이 로딩될 데이터(144, 143, 142 및 141)(예를 들면, X4 X3 X2 X1)를 포함하는 레지스터(140)이다. 레지스터(140)는 데이터(141-144)(예를 들면, 데이터 X1(141)은 FIFO 버퍼의 앞에 위치될 수 있고, 데이터 X4는 FIFO 버퍼의 뒤에 위치될 수 있음)에 관련하여 FIFO 버퍼로서 동작할 수 있다.
특정 실시예에서, 아이템(150)은 바이트, 하프-워드 또는 워드일 수 있다. FIFO 로드 명령은 또한 아이템이 바이트, 하프-워드 또는 워드인지를 명시할 수 있다. 아이템이 임의의 다른 길이일 수 있다는 것을 주목해야 한다. 예를 들면, "MEMB_FIFO" 연산 코드는, 아이템(150)이 바이트라는 것을 나타낼 수 있고(예를 들면, 명령은 "R0=MEMB_FIFO(Rs)"일 수 있음), "MEMH_FIFO" 연산 코드는 아이템(150)이 하프-워드라는 것을 나타낼 수 있고(예를 들면, 명령은 "R1=MEMH_FIFO(Rs)"일 수 있음), "MEMW_FIFO" 연산 코드는 아이템(150)이 워드라는 것을 나타낼 수 있다. 명령은 레지스터(140) 내의 데이터(144-141)에 대해 필터링 연산을 수행하기 위해 다른 실행 가능 명령과 관련하여 프로세서의 실행 유닛 또는 로드/스토어 유닛에 의해 실행 가능할 수 있다. 필터링 연산은 (예를 들면, 모바일 디바이스 또는 디지털 카메라 내의 비디오 데이터의) 유한 임펄스 응답 필터링 또는 모션 추정을 수행하는데 사용될 수 있다. 예를 들면, 명령은, 도 3을 참조하여 추가로 설명되는 바와 같이, 비디오 프레임 또는 다수의 비디오 프레임들의 다수의 영역들에 대한 모션 추정을 병렬로 수행하기 위해 다른 실행 가능 명령들과 함께 사용될 수 있다.
연산 동안에, 아이템(150)에 대한 메모리 위치 및 레지스터(140)를 식별하는 FIFO 로드 명령은 메모리(102)(예를 들면, 랜덤 액세스 메모리(RAM))로부터 리트리브(retrieve)될 수 있고, 프로세서의 실행 유닛 또는 로드/스토어 유닛(예를 들면, 로드 하드웨어 유닛 또는 로드 얼라이너 유닛)에 의해 실행될 수 있다. 실행될 때, FIFO 로드 명령은, 예시된 바와 같이, 아이템(150)으로 하여금 메모리 위치로부터 로딩되게 할 수 있다. 또한, 시프트 및 삽입 연산은 레지스터(140)에서 데이터(141-144)를 시프팅하고 아이템(150)을 레지스터(140)로 삽입하도록 수행될 수 있다. 특정 실시예에서, 메모리 위치로부터 아이템(150)을 로딩하는 것 및 시프트 및 삽입 연산은 프로세서의 동일한 실행 사이클 동안에 수행될 수 있다.
도 1에 예시된 바와 같이, 메모리 위치로부터 아이템(150)을 로딩한 이후에, 레지스터(140) 내의 데이터(141-144)는 우측으로 시프팅될 수 있고, 아이템(150)은 레지스터(140)에 저장된 FIFO 버퍼의 뒤에 삽입될 수 있다. 예를 들면, 도 1에 도시된 바와 같이, 레지스터(140) 내의 데이터(144-141)(즉, X4 X3 X2 X1)가 우측으로 시프팅되어, 데이터(141)(즉, X1)가 레지스터(140)로부터 제거될 수 있고, 아이템(150)이 레지스터(140)에 삽입될 수 있다. 따라서, 도 1의 MEM_FIFO 명령은 단일 명령의 사용에 의해 데이터 로드, 시프트 및 삽입 연산들을 가능하게 할 수 있다.
도 2를 참조하면, FIFO 로드 명령 "R1:0 = MEM_FIFO(Rs)"의 실행의 제 2 예시적인 예가 개시되고, 일반적으로 (200)으로 표기된다. 도 1이 레지스터(140)의 좌측(예를 들면, 최상위 부분)으로의 아이템(150)의 삽입을 위한 공간을 만들기 위한 시프트 우측 연산을 도시하지만, 도 2는 레지스터(140)의 우측(예를 들면, 최하위 부분)으로의 아이템(150)의 삽입을 위한 공간을 만들기 위한 시프트 좌측 연산을 도시한다. FIFO 로드 명령의 실행 시에, 아이템(150)은 메모리 위치로부터 로딩될 수 있고, 시프트 좌측 연산은 레지스터(140) 내의 데이터(141-144)를 시프팅하도록 수행될 수 있고, 삽입 연산은 아이템(150)을 레지스터(140)로 삽입하도록 수행될 수 있다. 따라서, 개시된 FIFO 로드 명령은 레지스터에서 좌에서 우로 및 우에서 좌로의 방향들 모두로 배향되는 FIFO 버퍼들을 통해 사용될 수 있다.
도 3을 참조하면, 다수의 FIFO 로드 명령들(351, 352)을 포함하는 명령 패킷(예를 들면, VLIW 명령 패킷(350))을 저장 및 프로세싱하도록 동작 가능한 시스템의 특정 예시적인 실시예가 개시되고 일반적으로 (300)으로 표기된다.
시스템(300)은 명령 패킷(350)을 저장하는 메모리(102)를 포함할 수 있다. 메모리(102)는 버스 인터페이스(308)를 통해 명령 캐시(310)에 연결될 수 있다. 제 1 FIFO 로드 명령(351)은 제 1 아이템(150)(예를 들면, 아이템 1로 지정됨)에 대한 제 1 메모리 위치 및 제 1 레지스터(예를 들면, R1로 지정된 레지스터(140))를 식별할 수 있다. 제 2 FIFO 로드 명령(352)은 제 2 아이템(360)(예를 들면, 아이템 2로 지정됨)에 대한 제 2 메모리 위치 및 제 2 레지스터(예를 들면, R2로 지정된 레지스터(340))를 식별할 수 있다. 아이템들(150, 360)은 메모리(102) 및/또는 데이터 캐시(312)에 저장될 수 있다. 예를 들면, 도 3은 제 1 아이템(150)이 메모리(102)에 저장되고 제 2 아이템(360)이 데이터 캐시(312) 및 메모리(102) 양자에 저장되는 것을 예시한다. 제 1 레지스터(140) 및 제 2 레지스터(340)는 일반적인 레지스터 파일(326)의 부분일 수 있다. 특정 실시예에서, 시스템(300)의 일부 또는 전부는 프로세서에 통합될 수 있다. 대안적으로, 메모리(102) 및 버스(330)는 프로세서 외부에 있을 수 있다.
메모리(102)는 명령 패킷(350)을 버스 인터페이스(308)를 통해 명령 캐시(310)로 전송할 수 있다. 데이터 캐시(312)는 또한 버스 인터페이스(308)를 통해 메모리(102)에 연결될 수 있다. 특정 실시예에서, 메모리(102)는, 데이터에 대해 필터링 연산, 데이터에 대해 유한 임펄스 응답 연산, 비디오 데이터의 모션 추정, 또는 이들의 임의의 조합을 수행하도록 동작 가능한 프로세서(예를 들면, 디지털 신호 프로세서)에 의해 액세스 가능할 수 있다. 프로세서는 데이터 로드, 시프트 및 삽입 연산들을 수행하기 위해 FIFO 로드 명령들(351 및 352)을 실행할 수 있다.
명령 캐시(310)는 버스(311)를 통해 시퀀서(314)에 연결될 수 있다. 시퀀서(314)는, 인터럽트 레지스터(도시되지 않음)로부터 리트리브(retrieve)될 수 있는 일반적인 인터럽트들(316)을 수신할 수 있다. 특정 실시예에서, 명령 캐시(310)는, 버스(311)에 연결되고 프로세서(300)의 특정 스레드들(예를 들면, 하드웨어 스레드들)과 연관될 수 있는 복수의 현재 명령 레지스터들(도시되지 않음)을 통해 시퀀서(314)에 연결된다. 특정 실시예에서, 프로세서(300)는 여섯(6) 개의 스레드들을 포함하는 인터리빙된 다중-스레디드 프로세서일 수 있다.
특정 실시예에서, 버스(311)는 일백 이십 팔 비트(128-비트) 버스일 수 있고, 시퀀서(314)는 삼십 이(32) 비트들의 길이를 각각 갖는 다수의 FIFO 로드 명령들(예를 들면, 제 1 FIFO 로드 명령(351) 및 제 2 FIFO 로드 명령(352))을 포함하는 명령 패킷들(예를 들면, VLIW 명령 패킷(350))을 통해 메모리(102)로부터 명령들을 리트리브하도록 구성될 수 있다. 시퀀서(314)는 제 1 로드/스토어 유닛(318), 제 2 로드/스토어 유닛(320), 제 1 명령 실행 유닛(322), 및 제 2 명령 실행 유닛(324)에 연결될 수 있다. 도시된 것보다 더 적거나 더 많은 로드/스토어 유닛들 및 명령 실행 유닛들이 존재할 수 있다는 것이 유의되어야 한다. 각각의 유닛(318-324)은 FIFO 로드 명령을 실행하도록 동작 가능한 하나 이상의 로드 얼라이너 유닛들 또는 로드 하드웨어 유닛들을 포함할 수 있다. 각각의 유닛(318-324)은 제 1 버스(328)를 통해 일반적인 레지스터 파일(326)에 연결될 수 있다. 일반적인 레지스터 파일(326)은 또한 제 2 버스(330)를 통해 시퀀서(314), 데이터 캐시(312) 및 메모리(302)에 연결될 수 있다. 일반적인 레지스터 파일(326)은 제 1 레지스터(140) 및 제 2 레지스터(340)를 포함할 수 있다.
시스템(300)은, 인터럽트들(예를 들면, 일반적인 인터럽트들(316))을 수용할지 및 명령들의 실행을 제어할지를 결정하기 위해 시퀀서(314) 내의 제어 로직에 의해 액세스될 수 있는 비트들을 저장하기 위한 관리자 제어 레지스터들(332) 및 글로벌 제어 레지스터들(336)을 또한 포함할 수 있다.
특정 실시예에서, 로드/스토어 유닛들(318-320) 중 하나(예를 들면, 제 1 로드/스토어 유닛(318))는 제 1 FIFO 로드 명령(351)을 실행할 수 있다. 제 1 FIFO 로드 명령(351)의 실행 시에, 제 1 아이템(150)이 메모리(102)로부터 로딩될 수 있고, 시프트 및 삽입 연산은 제 1 레지스터(140) 내의 데이터를 시프팅하고 제 1 아이템(150)을 제 1 레지스터(140)에 삽입하도록 수행될 수 있다. 데이터 캐싱 원리들에 따라, 제 1 아이템(150)은 또한 데이터 캐시(312)에 저장될 수 있다. 또한, 로드/스토어 유닛들(318-320) 중 또 다른 하나(예를 들면, 제 2 로드/스토어 유닛(320))는 제 2 FIFO 로드 명령(352)을 실행할 수 있다. 제 2 FIFO 로드 명령(352)의 실행 시에, 제 2 아이템(360)이 데이터 캐시(312)로부터 로딩될 수 있고, 시프트 및 삽입 연산은 제 2 레지스터(340) 내의 데이터를 시프팅하고 제 2 아이템(360)을 제 2 레지스터(340)에 삽입하도록 수행될 수 있다. 특정 실시예에서, 제 1 FIFO 로드 명령(351) 및 제 2 FIFO 로드 명령(352)은 동일한 실행 사이클 동안에 로드/스토어 유닛(318) 및 로드/스토어 유닛(320)에 의해 각각 병렬로 실행될 수 있다. 예시하기 위해, 동일한 실행 사이클 동안에, 아이템들(150 및 360)이 (예를 들면, 메모리(102) 및 데이터 캐시(312)로부터) 로딩될 수 있고, 레지스터들(140 및 340) 내의 데이터가 시프팅될 수 있고, 아이템들(150 및 360)이 레지스터들(140 및 340)로 삽입될 수 있다. 다른 명령들은 또한 FIFO 로드 명령들(351, 352)과 병렬로 실행될 수 있다. 예를 들면, 곱셈 명령들, 합산 명령들, 곱셈-및-합산 명령들, 및 절대차들의 합산 명령들은 FIFO 로드 명령들(351, 352)과 병렬로 실행될 수 있다. 예시하기 위해, 유닛들(318-324) 중 하나 이상은, 유닛들(318-324) 중 다른 유닛이 곱셈 명령, 합산 명령, 곱셈-및-합산 명령, 또는 절대차들의 합산 명령을 실행하는 동안에, FIFO 로드 명령을 실행할 수 있다.
따라서, 도 3의 시스템(300)은 단일 VLIW 패킷으로의 다수의 FIFO 로드 명령들의 패킷화를 가능하게 할 수 있고, 여기서 그러한 명령들은 비디오 물체들의 모션 추정을 수행하는 것과 관련하여 사용될 수 있다. 예를 들면, 로드, 시프트 및 삽입 연산들을 단일 명령으로 캡슐화하는 것은 프로세서가 비디오 프레임의 다수의 영역들에 대해 또는 다수의 비디오 프레임들에 대해 병렬로 모션 추정을 수행하는 것을 가능하게 할 수 있다. 예시하기 위해, VLIW 명령 패킷(350) 내의 명령들(351, 352) 각각은 비디오 프레임의 상이한 영역들에 대한 필터링 연산들을 나타낼 수 있다. 비디오 데이터의 그러한 병렬 프로세싱은 멀티미디어 애플리케이션들의 개선된 성능을 유도할 수 있다.
도 4를 참조하면, 레지스터 및 메모리 위치를 식별하는 명령을 프로세싱하는 방법의 특정 예시적인 실시예의 흐름도가 도시되고 일반적으로 (400)으로 표기된다. 예시적인 실시예에서, 방법(400)은 도 3의 시스템(300)에서 수행될 수 있고, 도 1 및 도 2를 참조하여 예시될 수 있다.
방법(400)은 (410)에서 아이템의 메모리 위치 및 레지스터를 식별하는 명령을 수신하는 것을 포함할 수 있다. 예를 들면, 명령은 도 1 또는 도 2의 메모리(102) 및/또는 도 3의 명령 캐시(310)에 저장될 수 있다. 메모리는 레지스터-기반 메모리, 랜덤 액세스 메모리(RAM), 또 다른 형태의 메모리, 또는 이들의 임의의 조합일 수 있다. 아이템은 바이트, 하프-워드 또는 워드일 수 있다. 예를 들면, 도 3에 예시된 바와 같이, 제 1 FIFO 로드 명령(351) 및 제 2 FIFO 로드 명령(352)을 포함하는 VLIW 명령 패킷(350)은 프로세서 또는 그의 컴포넌트(예를 들면, 명령 캐시(310))에서 수신될 수 있다. 대안적으로, 단일 FIFO 로드 명령만을 포함하는 명령 패킷이 수신될 수 있다.
방법(400)은 또한 (420)에서 명령을 실행하는 것을 포함할 수 있다. 예를 들면, 도 3을 참조하면, 제 1 FIFO 로드 명령(351)은 제 1 로드/스토어 유닛(318)에 의해 실행될 수 있고, 제 2 FIFO 로드 명령(352)은 제 2 로드/스토어 유닛(320)에 의해 실행될 수 있다. 제 1 FIFO 로드 명령(351)은, 제 2 FIFO 로드 명령(352)을 실행하는 것과 동일한 클록 사이클 동안에 및 이와 병렬로 실행될 수 있다. 또한, FIFO 로드 명령들(351-352) 중 하나 또는 양자는 곱셈 명령 또는 절대차들의 합산 명령의 실행과 병렬로 실행될 수 있다. 따라서, 도 4의 방법(400)은 단일 명령 패킷 내의 다수의 FIFO 로드 명령들의 캡슐화 및 프로세싱을 가능하게 할 수 있고, 이것은 더 조밀한 비디오 프로세싱 코드를 발생시킬 수 있다.
명령을 실행하는 것은 (422)에서 메모리 위치로부터 아이템을 로딩하는 것을 포함할 수 있다. 예를 들면, 도 3에서, 명령 패킷(350)을 실행하는 것은 메모리(102)로부터 제 1 아이템(150)을 로딩하는 것 및 데이터 캐시(312)로부터 제 2 아이템(360)을 로딩하는 것을 포함할 수 있다. 명령을 실행하는 것은 또한 (424)에서 레지스터 내의 데이터를 시프팅하는 것을 포함할 수 있다. 특정 실시예에서, 시프트는 도 1에 예시된 바와 같은 시프트 우측 연산이다. 또 다른 특정 실시예에서, 시프트는 도 2에 예시된 바와 같은 시프트 좌측 연산이다. 또 다른 특정 실시예에서, 제 1 FIFO 로드 명령(351)을 실행하는 것은 시프트 우측 연산을 수행하는 것을 포함할 수 있고, 제 2 FIFO 로드 명령(352)을 실행하는 것은 시프트 좌측 연산을 수행하는 것을 포함할 수 있다(또는 그 역도 가능하다). 예를 들면, 도 3에서, 제 1 레지스터(140) 내의 데이터는 좌측으로 시프팅될 수 있고, 제 2 레지스터(340) 내의 데이터는 우측으로 시프팅될 수 있다. 따라서, 레지스터들(140, 340) 내의 데이터는 동일한 방향 또는 상이한 방향으로 시프팅될 수 있다.
명령을 실행하는 것은 (426)에서 아이템을 레지스터로 삽입하는 것을 더 포함할 수 있다. 예를 들면, 도 3에서, 제 1 아이템(150)은 제 1 레지스터(140)로 삽입될 수 있고, 제 2 아이템(360)은 제 2 레지스터(340)로 삽입될 수 있다.
도 1 내지 도 4에 설명된 실시예들은 동일한 레지스터 밖으로 데이터를 시프팅하는 것 및 동일한 레지스터로 데이터를 로딩하는 것을 수반할 수 있다. 대안적으로, 다중-레지스터 구현이 사용될 수 있다. 예를 들면, 도 5는 다수의 레지스터들을 사용하여 FIFO 로드 명령을 실행하는 실시예를 예시하고, 일반적으로 (500)으로 표기된다.
예시하기 위해, FIFO 버퍼의 데이터(X4 X3 X2 X1)(144-141)는 제 1 레지스터(510)에 저장될 수 있다. FIFO 로드 명령의 실행 동안에, 데이터(X4 X3 X2 X1)(144-141)가 시프터(530)로 로딩될 수 있고, 시프터(530)의 출력이 멀티플렉서(540)에 제공될 수 있다. 멀티플렉서(540)는 또한 FIFO 버퍼로 로딩될 아이템(150)을 메모리(102)로부터 수신할 수 있다. 특정 실시예에서, 아이템(150)은 데이터 로딩 프로세스 동안에 필요에 따라 정렬, 복제, 제로 패딩(zero padded) 및/또는 부호 확장(sign extended)될 수 있다. 멀티플렉서(540)의 출력은 도 5에 예시된 바와 같이 제 2 레지스터(520)에 저장될 수 있다. 따라서, FIFO 로드 명령은, 소스 레지스터 및 목적지 레지스터가 상이할 때 로드, 시프트 및 삽입 연산들을 수행하는데 사용될 수 있다.
도 6을 참조하면, 레지스터 및 메모리 위치를 식별하는 FIFO 로드 명령을 저장하는 메모리를 포함하는 무선 디바이스의 특정 예시적인 실시예의 블록도가 도시되고 일반적으로 (600)으로 표기된다. 디바이스(600)는 메모리(102)에 연결된, 디지털 신호 프로세서(DSP)(664)와 같은 프로세서를 포함한다. 특정 실시예에서, 메모리(102)는 FIFO 로드 명령(351)과 같이, DSP(664)에 의해 실행 가능한 명령들을 저장하고 이를 전송할 수 있다. 메모리(102)는 또한 아이템(150)과 같이, 로딩될 데이터를 저장할 수 있다. DSP는 FIFO 버퍼를 나타내는, 데이터(144-141)(즉, "X4...X1")를 저장하는 레지스터(140)를 포함할 수 있다. FIFO 로드 명령(351)의 실행 시에, 아이템(150)은 메모리(102) 내의 메모리 위치로부터 로딩될 수 있고, 시프트 및 삽입 연산은 레지스터(140) 내의 데이터(144-141)를 시프팅하고 아이템(150)을 레지스터(140)로 삽입하도록 수행될 수 있다. 예를 들면, 도 6에서, 시프트 좌측 연산은 데이터(144-141)에 대해 수행되어, 레지스터(140)로부터 데이터 X4(144)의 제거를 발생시킬 수 있고, 아이템(150)은 레지스터(140)의 최하위 부분에서 레지스터(140)로 삽입될 수 있다. 대안적으로, 레지스터(140) 내의 데이터(144-141)가 우측으로 시프팅되어(도시되지 않음), 레지스터(140)로부터 데이터(X1)(141)의 제거를 발생시킬 수 있고, 아이템(150)은 레지스터(140)의 최상위 부분에서 레지스터(140)로 삽입될 수 있다.
도 6은 또한 DSP(664)에 그리고 디스플레이(628)에 연결되는 디스플레이 제어기(626)를 도시한다. 코더/디코더(코덱)(634)(예를 들면, 오디오 및/또는 음성 코덱)가 DSP(664)에 연결될 수 있다. 예를 들면, 코덱(634)은 인코딩 또는 디코딩 프로세스의 부분으로서 FIFO 로드 명령(351)의 실행을 발생시킬 수 있다. 디스플레이 제어기(626)(비디오 코덱 및/또는 이미지 프로세서를 포함할 수 있음) 및 무선 제어기(640)(모뎀을 포함할 수 있음)와 같은 다른 컴포넌트들은 또한 신호 프로세싱 동안에 FIFO 로드 명령(351)의 실행을 발생시킬 수 있다. 스피커(636)와 마이크로폰(638)이 코덱(634)에 연결될 수 있다. 도 6은 또한, 무선 제어기(640)가 무선 안테나(642)에 연결될 수 있음을 나타낸다. 특정 실시예에서, DSP(664), 디스플레이 제어기(626), 메모리(632), 코덱(634) 및 무선 제어기(640)는 시스템-인-패키지(system-in-package) 또는 시스템-온-칩(system-on-chip) 디바이스(622)에 포함된다.
특정 실시예에서, 입력 디바이스(630) 및 전력 공급기(644)가 시스템-온-칩 디바이스(622)에 연결된다. 더욱이, 특정 실시예에서, 도 6에 예시된 바와 같이, 디스플레이(628), 입력 디바이스(630), 스피커(636), 마이크로폰(638), 무선 안테나(642) 및 전력 공급기(644)는 시스템-온-칩 디바이스(622) 외부에 있다. 그러나 디스플레이(628), 입력 디바이스(630), 스피커(636), 마이크로폰(638), 무선 안테나(642) 및 전력 공급기(644) 각각은 인터페이스 또는 제어기와 같은 시스템-온-칩 디바이스(622)의 컴포넌트에 연결될 수 있다.
도 6이 무선 통신 디바이스를 도시하지만, DSP(664)와 메모리(632)는 또한, 셋톱 박스, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, 개인용 디지털 보조기기(PDA), 고정 위치 데이터 유닛 또는 컴퓨터에 통합될 수 있다는 점에 유의해야 한다. 프로세서(예를 들면, DSP(664), 또는 도 3의 로드/스토어 유닛들(318-320) 중 하나 이상을 포함하는 프로세서)가 또한 이러한 디바이스에 통합될 수 있다.
설명된 실시예들과 함께, 레지스터 및 메모리 위치를 식별하는 명령을 저장하기 위한 수단을 포함하는 장치가 개시된다. 예를 들어, 저장하기 위한 수단은 도 1 내지 도 3 및 도 6의 메모리(102), 도 3의 명령 캐시(310), 명령을 저장하도록 구성된 하나 이상의 다른 디바이스들, 또는 이들의 임의의 결합일 수 있다.
상기 장치는 또한 명령을 실행하기 위한 수단을 포함할 수 있다. 예를 들면, 실행하기 위한 수단은 도 3의 유닛들(318, 320, 322 및 324), 도 5의 시프터(530), 도 5의 멀티플렉서(540), 도 6의 DSP(664), 로드 하드웨어 유닛, 로드 얼라이너 유닛, 명령을 실행하도록 구성된 하나 이상의 다른 디바이스들 또는 이들의 임의의 조합 중 하나 이상을 포함할 수 있다.
상기 장치는 메모리 위치로부터 아이템을 로딩하기 위한 수단을 더 포함할 수 있다. 예를 들면, 로딩하기 위한 수단은 도 3의 유닛들(318-324), 로드 하드웨어 유닛, 로드 얼라이너 유닛, 메모리로부터 아이템을 로딩하도록 구성된 하나 이상의 다른 디바이스들, 또는 이들의 임의의 조합 중 하나 이상일 수 있다.
상기 장치는 레지스터 내의 데이터를 시프팅하기 위한 수단을 포함할 수 있다. 예를 들면, 시프팅하기 위한 수단은 도 3의 유닛들(318-324), 로드 하드웨어 유닛, 로드 얼라이너 유닛, 데이터 시프트 유닛, 데이터를 시프팅하도록 구성된 하나 이상의 다른 디바이스들 또는 이들의 임의의 조합 중 하나 이상일 수 있다.
상기 장치는 또한 아이템을 레지스터로 삽입하기 위한 수단을 포함할 수 있다. 예를 들면, 삽입하기 위한 수단은 도 3의 유닛들(318-324), 도 5의 시프터(530), 로드 하드웨어 유닛, 로드 얼라이너 유닛, 데이터를 로딩하도록 구성된 하나 이상의 다른 디바이스들, 또는 이들의 임의의 조합 중 하나 이상일 수 있다.
상기 장치는 명령을 실행하는 것과 병렬로 제 2 명령을 실행하기 위한 수단을 더 포함할 수 있고, 여기서 제 2 명령은 제 2 레지스터 및 제 2 메모리 위치를 식별한다. 예를 들면, 실행하기 위한 수단은 도 3의 유닛들(318-324), 도 5의 시프터(530), 도 5의 멀티플렉서(540), 도 6의 DSP(664), 로드 하드웨어 유닛, 로드 얼라이너 유닛, 제 1 명령과 병렬로 제 2 명령을 실행하도록 구성된 하나 이상의 다른 디바이스들, 또는 이들의 임의의 조합 중 하나 이상을 포함할 수 있다.
본원에 개시된 실시예들과 관련하여 기재된 다양한 예시적인 로직 블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수 있다는 것을 당업자들은 또한 인식할 것이다. 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들, 및 단계들은 일반적으로 그들의 기능적 측면에서 설명되었다. 그러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는, 전체 시스템 상에 부여된 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자들은 각각의 특정 애플리케이션에 대해 다양한 방법들로 기재된 기능을 구현할 수 있지만, 그러한 구현 결정들이 본 발명의 범위에서 벗어나게 하는 것으로 해석되어서는 안 된다.
본원에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM: random access memory), 플래시 메모리, 판독 전용 메모리(ROM: read-only memory), 프로그래밍 가능 판독 전용 메모리(PROM: programmable read-only memory), 소거 가능한 프로그래밍 가능 판독 전용 메모리(EPROM: erasable programmable read-only memory), 전기적으로 소거 가능한 프로그래밍 가능 판독 전용 메모리(EEPROM: electrically erasable programmable read-only memory), 레지스터들, 하드 디스크, 제거 가능 디스크, 콤팩트 디스크 판독 전용 메모리(CD-ROM: compact disc read-only memory), 또는 당분야에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 비-일시적(예를 들어, 유형(tangible)) 저장 매체는 프로세서가 저장 매체로부터 정보를 읽고 저장 매체에 정보를 기록할 수 있도록 프로세서에 연결된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 주문형 집적 회로(ASIC: application-specific integrated circuit)에 상주할 수 있다. ASIC는 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말 내의 이산 컴포넌트들로서 상주할 수 있다.
개시된 실시예들의 이전 설명은 당업자가 개시된 실시예들을 실시 또는 사용하게 하도록 제공된다. 이러한 실시예들에 대한 다양한 수정들은 당업자들에게 용이하게 명백할 것이고, 본원에 정의된 원리들은 본 발명의 범위를 벗어나지 않고 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 본원에 도시된 실시예들로 제한되도록 의도되지 않고, 다음의 청구항들에 의해 정의되는 바와 같은 원리들 및 신규한 특징들과 가능한 일치하는 최광의 범위에 따른다.

Claims (22)

  1. 프로세서; 및
    제 1 레지스터 및 제 1 메모리 위치를 식별하는 제 1 명령을 저장하는 메모리를 포함하고,
    상기 제 1 명령은,
    상기 제 1 메모리 위치로부터 제 1 아이템을 로딩하는 것;
    상기 제 1 레지스터 내의 데이터 아이템들 중 첫 번째 데이터 아이템을 상기 제 1 레지스터의 첫 번째 위치로부터 제거하기 위해 상기 데이터 아이템들을 시프트하도록 시프트 연산을 수행하는 것; 및
    상기 제 1 아이템을 상기 제 1 레지스터의 마지막 위치에 삽입하기 위해 삽입 연산을 수행하는 것
    을 포함하는 동작들을 수행하도록 상기 프로세서에 의해 실행가능하고,
    상기 제 1 명령의 실행은 상기 프로세서의 단일 실행 사이클에서 완료되고,
    상기 제 1 명령은 상기 데이터에 대해 모션 추정을 수행하기 위한 다른 실행가능 명령들과 함께 실행가능하며,
    상기 데이터는 비디오 데이터를 포함하는,
    장치.
  2. 제 1 항에 있어서,
    상기 제 1 아이템의 길이는 바이트(byte)인,
    장치.
  3. 제 1 항에 있어서,
    상기 시프트 연산은 상기 제 1 레지스터 내의 각각의 위치의 특정한 데이터를 하프-워드(half-word)만큼 시프트하는,
    장치.
  4. 제 1 항에 있어서,
    상기 시프트 연산 및 상기 삽입 연산은 로드 얼라이너(aligner) 유닛에 의해 수행되는,
    장치.
  5. 제 1 항에 있어서,
    상기 시프트 연산 및 상기 삽입 연산은 상기 제 1 레지스터로부터의 데이터의 일부분을 상기 제 1 메모리 위치로부터의 데이터의 일부분으로 대체하는,
    장치.
  6. 제 1 항에 있어서,
    상기 제 1 명령의 실행은 상기 프로세서의 로드 하드웨어 유닛에 의해 수행되는,
    장치.
  7. 제 1 항에 있어서,
    상기 제 1 명령 및 제 2 명령을 포함하는 VLIW(very long instruction word) 패킷을 더 포함하는,
    장치.
  8. 제 7 항에 있어서,
    상기 제 2 명령은 제 2 레지스터 및 제 2 메모리 위치를 식별하고,
    상기 프로세서에 의한 상기 제 2 명령의 실행 시에, 제 2 아이템이 상기 제 2 메모리 위치로부터 로딩되고, 상기 제 2 레지스터 내의 데이터 아이템들 중 첫 번째 데이터 아이템을 상기 제 2 레지스터의 첫 번째 위치로부터 제거하기 위해 상기 제 2 레지스터 내의 데이터 아이템들을 시프트하도록 제 2 시프트 연산이 수행되고, 상기 제 2 아이템을 상기 제 2 레지스터의 마지막 위치에 삽입하도록 제 2 삽입 연산이 수행되며,
    상기 제 2 명령은 상기 제 1 명령의 실행과 병렬로 실행되는,
    장치.
  9. 제 1 항에 있어서,
    상기 제 1 명령은 상기 데이터에 대해 필터링 연산을 수행하기 위한 다른 실행가능 명령들과 함께 실행가능한,
    장치.
  10. 제 9 항에 있어서,
    상기 필터링 연산은 FIR(finite impulse response) 연산인,
    장치.
  11. 삭제
  12. 제 1 레지스터 및 제 1 메모리 위치를 식별하는 제 1 명령을 수신하는 단계, 및
    프로세서를 사용하여 상기 제 1 명령을 실행하는 단계를 포함하고,
    상기 제 1 명령을 실행하는 단계는,
    상기 제 1 메모리 위치로부터 제 1 아이템을 로딩하는 단계;
    상기 제 1 레지스터 내의 데이터 아이템들 중 첫 번째 데이터 아이템을 상기 제 1 레지스터의 첫 번째 위치로부터 제거하기 위해 상기 데이터 아이템들을 시프팅하는 단계; 및
    상기 제 1 아이템을 상기 제 1 레지스터의 마지막 위치에 삽입하는 단계를 포함하고,
    상기 제 1 명령의 실행은 상기 프로세서의 단일 실행 사이클에서 완료되고,
    상기 제 1 명령은 상기 데이터에 대해 모션 추정을 수행하기 위한 다른 실행가능 명령들과 함께 실행가능하며,
    상기 데이터는 비디오 데이터를 포함하는,
    방법.
  13. 제 12 항에 있어서,
    상기 방법은,
    제 2 레지스터 및 제 2 메모리 위치를 식별하는 제 2 명령을 수신하는 단계, 및
    상기 제 1 명령의 실행과 병렬로 상기 제 2 명령을 실행하는 단계를 더 포함하고,
    상기 제 2 명령을 실행하는 단계는,
    상기 제 2 메모리 위치로부터 제 2 아이템을 로딩하는 단계,
    상기 제 2 레지스터 내의 데이터 아이템들 중 첫 번째 데이터 아이템을 상기 제 2 레지스터의 첫 번째 위치로부터 제거하기 위해 상기 데이터 아이템들을 시프팅하는 단계, 및
    상기 제 2 아이템을 상기 제 2 레지스터의 마지막 위치에 삽입하는 단계를 포함하는,
    방법.
  14. 제 12 항에 있어서,
    상기 제 1 명령을 실행하는 것과 병렬로 곱셈 명령 및 가산(add) 명령을 실행하는 단계를 더 포함하는,
    방법.
  15. 제 12 항에 있어서,
    상기 제 1 명령을 실행하는 것과 병렬로 절대차(absolute difference)들의 합산(sum) 연산을 수행하는 단계를 더 포함하는,
    방법.
  16. 제 12 항에 있어서,
    상기 제 1 레지스터는 FIFO(first-in-first-out) 버퍼로서 동작하는,
    방법.
  17. 제 1 레지스터 및 제 1 메모리 위치를 식별하는 제 1 명령을 저장하기 위한 수단; 및
    상기 제 1 명령을 실행하기 위한 수단을 포함하고,
    상기 제 1 명령을 실행하기 위한 수단은,
    상기 제 1 메모리 위치로부터 제 1 아이템을 로딩하기 위한 수단,
    상기 제 1 레지스터 내의 데이터 아이템들 중 첫 번째 데이터 아이템을 제거하기 위해 상기 데이터 아이템들을 시프팅하기 위한 수단, 및
    상기 제 1 아이템을 상기 제 1 레지스터의 마지막 위치에 삽입하기 위한 수단을 포함하고,
    상기 제 1 명령의 실행은 상기 제 1 명령을 실행하기 위한 수단의 단일 실행 사이클에서 완료되고,
    상기 제 1 명령은 상기 데이터에 대해 모션 추정을 수행하기 위한 다른 실행가능 명령들과 함께 실행가능하며,
    상기 데이터는 비디오 데이터를 포함하는,
    장치.
  18. 제 17 항에 있어서,
    상기 제 1 명령을 실행하는 것과 병렬로 제 2 명령을 실행하기 위한 수단을 더 포함하고,
    상기 제 2 명령은 제 2 레지스터 및 제 2 메모리 위치를 식별하는,
    장치.
  19. 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    제 1 레지스터 및 제 1 메모리 위치를 식별하는 제 1 명령을 수신하게 하고; 그리고
    상기 제 1 명령을 실행하게 하기 위한 프로그램 코드를 포함하고,
    상기 제 1 명령을 실행하는 것은,
    상기 제 1 메모리 위치로부터 제 1 아이템을 로딩하는 것,
    상기 제 1 레지스터 내의 데이터 아이템들 중 첫 번째 데이터 아이템을 상기 제 1 레지스터의 첫 번째 위치로부터 제거하기 위해 상기 데이터 아이템들을 시프팅하는 것, 및
    상기 제 1 아이템을 상기 제 1 레지스터의 마지막 위치에 삽입하는 것을 포함하고,
    상기 제 1 명령의 실행은 상기 프로세서의 단일 실행 사이클에서 완료되고,
    상기 제 1 명령은 상기 데이터에 대해 모션 추정을 수행하기 위한 다른 실행가능 명령들과 함께 실행가능하고,
    상기 데이터는 비디오 데이터를 포함하는,
    비일시적인 컴퓨터-판독 가능 매체.
  20. 제 19 항에 있어서,
    상기 제 1 아이템의 길이는 워드(word)인,
    비일시적인 컴퓨터-판독 가능 매체.
  21. 시프터;
    멀티플렉서;
    프로세서; 및
    제 1 레지스터 및 제 1 메모리 위치를 식별하는 제 1 명령을 저장하는 메모리를 포함하고,
    상기 제 1 명령은,
    상기 제 1 레지스터 내의 데이터를 상기 시프터에 로딩하는 것 ― 상기 시프터는 상기 데이터의 첫 번째 데이터 아이템을 제거하고, 상기 데이터의 다른 데이터 아이템들의 순서를 유지하도록 구성됨 ―;
    상기 시프터의 출력을 상기 멀티플렉서에 제공하는 것;
    상기 제 1 메모리 위치로부터의 제 2 데이터 아이템을 상기 멀티플렉서에 제공하는 것; 및
    상기 멀티플렉서로부터의 멀티플렉서 출력을 제 2 레지스터에 전송하는 것 ― 상기 제 2 데이터 아이템은 상기 제 2 레지스터의 마지막 위치에 있고, 다른 데이터 아이템들은 상기 제 2 레지스터의 다른 위치들에 순서대로 있음 ―
    을 포함하는 동작들을 수행하도록 상기 프로세서에 의해 실행가능하고,
    상기 제 1 명령의 실행은 상기 프로세서의 단일 실행 사이클에서 완료되는,
    장치.
  22. 제 21 항에 있어서,
    상기 제 1 메모리 위치로부터 상기 멀티플렉서에 상기 제 2 데이터 아이템을 로딩하는 동안 상기 제 2 데이터 아이템은 정렬, 복제, 제로 패딩, 부호 확장되거나, 또는 이들의 조합들인,
    장치.
KR1020147011807A 2011-09-30 2012-09-30 Fifo 로드 명령 KR101697548B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/249,284 2011-09-30
US13/249,284 US9823928B2 (en) 2011-09-30 2011-09-30 FIFO load instruction
PCT/US2012/058181 WO2013049765A1 (en) 2011-09-30 2012-09-30 Fifo load instruction

Publications (2)

Publication Number Publication Date
KR20140073553A KR20140073553A (ko) 2014-06-16
KR101697548B1 true KR101697548B1 (ko) 2017-01-18

Family

ID=47146655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147011807A KR101697548B1 (ko) 2011-09-30 2012-09-30 Fifo 로드 명령

Country Status (7)

Country Link
US (1) US9823928B2 (ko)
EP (1) EP2761434B1 (ko)
JP (2) JP6022581B2 (ko)
KR (1) KR101697548B1 (ko)
CN (1) CN103827818B (ko)
IN (1) IN2014CN01835A (ko)
WO (1) WO2013049765A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013106210A1 (en) * 2012-01-10 2013-07-18 Intel Corporation Electronic apparatus having parallel memory banks
JP2016019708A (ja) 2014-07-16 2016-02-04 浜松ホトニクス株式会社 固体撮像装置、x線撮像システムおよび固体撮像装置駆動方法
CN104597805A (zh) * 2014-12-09 2015-05-06 北京临近空间飞艇技术开发有限公司 一种基于fifo实现循环移位寄存器的系统及方法
CN105892993B (zh) * 2016-03-28 2019-02-15 龙芯中科技术有限公司 基于提取插入操作的重组方法、装置及微处理器
US10725685B2 (en) * 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10733016B1 (en) 2019-04-26 2020-08-04 Google Llc Optimizing hardware FIFO instructions
US11010099B1 (en) * 2019-11-19 2021-05-18 Western Digital Technologies, Inc. Data storage device executing access commands based on leapfrog sort
US11237827B2 (en) * 2019-11-26 2022-02-01 Advanced Micro Devices, Inc. Arithemetic logic unit register sequencing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174883A1 (en) 2008-01-09 2010-07-08 Boris Lerner Processor architectures for enhanced computational capability and low latency

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL136896C (ko) 1964-10-07
DE3689287T2 (de) 1985-02-18 1994-05-26 Nec Corp Datenverarbeitungsgerät.
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
JPH07295882A (ja) 1994-04-22 1995-11-10 Hitachi Ltd 情報処理装置、及び、情報処理システム
JPH0927030A (ja) 1995-07-12 1997-01-28 Fujitsu Ltd 画像処理装置
US5991531A (en) * 1997-02-24 1999-11-23 Samsung Electronics Co., Ltd. Scalable width vector processor architecture for efficient emulation
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6490673B1 (en) 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
FI20010924A (fi) 2001-05-03 2002-11-04 Nokia Corp Mikroprosessorin muistinkäsittely
US7685212B2 (en) 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US7272622B2 (en) * 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
US6721866B2 (en) * 2001-12-21 2004-04-13 Intel Corporation Unaligned memory operands
US20110087859A1 (en) * 2002-02-04 2011-04-14 Mimar Tibet System cycle loading and storing of misaligned vector elements in a simd processor
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7126991B1 (en) 2003-02-03 2006-10-24 Tibet MIMAR Method for programmable motion estimation in a SIMD processor
US7275147B2 (en) 2003-03-31 2007-09-25 Hitachi, Ltd. Method and apparatus for data alignment and parsing in SIMD computer architecture
GB2409059B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
US7475392B2 (en) * 2004-06-07 2009-01-06 International Business Machines Corporation SIMD code generation for loops with mixed data lengths
JP2006004042A (ja) * 2004-06-16 2006-01-05 Renesas Technology Corp データ処理装置
US7315937B2 (en) * 2004-10-01 2008-01-01 Mips Technologies, Inc. Microprocessor instructions for efficient bit stream extractions
US20070052557A1 (en) * 2005-09-02 2007-03-08 Thomas Magdeburger Shared memory and shared multiplier programmable digital-filter implementation
CA2642022A1 (en) 2006-02-03 2007-08-16 Russell H. Fish, Iii Thread optimized multiprocessor architecture
US8984256B2 (en) 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
US7949701B2 (en) * 2006-08-02 2011-05-24 Qualcomm Incorporated Method and system to perform shifting and rounding operations within a microprocessor
US7624251B2 (en) * 2006-11-01 2009-11-24 Apple Inc. Instructions for efficiently accessing unaligned partial vectors
JP2008258762A (ja) 2007-04-02 2008-10-23 Toshiba Corp ディジタル信号受信装置
US8078834B2 (en) 2008-01-09 2011-12-13 Analog Devices, Inc. Processor architectures for enhanced computational capability
US8145804B2 (en) * 2009-09-21 2012-03-27 Kabushiki Kaisha Toshiba Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor
US9137737B2 (en) 2011-08-29 2015-09-15 Qualcomm Incorporated Systems and methods for monitoring of background application events
EP2764734A1 (en) * 2011-10-05 2014-08-13 Qualcomm Incorporated Systems and methods for management of background application events

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174883A1 (en) 2008-01-09 2010-07-08 Boris Lerner Processor architectures for enhanced computational capability and low latency

Also Published As

Publication number Publication date
JP2014532231A (ja) 2014-12-04
KR20140073553A (ko) 2014-06-16
CN103827818A (zh) 2014-05-28
US9823928B2 (en) 2017-11-21
IN2014CN01835A (ko) 2015-09-04
EP2761434B1 (en) 2017-06-14
EP2761434A1 (en) 2014-08-06
US20130086360A1 (en) 2013-04-04
JP6022581B2 (ja) 2016-11-09
JP2016192212A (ja) 2016-11-10
WO2013049765A1 (en) 2013-04-04
CN103827818B (zh) 2017-06-13

Similar Documents

Publication Publication Date Title
KR101697548B1 (ko) Fifo 로드 명령
TWI270007B (en) Method and apparatus for shuffling data
JP2007094813A (ja) プロセッサ
US20120204008A1 (en) Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
KR102121866B1 (ko) 와이드 데이터 엘리먼트들에 대한 레지스터 쌍을 사용하는 짝수-엘리먼트 및 홀수-엘리먼트 연산들을 가지는 혼합-폭 simd 연산들
TW201947392A (zh) 子向量數值之加載及複製之系統及方法
US8843730B2 (en) Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination
US7861071B2 (en) Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US8707013B2 (en) On-demand predicate registers
CN107873091B (zh) 用于滑动窗口运算的方法和设备
US9678754B2 (en) System and method of processing hierarchical very long instruction packets
KR101746681B1 (ko) 가산-비교-선택 명령
CN109690956B (zh) 电子设备和用于电子设备的方法
US20130042091A1 (en) BIT Splitting Instruction

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant