KR101496597B1 - 반도체 칩 상에서 구현되는 벡터 논리 감소 연산 - Google Patents

반도체 칩 상에서 구현되는 벡터 논리 감소 연산 Download PDF

Info

Publication number
KR101496597B1
KR101496597B1 KR1020137008144A KR20137008144A KR101496597B1 KR 101496597 B1 KR101496597 B1 KR 101496597B1 KR 1020137008144 A KR1020137008144 A KR 1020137008144A KR 20137008144 A KR20137008144 A KR 20137008144A KR 101496597 B1 KR101496597 B1 KR 101496597B1
Authority
KR
South Korea
Prior art keywords
vector
mixing
logic
circuit
logic circuit
Prior art date
Application number
KR1020137008144A
Other languages
English (en)
Other versions
KR20130064794A (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 KR20130064794A publication Critical patent/KR20130064794A/ko
Application granted granted Critical
Publication of KR101496597B1 publication Critical patent/KR101496597B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

반도체 프로세서가 기술된다. 반도체 프로세서는 논리 감소 명령을 수행하기 위한 논리 회로를 포함한다. 논리 회로는 혼합 벡터를 형성하기 위해 벡터의 엘리먼트들을 혼합하기 위한 혼합 회로를 가진다. 논리 회로는 또한 상기 혼합 벡터 및 상기 벡터에 대해 벡터 논리 연산을 수행하기 위한 벡터 논리 회로를 포함한다.

Description

반도체 칩 상에서 구현되는 벡터 논리 감소 연산{VECTOR LOGICAL REDUCTION OPERATION IMPLEMENTED ON A SEMICONDUCTOR CHIP}
본 발명의 분야는 일반적으로 컴퓨터 시스템들에 관한 것이고, 더 구체적으로는 벡터 논리 감소를 수행하기 위한 프로세서 아키텍쳐에 관한 것이다.
프로세서 아키텍쳐들의 2가지 타입들: "스칼라" 및 "벡터"는 컴퓨터 과학 분야에서 널리 인지된다. 스칼라 프로세서는 데이터의 단일 세트에 대해 연산들을 수행하는 명령들을 실행하도록 설계되는 반면, 벡터 프로세서는 데이터의 다수의 세트들에 대해 연산들을 수행하는 명령들을 실행하도록 설계된다. 도 1a 및 1b는 스칼라 프로세서와 벡터 프로세서 사이의 기본적 차이점을 보여주는 비교 예를 제시한다.
도 1a는 단일 오퍼랜드 세트 A 및 B가 단수형(singular)(또는 "스칼라") 결과 C를 생성하기 위해 함께 AND되는(즉, AB=C)인 스칼라 AND 명령의 예를 도시한다. 반면, 도 1b는 2개의 오퍼랜드 세트들 A/B 및 D/E이 각각 벡터 결과 C, F를 동시에 생성하기 위해 병렬로 함께 AND되는(즉 AB=C 및 DE=F) 벡터 AND 명령의 예를 도시한다.
당해 기술분야에 공지된 바와 같이, 통상적으로, 입력 오퍼랜드들 및 출력 결과 모두는 전용 레지스터들에 저장된다. 예를 들어, 많은 명령들은 2개의 입력 오퍼랜드들을 가질 것이다. 따라서, 2개의 별개의 입력 레지스터들은 각각의 입력 오퍼랜드들을 일시적으로 저장하기 위해 사용될 것이다. 또한, 이들 동일한 명령들은 제3(결과) 레지스터에 일시적으로 저장될 출력 값을 생성할 것이다. 각각의 입력(101a,b 및 102a,b) 및 결과 레지스터들(103a, b)이 도 1a 및 1b에서 관측된다. 특히, "스칼라" 대 "벡터" 특성화들은 용이하게 구별가능하다.
즉, 도 1a의 스칼라 설계의 입력 레지스터들(101a 및 102a)이 오직 스칼라 값들(각각 A 및 B)만을 유지하는 것이 관측된다. 마찬가지로, 도 1a의 스칼라 설계의 결과 레지스터(103a)가 또한 스칼라 값(C)만을 유지하는 것이 관측된다. 반면, 도 1b의 벡터 시스템의 입력 레지스터들(101b 및 102b)이 벡터들(레지스터(101b) 내의 A, D 및 레지스터(102b) 내의 B, E)을 유지하는 것이 관측된다. 마찬가지로, 도 1b의 벡터 시스템의 결과 레지스터(103b)가 또한 벡터 값(C,F)을 유지하는 것이 관측된다. 용어의 문제로서, 도 1b의 벡터 시스템의 레지스터들(101b, 102b 및 103b) 각각의 컨텐츠는 전체적으로 "벡터"로서 참조될 수 있으며, 벡터 내의 개별 스칼라 값들 각각은 "엘리먼트"로서 참조될 수 있다. 따라서, 예를 들어, 레지스터(101b)는 "엘리먼트" A 및 "엘리먼트" D로 구성된 "벡터" A, D를 저장하는 것으로서 관측된다.
기반 프로세서가 스칼라 또는 벡터 설계인지의 여부와는 무관하게, 일부 컴퓨터 시스템들은 단일 벡터의 엘리먼트들에 대한 논리 연산을 실제로 요구한다. 예를 들어, 8개 입력 AND 연산(도 2a에 도시된 논리도)의 경우, 8개의 별도의 입력들(A, B, C, D, E, F, G, H)은 최종 스칼라 결과(R)를 생성하기 위해 함께 AND된다. 스칼라 프로세서들의 경우, 루프 연산들은 스칼라 AND 명령(도 2b에 도시된 의사-코드)의 7번의 반복에 대한 결과를 누산하는 루프 연산이 소프트웨어에 기록되어야 한다. 따라서, 스칼라 프로세서의 경우, 다수의 반복들이 계산을 수행하기 위해 스칼라 AND 명령의 다수의 실행들을 요구한다.
반면, 벡터 프로세서는 논리 연산을 완전히 수행하도록 설계되는 단일 명령의 실행을 통해 이러한 연산을 구현하는 예상을 고려(entertain)할 수 있다.
본 발명은 동일한 참조번호들이 유사한 엘리먼트들을 표시하는 첨부 도면들의 그림들에서 제한이 아닌 예로서 예시된다.
도 1a 및 1b는 스칼라 및 벡터 논리 연산들을 도시하는 도면이다.
도 2a 및 2b는 8개 입력 AND 함수의 논리도 및 스칼라 AND 명령을 가지는 대응하는 의사 코드를 도시하는 도면이다.
도 3은 논리 감소 연산을 수행하기 위한 반도체 프로세서에 의해 수행될 프로세스를 도시하는 도면이다.
도 4는 도 3의 프로세스의 제1 실시예를 도시하는 도면이다.
도 5는 도 4의 프로세스의 제2 실시예를 도시하는 도면이다.
도 6a는 도 5의 프로세스의 제3 실시예를 도시하는 도면이다.
도 6b는 혼합 연산들이 동일한 실시예를 도시하는 도면이다.
도 7은 도 3의 프로세스를 수행할 수 있는 전자 회로의 설계를 도시하는 도면이다.
도 8은 반도체 프로세서의 다이어그램을 도시하는 도면이다.
도 9는 컴퓨팅 시스템의 다이어그램을 도시하는 도면이다.
도 3은 벡터 명령들을 실행할 수 있는 프로세서 상에서, 또한 "논리 감소"로서 참조되는, 벡터의 엘리먼트들에 대한 논리 연산을 수행하기 위한 방법을 도시한다. 도 4는 도 3의 방법에 따른 8개 입력 AND 함수의 예를 도시한다. 도 3의 방법에 대한 독자의 이해를 보조하기 위한 도 3 및 4 모두에 대한 참조가 이루어질 것이다. 도 4의 예에서, 벡터 입력(400)은 출력 결과 R = ABCDEFG를 생성하기 위해 8개 입력 AND에 의해 함께 AND될 엘리먼트들(A, B, C, D, E, F, G, H)을 가진다.
도 3은 벡터 명령들을 실행할 수 있는 프로세서 상에서, 또한 "논리 감소"로서 참조되는, 벡터의 엘리먼트들에 대한 논리 연산을 수행하기 위한 방법을 도시한다. 도 4는 도 3의 방법에 따르는 8개 입력 AND 함수의 예를 도시한다. 도 3의 방법에 대한 독자의 이해를 보조하기 위해 도 3 및 4 모두에 대한 참조가 이루어질 것이다. 도 4의 예에서, 벡터 입력(400)은 출력 결과 R = ABCDEFG를 생성하기 위해 8개 입력 AND에 의해 함께 AND될 엘리먼트들(A, B, C, D, E, F, G, H)을 가진다.
도 3의 방법에 따라, 제1 혼합 연산은 제1 혼합 벡터(402)를 생성하기 위해 벡터 입력(400)에 대해 수행된다(301, 401). 도 4의 예에서, 제1 혼합 연산(401)은 이웃하는 엘리먼트들의 쌍들의 위치가 삽화(420)에 도시된 패턴에서 관측되는 바와 같이 스와프되는(swap) 듀얼 혼합 연산이다. 감소 논리 연산의 벡터 논리 연산은 이후 입력 벡터들로서 벡터 입력(400) 및 제1 혼합 벡터(402)를 사용하여 수행된다(303, 403). 도 4의 예에서, 논리 감소가 8개 입력 AND 함수에 대응하므로, 논리 연산(303, 403)은 벡터 AND 연산에 대응한다. 그러나, 다른 논리 감소 및 교환 연산(예를 들어, OR, "가산"(ADD) 및 "곱셈"(MUL))을 가지는 대응하는 논리 연산들이 도 3의 방식에 따르도록 이루어져야 한다는 점에 주목할 가치가 있다.
논리 연산(303, 403)의 결과는 제1 중간 결과(404)를 생성한다. 제1 혼합 연산과 상이한 제2 혼합 연산(305, 405)은 제2 혼합 벡터(406)를 생성하기 위해 제1 중간 결과(404)에 대해 수행된다. 도 4의 예에서, 제2 혼합 연산(405)은 이웃 엘리먼트들의 위치가 삽화(430)에 도시된 패턴에서 관측되는 바와 같이 스와프되는 단일 혼합 연산이다. 감소의 논리 연산의 또다른 벡터 논리 연산이, 이후 벡터 입력들로서 제1 중간 결과(404) 및 제2 혼합 벡터(406)를 사용하여 수행된다(307, 407).
또한, 도 4의 예가 논리 AND 감소에 대응하므로, 도 4의 논리 연산(407)은 벡터 AND 연산에 대응한다. 제2 벡터 논리 연산(307, 407)의 결과는 제2 중간 결과(408)를 생성한다. 감소 논리 연산의 논리 연산은 이후 감소 결과(410)에 대한 추구(sought)를 생성하기 위해 제2 중간 결과(408)의 선택된 엘리먼트들에 대해 수행된다(309, 409). 도 4에서, 제2 중간 결과의 선택된 엘리먼트들은 제2 중간 결과(408)의 제1 및 제8 위치에서의 엘리먼트들에 대응한다. 그러나, 제2 중간 결과(408)의 조사는 제1 내지 제4 엘리먼트들 중 임의의 하나, 및 제5 내지 제8 엘리먼트들 중 임의의 하나의 선택이 정확한 감소 결과를 생성할 것임을 나타낸다.
마지막 논리 연산(309, 409)을 수행하기 위한 특수화된 논리 및/또는 마이크로 코드 연산들의 설계를 방지하기 위해, 일부 포맷팅 단계들은 제2 중간 결과(408)에 대해 수행될 수 있고, 따라서, 단계들(303, 403 및 307, 407)에 사용된 동일한 벡터 논리 연산은 연산(309, 409)(즉, 도 4의 예의 경우, 벡터 AND 연산)을 구현하기 위해 사용된다. 예를 들어, 다른 선택된 엘리먼트와 동일한 벡터 위치에 배치되고, 나머지 벡터 엘리먼트 값들을 0으로 채우는 선택된 엘리먼트들 중 하나에 따르는 벡터가 구성될 수 있다(예를 들어, 도 4의 예에서, 구성된 벡터[0, 0, 0, 0, 0, 0, 0, ACBD]를 생성하기 위해 벡터(408)를 포맷팅하는 것). 구성된 벡터 및 제2 중간 결과(408)에 대해 벡터 AND 연산을 수행하는 것은 선택된 오퍼랜드가 구성된 벡터에서 발견되는(즉, 전술된 구성된 벡터 예 R = 0, 0, 0, 0, 0, 0, 0, ACBDHFGE를 사용하여) 출력 벡터의 동일한 벡터 위치에서 원하는 논리 감소 결과(410)를 생성한다.
상이한 혼합 연산들의 시퀀스 및 혼합 연산들 자체가 실시예들마다 달라질 수 있다는 점에 주목하는 것이 적절하다. 예를 들어, 도 5는 듀얼 혼합 패턴(520) 전에 수행되는 단일 혼합 패턴(530)을 가지는 도 4의 예에 대응한다. 도 4 및 5의 예를 비교하면, 사용가능한 항목들은 올바른 결과를 획득하기 위해 제2 중간 벡터(508)에서 생성된다.
또한 위에서 논의된 단일 및 듀얼 혼합 패턴들(420/520, 430/530) 이외의 다른 혼합 패턴들이 또한 사용될 수 있다는 점에 주목하는 것이 또한 적절하다. 예를 들어, 도 6은 이웃하는 다섯 개(quintuplets of)의 엘리먼트들의 위치가 삽화(640)에서 관측되는 바와 같은 패턴에서 스와프되는 쿼드 혼합 패턴을 사용하는 16 엘리먼트 벡터에 대한 논리 AND 감소의 예를 도시한다.
또한, 혼합 패턴들 자체는 상이할 필요가 없다. 예를 들어, 도 6b는 동일한 혼합 패턴이 연산을 통해 엔드-대-엔드로 이용되는 논리 AND 감소를 도시한다.
임의의 실시예에 대해, 당업자는 마지막 벡터 논리 연산 이전에 적절한 혼합 패턴, 제2 중간 벡터의 대응하는 선택 기준 및 임의의 연관된 포맷팅을 결정할 수 있을 것이다. 또한, 위의 예들이 AND 감소들을 강조했지만, 동일한 원리들이 또한 논리 OR, 가산 및 곱셈과 같은 가환 연산을 가지는 임의의 연산들을 실행하기 위해 적용될 수 있다.
위에서 논의된 바와 같이, 논리 감소 알고리즘은 반도체 프로세서의 명령 세트 내의 명령으로서 구현될 수 있다. 도 7은 프로세서의 실행 유닛들 내의 논리 회로로서 구현될 수 있는 가능한 데이터 경로를 도시한다. 도 7의 회로도에 따라, 논리 감소를 통해 논리적으로 감소될 엘리먼트들을 가지는 입력 벡터가 레지스터(701)에 저장된다. 레지스터의 출력(701)은 제1 벡터 논리 연산(예를 들어, 벡터 AND, 벡터 OR, 또는 벡터 XOR)을 수행하는 제1 벡터 논리 회로(704)의 입력 및 제1 혼합 회로(702)의 입력으로 흐른다. 제1 혼합 회로(702)의 출력은 제1 혼합 레지스터(703) 내로 흐른다. 제1 혼합 레지스터(703)의 출력은 제1 벡터 논리 회로(704) 내로 흐른다. 따라서, 제1 벡터 논리 회로(704)는 레지스터(701)로부터의 제1 입력 벡터 및 레지스터(703)로부터의 제2 입력 벡터를 수용한다.
제1 중간 값 레지스터(705)는 제1 벡터 논리 회로(704)에 의해 생성되는 출력 벡터를 유지한다. 레지스터(705)의 컨텐츠는 이후 제2 벡터 논리 연산을 수행하는 제2 벡터 논리 회로(708) 및 제2 혼합 논리 회로(706)에 제공된다. 제2 혼합 논리 회로(706)의 출력은 자신의 출력을 제2 벡터 논리 회로(708)에 제공하는 제2 혼합 레지스터(707)에 제공된다. 제2 벡터 논리 회로(708)는 자신의 출력을 제2 중간 레지스터(709)에 제공한다. 선택 및 포맷팅 논리(710)는 제3 벡터 논리 회로(711)에 의해 수행되는 최종 벡터 논리 연산에 대한 오퍼랜드들로서 요구되는 제2 중간 레지스터(709) 내의 벡터의 엘리먼트들을 선택한다(그리고 이들 중 임의의 것을 포맷할 수 있다). 제3 벡터 논리 회로(711)의 결과는 최종 결과(논리 감소)에 대응하고, 결과 레지스터(712)에 저장된다. 도 3의 알고리즘을 구현하기 위해, 혼합 회로, 중간 벡터 레지스터 및 벡터 논리 회로(미도시)의 또다른 스테이지가 도 7의 회로에 추가로 통합될 수 있다는 점에 주목한다.
도 7의 컴포넌트들 중 일부를 사용하면서 여전히 논리 감소를 수행하는 다양한 대안적인 논리 설계들이 EH한 가능하다. 예를 들어, 논리 감소를 위한 회로가 (예를 들어, 복수의 마이크로-연산들 없이) "직선" 데이터 경로에서 논리 감소 명령의 실행에 전용인 경우, 레지스터들(703, 705, 707, 709) 중 임의의 것이 제거될 수 있다. 반면, 논리 감소 명령이 다수의 대응하는 마이크로-연산들을 이용하여 마이크로-코드를 통해 수행될 경우, 도 7의 다수의 엘리먼트들이 제거될 수 있는 반면, 다른 것들은 재사용될 수 있다.
예를 들어, 제1 및 제2 벡터 논리 연산들은, 레지스터(705) 및 레지스터(707)의 각각의 출력들이 논리(704)에 대한 입력들로서 피드백되는 경우 (벡터 논리(708)가 제거되도록) 벡터 논리(704)를 이용하여 수행될 수 있다(여기서, 마이크로-연산 제어 멀티플렉서들 및 다른 데이터 경로 제어 회로들이 알고리즘에 따라 데이터를 적절하게 이동시킨다는 점이 이해된다). 벡터 논리(711)는, 선택 및 포맷팅 논리(710)가 레지스터(705)로부터의 입력을 수용하고, 자신의 출력을 벡터 논리(704)(또한, 이것은 제3 및 최종 논리 연산을 수행함)에 다시 제공하는 경우, 추가로 제거될 수 있다.
제1 및 제2 혼합 회로들(702, 706)은 또한 자신의 각각의 채널 선택 입력 값들의 상태에 기초하여 정확한 혼합 패턴들 사이에서 스위칭하는 멀티플렉서들 및/또는 디멀티플렉서들의 공통 뱅크로 병합될 수 있다. 즉, 멀티플렉서들 및/또는 디멀티플렉서들의 채널 선택 입력들은 제1 혼합 패턴에 대응하는 제1 입력 값을 수신하고, 제2 혼합 패턴에 대응하는 제2 입력 값을 수신한다. 멀티플렉서들 및/또는 디멀티플렉서들은 원하는 혼합 전송을 실행하기 위해 채널 선택 값들에 응답하여 데이터 경로들을 형성한다.
확장된 구현예에서, 레지스터(701)에 저장된 입력 벡터의 엘리먼트들 모두보다 더 적은 엘리먼트들은, 논리 감소를 위해 고려되지 않은 해당 엘리먼트들에 대한 입력 벡터 내에 시작값을 강제하는 (레지스터(701)에 선행하는 또는 후속하는) 포맷팅 회로를 이용하여 논리적으로 감소될 수 있다. 예를 들어, 논리 감소가 입력 벡터 A, B, C, D, E, F, G, H 중 오직 엘리먼트들 A, B, C, D의 논리 감소일 경우, 포맷팅 논리는, 벡터 A, B, C, D[모두 1], [모두 1], [모두 1], [모두 1]는 감소를 위한 입력 벡터로서 프로세싱되도록, 엘리먼트들 E, F, G 및 H 각각에 대해 모두 1의 값들을 삽입할 것이다. OR 및 XOR 논리 감소에 대해서는, 시작값은 모두 1이 아닌 모두 0에 대응한다.
위에서 도 7을 참조하여 논의된 바와 같이, 알고리즘은 반도체 프로세서의 실행 유닛들에 의해 실행되는 벡터 논리 감소 명령 내에서 구현될 수 있다.
도 8은 복합 명령 세트(CISC), 단축 명령 세트(RISC) 및 매우 긴 명령 워드(VLIW)와 같은 많은 상이한 타입들의 프로세싱 코어 아키텍쳐들을 기술하는 것으로 간주되는 일반 프로세싱 코어(800)를 도시한다. 도 8의 일반 프로세싱 코어(800)는: 1) (예를 들어, 캐시 및/또는 메모리로부터) 명령들을 꺼내오는 패치 유닛(803); 2) 명령들을 디코딩하는 디코딩 유닛(804); 3) 실행 유닛들(806)에 대한 명령 발행의 타이밍 및/또는 순서를 결정하는 스케쥴 유닛(805)(명백하게, 스케쥴러는 선택적임); 4) 명령들을 실행하는 실행 유닛들(806)(통상적인 명령 실행 유닛들은 브랜치 실행 유닛들, 정수 산술 실행 유닛들(예를 들어, ALU들), 플로팅 포인트 산술 실행 유닛들(예를 들어, FPU들) 및 메모리 액세스 실행 유닛들을 포함함); 및 5) 명령의 성공적 완료를 의미하는 폐기(retirement) 유닛(807)을 포함한다. 명백하게, 프로세싱 코어(800)는 마이크로코드(808)를 사용하거나 또는 사용하지 않을 수 있다.
마이크로 코딩된 프로세서들의 경우, 마이크로-연산들은 통상적으로, 프로세서가 구성되는 반도체 칩 내의 비휘발성 기계 판독가능 매체(예를 들어, 판독 전용 메모리(ROM))에 저장되며, 프로세서 내의 실행 유닛들로 하여금 명령에 의해 호출된 원하는 함수를 수행하게 한다.
논리 감소 명령을 가지는 프로세서는 또한 다양한 컴퓨팅 시스템들로 구현될 수 있다. 도 9는 컴퓨팅 시스템(예를 들어, 컴퓨터)의 실시예를 도시한다. 도 9의 예시적인 컴퓨팅 시스템은: 1) 벡터 논리 감소 명령을 포함하도록 설계될 수 있는 하나 이상의 마이크로프로세서들(901); 2) 메모리 제어 허브(MCH)(902); 3) 시스템 메모리(903)(이것의 상이한 타입들, 예를 들어, DDR RAM, EDO RAM 등이 존재한다); 4) 캐시(904); 5) I/O 제어 허브(ICH)(905); 6) 그래픽 프로세서(906); 7)디스플레이/스크린(907)(그것의 상이한 타입들, 예를 들어, 음극선관(CRT), 박막 트랜지스터(TFT), 액정 디스플레이(LCD), DPL 등이 존재한다); 8) 하나 이상의 I/O 디바이스들(908)을 포함한다.
하나 이상의 프로세서들(901)은 컴퓨팅 시스템이 구현하는 어떠한 소프트웨어 루틴들이든 실행하기 위해 명령들을 실행한다. 명령들은 빈번하게, 데이터에 대해 수행되는 일부 종류의 연산을 포함한다. 데이터 및 명령들 모두는 시스템 메모리(903) 및 캐시(904)에 저장된다. 캐시(904)는 통상적으로 시스템 메모리(903)보다 더 짧은 레이턴시 시간들을 가지도록 설계된다. 예를 들어, 캐시(904)는 프로세서(들)와 동일한 실리콘 칩(들) 상으로 집적되고 그리고/또는 더 빠른 SRAM 셀들로 구성될 수 있는 반면, 시스템 메모리(903)는 더 느린 DRAM 셀들로 구성될 수 있다. 시스템 메모리(903)와 반대로 캐시(904) 내에 더 빈번하게 사용되는 명령들 및 데이터를 저장하도록 의도함으로써, 컴퓨팅 시스템의 전체적 성능 효율이 개선된다.
시스템 메모리(903)는 의도적으로 컴퓨팅 시스템 내의 다른 컴포넌트들에 대해 사용가능하게 된다. 예를 들어, 다양한 인터페이스들로부터 컴퓨팅 시스템(예를 들어, 키보드 및 마우스, 프린터 포트, LAN 포트, 모뎀 포트 등)으로 수신되거나 또는 컴퓨팅 시스템의 내부 저장 엘리먼트(예를 들어, 하드 디스크 드라이브)로부터 검색되는 데이터는 소프트웨어 프로그램의 구현예에서 하나 이상의 프로세서(들)(901)에 의해 이들이 동작되기 전에 시스템 메모리(903)에 종종 일시적으로 큐잉된다. 유사하게, 소프트웨어 프로그램이 결정한 데이터는 컴퓨팅 시스템 인터페이스들 중 하나를 통해 컴퓨팅 시스템으로부터 외부 엔티티에 송신되거나, 내부 저장 엘리먼트에 저장되어야 하고, 전송되거나 저장되기 전에, 시스템 메모리(903)에 종종 일시적으로 큐잉된다.
ICH(905)는 시스템 메모리(903) 및 그것의 적절한 대응하는 컴퓨팅 시스템 인터페이스(및 컴퓨터 시스템이 그렇게 설계되는 경우 내부 저장 디바이스) 사이에서 그러한 데이터가 적절하게 전달됨을 보장하는 역할을 한다. MCH(902)는 서로에 대해 시간상으로 근접하게 발생할 수 있는 프로세서(들)(901), 인터페이스들 및 내부 저장 엘리먼트들 간의 시스템 메모리(903) 액세스에 대한 다양한 경쟁 요청들을 관리하는 역할을 한다.
하나 이상의 I/O 디바이스들(908)은 또한 통상적 컴퓨팅 시스템에서 구현된다. I/O 디바이스들은 일반적으로 컴퓨팅 시스템(예를 들어, 네트워킹 어댑터)으로 및/또는 컴퓨팅 시스템(예를 들어, 네트워킹 어댑터)으로부터; 또는 컴퓨팅 시스템 내의 대용량 비휘발성 저장소(예를 들어, 하드 디스크 드라이브)에 대해, 데이터를 전송하는 역할을 담당한다. ICH(905)는 그 자신과 관측된 I/O 디바이스들(908) 간의 양방향 포인트-대-포인트 링크들을 가진다.
전술된 명세서에서, 본 발명은 이것의 특정적 예시적인 실시예들에 대해 기술되었다. 그러나, 이들에 대한 다양한 수정들 및 변경들이, 첨부된 청구항들에 설명된 바와 같은 본 발명의 더 넓은 사상 및 범위로부터의 이탈 없이 이루어질 수 있다는 점이 명백할 것이다. 명세서 및 도면들은, 따라서, 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다.

Claims (20)

  1. 반도체 프로세서에서 논리 감소 명령을 실행하는 단계
    를 포함하고, 상기 실행하는 단계는:
    다수의 엘리먼트들을 가지는 벡터를 레지스터에 저장하는 단계;
    혼합(swizzle) 회로를 이용하여 상기 벡터의 엘리먼트들을 혼합하여 제1 혼합 벡터를 형성하는 단계;
    상기 벡터 및 상기 제1 혼합 벡터에 대해 벡터 논리 회로를 이용하여 벡터 논리 연산을 수행하여 제1 중간 벡터를 형성하는 단계;
    혼합 회로를 이용하여 상기 제1 중간 벡터의 엘리먼트들을 혼합하여 제2 혼합 벡터를 형성하는 단계;
    벡터 논리 회로를 이용하여 상기 벡터 논리 연산을 수행하여 제2 중간 벡터를 형성하는 단계; 및
    상기 제2 중간 벡터의 엘리먼트들 중 적어도 하나의, 그러나 모두는 아닌 엘리먼트들에 대해 논리 연산을 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 벡터 논리 연산 및 상기 논리 연산은 벡터 AND 연산 및 AND 연산인 방법.
  3. 제1항에 있어서,
    상기 벡터 논리 연산 및 상기 논리 연산은 벡터 OR 연산 및 OR 연산인 방법.
  4. 제1항에 있어서,
    상기 벡터 논리 연산 및 상기 논리 연산은 벡터 XOR 연산 및 XOR 연산인 방법.
  5. 제1항에 있어서,
    상기 제2 중간 벡터의 엘리먼트들 중 상기 적어도 하나의, 그러나 모두는 아닌 엘리먼트들에 대해 수행되는 상기 논리 연산은 벡터 논리 연산인 방법.
  6. 제1항에 있어서,
    상기 제1 혼합 벡터를 형성하는 상기 혼합 회로 및 상기 제2 혼합 벡터를 형성하는 상기 혼합 회로는 동일한 혼합 회로인 방법.
  7. 반도체 프로세서로서,
    논리 감소 명령을 수행하기 위한 논리 회로
    를 포함하고, 상기 논리 회로는:
    혼합 벡터를 형성하기 위해 벡터의 엘리먼트들을 혼합하기 위한 혼합 회로; 및
    상기 벡터 및 상기 혼합 벡터에 대해 벡터 논리 연산을 수행하기 위한 벡터 논리 회로
    를 포함하는 반도체 프로세서.
  8. 제7항에 있어서,
    상기 논리 회로는 상기 벡터 논리 연산에 의해 생성되는 결과적인 중간 벡터를 저장하는 레지스터에 커플링되는 제2 혼합 회로를 더 포함하고, 상기 제2 혼합 논리 회로는 상기 중간 벡터를 혼합하기 위한 것인 반도체 프로세서.
  9. 제7항에 있어서,
    상기 혼합 회로는 멀티플렉서들을 포함하는 반도체 프로세서.
  10. 제7항에 있어서,
    상기 혼합 회로는 디멀티플렉서들을 포함하는 반도체 프로세서.
  11. 제7항에 있어서,
    상기 벡터 논리 회로의 출력으로부터 상기 벡터 논리 회로의 입력까지의 데이터-경로를 더 포함하는 반도체 프로세서.
  12. 제11항에 있어서,
    상기 논리 감소 명령을 구현하기 위해 사용되는 마이크로-연산들을 저장하기 위한 ROM을 더 포함하는 반도체 프로세서.
  13. 제11항에 있어서,
    상기 벡터 논리 회로의 출력에 커플링되어 제2 혼합 벡터를 생성하는 제2 혼합 회로 - 상기 제2 혼합 회로는 상기 벡터 논리 회로로부터 중간 값 벡터를 혼합하기 위한 것임 -; 및
    상기 벡터 논리 회로 및 상기 제2 혼합 회로의 출력에 커플링되어 상기 제2 혼합 벡터 및 상기 중간 값 벡터에 대해 벡터 논리 연산을 수행하는 제2 벡터 논리 회로
    를 더 포함하는 반도체 프로세서.
  14. 제11항에 있어서,
    상기 벡터 논리 연산은:
    벡터 AND;
    벡터 OR;
    벡터 XOR
    중 하나인 반도체 프로세서.
  15. 컴퓨팅 시스템으로서,
    반도체 프로세서;
    그래픽 프로세서; 및
    상기 그래픽 프로세서에 커플링된 액정 디스플레이
    를 포함하고, 상기 반도체 프로세서는 논리 감소 명령을 수행하기 위한 논리 회로를 가지고, 상기 논리 회로는:
    혼합 벡터를 형성하기 위해 입력 벡터의 엘리먼트를 혼합하기 위한 혼합 회로; 및
    상기 입력 벡터 및 상기 혼합 벡터에 대한 벡터 논리 연산을 수행하기 위한 벡터 논리 회로
    를 포함하는 컴퓨팅 시스템.
  16. 제15항에 있어서,
    상기 논리 회로는 상기 벡터 논리 연산에 의해 생성된 결과적인 중간 벡터를 저장하는 레지스터에 커플링되는 제2 혼합 회로를 더 포함하고, 상기 제2 혼합 논리 회로는 상기 중간 벡터를 혼합하기 위한 것인 컴퓨팅 시스템.
  17. 제15항에 있어서,
    상기 벡터 논리 회로의 출력으로부터 상기 벡터 논리 회로의 입력까지의 데이터 경로를 더 포함하는 컴퓨팅 시스템.
  18. 제17항에 있어서,
    상기 논리 감소 명령을 구현하기 위해 사용되는 마이크로-연산들을 저장하기 위한 ROM을 더 포함하는 컴퓨팅 시스템.
  19. 제15항에 있어서,
    상기 벡터 논리 회로의 출력에 커플링되어 제2 혼합 벡터를 생성하는 제2 혼합 회로 - 상기 제2 혼합 회로는 상기 벡터 논리 회로로부터 중간 값 벡터를 혼합하기 위한 것임 -; 및
    상기 제2 혼합 회로 및 상기 벡터 논리 회로의 출력에 커플링되어 상기 제2 혼합 벡터 및 상기 중간 값 벡터에 대한 벡터 논리 연산을 수행하는 제2 벡터 논리 회로
    를 더 포함하는 컴퓨팅 시스템.
  20. 제15항에 있어서,
    상기 벡터 논리 연산은:
    벡터 AND;
    벡터 OR;
    벡터 XOR
    중 하나인 컴퓨팅 시스템.
KR1020137008144A 2010-09-24 2011-09-24 반도체 칩 상에서 구현되는 벡터 논리 감소 연산 KR101496597B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,485 2010-09-24
US12/890,485 US9141386B2 (en) 2010-09-24 2010-09-24 Vector logical reduction operation implemented using swizzling on a semiconductor chip
PCT/US2011/053153 WO2012040665A2 (en) 2010-09-24 2011-09-24 Vector logical reduction operation implemented on a semiconductor chip

Publications (2)

Publication Number Publication Date
KR20130064794A KR20130064794A (ko) 2013-06-18
KR101496597B1 true KR101496597B1 (ko) 2015-02-26

Family

ID=45871862

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137008144A KR101496597B1 (ko) 2010-09-24 2011-09-24 반도체 칩 상에서 구현되는 벡터 논리 감소 연산

Country Status (8)

Country Link
US (1) US9141386B2 (ko)
JP (1) JP5628435B2 (ko)
KR (1) KR101496597B1 (ko)
CN (2) CN103109262B (ko)
DE (1) DE112011103211T5 (ko)
GB (1) GB2498466A (ko)
TW (1) TWI531886B (ko)
WO (1) WO2012040665A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120078931A1 (en) 2010-09-29 2012-03-29 International Business Machines Corporation Methods for managing ownership of redundant data and systems thereof
CN112463219A (zh) 2011-04-01 2021-03-09 英特尔公司 向量友好指令格式及其执行
KR101918464B1 (ko) * 2011-09-14 2018-11-15 삼성전자 주식회사 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US20130311530A1 (en) * 2012-03-30 2013-11-21 Victor W. Lee Apparatus and method for selecting elements of a vector computation
US10013253B2 (en) * 2014-12-23 2018-07-03 Intel Corporation Method and apparatus for performing a vector bit reversal
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
KR102659495B1 (ko) 2016-12-02 2024-04-22 삼성전자주식회사 벡터 프로세서 및 그 제어 방법
US10108581B1 (en) 2017-04-03 2018-10-23 Google Llc Vector reduction processor
GB2574817B (en) 2018-06-18 2021-01-06 Advanced Risc Mach Ltd Data processing systems
US20240004647A1 (en) * 2022-07-01 2024-01-04 Andes Technology Corporation Vector processor with vector and element reduction method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR920700425A (ko) * 1988-03-18 1992-02-19 로날드 이. 마이릭 벡터 처리 시스템의 명령실행방법 및 그 장치
KR20090042320A (ko) * 2006-08-18 2009-04-29 콸콤 인코포레이티드 스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791551A (en) * 1985-02-11 1988-12-13 Analog Devices, Inc. Microprogrammable devices using transparent latch
US4839845A (en) * 1986-03-31 1989-06-13 Unisys Corporation Method and apparatus for performing a vector reduction
JPH0644271B2 (ja) * 1986-08-30 1994-06-08 日本電気株式会社 演算装置
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JPH0728786A (ja) * 1993-07-15 1995-01-31 Hitachi Ltd ベクトルプロセッサ
DE4430195B4 (de) * 1993-12-13 2004-09-23 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Verfahren zur Auswertung von Booleschen Ausdrücken
JP2001128067A (ja) 1999-10-26 2001-05-11 Natl Inst Of Advanced Industrial Science & Technology Meti 電子デバイス、並列処理方法、および記録媒体
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US7136953B1 (en) * 2003-05-07 2006-11-14 Nvidia Corporation Apparatus, system, and method for bus link width optimization
GB2409064B (en) 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
US20080139301A1 (en) * 2006-12-11 2008-06-12 Ole-Ivar Holthe System and method for sharing gaming experiences
US7953684B2 (en) 2007-01-31 2011-05-31 International Business Machines Corporation Method and system for optimal parallel computing performance
US8760450B2 (en) * 2007-10-30 2014-06-24 Advanced Micro Devices, Inc. Real-time mesh simplification using the graphics processing unit
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US7904700B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
WO2009144681A1 (en) 2008-05-30 2009-12-03 Nxp B.V. Vector shuffle with write enable
US7814303B2 (en) 2008-10-23 2010-10-12 International Business Machines Corporation Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR920700425A (ko) * 1988-03-18 1992-02-19 로날드 이. 마이릭 벡터 처리 시스템의 명령실행방법 및 그 장치
KR20090042320A (ko) * 2006-08-18 2009-04-29 콸콤 인코포레이티드 스칼라/벡터 명령들을 사용하여 데이터를 처리하는 시스템 및 방법

Also Published As

Publication number Publication date
GB2498466A (en) 2013-07-17
KR20130064794A (ko) 2013-06-18
GB201304303D0 (en) 2013-04-24
JP2013541098A (ja) 2013-11-07
DE112011103211T5 (de) 2013-07-04
CN103109262B (zh) 2016-10-26
CN105740201A (zh) 2016-07-06
CN105740201B (zh) 2018-12-11
WO2012040665A3 (en) 2012-07-26
WO2012040665A2 (en) 2012-03-29
US20120079233A1 (en) 2012-03-29
JP5628435B2 (ja) 2014-11-19
TWI531886B (zh) 2016-05-01
US9141386B2 (en) 2015-09-22
CN103109262A (zh) 2013-05-15
TW201229715A (en) 2012-07-16

Similar Documents

Publication Publication Date Title
KR101496597B1 (ko) 반도체 칩 상에서 구현되는 벡터 논리 감소 연산
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US11307873B2 (en) Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10445234B2 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10445098B2 (en) Processors and methods for privileged configuration in a spatial array
US10515046B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10467183B2 (en) Processors and methods for pipelined runtime services in a spatial array
US10515049B1 (en) Memory circuits and methods for distributed memory hazard detection and error recovery
US20190303297A1 (en) Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US20190205284A1 (en) Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
KR20240011204A (ko) 행렬 연산 가속기의 명령어들을 위한 장치들, 방법들, 및 시스템들
JP5491071B2 (ja) 命令融合演算装置および命令融合演算方法
CN107102844B (zh) 超级乘加(超级madd)指令
CN103109261B (zh) 用于通用逻辑操作的方法和设备
EP3757814A1 (en) Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator
JP2019197531A (ja) 連鎖タイル演算を実施するためのシステムおよび方法
CN112579159A (zh) 用于矩阵操作加速器的指令的装置、方法和系统
CN111767079A (zh) 用于矩阵操作加速器的转置指令的装置、方法和系统
CN111752608A (zh) 用于控制复数乘法累加电路的设备和方法
US20210200540A1 (en) Apparatuses, methods, and systems for fused operations in a configurable spatial accelerator
US7437544B2 (en) Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
JP4444305B2 (ja) 半導体装置
CN114675883A (zh) 用于对齐矩阵操作加速器瓦片的指令的装置、方法和系统

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 6