KR101239272B1 - 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기 - Google Patents

하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기 Download PDF

Info

Publication number
KR101239272B1
KR101239272B1 KR1020107022131A KR20107022131A KR101239272B1 KR 101239272 B1 KR101239272 B1 KR 101239272B1 KR 1020107022131 A KR1020107022131 A KR 1020107022131A KR 20107022131 A KR20107022131 A KR 20107022131A KR 101239272 B1 KR101239272 B1 KR 101239272B1
Authority
KR
South Korea
Prior art keywords
adder
address
output
operator
hardware prefetch
Prior art date
Application number
KR1020107022131A
Other languages
English (en)
Other versions
KR20100134005A (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 KR20100134005A publication Critical patent/KR20100134005A/ko
Application granted granted Critical
Publication of KR101239272B1 publication Critical patent/KR101239272B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

듀얼 함수 가산기를 포함하는 시스템이 개시된다. 일 실시예에서, 시스템은 가산기를 포함한다. 가산기는 제 1 명령에 대하여 제 1 명령이 하드웨어 프리페치 명령인 경우 하드웨어 프리페치에 대한 어드레스를 결정하도록 구성된다. 가산기는 제 1 명령에 대하여 제 1 명령이 산술 연산 명령인 경우 산술 연산으로부터의 값을 결정하도록 추가적으로 구성된다.

Description

하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기{A DUAL FUNCTION ADDER FOR COMPUTING A HARDWARE PREFETCH ADDRESS AND AN ARITHMETIC OPERATION VALUE}
여기에 개시된 발명 개념의 실시예들은 일반적으로 데이터 프로세싱 시스템들의 필드에 관련된다. 더 구체적으로, 여기에 설명된 발명 개념들의 실시예들은 듀얼 함수 가산기에 관련된다.
임의의 일반적인 컴퓨팅 시스템들에서, 프로세서에 의해 수행되는 연산들은 로드/저장, 하드웨어 프리페치(prefetch), 및 산술적 연산들을 포함한다. 로드/저장은 메모리(예를 들어, 동기화 동적 랜덤 액세스 메모리(Synchronous Dynamic Random Access)) 레지스터 파일로 값을 로딩하거나 또는 레지스터 파일의 레지스터로부터 메모리로 값을 저장하는 연산이다. 하드웨어 프리페칭은 요청되기 이전에 데이터가 준비되도록 하기 위해 레지스터 파일로 메모리로부터의 데이터의 프리로딩을 하는 것이다. 프리페칭은 메모리 판독과 연관된 레이턴시를 감소시키는데 이는 프로세서가 그들이 레지스터 파일에 이미 프리로딩되어 있는 경우에 로딩될 연산자들을 대기하지 않기 때문이다. 산술 연산은 예를 들어, 두 개의 연산자들 사이의 가산 또는 감산을 포함하는 정수 연산이다.
로드/저장 연산을 수행하는데 있어서, 프로세서는 로드/저장 어드레스를 계산할 수 있다. 로드/저장 어드레스는 값을 로드할 또는 레지스터 파일로부터 값을 저장할 메모리의 어드레스이다. 하드웨어 프리페치를 수행함에 이어서, 프로세서는 하드웨어 프리페치 어드레스를 계산할 수 있다. 하드웨어 프리페치 어드레스는 스레드 실행에서 사용하기 위해 요청되기 이전에 프리로딩될 데이터의 메모리 어드레스이다. 산술 연산을 수행함에 있어서, 프로세서는 산술 연산 값을 계산할 수 있으며, 이는 산술 연산(예를 들어, 연산자 A 플러스 연산자 B의 합)의 결과이다.
도 1의 선행기술 배선도는 일반적인 시스템(100)을 도시한다. 도시된 바와 같이, 일반적인 시스템(100)은 적어도 세 개의 가산기들(106, 112, 및 114)을 포함할 수 있으며, 여기서 하나의 가산기는 로드/저장 어드레스를 생성하기 위한 것(어드레스 생성 가산기(106)), 제 2 가산기는 하드웨어 프리페칭 어드레스를 계산하기 위한 것(하드웨어 프리페칭 가산기(112)), 제 3 가산기는 산술 연산자 값(산술 논리 유닛{ALU} 가산기(114))를 계산하기 위한 것이다. 도 1을 참조하면, 로드/저장 어드레스를 연산하는 어드레스 생성 가산기(106)는 레지스터 파일 및 즉시(immediate) 연산자(104)(예를 들어, 상수)로부터 메모리 어드레스 연산자(102)를 수신할 수 있다. 즉시 연산자는 어드레스를 리스팅하는 연산자 대신에, 연산을 위한 연산자에 의해 리스팅되는 상수 값일 수 있다.
가산기(106)는 로드/저장 어드레스를 생성하기 위해 즉시 연산자(104) 및 메모리 어드레스 연산자(102)를 가산하며, 이는 멀티플렉서(108)로 전송된다. 로드/저장 연산이 수행되는 경우, 멀티플렉서(108)는 로드/저장 어드레스를 멀티플렉서(110)로 전송한다. 반면에, 산술 연산자가 수행되는 경우, 멀티플렉서(108)는 로드/저장 어드레스를 멀티플렉서(108)에 포워딩하는 대신에 제 1 ALU 연산자(ALU)를 레지스터 파일로부터 ALU 가산기(114)로 포워딩한다. 하드웨어 프리페치는 로드/저장 연산을 수행하는 것에 추가적으로 또는 선택적으로 수행될 것이며, 멀티플렉서(108)는 하드웨어 프리페치 어드레스를 결정하기 위해 어드레스 생성 가산기(106)로부터 하드웨어 프리페치 가산기(112)로 로드/저장 어드레스를 포워딩할 수 있다.
도 1의 배선도에 도시된 바와 같이, 하드웨어 프리페치 가산기(112)는 포스트 증분(increment) 어드레스를 결정하도록 추가적으로 구성된다. 포스트 증분 어드레스는 이전에 실행사이클에 사용되는 메모리 어드레스에 상수를 더한 것과 동등한 어드레스이다. 예를 들어, 현재 실행 사이클에서 연산의 실행 이후 또는 실행 동안, 연산의 연산자를, 직접 또는 간접적으로 포인팅하는 어드레스는 포스트 증분 어드레스에 의한 결과를 야기하는 상수만큼 증분될 수 있다. 포스트 증분 어드레스는, 직접 또는 간접적으로, 후속 실행 사이클에서 프로세싱될 연산의 연산자를 포인팅할 수 있다.
도 1의 배선도에서, 가산기(112)는 로드/저장 어드레스 및 멀티플렉서(116)의 출력을 가산함으로써 포스트 증분 어드레스를 결정하고, 이는 포스트 증분 어드레스를 계산하는 경우 포스트 증분 상수(pconstant)(118)를 선택한다. pconstant(118)은 미리정의되거나 그리고/또는 시스템(100)에 의해 배선(hardwire)되거나 저장될 수 있다. 가산기(112)가 하드웨어 프리페치 어드레스를 결정하는 경우, 멀티플렉서(116)는 로드/저장 어드레스를 증분할지 또는 감소할지 여부를 이용하여 하드웨어 프리페치 감소 어드레스(120) 및 하드웨어 프리페치 증분 어드레스(12) 사이에서 선택한다. 가산기(112)는 포스트 증분 어드레스 또는 하드웨어 프리페치 어드레스(124)를 출력하며, 이는 현재 실행 사이클 레지스터 파일 또는 다음 실행 사이클의 멀티플렉서(110) 출력으로 전송된다. 멀티플렉서(110) 다음 실행 사이클에 입력되는 하드웨어 프리페치 어드레스(124)는 메모리 어드레스(134)에서 값을 프리페칭하기 위한 데이터 캐시(136)를 액세스하기 위해 사용될 수 있다. 따라서, 멀티플렉서(110)는 현재 실행 사이클의 로드/저장 어드레스 및 이전 실행 사이클의 하드웨어 프리페치 어드레스 사이에서 하드웨어 프리페치의 로드/저장 연산이 수행되는지 여부에 따라 선택한다.
산술적 연산이 계산되는 경우, ALU 가산기(114)의 입력으로 제 1 ALU 연산자(102)를 전송하는 멀티플렉서(108)에 추가하여, 멀티플렉서(126)는 산술적 연산에 따라 즉시 ALU 연산자(130)(즉, 상수) 및 레지스터 파일로부터 제 2 ALU 연산자(128)로부터 선택된 출력을 전송한다. 예를 들어, 산술 연산은 레지스터 파일들에 저장된 두 개의 값들을 가산할 수 있다. 따라서, 명령의 입력 연산자들은 가산될 값들을 저장하는 레지스터 파일의 두 개의 레지스터들을 포인팅할 수 있다. 다른 예에서, 하나의 연산자는 레지스터 파일에 저장된 값을 포인팅할 수 있으며, 다른 연산자는 미리정의된 상수를 리스팅한다. 가산기(114)는 산술 연산 값(132)을 출력하기 위해 ALU 제 1 연산자(102) 및 멀티플렉서(126)의 출력을 가산한다.
시스템(100)의 하나의 문제는 이러한 연산들을 프로세싱하기 위해 세 개의 가산기들이 요구되어 회로의 영역 및 프로세서의 전력 소모를 증가시킨다는 데에 있다.
일 실시예에서, 듀얼 함수 가산기를 포함하는 시스템이 설명된다. 일 실시예에서, 시스템은 가산기를 포함한다. 가산기는 제 1 명령이 하드웨어 프리페치 명령인 경우 하드웨어 프리페치에 대한 어드레스를 결정하기 위해 제 1 명령에 대해 구성된다. 가산기는 제 1 명령이 산술 연산 명령인 경우 산술 연산으로부터의 값을 결정하기 위해 제 1 명려에 대해 추가적으로 구성된다.
여기에 설명된 하나 이상의 실시예들의 이점은 프로세서에 대한 실리콘의 감소된 영역 및 전력 절약을 포함할 수 있다.
이러한 예시적인 실시예는 여기에 설명된 발명 개념들을 제한하거나 정의하고자 하는 의도로서 언급된 것이 아니며 이들의 이해를 돕기 위한 예시들을 제공하기 위한 것이다. 다음 섹션들을 포함하는, 본 명세서의 다른 양상들, 이점들 및 특성들이 전체 출원을 리뷰한 이후에 더 명백해질 것이다: 도면의 간단한 설명, 상세한 설명, 청구항.
여기에 설명된 본 발명 개념의 다른 특징들, 양상들, 및 이점들은 첨부된 도면들을 참조하여 다음의 상세한 설명들이 이해되는 경우 더 잘 이해된다:
도 1은 로드/저장 어드레스, 하드웨어 프리페치 어드레스, 및 산술 연산 값을 계산하기 위한 일반적인 회로를 도시하는 선행 기술 개념도이다.
도 2는 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하도록 구성되는 듀얼 함수 가산기를 포함하는 예시적인 시스템의 배선도이다.
도 3은 레지스터 파일에 액세스하지 않고 도 2의 배선도의 듀얼 함수 가산기에 의해 계산되는 포스트 증분 어드레스를 사용하도록 구성되는 예시적인 시스템을 도시하는 배선도이다.
도 4는 하드웨어 프리페치 어드레스 및 로드/저장 값을 계산하도록 구성되는 듀얼 함수 가산기를 포함하는 예시적인 시스템을 도시하는 배선도이다.
도 5는 레지스터 파일에 액세스하지 아니하고 도 4의 배선도의 듀얼 함수 가산기에 의해 계산되는 포스트 증분 어드레스를 사용하도록 구성되는 예시적인 시스템의 배선도이다.
도 6은 멀티-스레드 프로세서에 대한 명령 파이프라인을 도시하는 다이어그램이다.
도 7은 도 2 및 3 배선도에 도시된 시스템들의 하드웨어 프리페치, 로드/저장, 또는 산술 연산을 실행하기 위한 예시적인 방법을 도시하는 플로우차트이다.
도 8은 도 4 및 5의 배선도에 도시된 시스템에 의한 하드웨어 프리페치, 로드/저장, 산술 연산을 실행하기 위한 예시적인 방법을 도시하는 플로우차트이다.
도 9는 도 3 및 5의 배선도에 도시된 시스템의 포스트 증분 어드레스를 계산하고 사용하기 위한 예시적인 방법을 도시하는 플로우차트이다.
도 10은 듀얼 함수 가산기를 포함할 수 있는 디지털 신호 프로세서가 통합된 예시적인 휴대용 통신 장치를 도시하는 일반 다이어그램이다.
도 11은 듀얼 함수 가산기를 포함할 수 있는 디지털 신호 프로세가 통합된 예시적인 셀룰러 전화를 도시하는 일반 다이어그램이다.
도 12는 듀얼 함수 가산기를 포함할 수 있는 디지털 신호 프로세서가 통합된 예시적인 인터넷 프로토콜 전화를 도시하는 일반 다이어그램이다.
도 13은 듀얼 함수 가산기를 포함할 수 있는 디지털 신호 프로세서가 통합된 휴대용 디지털 보조기를 도시하는 일반 다이어그램이다.
도 14는 듀얼 함수 가산기를 포함할 수 있는 디지털 신호 프로세서가 통합된 예시적인 오디오 파일 플레이어를 도시한 일반 다이어그램이다.
명세서에 걸쳐, 설명을 위해 다양한 구체적인 세부내용들이 여기에 설명된 발명 개념의 전체적인 이해를 제공하기 위해 설명된다. 그러나, 당업자에게 여기에 설명된 발명 개념들은 이러한 특정한 세부내용들 중 일부 없이도 실행될 수 있음이 명백할 것이다. 다른 경우들에서, 잘-알려진 구조들 및 장치들은 여기에 설명된 발명 개념들의 내재된 원칙들을 모호하게 하는 것을 피하기 위해 블록 다이어그램의 형태로 도시된다.
여기에 설명된 발명 개념들의 실시예들은 듀얼 함수 가산기와 관련된다. 일 실시예에서, 듀얼 함수 가산기는 프로세서의 시스템에 대한 산술 연산들을 실행하는 것으로부터의 산술 연산 값들 및 하드웨어 프리페칭에 대한 하드웨어 프리페치 어드레스를 계산하도록 구성된다. 따라서, 가산기들 중 하나(예를 들어, 도 1의 가산기들(112, 114))는 시스템으로부터 제거될 수 있으며, 시스템의 크기 및 전력 소모를 감소시킬 수 있다. 가산기를 제거하기 위해 두 개의 가산기들(112 및 114)로의 입력들은 하나의 가산기로 입력된다. 일 실시예에서, 듀얼 함수 가산기는 두 개의 일반적인 가산기들 중 하나의 동일한 타입의 가산기이다.
하드웨어 프리페치 어드레스 계산 및 산술 연산 값 계산을 위한 가산기의 공유의 이점은 계산들 둘 다가 동일한 실행 사이클 동안 일반적으로 수행되지 않는 다는 것이다. 예를 들어, 하드웨어 프리페치는 일반적으로 산술 연산이 수행되지 않는 실행 사이클에서 일어난다. 그 결과, 가산기는 듀얼 함수 가산기로부터의 커다란 타이밍 벌칙을 생성하지 아니하고 동작들의 두 타입들 모두를 수행할 수 있다.
시스템으로부터 가산기를 제거하는 것에 더하여, 일 실시예에서, 시스템은 포스트 증분 어드레스를 로드하는 것을 레지스터 파일에 액세스하는 것을 요구하지 않고 현재 실행 사이클에서 이전 실행 사이클로부터의 (예를 들어, 도 1의 가산기(112)에 의해 계산된) 계산된 포스트 증분 어드레스를 사용하도록 구성될 수 있다. 일반적으로, 포스트 증분 어드레스는 레지스터 파일에 저장되고, 추후에 검색된다. 이전 실행 사이클로부터의 포스트 증분 어드레스는 현재 실행 사이클에서 수행될 연산의 연산자를 포인팅할 수 있다. 레지스터 파일에 이전에 계산된 포스트 증분 어드레스를 로드하기 위해 액세스하는 것을 요구하지 않기 위해, 시스템은 데이터 캐시(136)에 액세스하기 위해 현재 실행 사이클에서 사용하기 위한 멀티플렉서(108)(도 1)로 이전에 계산된 포스트 증분 어드레스를 입력하도록 구성되는 피드백 경로를 포함한다. 그 결과, 이전의 실행 사이클로부터의 포스트 증분 어드레스는 사용가능한데 이는 현재 실행 사이클에 대한 시스템으로 다시 입력되기 때문이다.
레지스터 파일을 액세스하지 않고 포스트 증분 어드레스를 사용하는 것의 이점은 프로세서가 포스트 증분 어드레스를 위해 레지스터 파일을 판독하기 위해 실행을 정지하는 시간이 세이브된다는 것이다. 따라서, 시스템을 포함한 프로세서의 속도가 증가된다.
듀얼 함수 가산기의 예시적인 실시예들
도 2-5의 배선도 들은 듀얼 함수 가산기를 포함하는 회로들의 예시적인 실시예들을 도시한다. 도 2의 배선도는 하드웨어 프리페치 어드레스(226)를 계산하고 그리고 산술 연산 값(226)을 계산하도록 구성되는 듀얼 함수 가산기(224)를 포함하는 예시적인 시스템(200)을 도시한다. 일 실시예에서, 시스템(200)은 실행 유닛 및/또는 프로세서의 로드/저장 유닛에 있다. 도 3의 배선도는 레지스터 파일에 액세스하지 않고 듀얼 함수 가산기(224)에 의해 계산된 포스트 증분 어드레스를 사용하도록 구성되는 예시적인 시스템(300)을 도시한다. 도 4의 배선도는 하드웨어 프리페치 어드레스를 계산하고 그리고 로드/저장 어드레스를 계산하도록 구성되는 듀얼 함수 가산기(414)를 포함하는 예시적인 시스템이다. 도 5의 배선도는 레지스터 파일에 액세스하지 않고 도 4의 배선도의 가산기(522)에 의해 계산되는 포스트 증분 어드레스를 사용하도록 구성된다.
도 2를 참조하면, 두 개의 개별적인 가산기들(도 1의 112, 114)에 대한 입력들은 하나의 가산기(224)로 결합되고 입력된다. 도 1의 배선도에 의해 도시된 바와 같이, 두 개의 가산기들(112, 114)(도 1) 둘 다로부터의 하나의 입력은 멀티플렉서(108)로부터 기원한다. 따라서, 공유 가산기(224)로의 제 1 입력은 멀티플렉서(208)의 출력에 연결된다. 일 실시예에서, 멀티플렉서(126)(도 1)는 (i) 하드웨어 프리페치 및 포스트 증분 어드레스 계산을 위한 멀티플렉서(210)의 출력 및 (ii) 레지스터 파일로부터의 제 2 ALU 연산자(222) 또는 산술 연산을 위한 즉시 ALU 연산자(220) 사이에서 선택하기 위해 멀티플렉서(218)와 교체된다. 멀티플렉서(218)의 출력은 공유 가산기(224)의 제 2 입력에 연결된다.
도 2의 배선도에서, 로드/저장 어드레스의 계산은 도 1의 배선도와 유사하다. 시스템(200)에 의한 하드웨어 프리페치 어드레스의 계산을 위해, 시스템(200)은 포스트 증분 어드레스 또는 하드웨어 프리페치 어드레스 중에서 어느 것을 계산하는지에 따라 스위칭하도록 구성되는 멀티플렉서(210)를 포함할 수 있다. 멀티플렉서(218)는 멀티플렉서(210)의 출력을 수신하며 하드웨어 프리페치/포스트 증분 어드레스 또는 산술 연산 값(234)이 계산되고 있는지에 따라 스위칭하도록 구성된다. 시스템(200)에 의한 산술 연산 값의 계산은 도 1의 배선도와 유사하나, 레지스터 파일로부터의 제 2 ALU 연산자(222) 및 즉시 ALU 연산자(220) 사이에서 선택하도록 구성된 멀티플렉서(218)가 어떠한 연산이 수행될 것인지에 따라 공유 가산기(224)에 정보를 출력하기 위해 멀티플렉서(210)에 의해 출력되는 포스트 증분 또는 하드웨어 프리페치 정보를 더 수신한다는 점을 제외하고 유사하다.
하드웨어 프리페치 또는 포스트 증분 어드레스(234)를 계산하면, 어드레스는 피드백 루프(226)를 통해 후속 실행 사이클에서 멀티플렉서(228)로 입력될 수 있다. 멀티플렉서(228)는 데이터 캐시(232)에 액세스하기 위해 이전 실행 사이클의 현재 실행 사이클 또는 하드웨어 프리페치 어드레스의 로드/저장 어드레스 사이에서 선택하기 위한 제어 로직의 일 실시예이다. 다른 실시예들은, 예를 들어, 비교기들, 스위치들, 또는 로드/저장 어드레스 및 하드웨어 프리페치 어드레스 사이에서 선택하기 위한 다른 디지털 로직을 포함할 수 있으나, 이에 제한되지 않는다.
도 3을 참조하면, 시스템(300)은 도 2의 배선도와 같이 듀얼 함수 가산기(224)를 포함한다. 시스템(300)은 멀티플렉서(302)의 입력에 이전 실행 사이클에서 계산된 포스트 증분 어드레스의 피드백 루프(226)를 더 포함한다. 일 실시예에서, 멀티플렉서(302)는 포스트 증분 어드레스(234)를 수신하기 위해 제 3 입력에 대해 구성된다. 따라서, 멀티플렉서(302)는 프로세서에 의해 실행되고 있는 연산에 따라 포스트 증분 어드레스(234), ALU 제 1 연산(204) 및 가산기(206)로부터의 로드/저장 어드레스 사이에서 선택하도록 구성될 수 있다. 예를 들어, 프로세서가 값을 위해 데이터 캐시(232)에 액세스하기 위해 포스트 증분 어드레스를 사용하는 경우, 멀티플렉서(302)는 데이터 캐시(232)에 액세스하기 위해 메모리 어드레스(230)를 출력하기 위해 멀티플렉서(228)에 포스트 증분 어드레스를 출력한다.
도 4를 참조하면, 시스템(400)은 하드웨어 프리페치 어드레스를 계산하고 그리고 로드/저장 어드레스를 계산하도록 구성되는 듀얼 함수 가산기(414)를 포함한다. 일 실시예에서, 멀티플렉서(410)는 로드/저장 어드레스(즉시 연산자(408))를 계산하기 위한 정보 및 하드웨어 프리페치 어드레스(멀티플렉서(406)의 출력)를 계산하기 위한 정보 사이에서 선택한다. 로드/저장 어드레스를 계산하기 위해, 멀티플렉서(412)는 레지스터 파일로부터 듀얼 함수 가산기(414)로 메모리 어드레스(432)를 출력한다. 멀티플렉서(410)는 가산기(414)로 제 2 입력에 대한 즉시 연산자(408)를 선택할 수 있다. 로드/저장 어드레스는 그리고 나서 가산기(414)에 의해 계산되고 멀티플렉서(416)로 출력될 수 있다. 일 실시예에서, 멀티플렉서(416)는 가산기(414)로부터 하드웨어 프리페치 어드레스를 추가적으로 수신할 수 있다. 멀티플렉서(416)는 프로세서가 로드/저장 연산을 수행하는 경우 로드/저장 어드레스를 선택할 수 있다. 로드/저장 어드레스는 그리고나서 데이터 캐시(420)에 액세스하기 위한 메모리 어드레스(418)로서 멀티플렉서(416)로부터 출력된다.
하드웨어 프리페치 어드레스를 계산하기 위해, 로드/저장 어드레스는 제 1 실행 사이클에서 가산기(414)에 의해 먼저 계산되며, 그리고나서 제 1 실행 사이클에서 계산된 로드 저장 어드레스는 멀티플렉서(412)에 의해 선택되고 제 2 실행 사이클에서 어드레스 생성 가산기(414)로 입력된다. 하드웨어 프리페치 어드레스를 계산하기 위한 가산기(414)로의 다른 입력은 하드웨어 프리페치 감소 어드레스(402) 또는 하드웨어 프리페치 증분 어드레스(404)이다. 멀티플렉서(406)는 하드웨어 프리페치 감소 어드레스(402) 및 하드웨어 프리페치 증분 어드레스(404) 사이에서 선택한다.
시스템(400)에서, ALU 가산기(422)는 포스트 증분 어드레스를 계산한다. 따라서, 멀티플렉서(406)는 포스트 증분(426)을 요구하지 않는데 이는 듀얼 함수 가산기(414)가 포스트 증분 어드레스를 계산하지 않기 때문이다. 멀티플렉서(410)는 가산기(414)가 하드웨어 프리페치 어드레스를 계산하는 경우 멀티플렉서(406)의 출력을 선택할 수 있다. 가산기(414)는 그리고나서 증분/감소 어드레스(402, 4040) 및 하드웨어 프리페치 어드레스를 생성하기 위해 로드/저장 어드레스를 가산하고 이는 멀티플렉서(416)로 출력된다.
하드웨어 프리페치 어드레스들 및 로드/저장 어드레스들은 듀얼 함수 가산기(414)에 의해 계산되고 멀티플렉서(416)에 의해 출력되기 때문에, 멀티플렉서는 로드/저장 어드레스 및 하드웨어 프리페치 어드레스 사이에서 선택하기 위해 시스템(400)에 의해 요구되지 않는다. 일 실시예에서, 멀티플렉서(416)에 의해 출력되는 어드레스는 어드레스가 하드웨어 프리페치 또는 로드/저장 어드레스인지 여부에 관련없이 데이터 캐시(420)를 액세스하기 위한 메모리 어드레스(418)로서 사용된다.
산술 연산 값을 계산하기 위해, 가산기(422)는 제 1 입력 및 즉시 연산자(즉, 상수)(428)에서 레지스터 파일로부터의 제 1 연산자(432) 또는 제 2 입력에서 레지스터 파일로부터의 제 2 연산자(430)를 수신할 수 있다. 레지스터 파일로부터 제 1 연산자(432)를 수신하기 위해 멀티플렉서(412)는 멀티플렉서(416)로 연산자(432)를 출력한다. 시스템(400)은 멀티플렉서(412)를 포함하는데 듀얼 함수 가산기(414)가 두 개의 상이한 타입의 입력들(즉 레지스터 파일로부터의 메모리 연산자(432) 또는 가산기(414)에 의해 이전에 계산된 로드/저장 어드레스)를 수신할 수 있기 때문이다. 따라서, 멀티플렉서(412)는 시스템이 (i) 로드/저장 또는 산술 연산 또는 (ii) 하드웨어 프리페치를 프로세싱하는지 여부에 따라 레지스터 파일로부터의 연산자(메모리 또는 ALU) 또는 로드/저장 어드레스를 선택할 수 있다.
산술 연산 값을 계산하는 것에 더하여, ALU 가산기(422)는 포스트 증분 어드레스를 추가로 계산할 수 있다. 포스트 증분 어드레스를 계산하기 위하여, 가산기(422)는 포스트 증분(426)을 수신할 수 있다. 따라서, 멀티플렉서(424)는 가산기(422)가 포스트 증분 어드레스 또는 산술 연산 값을 계산하는지 여부에 따라 ALU 연산자들(428 및 430) 및 포스트 증분 어드레스(426) 사이에서 선택한다.
도 5를 참조하면, 시스템(500)은 도 4의 배선도와 같이 듀얼 함수 가산기(414)를 포함한다. 시스템(500)은 멀티플렉서(502)의 입력에 이전 실행 사이클에서 ALU 가산기(422)에 의해 계산되는 포스트 증분 어드레스에 대한 피드백 루프를 더 포함한다. 일 실시예에서, 멀티플렉서(502)는 포스트 증분 어드레스를 수신하기 위해 제 3 입력에 대해 구성된다. 따라서, 멀티플렉서(502)는 프로세서에 의해 수행되는 연산에 따라 포스트 증분 어드레스, 메모리 또는 레지스터 파일로부터의 ALU 연산자(414), 연산된 로드/저장 어드레스 사이에서 선택하도록 구성된다. 예를 들어, 프로세서가 값에 대한 데이터 캐시(420)를 액세스하기 위해 포스트 증분 어드레스를 사용하는 경우, 멀티플렉서(502)는 데이터 캐시(420)에 액세스하기 위한 메모리 어드레스(418)로서 포스트 증분 어드레스를 출력한다.
도 2-5의 배선도에서 도시된 실시예들 각에서, 시스템들은 두 개의 가산기들을 포함하고, 여기서 하나는 듀얼 함수 가산기이며, 이는 하드웨어 프리페치 어드레스, 로드/저장 어드레스, 및 산술 연산으로부터의 값을 계산하도록 구성된다. 도 2-5의 배선도는 단일스레드 프로세서 구조와 관련하여 설명되었으나, 아래에 설명될 바와 같이 멀티-스레드 프로세서에서 사용될 수 있다.
멀티-스레드 프로세서에서 설명적인 실시예들의 동작
예시적인 실시예에서, 도 2-5의 배선도에 도시된 시스템들(200, 300, 400, 500)은 멀티-스레드 프로세서 구조로 동작할 수 있다. 도 6은 멀티-스레드 프로세서에 대한 명령 파이프라인(600)을 도시하는 다이어그램이다. 도 6을 참조하면, 다이어그램은 6 개의 스레드들(618-628)에 대한 클록(602) 사이클들(X 내지 X+6)에 걸친 파이프라인(600)을 도시한다. 예에서, 명령(예를 들어, 명령 사이클)의 프로세싱은 6개의 동작 사이클들로 나뉜다: 디코딩(DE), 레지스터 파일 액세스(RF), 제 1 실행 사이클(X1), 제 2 실행 사이클(X2), 제 3 실행 사이클(X3), 및 라이트백(write back; WB). 존재할 수 있으나 도시되지 않은 파이프라인의 다른 동작 사이클은 페칭된다. 이 예에서, 각각의 동작 사이클은 하나의 클록 사이클로 수행될 수 있다.
일 예에서, 하나의 명령 사이클은 하나의 명령들에 대한 동작 사이클 각각을 완료하는 시간이다. 스레드 0(618)을 위한 하나의 명령 사이클은 클록 사이클들 X(604) 내지 X+5(614)이거나, 또는 6개의 클록 사이클들일 수 있다. 파이프라인에 페치 동작 사이클이 포함된 경우 명령 사이클은 7 개의 클록 사이클들일 수 있다. 따라서, 시스템들(200-300)(도 2-3)에 대하여, 하나의 명령 사이클은 디코딩(DE), 레지스터 파일 어드레스(RF), 제 1 실행 사이클(X1), 제 2 실행 사이클(X2), 제 3 실행 사이클(X3) 및 라이트 백(WB)과 같은 파이프라인의 동작 사이클들 각각을 포함할 수 있다.
예시적인 로드 명령에 대한 명령 사이클에 포함된 동작 사이클들을 설명함에 있어서, 페치 동작 사이클(미도시)은 프로세서가 실행을 위한 명령을 검색하고 로딩하는 파이프라인 동작 사이클일 수 있다. 예를 들어, 도 2-3의 배선도에 도시된 시스템들(200 및 300)을 참조하면, 메모리 어드레스 A 플러스 임의의 상수의 로드를 수행하기 위한 스레드 0(618)의 예시적인 명령은 프로세서에 의해 실행되기 위해 페칭될 수 있다. DE(630, 644, 656, 666, 674, 680)는 프로세서가 로드 명령을 연산자들로 디코딩하는 동작 사이클이다. 따라서, 이전의 로드 명령 예에서, 프로세서는 DE(630)동안 즉시 연산자 및/또는 연산자를 저장하는 레지스터 파일의 레지스터 파일 어드레스를 수집하기 위해 명령을 디코딩한다. RF(632, 646, 658, 668, 676, 682)는 프로세서가 레지스터 파일로부터 연산자들을 검색하는 동작 사이클이다. 따라서, 프로세서는 레지스터 파일로부터 메모리 연산자(204)(도 2-3)를 검색할 수 있다.
X1, X2, 및 X3(634-638, 648-652, 660-664, 670-672, 678)은 프로세서가 명령의 실행의 제 1 부분, 제 2 부분, 및 제 3 부분을 각각 완료하는 동작 사이클들이다. 로드 동작 명령에 대하여, 동작 사이클 X1(634)는 어드레스 생성 가산기(206)(도 2-3)에 의해 로드/저장 어드레스를 계산하는 것을 포함할 수 있다. 동작 사이클 X2(636)은 데이터 캐시(232)(도 2-3)를 액세스하기 위한 메모리 어드레스(230)로서 멀티플렉서(208, 302) 및 멀티플렉서(228)(도 2-3)에 의해 로드/저장 어드레스의 선택을 포함할 수 있다. X3(658)은 로드를 수행하기 위해 데이터 캐시(232)에 액세스하는 것을 포함할 수 있다. WB(640, 654)는 연산자가 레지스터 파일로 다시 기록될 수 있는 동작 사이클이다. 예를 들어, 포스트 증분 어드레스 또는 산술 연산 값이 계산되는 경우, 포스트 증분 어드레스 또는 산술 연산 값은 파이프라인 동작 사이클 WB 동안 레지스터 파일로 기록된다. 로드 명령에 대하여, 프로세서는 명령을 위한 WB 동안 레지스터 파일로 값을 라이트백하지 않을 수 있다.
도 2-3들의 배선도 및 도 6의 다이어그램에서 도시된 파이프라인(600)을 다시 참조하면, 어드레스 생성 가산기(206)는 파이프라인 동작 사이클(X1) 동안 동작할 수 있으며, 멀티플렉서들(208, 210, 218, 228 및 302)는 파이프라인 동작 사이클(X2) 동안 동작할 수 있으며, 가산기(224)는 동작할 수 있으며, 데이터 캐시(232)는 파이프라인 동작 사이클(X3) 동안 액세스될 수 있다. 예를 들어, 시스템(200)(도 2)에서, 하드웨어 프리페치 어드레스를 계산하기 위해, 로드/저장 어드레스는 파이프라인 동작 사이클(X1) 동안 가산기(206)에 의해 계산되며, 로드/저장 어드레스는 파이프라인 동작 사이클(X2) 동안 멀티플렉서(208)에 의해 가산기(224)의 제 1 입력으로 전송되고, 하드웨어 감소 어드레스(212) 또는 하드웨어 프리페치 증분 어드레스(214)는 파이프라인 동작 사이클(X2) 동안 멀티플렉서들(210, 218)에 의해 가산기(224)의 제 2 입력으로 전송되며, 하드웨어 프리페치 어드레스는 파이프라인 동작 사이클(X3) 동안 가산기(224)에 의해 계산된다.
멀티-스레드 구조에서, 상이한 파이프라인 동작 사이클들이 상이한 스레드들로부터 명령들에서 동시에 수행될 수 있다. 도시된 바와 같이, 클록 사이클 X+2(608) 동안, 스레드 0(618)은 동작 사이클 X1(634)에 있을 수 있으며, 스레드 1(620)은 동작 사이클 RF(646)에 있을 수 있으며, 그리고 스레드 2(622)는 동작 사이클 DE(656)에 있을 수 있다. 그 결과, 다수의 스레드들에 대한 데이터는 한번에 시스템들(200, 300, 400, 500)에 있을 수 있다. 데이터가 단일 스레드 동안 하나의 동작 사이클로부터 다른 것으로 갈 때까지 지속되고(예를 들어, 하드웨어 프리페치 어드레스 또는 포스트 증분 어드레스가 다음 동작 사이클에서 시스템으로 다시 입력될 수 있음), 상이한 스레드들로부터의 다수의 데이터가 시스템에서 함께 존재할 수 있기 때문에, 시스템들(200, 300, 400, 500)은 스레드의 다음 실행 사이클까지 스레드의 값들을 저장하기 위해 시스템의 상이한 위치들에서 임시 스토리지를 포함할 수 있다. 예를 들어, 동작 사이클 X3(638)(클록 사이클 X+4(612))동안 도 3의 배선도의 가산기(224)에 의해 스레드 0에 연산된 하드웨어 프리페치 어드레스가 멀티플렉서(228)가 데이터 캐시(136)를 액세스하기 위해 하드웨어 프리페치 어드레스를 선택할 수 있는 경우 다음 동작 사이클(X2)(예를 들어, 클록 사이클 X+9)까지 저장될 수 있다. 일 실시예에서, 플립-플롭들은 시스템으로 삽입되며 그리고 미리결정된 클록 사이클들 동안 값들을 저장(예를 들어, 5 개의 클록 사이클들에 대한 하드웨어 프리페치 어드레스를 저장)하도록 구성된다. 스토리지의 다른 실시예들은 버퍼들, 메모리들, 또는 다른 스토리지 디바이스들을 포함한다.
결과로, 도 2-5의 배선도들에 도시된 시스템들의 예시적인 실시예들은 단일-스레드 구조 및 멀티-스레드 구조에서 실행되도록 구성될 수 있다.
예시적인 실시예들의 동작의 예시적인 방법들
도 7-9는 도 2-5의 배선도에 도시된 시스템들(200, 300, 400, 500)의 동작의 예시적인 방법들을 도시하는 플로우차트들이다. 도 7의 플로우차트는 도 2 및 3의 배선도에 도시된 시스템(200, 300)에 의한 하드웨어 프리페치, 로드/저장, 또는 산술 연산을 실행하기 위한 예시적인 방법(700)을 도시한다. 도 8의 플로우차트는 도 4 및 5의 배선도에 도시된 시스템(400, 500)에 의한 하드웨어 프리페치, 로드/저장 또는 산술 연산을 실행하기 위한 예시적인 방법(800)을 도시한다. 도 9의 플로우차트는 도 3 및 5의 배선도에 도시된 시스템(300, 500)에 의해 포스트 증분 어드레스를 계산하고 사용하기 위한 예시적인 방법(900)을 도시한다.
도 7을 참조하면, 플로우 차트는 하드웨어 프리페치 어드레스 및 산술 연산 값이 듀얼 함수 가산기(224)(도 2-3)에 의해 계산되는 방법(700)을 도시한다. (702)에서 시작하여, 프로세서는 로드/저장 동작이 실행될지 여부를 결정한다. 로드/저장 동작이 수행될 것인 경우, 가산기(206)는 레지스터 파일로부터 즉시 연산자(220)로 메모리 연산자(204)로 가산함으로써 704의 로드/저장 어드레스를 계산한다. 704의 로드/저장 어드레스를 계산하면, 멀티플렉서들(208 및 228)(도 2) 또는 (302 및 228)(도 3)은 706에서 데이터 캐시(232)를 액세스하는데 메모리 어드레스(230)로서 로드/저장 어드레스를 선택한다.
프로세서가 로드/저장이 702에서 실행되지 않을 것이라고 결정하면, 프로세서는 하드웨어 프리페치가 708에서 실행될 것인지 여부를 결정한다. 하드웨어 프리페치가 실행될 경우, 가산기(206)는 레지스터 파일로부터 즉시 연산자(204)로 메모리 연산자(204)를 부가함으로써 710에서 로드/저장 어드레스를 계산한다. 로드/저장 어드레스를 계산하면, 멀티플렉서들(210 및 218)은 712에서 계산된 로드/저장 어드레스로 부가될 하드웨어 프리페치 감소 어드레스(212) 또는 하드웨어 프리페치 증분 어드레스(214)를 선택한다. 714로 진행하면, 듀얼 함수 가산기(224)는 712로부터 선택된 값을 하드웨어 프리페치 어드레스를 생성하기 위해 로드/저장 어드레스로 가산한다. 714에서 하드웨어 프리페치 어드레스를 계산하면, 멀티플렉서(228)는 716에서 데이터 캐시(232)를 액세스하기 위해 하드웨어 프리페치 어드레스를 선택할 수 있다. 이전에 언급된 바와 같이, 멀티플렉서(228)에 의한 하드웨어 프리페치 어드레스의 선택 및 하드웨어 프리페치의 실행을 지속하는 것은 후속 실행 사이클에서 수행될 수 있다.
프로세서가 하드웨어 프리페치가 708에서 실행되지 않을 것이라고 결정하는 경우, 프로세스는 718로 진행한다. 718에서, 멀티플렉서(218)는 레지스터 파일로부터의 제 2 ALU 연산자(222)로부터 또는 즉시 ALU 연산자(220)로부터 선택한다. 일 실시예에서, 동작은 연산자가 레지스터 파일로부터 검색되는지(예를 들어, 연산자에 대한 레지스터 파일 어드레스를 리스팅함으로써), 또는 연산자가 상수인지(예를 들어, 연산자가 상수이고 레지스터 파일 어드레스가 아님)인지 여부를 리스팅한다. 멀티플렉서(208)는 레지스터 파일로부터 제 1 ALU 연산자(204)를 선택한다. 산술 연산에 대해 부가될 상이한 연산자들을 선택하면, 듀얼 함수 가산기(224)는 멀티플렉서(218)로부터 산술 연산을 실행하고 산술 연산 값을 생성하는 720에서의 레지스터 파일로부터의 연산자(204)로 선택된 연산자를 가산한다.
도 8을 참조하면, 플로우차트는 하드웨어 프리페치 어드레스 및 로드/저장 어드레스가 듀얼 함수 가산기(414)(도 4-5)에 의해 계산되는 방법(800)을 도시한다. 802에서 시작하여, 프로세서는 로드/저장 연산이 실행될지 여부를 결정한다. 로드/저장 동작이 실행될 경우, 멀티플렉서(412)는 레지스터 파일로부터 메모리 연산자(432)를 선택하고 멀티플렉서(410)는 804에서 즉시 연산자(428)를 선택한다. 806으로 진행하여, 듀얼 함수 가산기(414)는 로드/저장 어드레스를 생성하기 위해 멀티플렉서들(412 및 410)(각각 메모리 연산자(432) 및 즉시 연산자(428))의 출력을 부가한다. 806에서 로드/저장 어드레스를 계산하면, 멀티플렉서(416)(도 4) 또는 (502)(도 5)는 808에서 데이터 캐시(420)를 액세스하는데 있어서 메모리 어드레스(418)로서 로드/저장 어드레스를 선택한다.
프로세서가 802에서 로드/저장이 실행되지 않을 것으로 결정하면, 프로세서는 하드웨어 프리페치가 810에서 실행될지 여부를 결정한다. 하드웨어 프리페치가 실행될 경우, 멀티플렉서(412)는 레지스터 파일로부터 메모리 연산자(432)를 선택하고 멀티플렉서(410)는 812에서 즉시 연산자(428)를 선택한다. 814로 진행하면, 듀얼 함수 가산기(414)는 로드/저장 어드레스를 생성하기 위해 멀티플렉서들(412 및 410)의 출력들(각각 메모리 연산자(432) 및 즉시 연산자(428))을 가산한다. 로드/저장 어드레스를 계산하면, 멀티플렉서들(406 및 410)은 816에서 계산된 로드/저장 어드레스로 가산될 하드웨어 프리페치 증분 어드레스(404) 또는 하드웨어 프리페치 감소 어드레스(402)를 선택한다. 일 실시예에서, 멀티플렉서(412)는 연산된 로드/저장 어드레스를 선택한다. 로드/저장 어드레스의 계산 및 하드웨어 프리페치의 실행을 지속하는 것 이후에 멀티플렉서(412)에 의한 로드/저장 어드레스의 선택은 후속 실행 사이클에서 수행될 수 있다. 818로 진행하면, 듀얼 함수 가산기(414)는 하드웨어 프리페치 어드레스를 생성하기 위해 로드/저장어드레스로 816로부터의 선택된 하드웨어 증분/감소 어드레스를 가산한다. 818에서 하드웨어 프리페치 어드레스를 계산하면, 멀티플렉서(416)(도 4) 또는 (502)(도 5)는 820에서 데이터 캐시(420)를 액세스하기 위해 하드웨어 프리페치 어드레스를 선택할 수 있다.
프로세서가 하드웨어 프리페치가 810에서 실행되지 않을 것으로 결정하면 프로세스는 822로 진행한다. 822에서, 멀티플렉서(424)는 레지스터 파일로부터 제 2 ALU 연산자(128) 또는 즉시 ALU 연산자(130)로부터 선택한다. 일 실시예에서, 동작은 연산자가 레지스터 파일로부터 검색될지(예를 들어, 연산자에 대한 레지스터 파일 어드레스를 리스팅함으로써) 또는 상수인지(예를 들어, 연산자가 상수이고 레지스터 파일 어드레스가 아님)여부를 리스팅한다. 멀티플렉서들(412 및 416)(도 4) 또는 (502)(도 5)는 레지스터 파일로부터 제 1 ALU 연산자(102)를 선택한다. 산술 연산에 대해 가산될 상이한 연산자들을 선택하면, ALU 가산기(422)는 산술 연산을 실행하고 산술 연산 값을 생성하기 위해 824에서 레지스터 파일로부터의 연산자(102)로 멀티플렉서(424)로부터 선택된 연산자를 가산한다.
도 9를 참조하면, 플로우차트는 시스템들(300)(도 3) 및 (500)(도 5)이 포스트 증분 어드레스를 판독하기 위해 레지스터 파일에 액세스하지 않고 포스트 증분 어드레스를 계산하고 사용하기 위해 포스트 증분 어드레스에 대한 피드백 루프를 포함하는 방법(900)을 도시한다. 902에서 시작하면, 가산기(224)(도 3) 또는 (422)(도 5)는 레지스터 파일에 기록될 포스트 증분 어드레스를 계산한다. 프로세서는 그리고나서 계산된 포스트 증분 어드레스를 레지스터 파일에 저장할 수 있다. 포스트 증분 어드레스를 계산하면, 프로세서는 포스트 증분 어드레스가 메모리로부터 로딩될 값 또는 904에서 후속 사이클에서 사용될 값을 포인팅하는지 여부를 결정한다. 예를 들어, 포스트 증분 어드레스가 후속 명령에 대한 입력 연산자를 메모리에서 포인팅하는 경우, 입력 연산자는 후속 실행 사이클 동안 사용되기 위해 로딩될 값이다.
포스트 증분 어드레스가 로딩될 연산자를 포인팅하는 경우, 계산된 포스트 증분 어드레스는 906에서 레지스터 파일을 액세스하지 않고 데이터 캐시(232)(도 3) 또는 420(도 5)를 액세스하기 위해 사용된다. 따라서, 프로세서는 시스템(300 또는 500)에 지속되는 포스트 증분 어드레스를 사용함으로써 레지스터 파일로부터 포스트 증분 어드레스를 판독하는 것을 스킵한다. 시스템(300)(도 3)에 대하여, 가산기(224)에 의해 이전의 실행 사이클 동안 계산된 포스트 증분 어드레스는 원하는 연산자를 검색하기 위해 데이터 캐시(232)에 액세스하기 위해 멀티플렉서들(302 및 228)에 의한 선택을 위해 멀티플렉서(302)로 입력된다. 시스템(500)(도 5)에 대하여, 이전 실행 사이클 동안 가산기(422)에 의해 계산된 포스트 증분 어드레스는 원하는 연산자를 검색하기 위해 데이터 캐시(420)를 액세스하기 위해 멀티플렉서(502)에 의한 선택을 위해 멀티플렉서(502)로 입력된다.
계산된 포스트 증분 어드레스는 904에서 로딩될 연산자를 포인팅하지 않는 경우, 시스템(300)도 3 또는 (500)(도 5)는 다음 실행 사이클에서 포스트 증분 어드레스를 필요로하지 않을 수 있으며, 따라서 수행될 동작의 타입에 따라 원하는 연산자들에 대한 레지스터 파일을 액세스한다.
위의 설명된 특징들을 포함하는 예시적인 디바이스들
듀얼 함수 가산기들 및 포스트 증분 어드레스 피드백 루프들을 포함하는 시스템들은 디지털 신호 프로세서들과 같은 임의의 프로세서에 포함될 수 있다. 도 10-15의 일반 다이어그램들은 로드/저장 동작들 및 하드웨어 프리페치, 하드웨어 프리페치 및 산술 연산들을 실행하는 또는 프로세서의 레지스터 파일에 액세스 하지 않고 포스트 증분 어드레스들을 사용하는 것을 돕기위해 듀얼 함수 가산기 및/또는 포스트 증분 피드백 로프를 통합할 수 있는 예시적인 장치들을 도시한다. 다이어그램들은 예시적인 디바이스들의 프로세서에서 듀얼 함수 가산기를 포함하는 것으로서 도시된다.
도 10은 휴대 통신 디바이스(1000)의 예시적인 실시예를 도시하는 다이어그램이다. 도 10의 일반적인 다이어그램에 도시되는 바와 같이, 휴대 통신 장치는 디지털 신호 프로세서(DSP)(1004)를 포함하는 온-칩 시스템(1002)을 포함한다. 도 10의 일반 다이어그램은 또한 디지털 신호 프로세서(1004) 및 디스플레이(1008)에 연결되는 디스플레이 컨트롤러를 도시한다. 또한, 입력 디바이스는 DSP(1004)에 연결된다. 도시된 바와 같이, 메모리(1012)는 DSP(1004)에 연결된다. 또한, 코더/디코더(CODEC)(1014)는 DSP(1004)에 연결될 수 있다. 스피커(1016) 및 마이크로폰(1018)은 CODEC(1014)에 연결될 수 있다.
도 10의 일반 다이어그램은 디지털 신호 프로세서(1004) 및 무선 안테나(1022)에 연결되는 무선 컨트롤러(1020)를 추가적으로 도시한다. 특정 실시예에서, 파워 서플라이(1024)는 온-칩 시스템(602)에 연결된다. 또한, 특정 실시예에서, 도 6에 도시된 바와 같이, 디스플레이(626), 입력 디바이스(630), 스피커(1016), 마이크로폰(1018), 무선 안테나(1022), 및 파워 서플라이(1024)는 온-칩 시스템(1002)의 외부이다. 그러나, 각각의 온-칩 시스템(1002)의 컴포넌트에 연결된다. 특정 실시예에서, DSP(1004)는 이전에 설명된 바와 같이, 하드웨어 프리페치 어드레스들 및 로드/저장 어드레스들 모두, 또는 하드웨어 프리페치 어드레스들 및 산술 연산 값들 모두를 계산하기 위한 듀얼 함수 가산기(1080)를 포함한다.
도 11은 셀룰러 전화기(1100)의 예시적인 실시예를 도시한 다이어그램이다. 도시된 바와 같이, 셀룰러 전화기(1100)는 함께 연결된 디지털 기저대역 프로세서(1104) 및 아날로그 기저대역 프로세서(1106)를 포함하는 온-칩 시스템(1102)을 포함한다. 특정 실시예에서, 디지털 기저대역 프로세서(1104)는 디지털 신호 프로세서이다. 도 11의 일반 다이어그램에 도시된 바와 같이, 디스플레이 컨트롤러(1108) 및 터치스크린 컨트롤러(1110)는 디지털 기저대역 프로세서(1104)에 연결된다. 차례로, 온-칩 시스템(1102) 외부의 터치스크린 디스플레이(1112)는 디스플레이 컨트롤러(1108) 및 터치스크린 컨트롤러(1110)에 연결된다.
도 11의 일반 다이어그램은 디지털 기저대역 프로세서(1104)에 연결된, 비디오 인코더(1114)(예를 들어, 위상 교호 선(PAL) 인코더, SECAM(sequential couler a memoire) 인코더, NTSC(national television system(s) committee) 인코더) 추가적으로 도시한다. 또한, 비디오 증폭기(1116)는 비디오 인코더(1114) 및 터치스크린 디스플레이(1112)에 연결된다. 또한, 비디오 포트(1118)는 비디오 증폭기(1116)에 연결된다. 도 11의 일반 다이어그램에 도시된 바와 같이, 범용 직렬 버스(USB) 컨트롤러(1120)는 디지털 기저대역 프로세서(1104)에 연결된다. 또한 USB 포트(1122)는 USB 컨트롤러(1120)에 연결된다. 메모리(1124) 및 가입자 식별 모듈(SIM) 카드(1126)는 디지털 기저대역 프로세서(1104)에 연결된다. 또한, 도 11의 일반 다이어그램에 도시된 바와 같이, 디지털 카메라(1128)는 디지털 기저대역 프로세서(1104)에 연결될 수 있다. 예시적인 실시예에서, 디지털 카메라(1128)는 CCD(charge-coupled device) 카메라 또는 CMOS(complementary metal-oxide semiconductor) 카메라이다.
도 11의 일반 다이어그램에서 추가적으로 도시된 바와 같이, 스테레오 오디오 CODEC(1130)은 아날로그 기저대역 프로세서(1106)에 연결될 수 있다. 또한, 오디오 증폭기(1132)는 스테레오 오디오 CODEC(1130)에 연결될 수 있다. 예시적인 실시예에서, 제 1 스테레오 스피커(1134) 및 제 2 스테레오 스피커(1136)는 오디오 증폭기(1132)에 연결된다. 마이크로폰 증폭기(1138)는 또한 스테레오 오디오 CODEC(1130)에 연결될 수 있다. 추가적으로, 마이크로폰(1140)은 마이크로폰 증폭기(1138)에 연결될 수 있다. 특정 실시예에서, 주파수 변조(FM) 라디오 튜너(1142)는 스테레오 오디오 CODEC(1130)에 연결될 수 있다. 또한, FM 안테나(1144)는 FM 라디오 튜너(1142)에 연결된다. 또한, 스테레오 헤드폰들(1146)은 스테레오 오디오 CODEC(1130)에 연결될 수 있다.
도 11의 일반 다이어그램은 아날로그 기저대역 프로세서(1106)에 연결될 수 있는 무선 주파수(RF) 트랜시버(1148)를 추가적으로 도시한다. RF 스위치(1150)가 RF 트랜시버(1148) 및 RF 안테나(1152)에 연결될 수 있다. 키패드(1154)는 아날로그 기저대역 프로세서(1106)에 연결될 수 있다. 또한, 마이크로폰(1156)을 가진 모노 핸드셋이 아날로그 기저대역 프로세서(1106)에 연결될 수 있다. 또한, 바이브레이터 디바이스(1158)는 아날로그 기저대역 프로세서(1106)에 연결될 수 있다. 도 11의 일반 다이어그램은 또한 온-칩 시스템(1102)에 연결될 수 있는 파워 서플라이(1160)를 도시한다. 특정 실시예에서, 파워 서플라이(1160)는 셀룰러 전화기(1100)의 다양한 컴포넌트들에 전력을 제공하는 직류(DC) 파워 서플라이이다. 또한, 특정 실시예에서, 파워 서플라이는 충전가능한 DC 배터리 또는 AC 전력 소스에 연결된 교류(AC)로부터 DC를 유도하는 트랜스포머인 DC 파워 서플라이일 수 있다.
도 11의 일반 다이어그램에 도시된 바와 같이, 터치스크린 디스플레이(1112), 비디오 포트(1118), USB 포트(1122), 카메라(1128), 제 1 스테레오 스피커(1134), 제 2 스테레오 스피커(1136), 마이크로폰(1140), FM 안테나(1144), 스테레오 헤드폰들(1146), RF 스위치(1150), RF 안테나(1152), 키패드(1154), 모노 헤드셋(1156), 바이브레이터(1158) 및 파워 서플라이(1160)는 온-칩 시스템(1102)의 외부일 수 있다. 특정 실시예들에서, 디지털 기저대역 프로세서(1104)는 하드웨어 프리페치 어드레스들 및 산술 연산 값들 모두를 계산하는 듀얼 함수 가산기(1180) 또는 이전에 언급한 바와 같이, 하드웨어 프리페치 어드레스들 및 로드/저장 어드레스들을 포함한다.
도 12는 무선 인터넷 프로토콜(IP) 전화(1200)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 무선 IP 텔레폰(1200)은 디지털 신호 프로세서(DSP)(1204)를 포함하는 온-칩 시스템(1202)을 포함한다. 디스플레이 컨트롤러(1206)는 DSP(1204)에 연결될 수 있으며, 디스플레이(1208)는 디스플레이 컨트롤러(1206)에 연결된다. 예시적인 실시예에서, 디스플레이(1208)는 LCD(liquid crystal display)이다. 도 12는 키패드(1210)가 DSP(1204)에 연결될 수 있음을 추가적으로 도시한다.
플래시 메모리(1212)는 DSP(1204)에 연결될 수 있다. 동기화 동적 랜덤 액세스 메모리(SDRAM)(1214), 정적 랜덤 액세스 메모리(SRAM)(1216), 및 전기적 소거가능한 프로그램가능한 판독 전용 메모리(EEPROM)(1218)은 또한 DSP(1204)에 연결될 수 있다. 도 12의 일반 다이어그램은 발광 다이오드(LED)(1220)가 DSP(1204)에 연결될 수 있음을 보여준다. 추가적으로, 특정실시예에서, 음성 CODEC(1222)는 DSP(1204)에 연결될 수 있다. 증폭기(1224)는 음성 CODEC(1222)에 연결될 수 있으며, 모노 스피커(1226)는 증폭기(1224)에 연결될 수 있다. 도 12의 일반 다이어그램은 음성 CODEC(1222)에 연결되는 모노 헤드셋(1228)을 도시한다. 특정 실시예에서, 모노 헤드셋(1228)은 마이크로폰을 포함한다.
무선 로컬 영역 네트워크(WLAN) 기저대역 프로세서(1230)는 DSP(1204)에 연결될 수 있다. RF 트랜시버(1232)는 WLAN 기저대역 프로세서(1230)에 연결될 수 있으며, RF 안테나(1234)는 RF 트랜시버(1232)에 연결될 수 있다. 특정 실시예에서, 블루투스 컨트롤러(1236)는 또한 DSP(1204)에 연결될 수 있으며, 블루투스 안테나(1238)는 컨트롤러(1236)에 연결될 수 있다. 도 12의 일반 다이어그램은 또한 USB 포트(1240)가 DSP(1204)에 연결될 수 있음을 보여준다. 또한, 파워 서플라이(1242)는 온-칩 시스템(1202)에 연결되며, 무선 IP 전화(1200)의 다양한 컴포넌트들에 전력을 제공한다.
도 12의 일반 다이어그램에 도시된 바와 같이, 디스플레이(1208), 키패드(1210), LED(1220), 모노 스피커(1226), 모노 헤드셋(1228), RF 안테나(1234), 블루투스 안테나(1238), USB 포트(1240), 파워 서플라이(1242)는 온-칩 시스템(1202)의 외부일 수 있으며 온-칩 시스템(1202)의 하나 이상의 컴포넌트들에 연결된다. 특정 실시예들에서, DSP(1204)는 하드웨어 프리페치 어드레스들 및 산술 연산 값들 모두를 계산하는 듀얼 함수 가산기(1180) 또는 이전에 언급한 바와 같이, 하드웨어 프리페치 어드레스들 및 로드/저장 어드레스들을 포함한다.
도 13은 PDA(portable digital assistant)(900)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, PDA(1300)는 디지털 신호 프로세서(DSP)(1304)를 포함하는 온-칩 시스템(1302)을 포함한다. 터치스크린 컨트롤러(1306) 및 디스플레이 컨트롤러(1308)는 DSP(1304)에 연결된다. 또한, 터치스크린 디스플레이(1310)은 터치스크린 컨트롤러(1306) 및 디스플레이 컨트롤러(1308)에 연결된다. 도 13의 일반 다이어그램은 키패드(1312)가 DSP(1304)에 연결될 수 있음을 보여준다.
특정 실시예에서, 스테레오 오디오 CODEC(1326)은 DSP(1304)에 연결될 수 있다. 또한, 제 1 스테레오 증폭기(1328)는 스테레오 오디오 CODEC(1326)에 연결될 수 으며, 제 1 스테레오 스피커(1330)는 제 1 스테레오 증폭기(1328)에 연결될 수 있다. 또한, 마이크로폰 증폭기(1332)는 또한 스테레오 오디오 CODEC(1326)에 연결될 수 있으며 마이크로폰(1334)은 마이크로폰 증폭기(1332)에 연결될 수 있다. 도 13의 일반 다이어그램은 또한 제 2 스테레오 증폭기(1336)가 스테레오 오디오 CODEC(1326)에 연결될 수 있으며, 제 2 스테레오 스피커(1338)가 제 2 스테레오 증폭기(1336)에 연결될 수 있음을 보여준다. 특정 실시예에서, 스테레오 헤드폰들(1340)은 스트레오 오디오 CODEC(1326)에 연결될 수도 있다.
도 13의 일반 다이어그램은 802.11 컨트롤러(1342)가 DSP(1304)에 연결될 수 있으며, 802.11 안테나(1344)가 802.11 컨트롤러(1342)에 연결될 수 있음을 또한 도시한다. 또한, 블루투스 컨트롤러(1346)는 DSP(1304)에 연결될 수 있으며, 블루투스 안테나(1348)는 블루투스 컨트롤러(1346)에 연결될 수 있다. USB 컨트롤러(1350)는 DSP(1304)에 연결될 수 있으며, USB 포트(1352)는 USB 컨트롤러(1350)에 연결될 수 있다. 추가적으로, 스마트 카드(1354)(예를 들어, 멀티미디어 카드(MMC) 또는 보안 디지털 카드(SC))는 DSP(1304)에 연결될 수 있다. 또한, 파워 서플라이(1356)은 온-칩 시스템(1302)에 연결될 수 있으며, PDA(1300)의 다양한 컴포넌트들에 전력을 제공할 수 있다.
도 13의 일반 다이어그램에 도시된 바와 같이, 디스플레이(1310), 키패드(1312), IrDA 포트(1322), 디지털 카메라(1324), 제 1 스테레오 스피커(1330), 마이크로폰(1334), 제 2 스테레오 스피커(1338), 스테레오 헤드폰들(1340), 802.11 안테나(1344), 블루투스 안테나(1348), USB 포트(1352) 및 파워 서플라이(1350)는 온-칩 시스템(1302)의 외부일 수 있으며 온-칩 시스템의 하나 이상의 컴포넌트들에 연결된다. 특정 실시예에서, DSP(1304)는 하드웨어 프리페치 어드레스들 및 산술 연산 값들 모두를 계산하는 듀얼 함수 가산기(1380) 또는 이전에 언급한 바와 같이, 하드웨어 프리페치 어드레스들 및 로드/저장 어드레스들을 포함한다.
도 14는 오디오 파일 플레이어(예를 들어, MP3 플레이어)(1400)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 오디오 파일 플레이어(1400)는 디지털 신호 프로세서(DSP)(1404)를 포함하는 온-칩 시스템(1402)을 포함한다. 디스플레이 컨트롤러(1406)는 DSP(1404)에 연결될 수 있으며, 디스플레이(1408)는 디스플레이 컨트롤러(1406)에 연결될 수 있다. 예시적인 실시예에서, 디스플레이(1408)는 LCD(liquid crystal display)이다. 키패드(1410)는 DSP(1404)에 연결될 수 있다.
도 14의 일반 다이어그램에서 도시된 바와 같이, 플래시 메모리(1412) 및 판독 전용 메모리(ROM)(1414)는 DSP(1404)에 연결될 수 있다. 추가적으로, 특정 실시예에서, 오디오 CODEC(1416)은 DSP(1404)에 연결될 수 있다. 증폭기(1418)는 오디오 CODEC(1416)에 연결될 수 있으며, 모노 스피커(1420)는 증폭기(1418)에 연결될 수 있다. 도 14의 일반 다이어그램은 마이크로폰 입력(1422) 및 스트레오 입력(1424)이 오디오 CODEC(1416)에 연결될 수 있음을 추가적으로 지시한다. 특정 실시예에서, 스테레오 헤드폰들(1426)은 오디오 CODEC(1416)에 연결될 수 있다.
USB 포트(1428) 및 스마트 카드(1430)는 DSP(1404)에 연결될 수 있다. 추가적으로, 파워 서플라이(1432)는 온-칩 시스템(1402)에 연결될 수 있으며 오디오 파일 플레이어(1400)의 다양한 컴포넌트들에 전력을 제공할 수 있다.
도 14의 일반적인 다이어그램에 도시된 바와 같이, 디스플레이(1408), 키패드(1410), 모노 스피커(1420), 마이크로폰 입력(1422), 스트레오 입력(1424), 스트레오 헤드폰들(1426), USB 포트(1428), 및 파워 서플라이(1432)는 온-칩 시스템(1402)의 외부이며 온-칩 시스템(1402)의 하나 이상의 컴포넌트들에 연결된다. 특정 실시예에서 DSP(1404)는 하드웨어 프리페치 어드레스들 및 산술 연산 값들 모두를 계산하는 듀얼 함수 가산기(1408) 또는 이전에 언급한 바와 같이, 하드웨어 프리페치 어드레스들 및 로드/저장 어드레스들을 포함한다.
일반
여기에 개시된 발명 개념들의 실시예들의 전술한 설명은 단지 설명을 위한 것이며 여기에 설명된 발명 개념들은 개시된 특정한 형태로 제한하고자 하는 의도이거나 배타적인 의도가 아니다. 다양한 수정들 및 적용들이 여기에 설명된 발명 개념들의 범위 및 내용을 벗어남이 없이 당업자에게 명백하다.

Claims (26)

  1. 시스템으로서,
    하드웨어 프리페치(prefetch) 명령의 수신에 응답하여 하드웨어 프리페치에 대응하는 어드레스를 결정하도록 구성되고, 그리고 산술적 연산 명령의 수신에 응답하여, 산술 연산을 수행하도록 추가로 구성되는 제 1 가산기;
    상기 제 1 가산기의 출력, 제 2 가산기의 출력 및 제 1 연산자 중에 선택하도록 구성되는 제 1 제어 로직; 및
    상기 제 1 가산기에 연결되며, 어드레스, 제 2 연산자 및 제 3 연산자 중에 선택되도록 구성되는 제 2 제어 로직을 포함하는,
    시스템.
  2. 제 1 항에 있어서,
    상기 제 1 가산기에 통신가능하게(communicably) 연결된 제 2 가산기를 더 포함하고, 상기 제 2 가산기는 로드/저장 연산에 대응하는 어드레스를 결정하도록 구성되는, 시스템.
  3. 제 2 항에 있어서,
    상기 제 1 가산기 및 상기 제 1 제어 로직에 통신가능하게 연결된 제 3 제어 로직을 더 포함하고, 상기 제 2 제어 로직은 제 1 실행 사이클 동안 상기 제 1 가산기의 출력 및 제 2 실행 사이클 동안 상기 제 1 제어 로직의 출력으로부터 선택하도록 구성되는, 시스템.
  4. 제 3 항에 있어서,
    상기 제 3 제어 로직에 통신가능하게 연결되는 데이터 캐시를 더 포함하고, 상기 제 3 제어 로직은 상기 제 1 가산기의 출력 및 상기 제 1 제어 로직의 출력 중 하나를 이용하여 상기 데이터 캐시에 액세스하도록 추가로 구성되는, 시스템.
  5. 제 1 항에 있어서,
    상기 제 1 가산기는 포스트 증분(increment) 어드레스를 결정하도록 추가로 구성되는, 시스템.
  6. 제 5 항에 있어서,
    상기 제 2 가산기에 통신가능하게 연결된 바이패스(bypass)를 더 포함하고, 상기 바이패스는 제 1 실행 사이클 동안의 상기 제 1 가산기에 의한 상기 포스트 증분 어드레스 출력을 제 2 실행 사이클 동안의 상기 제 2 가산기의 입력으로 전송하도록 구성되는, 시스템.
  7. 제 3 항에 있어서,
    상기 제 1 가산기 및 상기 제 2 가산기에 통신가능하게 연결된 레지스터 파일을 더 포함하고, 상기 레지스터 파일은,
    상기 제 1 가산기의 출력을 수신하고,
    상기 제 1 제어 로직으로 상기 제 1 연산자로서 메모리 연산자를 전송하고, 그리고
    상기 제 1 제어 로직으로 상기 제 1 연산자로서 산술 논리 유닛(ALU; Arithmetic Logic Unit) 연산자를 전송하도록 구성되는, 시스템.
  8. 제 3 항에 있어서,
    상기 시스템은 멀티스레드(multithread) 프로세서로 통합되는, 시스템.
  9. 제 8 항에 있어서,
    상기 제 1 실행 사이클 동안 그리고 상기 제 2 실행 사이클 동안 상기 제 2 가산기의 출력을 저장하기 위한 로직을 더 포함하고, 상기 제 1 실행 사이클 및 상기 제 2 실행 사이클은 상기 멀티스레드 프로세서의 스레드와 연관되는, 시스템.
  10. 방법으로서,
    하드웨어 프리페치 명령의 수신에 응답하여 하드웨어 프리페치에 대응하는 어드레스를 제 1 가산기에 의해 결정하는 단계;
    산술적 연산 명령의 수신에 응답하여 산술적 연산을 상기 제 1 가산기에 의해 수행하는 단계;
    제 1 제어 로직에서, 상기 제 1 가산기의 출력, 제 2 가산기의 출력 및 제 1 연산자 중에 선택하는 단계; 및
    상기 제 1 가산기에 연결된 제 2 제어 로직에서, 어드레스, 제 2 연산자 및 제 3 연산자 중에 선택하는 단계를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 제 2 가산기에 의해 로드/저장 연산에 대한 어드레스를 결정하는 단계를 더 포함하고, 상기 제 2 가산기는 상기 제 1 가산기에 통신가능하게 연결되고, 상기 제 1 가산기의 출력은 제 1 실행 사이클 동안 선택되며, 상기 제 2 가산기의 출력은 제 2 실행 사이클 동안 선택되는, 방법.
  12. 제 11 항에 있어서,
    상기 제 1 가산기의 출력 또는 상기 제 1 제어 로직의 출력 중 하나를 이용하여 데이터 캐시에 액세스하는 단계를 더 포함하는, 방법.
  13. 제 12 항에 있어서,
    상기 제 1 가산기에 의해 포스트 증분 어드레스를 결정하는 단계를 더 포함하는, 방법.
  14. 제 13 항에 있어서,
    상기 제 2 실행 사이클 동안의 상기 제 2 가산기의 입력으로 상기 제 1 실행 사이클 동안의 상기 제 1 가산기에 의한 상기 포스트 증분 어드레스 출력을 전송하는 단계를 더 포함하는, 방법.
  15. 제 11 항에 있어서,
    상기 제 1 가산기에 통신가능하게 연결된 레지스터 파일에 의해 상기 제 1 가산기로부터 수신된 출력을 저장하는 단계를 더 포함하는, 방법.
  16. 시스템으로서,
    제 1 명령이 하드웨어 프리페치 명령인 경우 하드웨어 프리페치와 연관된 어드레스를 결정하고, 그리고 상기 제 1 명령이 산술적 연산 명령인 경우 산술적 연산으로부터의 값을 결정하기 위한 수단;
    상기 제 1 명령이 하드웨어 프리페치 명령인 경우 하드웨어 프리페이와 연관된 어드레스를 결정하고 그리고 상기 제 1 명령이 산술적 연산 명령인 경우 산술적 연산으로부터의 값을 결정하기 위한 수단의 출력, 제 2 가산기의 출력 및 제 1 연산자 중에 선택하기 위한 제 1 수단; 및
    어드레스, 제 2 연산자 및 제 3 연산자 중에 선택하기 위한 제 2 수단 ― 상기 선택하기 위한 제 2 수단은 상기 결정하기 위한 수단에 연결됨 ― 을 포함하는,
    시스템.
  17. 제 16 항에 있어서,
    로드/저장 연산과 연관된 어드레스를 결정하도록 구성되는 상기 제 2 가산기를 더 포함하는, 시스템.
  18. 제 17 항에 있어서,
    상기 선택하기 위한 제 1 수단에 응답하여, 데이터 캐시에 액세스하기 위한 수단을 더 포함하는, 시스템.
  19. 제 17 항에 있어서,
    상기 결정하기 위한 수단은 포스트 증분 어드레스를 결정하기 위한 수단을 더 포함하는, 시스템.
  20. 제 19 항에 있어서,
    상기 제 2 실행 사이클 동안의 상기 제 2 가산기의 입력으로 상기 제 1 실행 사이클 동안의 상기 포스트 증분 어드레스를 결정하기 위한 수단에 의한 상기 포스트 증분 어드레스 출력을 전송하기 위한 수단을 더 포함하는, 시스템.
  21. 제 2 항에 있어서,
    상기 제 1 제어 로직은 멀티플렉서이고, 상기 제 1 가산기의 출력은 상기 산술적 연산의 결과 및 상기 프리페치 명령에 대응하는 상기 어드레스 중 하나이고, 상기 제 2 가산기의 출력은 상기 로드/저장 연산에 대응하는 어드레스이며, 그리고 상기 제 1 연산자는 메모리 연산자 및 산술적 로직 유닛(ALU) 연산자 중 하나 이상인, 시스템.
  22. 제 9 항에 있어서,
    상기 멀티스레드 프로세서는 제 1 클록 사이클 동안 상기 제 2 가산기를 동작하도록, 제 2 클록 사이클 동안 상기 제 1 제어 로직을 동작하도록 그리고 제 3 클록 사이클 동안 상기 제 1 가산기를 동작하도록 구성되는, 시스템.
  23. 프로그램 코드를 포함하는 컴퓨터-판독가능 매체로서,
    상기 코드는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    하드웨어 프리페치 명령의 수신에 응답하여 하드웨어 프리페치에 대응하는 어드레스를 결정하게 하고;
    산술적 연산 명령의 수신에 응답하여 산술적 연산을 수행하게 하고;
    제 1 가산기 연산의 출력, 제 2 가산기 연산의 출력 및 제 1 연산자 중에 선택하게 하고 ― 상기 제 1 가산기 연산은 상기 하드웨어 프리페치 명령의 수신에 응답하여 상기 하드웨어 프리페치에 대응하는 어드레스를 결정하는 것 및 상기 산술적 연산 명령의 수신에 응답하여 상기 산술적 연산을 수행하는 것을 포함함 ― ; 그리고
    어드레스, 제 2 연산자 및 제 3 연산자 중에 선택하게 하는,
    컴퓨터-판독가능 매체.
  24. 제 23 항에 있어서,
    상기 제 2 가산기 연산은 로드/저장 연산에 대한 어드레스를 결정하는 것을 포함하고, 상기 제 1 가산기 연산의 출력은 제 1 실행 사이클 동안에 선택되고, 그리고 제2 가산기 연산의 출력은 제 2 실행 사이클 동안에 선택되는,
    컴퓨터-판독가능 매체.
  25. 제 24 항에 있어서,
    상기 프로그램 코드는 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 상기 제 1 가산기 연산의 출력, 상기 제 2 가산기 연산의 출력 및 상기 제 1 연산자 중에 선택의 결과 또는 상기 제 1 가산기 연산의 출력을 이용하여 데이터 캐시에 액세스하게 하는,
    컴퓨터-판독가능 매체.
  26. 제 25 항에 있어서,
    상기 제 1 가산기 연산은 포스트 증분 어드레스를 결정하는 것을 더 포함하는, 컴퓨터-판독가능 매체.
KR1020107022131A 2008-03-04 2009-02-23 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기 KR101239272B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/041,694 2008-03-04
US12/041,694 US8185721B2 (en) 2008-03-04 2008-03-04 Dual function adder for computing a hardware prefetch address and an arithmetic operation value
PCT/US2009/034839 WO2009111198A1 (en) 2008-03-04 2009-02-23 A dual function adder for computing a hardware prefetch address and an arithmetic operation value

Publications (2)

Publication Number Publication Date
KR20100134005A KR20100134005A (ko) 2010-12-22
KR101239272B1 true KR101239272B1 (ko) 2013-03-06

Family

ID=40577902

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107022131A KR101239272B1 (ko) 2008-03-04 2009-02-23 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기

Country Status (7)

Country Link
US (1) US8185721B2 (ko)
EP (1) EP2260382A1 (ko)
JP (1) JP2011513858A (ko)
KR (1) KR101239272B1 (ko)
CN (1) CN101960422A (ko)
TW (1) TW200951806A (ko)
WO (1) WO2009111198A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190377580A1 (en) * 2008-10-15 2019-12-12 Hyperion Core Inc. Execution of instructions based on processor and data availability
WO2010043401A2 (en) 2008-10-15 2010-04-22 Martin Vorbach Data processing device
US20180173631A1 (en) * 2016-12-21 2018-06-21 Qualcomm Incorporated Prefetch mechanisms with non-equal magnitude stride
US10824692B2 (en) 2018-10-12 2020-11-03 Google Llc Low-power adder circuit

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396604A (en) * 1991-07-12 1995-03-07 Hewlett-Packard Company System and method for reducing the penalty associated with data cache misses

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59189448A (ja) * 1983-04-12 1984-10-27 Nec Corp オペランドバツフア
JPS60186936A (ja) * 1984-03-05 1985-09-24 Hitachi Ltd プログラマブルコントロ−ラ
JPH0789319B2 (ja) * 1985-04-22 1995-09-27 株式会社日立製作所 デ−タ処理装置における先行制御装置
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
JPS63157235A (ja) * 1986-12-12 1988-06-30 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン コンピユータ・システムの制御装置
JP2504156B2 (ja) * 1989-01-25 1996-06-05 日本電気株式会社 情報処理装置
US4965762A (en) * 1989-09-15 1990-10-23 Motorola Inc. Mixed size radix recoded multiplier
US5778423A (en) * 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5278548A (en) * 1991-04-11 1994-01-11 The United States Of America As Represented By The Secretary Of The Navy Buffered feedthrough crossbar switch
JPH0821003B2 (ja) * 1992-08-07 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・キャッシュ・システム用の加算器/ハッシュ回路
US5878245A (en) * 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
SG52303A1 (en) * 1993-12-20 1998-09-28 Motorola Inc Arithmetic engine
US5649144A (en) * 1994-06-13 1997-07-15 Hewlett-Packard Co. Apparatus, systems and methods for improving data cache hit rates
DE69529047D1 (de) * 1994-10-05 2003-01-16 Ibm Festkomma-Dividiervorrichtung ohne Rückstellung
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor
US6003119A (en) * 1997-05-09 1999-12-14 International Business Machines Corporation Memory circuit for reordering selected data in parallel with selection of the data from the memory circuit
US6209076B1 (en) * 1997-11-18 2001-03-27 Intrinsity, Inc. Method and apparatus for two-stage address generation
EP0953898A3 (en) * 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor
US7299342B2 (en) * 2005-05-24 2007-11-20 Coresonic Ab Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement
US20070198815A1 (en) * 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396604A (en) * 1991-07-12 1995-03-07 Hewlett-Packard Company System and method for reducing the penalty associated with data cache misses

Also Published As

Publication number Publication date
US20090228688A1 (en) 2009-09-10
WO2009111198A1 (en) 2009-09-11
US8185721B2 (en) 2012-05-22
CN101960422A (zh) 2011-01-26
EP2260382A1 (en) 2010-12-15
KR20100134005A (ko) 2010-12-22
JP2011513858A (ja) 2011-04-28
TW200951806A (en) 2009-12-16

Similar Documents

Publication Publication Date Title
JP5280521B2 (ja) 分岐予測における使用のためのマルチモードレジスタファイル
US7584233B2 (en) System and method of counting leading zeros and counting leading ones in a digital signal processor
JP5722389B2 (ja) キャッシュライン置換のためのシステムおよび方法
US8688761B2 (en) Arithmetic logic and shifting device for use in a processor
US20060230253A1 (en) Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment
JP2010538398A (ja) マルチステージデータ処理パイプラインにおける命令実行システム及び方法
KR101239272B1 (ko) 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기
JP2015043235A (ja) データ値を変換して記憶するための命令を用いた代理メモリアクセスエージェントの構成
KR20070118705A (ko) 레지스터 파일에 액세스하기 위해 프리디케이트 값을이용하는 시스템 및 방법

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
LAPS Lapse due to unpaid annual fee