KR20150101995A - 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛 - Google Patents

벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛 Download PDF

Info

Publication number
KR20150101995A
KR20150101995A KR1020157014146A KR20157014146A KR20150101995A KR 20150101995 A KR20150101995 A KR 20150101995A KR 1020157014146 A KR1020157014146 A KR 1020157014146A KR 20157014146 A KR20157014146 A KR 20157014146A KR 20150101995 A KR20150101995 A KR 20150101995A
Authority
KR
South Korea
Prior art keywords
functional unit
vector
sorting
instruction
elements
Prior art date
Application number
KR1020157014146A
Other languages
English (en)
Other versions
KR101703797B1 (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 KR20150101995A publication Critical patent/KR20150101995A/ko
Application granted granted Critical
Publication of KR101703797B1 publication Critical patent/KR101703797B1/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/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
    • 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/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • 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
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

명령어 실행 파이프라인의 기능 유닛을 구비한 장치가 설명된다. 기능 유닛은, 벡터 소팅 명령어를 위한 벡터 소팅 트리를 구현하기 위해서 네트워크 회로에 연결된 복수의 비교-및-교환 회로를 구비한다. 비교-및-교환 회로들 각각은 한 쌍의 입력들을 비교하는 각각의 비교 회로를 가진다. 비교-및-교환 회로들 각각은 2개의 입력 중 큰 것을 나타내기 위한 동일 측면의 제1 출력, 및 2개의 입력 중 적은 것을 나타내기 위한 동일 측면의 제2 출력을 가지고, 상기 비교 회로는 또한 기능 유닛의 프리픽스 최소 및/또는 프리픽스 덧셈 명령어의 실행을 지원한다.

Description

벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛{FUNCTIONAL UNIT HAVING TREE STRUCTURE TO SUPPORT VECTOR SORTING ALGORITHM AND OTHER ALGORITHMS}
본 발명은 일반적으로 컴퓨팅 과학에 관한 것으로, 특히 복수의 상이한 명령어를 소팅 네트워크를 이용하여 수행할 수 있는 기능 유닛에 관한 것이다.
벡터 명령어 실행 파이프라인
도 1은 반도체칩 상에서 논리 회로로 구현되는 프로세싱 코어(100)의 하이 레벨 도를 도시한다. 프로세싱 코어는 파이프라인(101)을 포함한다. 파이프라인은 각각이 프로그램 코드 명령어를 완전히 실행하는데 필요한 다단계 프로세스에서 특정 단계를 수행하도록 설계되는 다수의 스테이지로 이루어져 있다. 이들은 전형적으로 적어도 다음의 스테이지들을 포함한다: (1) 명령어 페치 및 디코드; (2) 데이터 페치; (3) 실행; (4) 라이트백(write-back). 실행 스테이지는 동일한 명령어에 의해 식별되고 이전의 스테이지(예컨대, 상기 단계 (2))에서 페치된 데이터에 대해 다른 이전의 스테이지(들)(예컨대, 상기 단계 (1))에서 페치되고 디코딩된 명령어에 의해 식별된 특정 연산을 수행한다. 연산되는 데이터는 전형적으로 (범용) 레지스터 저장 공간(102)으로부터 페치된다. 연산의 완료시에 생성되는 새로운 데이터는 또한 전형적으로 (예컨대, 상기 스테이지 (4)에서) 레지스터 저장 공간에 "라이트백"된다.
실행 스테이지와 연관된 논리 회로는 전형적으로 다수의 "실행 유닛" 또는 "기능 유닛"(103_1 내지 103_N)으로 이루어져 있고, 이들 각각은 그 자신의 고유한 연산들의 서브셋을 수행하도록 설계된다(예컨대, 제1 기능 유닛은 정수 수학 연산을 수행하고, 제2 기능 유닛은 부동 소수점 명령어를 수행하며, 제3 기능 유닛은 캐시/메모리로부터/로 로드/저장 연산을 수행하고, 기타 등등). 모든 기능 유닛들에 의해 수행되는 모든 연산들의 모음은 프로세싱 코어(100)에 의해 지원되는 "명령어 세트"에 대응한다.
프로세서 아키텍처들의 2가지 유형들이 컴퓨터 과학의 분야에서 널리 인지된다: "스칼라" 및 "벡터". 스칼라 프로세서는 단일 데이터 세트에 대해 연산을 수행하는 명령어를 실행하기 위해 설계되고, 반면에, 벡터 프로세서는 다수의 데이터 세트에 대해 연산을 수행하는 명령어를 실행하기 위해 설계된다. 도 2a 및 2b는 스칼라 프로세서와 벡터 프로세서 사이의 기본적인 차이를 입증하는 비교예를 나타낸다.
도 2a는 단일 피연산자 세트 A 및 B가 함께 AND 연산되어 단일(또는 "스칼라") 결과 C를 생성하는 스칼라 AND 명령어의 예를 나타낸다(즉, A.AND.B=C). 이와 달리, 도 2b는 2개의 피연산자 세트 A/B 및 D/E가 각각 AND 연산되어 벡터 결과 C, F를 생성하는 벡터 AND 명령어의 예를 나타낸다(즉, A.AND.B=C 및 D.AND.E=F). 용어로서, "벡터"는 다수의 "엘리먼트"를 갖는 데이터 엘리먼트이다. 예를 들어, 벡터 V = Q, R, S, T, U는 5개의 상이한 엘리먼트: Q, R, S, T 및 U를 갖는다. 예시적인 벡터 V의 "사이즈"는 5이다(왜냐하면, 5개의 엘리먼트를 갖기 때문임).
도 1은 또한 범용 레지스터 공간(102)과 상이한 벡터 레지스터 공간(107)의 존재를 나타낸다. 구체적으로, 범용 레지스터 공간(102)은 명목상 스칼라 값을 저장하는데 사용된다. 이에 따라, 실행 유닛들 중 임의의 유닛이 스칼라 연산을 수행할 때, 이들은 명목상 범용 레지스터 저장 공간(102)으로부터 호출되는 피연산자를 사용한다(그리고 결과를 여기에 라이트백한다). 이와 달리, 실행 유닛들 중 임의의 유닛이 벡터 연산을 수행할 때, 이들은 명목상 벡터 레지스터 공간(107)으로부터 호출되는 피연산자를 사용한다(그리고 결과를 여기에 라이트백한다). 메모리의 상이한 영역들이 마찬가지로 스칼라 값 및 벡터 값의 저장을 위해 할당될 수 있다.
또한, 기능 유닛들(103_1 내지 103_N)로의 각자의 입력 및 그로부터의 출력에 마스킹 논리(104_1 내지 104_N 및 105_1 내지 105_N)가 존재하는 것에 유의하자. 다양한 구현에서, 벡터 연산에서는, 이들 계층 중 하나만이 실제로 구현된다 - 비록 이것이 엄격한 요건은 아닐지라도(도 1에 도시되지 않았지만, 생각할 수 있는 바로는, 벡터 연산이 아니라 스칼라 연산만을 수행하는 실행 유닛들이 임의의 마스킹 계층을 가질 필요가 없다). 마스킹을 이용하는 임의의 벡터 명령어에 대해, 입력 마스킹 논리(104_1 내지 104_N) 및/또는 출력 마스킹 논리(105_1 내지 105_N)는 어느 엘리먼트들이 벡터 명령어에 대해 효과적으로 연산되는지를 제어하기 위해 사용될 수 있다. 여기서, 마스크 벡터가 (예컨대, 벡터 레지스터 저장 공간(107)으로부터 판독된 입력 피연산자 벡터와 함께) 마스크 레지스터 공간(106)으로부터 판독되고, 마스킹 논리(104, 105) 계층들 중 적어도 하나에 제시된다.
벡터 프로그램 코드를 실행하는 동안, 각각의 벡터 명령어는 전체 데이터 워드를 요구할 필요가 없다. 예를 들어, 일부 명령어를 위한 입력 벡터들은 단지 8개 엘리먼트일 수 있고, 다른 명령어를 위한 입력 벡터들은 16개 엘리먼트일 수 있으며, 다른 명령어를 위한 입력 벡터들은 32개 엘리먼트일 수 있다. 마스킹 계층들(104/105)은 그러므로 명령어들에 걸쳐 상이한 벡터 사이즈들에 영향을 미치기 위해 특정 명령어에 적용하는 완전 벡터 데이터 워드의 엘리먼트들의 세트를 식별하는데 사용된다. 통상적으로, 각각의 벡터 명령어마다, 특정 벡터 연산에 대한 올바른 엘리먼트들의 세트를 "인에이블"시키기 위해, 마스크 레지스터 공간(106)에서 유지되는 특정 마스크 패턴이 명령어에 의해 호출되고, 마스크 레지스터 공간으로부터 페치되며, 마스크 계층들(104/105) 중 어느 하나 또는 둘 다에 제공된다.
본 발명은 유사한 참조번호가 유사한 엘리먼트를 지칭하는 첨부 도면들에 한정이 아니라 예로서 예시된다.
도 1(종래 기술)은 명령어 실행 파이프라인의 일 실시예를 도시한다;
도 2a-b(종래 기술)는 벡터 처리의 일례를 도시한다;
도 3(종래 기술)은 종래의 소팅 알고리즘에 관한 것이다;
도 4는 단일 명령어에서 도 3의 소팅 알고리즘을 구현하기 위한 명령어 실행 논리 회로의 일 실시예를 도시한다;
도 5는 비교-및-교환 회로를 도시한다;
도 6은 도 4의 회로에 의해 구현되는 도 3의 소팅 트리를 도시한다;
도 7은 도 4의 회로를 이용하여 프리픽스 덧셈 및/또는 프리픽스 곱셈 명령어를 구현하기 위한 다른 트리를 도시한다;
도 8은 덧셈 기능과 합산-및-교환 기능을 구현하기 위한 기능성이 포함되도록 개선된 도 5의 비교-및-교환 회로를 도시한다;
도 9는 곱셈 기능과 곱셈-및-교환 기능을 구현하기 위한 기능성이 포함되도록 개선된 도 8의 비교-및-교환 회로를 도시한다;
도 10은 프로세서의 일 실시예를 도시한다.
종래의 소트 알고리즘
도 3은 정돈되지 않은 데이터의 세트를 정돈된 세트로 소팅하는 종래의 소프트웨어 프로세스를 도시한다. 도 3을 참고하면, 정돈되지 않은 입력 세트(301)는 소팅된 출력 세트(302)를 형성하기 위해서 도 3에 도시된 소팅 프로세스에 의해 순서화된다. 소팅된 세트는 일부 기준에 따라 랭킹된(ranked) 값들의 세트이다. 도 3의 프로세스에 도시된 가장 기본적인 기준은 수치 랭킹이다. 즉, 한 세트 내의 엘리먼트들은 서로에 대한 수치 값들을 기초로 소팅된다. 도 3에서 알 수 있듯이, 소팅된 출력 세트(302)의 엘리먼트들은 수치 순으로 랭킹되어 있는데, 좌측에 더 작은 값들이 정렬되고 우측에 더 큰 값들이 정렬되어 있다.
소팅된 출력 세트(302)는 도 3에 간략하게 나타낸 절차의 시퀀스에 따라서 소팅되지 않은 입력 세트(301)로부터 생성된다. 여기서, 각각의 수평 바는 2개의 연결된 값이 비교되는 "비교-및-교환" 연산을 나타내고, 2개의 비교된 엘리먼트 중 작은 것은 수평 연결로부터 생겨난 최좌측(leftmost) 다운스트림 경로로 라우팅되고, 반면에 2개의 비교된 엘리먼트 중 큰 것은 수평 연결로부터 최우측(rightmost) 다운스트림 경로로 라우팅된다.
지금까지 상술한 소팅 알고리즘은 임의의 중간 세트 또는 최종 세트에서 새롭게 계산된 각각의 엘리먼트가 다수의 CPU 명령어를 소비하도록 소프트웨어로 구현되었다. 이에 따라, 전체 알고리즘을 계산하는 것은 수천 개는 아닐지라도 수백 개의 CPU 명령어를 소비할 수 있다.
소팅 알고리즘 및 다른 알고리즘들을 실행할 수 있는 기능 유닛
소팅되지 않은 세트로부터 소팅된 세트의 구성을 크게 가속하기 위해서, 도 4는 단일 명령어를 이용하여 소팅 알고리즘을 구현하는 명령어 실행 파이프라인 내의 기능 유닛(400)을 위한 논리 회로 설계의 일 실시예를 도시한다. 이 기능 유닛은 또한 이하 보다 상세히 설명되는 바와 같이 추가 명령어를 실행할 수 있다.
도 4에서 알 수 있듯이, 기능 유닛은 제1(선행) 스위칭 네트워크(402) 및 제2(후행) 스위칭 네트워크(403)로서 본 명세서에서 언급되는 한 쌍의 스위칭 네트워크들 사이에 비교-및-교환 회로들의 뱅크(401)를 포함한다. 시작 입력 벡터는 기능 유닛(407)의 a0 내지 a15 입력들에서 제시된다. 통상의 기술자는 본 명세서에 설명된 기능 유닛의 기능성이 비교-및-교환 회로 뱅크(401)에 선행하거나 또는 후행하는 단일 스위칭 네트워크를 이용하여 성공적으로 구현될 수 있음을 인식할 것이다. 그러나, 기능 유닛(400)의 상당히 복잡한 스위칭 작업의 시각화를 용이하게 하기 위하여, 2개의 스위칭 네트워크를 갖는 일 실시예가 이하 본 명세서에서 언급될 것이다.
레지스터 뱅크(404)가 제2 스위칭 네트워크(403)의 다운스트림에 연결된다. 판독 전용 메모리(ROM) 회로(405)가 제1 및 제2 스위칭 네트워크들(402, 403)에 대한 제어 신호를 생성하는 마이크로-코드를 포함하여, 채널 라인들(a0 내지 a15) 상의 값들은 비교-및-교환 회로 뱅크(401) 내의 적당한 비교-및-교환 회로에 라우팅된다. 레지스터 뱅크(404)는 제1 스위칭 네트워크(402)에 루프백 방식으로 공급한다.
도 4의 특정 실시예에는, 비교-및-교환 회로 뱅크(401) 내에 8개의 교환 및 비교 회로(406_1 내지 406_8)가 있다. 도 5는 각각의 비교-및-교환 회로의 설계(506)의 일 실시예를 도시한다. 도 5에서 알 수 있듯이, 단일 비교-및-교환 회로(506)는 2개의 입력 및 2개의 출력을 가진다. 비교 회로(507)는 2개의 입력을 비교하여 어느 입력이 큰지를 결정한다. 그 후 2개의 입력 중에서 어느 입력이 큰지를 기초로 출력 루트가 선택된다. 도 5의 특정 실시예에서, 더 큰 입력 값은 최우측 출력(508)에 제시되고, 더 작은 입력 값은 최좌측 출력(507)에 제시된다.
기능 유닛은 그 후 도 6의 타이밍도에 따라서 도 3의 소팅 트리를 구현한다. 도 6은 기능 유닛의 다수의 클록 사이클 사이에 분산된 소팅 트리의 스테이지들을 갖는 도 3의 소팅 트리를 기본적으로 도시한다. 더욱이, 도 6은 각각의 클록 사이클 동안 제1 및 제2 스위칭 네트워크들(402, 403)의 상태를 설명한다. 예컨대, 제2 클록 사이클에서, 제1 비교-및-교환 회로는 a0 및 a2 채널들(제1 네트워크)로부터 입력을 수신하고 이들(제2 네트워크)에 대한 출력들을 생성하며, 제2 비교-및-교환 회로는 a1 및 a3 채널들로부터 입력을 수신하고 이들에 대한 출력을 생성하며, 기타 등등. 임의의 스테이지에 대한 활용되는 비교-및-교환 회로들의 최대 수가 8(클록 사이클들 1, 4, 7, 9 및 10) 임에 유의하자. 그 결과, 비교-및-교환 뱅크(401) 내에 8개의 비교-및-교환 회로들(406_1 내지 406_8)이 있다.
각각의 새로운 클록 사이클에 따라, 레지스터 뱅크(404) 내의 값들은 제1 스위칭 네트워크(402)로 향하고, 제1 스위칭 네트워크(402)는 비교-및-교환될 값들의 세트들을 비교-및-교환 뱅크(401) 내의 비교-및-교환 회로들 중 특정한 회로에 라우팅한다. 각각의 비교-및-교환 회로는 대응하는 비교-및-교환 기능을 이들 각각의 값들의 쌍에 대해 수행한다. 값들의 쌍은 그 후 제2 스위칭 네트워크(403)에 의해 레지스터 뱅크(404)의 적당한 채널로 라우팅된다.
적당한 전파 지연이 제1 스위칭 네트워크(402), 비교-및-교환 뱅크(401) 및 제2 스위칭 네트워크(403)를 통하여 경과한 후, 새롭게 생성된 값들은 레지스터 뱅크(404)로 래칭된다. 그 후 프로세스는 제1 및 제2 네트워크들의 상태(즉, 네트워크들 내의 확립된 루트들의 패턴)가 전형적으로 구 클록 사이클에서 신 클록 사이클로 변경되어 다음 클록 사이클에 대해 반복된다. 여기서, ROM 회로(405)로부터의 마이크로코드는 각각의 새로운 클록 사이클 동안 제1 및 제2 스위칭 네트워크들(402, 403)에게 새로운 제어 신호를 제시하는 것을 포함하여 전체 플로우를 제어한다.
도 3에서 알 수 있듯이, 16개 엘리먼트 벡터는 10개의 클록 사이클에서 완전히 처리될 수 있다. 더욱이, 도 3의 특정 소팅 패턴은 또한 2, 4, 6 및 8의 벡터 사이즈에 대해 적합하다. 따라서, 도 6의 특정 명령어는 사이즈 2, 4, 6, 8 또는 16의 벡터를 처리할 수 있다(통상의 기술자는 훨씬 더 큰 벡터 사이즈들, 예를 들어 32, 64 등이 가능함을 인식할 것이다). 여기서, 예를 들어, 사이즈 16의 벡터는 채널들(a0 내지 a15) 각각에 대한 값을 제시할 것이며, 사이즈 8의 벡터는 채널들(a0 내지 a7) 각각에 대한 값을 제시할 것이며, 기타 등등. 특히, 필요한 클록 사이클의 수는 입력 벡터의 사이즈에 따라 커진다. 전술한 바와 같이, 10개의 클록 사이클은 16개 엘리먼트를 갖는 벡터를 소팅하는데 소비된다. 그에 반해서, 처음 6개의 클록 사이클만이 8개의 엘리먼트를 갖는 벡터를 소팅하는데 필요하며, 처음 3개의 클록 사이클만이 4개의 엘리먼트를 갖는 벡터를 소팅하는데 필요하고, 제1 클록 사이클만이 2개의 엘리먼트를 갖는 벡터를 소팅하는데 필요하다.
16 미만의 벡터 사이즈를 고려하는 한, 트리의 대칭성에 기인하여, 기능 유닛은 다수의 벡터를 병렬로 처리할 수 있다. 즉, 기능 유닛은 처음 6개의 클록 사이클 동안 병렬로 8개의 엘리먼트 벡터의 쌍을 소팅할 수 있다(제1 입력 벡터는 채널들(a0 내지 a7)을 소비하며, 제2 입력 벡터는 채널들(a8 내지 a15)을 소비한다). 유사하게, 기능 유닛은 처음 3개의 클록 사이클 동안 사이즈 4의 4개의 입력 벡터를 동시에 소팅할 수 있거나(입력 벡터들은 채널들(a0-a3; a4-a7; a8-a11; a12-a15)을 점유하도록 배열됨), 또는 제1 클록 사이클 동안 사이즈 2의 8개의 입력 벡터를 동시에 소팅할 수 있다(입력 벡터들은 채널들(a0-a1; a2-a3; a4-a5; a6-a7; a8-a9; a10-a11; a12-a13; a14-a15)을 점유하도록 배열됨).
따라서, 기능 유닛에 의해 지원되는 다수의 소팅 명령어를 통해 ROM(405) 내에서 네트워크 제어 신호의 상당한 "재사용"이 있게 된다. 바꾸어 말하면, 기능 유닛은 (각각의 클록 사이클마다 하나씩) ROM(405)에 저장된 스위칭 네트워크 제어 신호들의 단일 세트와, (예를 들어, 입력 벡터(들)의 사이즈의 함수로서) 몇 개의 클록 사이클들이 명령어를 위해 필요한지를 나타내는 정보만을 가지고 전술한 다양한 소팅 기능을 수행할 수 있다. 일 실시예에서, 명령어 포맷은 입력 벡터(들)의 사이즈를 특정하는 오피코드(opcode) 또는 즉시 피연산자(immediate operand)를 포함한다. 입력 벡터(들)의 사이즈에 기초하여, ROM(405) 내의 마이크로코드는 몇 개의 클록 사이클들이 명령어를 실행하는데 필요한지 결정할 수 있다.
소팅 기능들과 별도로, 도 5의 비교-및-교환 회로에 부가된 일부 추가적인 기능성과 결합된 다른 기능들(소팅 기능 외에)를 구현하기 위한 추가적인 트리 설정이 ROM(405)에 저장될 수 있다.
도 7은 프리픽스 덧셈 또는 프리픽스 곱셈 연산 중 어느 하나 또는 모두를 구현하기 위한 트리 설정을 도시한다. 프리픽스 덧셈 및 프리픽스 곱셈 연산은 공지되어 있다. 프리픽스 덧셈 연산은 입력 벡터 전체에 걸쳐 수평 방향으로 값들을 더하고, 엘리먼트 위치로 이어지는 합산에 대응하는 각각의 엘리먼트 위치에서의 즉시 값을 결과로서 제시할 것이다. 예를 들어, 입력 벡터 1 2 3 4에서, 프리픽스 덧셈 기능은 0 1 3 6 10일 것이다. 도 7에 도시된 특정 소팅 트리 패턴은 공지되어 있다. 그러나 이런 패턴의 구현은 소팅 알고리즘을 구현하는데 또한 사용되는 마이크로 코드 트리 설정과 함께 새로운 것이라 믿어진다.
도 7의 처음 4개의 클록 사이클에서 각각의 수평선은 2개의 입력 값을 수신하며 최우측 입력상에 2개의 입력 값의 합산을 제시하는 우측 방식 덧셈 기능(rightwise addition function)에 대응한다. 제5 클록 사이클 동안 최우측 채널(a15)은 0의 값으로 클리어된다. 클록 사이클 6, 7, 8 및 9에서 각각의 수평선은 2개의 입력 값을 수신하며 2개의 입력 값의 합산을 최우측 출력에 제공하고 최우측 입력을 최좌측 출력에 제공하는 합산-및-교환 기능에 대응한다.
도 8은 우측 방식 덧셈 기능 및 합산-및-교환 기능 모두를 포함하도록 개선된 도 5의 비교-및-교환 회로를 도시한다. 여기서, 회로(806)에 대한 선택 입력(810)은 어느 기능(비교-및-교환; 우측 방식 덧셈; 합산-및-교환)이 구현되어야 하는지를 결정한다. 도 8에서 알 수 있듯이, 개선된 회로(806)는 우측 방식 덧셈 및 합산-및-교환 기능을 구현하기 위한 가산기(811)를 포함한다. 선택 입력(810)은 마이크로코드에 의해 제공되며, 도 7의 제1 내지 제4 클록 사이클 동안 우측 방식 덧셈 기능을 선택할 것이며, 제6 내지 제8 클록 사이클 동안 합산-및-교환 기능을 선택할 것이다.
도 9는 프리픽스 곱셈 기능이 지원될 수 있도록 개선된 도 8의 회로를 도시한다. 여기서, 도 7과 동일한 트리가 구현될 수 있으나, 각각의 스테이지에서 수행되는 기능은 덧셈이 아닌 곱셈에 대응한다. 이에 따라 도 9의 회로는 2개의 추가 기능을 지원한다: 2개의 입력 값의 곱이 최우측 출력에 배치되는 우측 방식 곱셈, 및 2개의 입력의 곱이 최우측 출력에 제공되며 최우측 입력이 최좌측 출력에 제공되는 곱셈-및-교환. 이에 따라, 이들 기능에서는, 곱셈기(912)가 가산기(911) 대신에 사용된다. 회로는 이들 기능을 선택하기 위해서 선택 입력(910)에서 3 이상의 입력 값을 지원한다.
또 다른 구현에서, 도 6의 소팅 트리는 또한 프리픽스 최소 및 프리픽스 최대 연산을 구현하는데 사용될 수 있다. 프리픽스 최소 연산은 입력 벡터가 특정 방향으로부터 스캐닝될 때 각각의 엘리먼트를 위한 입력 벡터에 대해 관찰된 최소 값을 나타낸다. 예컨대, 입력 벡터 5 4 7 9 8 2 7에서, 출력 벡터는 좌측에서 우측으로 스캐닝될 때 5 4 4 4 4 2 2일 것이다. 프리픽스 최대 기능은 최소 관찰 값이 아닌 최대 관찰 값을 제공한다. 예컨대, 좌측에서 우측으로 스캐닝하면, 프리픽스 최대 기능은 동일한 입력 벡터에 대해 다음의 결과 5 5 7 9 9 9 9를 제공할 것이다.
이들 기능을 구현하기 위하여, 도 7에 제시된 동일한 트리는 논리 분석을 수행하는 회로에 대한 수정과 함께 (다시) 이용될 수 있다. 여기서, 도 9의 회로는 2개의 입력을 비교하고 최우측 출력상에 최소(프리픽스 최소) 또는 최우측 출력상에 최대(프리픽스 최대)를 나타내는 추가적인 비교 기능성을 포함하도록 개선될 수 있다. 이들 비교 기능은 클록 사이클 1 내지 4 동안 선택된다. 전술한 비교-및-교환 기능은 클록 사이클 6 내지 8 동안 사용될 수 있다.
추가적인 실시예에서, 기능 유닛을 위한 명령어 포맷은 전술한 임의의/모든 상이한 연산들(소팅, 프리픽스 덧셈, 프리픽스 곱셈, 프리픽스 최소, 프리픽스 최대) 중 어느 것이 실행되어야 하는지를 나타내는 오피코드 또는 즉시 피연산자를 특정한다. 이에 응답하여, ROM 내의 마이크로코드는 표시된 연산을 달성하기 위한 올바른 시퀀스의 스위칭 네트워크 설정 및 회로 선택을 제공한다.
전술한 기능 유닛 설계가 적절한 스위칭 네트워크 설정을 갖는 일련의 클록 설정을 통해 "루핑 스루(looped through)"되는 비교-및-교환 회로의 단일 뱅크(전술한 임의의/모든 프리픽스 기능과 같은 다른 기능들을 지원하도록 잠재적으로 개선됨)를 염두에 둔 것에 유의하는 것이 적절하다. 이런 특정 설계 접근법은 아마도 반도체 표면 영역을 절약하는데, 그 이유는 도 6의 트리의 경우에, 63개의 비교 및 교환 기능(즉, 도 6에 63개의 수평선이 존재)이 실행될지라도 단지 8개의 비교-및-교환 회로가 필요하기 때문이다.
반도체 표면 영역을 줄인다 할지라도, 이런 동일한 접근법은 정반대의 접근법보다 더 많은 클록 사이클을 소비할 수 있다. 즉, 대안적인 실시예는 도 6의 완전한 트리를 하드웨어로 구축할 수 있다. 이 경우, 도 6에서 관찰되는 연결들에 따라 트리에서 a0-a15 채널들에 연결된 개별적인 63개의 비교-및-교환 회로가 있을 것이다. 이러한 다양한 스위칭 연결들은 또한 네트워크로서 보일 수 있다(비록 구성된/구성 가능한 것이 아니라 하드와이어링된(hardwired) 것일지라도). 이런 접근법은 소팅 기능에 대한 전체 기능 유닛의 전파 지연이 10개의 비교-및-교환 회로를 통한 전파 지연(트리를 통한 각각의 스테이지에 대해 하나의 전파 지연)과 맞먹게 되기 때문에 더 적은 수의 클록 사이클을 소비한다고 생각될 수 있다. 이 경우, ROM은 네트워크 스위치 설정을 포함할 필요가 없다. 기능 유닛이 프리픽스 연산을 포함하도록 개선된다면, 도 7의 프리픽스 트리를 지원하는데 사용될 수 있는 도 6에서 관찰되는 이들 연결은 도 6의 트리로부터 단순히 재사용될 수 없는 특별한 추가적인 연결들이 그런 것처럼 "인에이블(enabled)"될 것이다.
다른 설계 접근법은 실리콘 표면 영역 소비와 속도 사이에 균형을 유지하기 위해 이들 2개의 극한(전체적으로 구성 가능한 네트워크 회로-대-전체적인 하드와이어드 네트워크 회로) 사이의 어딘가에 도달할 수 있다.
통상의 기술자는 상기와 같이 제공된 트리 패턴들을, 16보다 크거나 또는 적은 벡터 사이즈를 수용하는 대안적인 실시예를 구축하기 위해 확장할 수 있을 것이다. 바꾸어 말하면, 통상의 기술자는 상기 교시들을 채택하여 16보다 큰 또는 적은 수의 채널을 갖는 다른 트리 실시예를 구성할 수 있을 것이다.
도 10은 예시적 멀티 코어 프로세서(1000)의 아키텍처를 도시한다. 도 10에서 관찰된 것처럼, 프로세서는 다음을 포함한다: (1) 다중 프로세싱 코어들(1001_1 내지 1001_N); (2) 상호 연결 네트워크(1002); (3) 최종 레벨 캐싱 시스템(1003); (4) 메모리 제어기(1004) 및 I/O 허브(1005). 각각의 프로세싱 코어는 프로그램 코드 명령어를 실행하기 위한 하나 이상의 명령어 실행 파이프라인을 포함한다. 이러한 명령어 실행 파이프라인들 중 임의의 하나 또는 모두는 도 1의 설명과 일치하는 벡터 명령어의 실행을 지원할 수 있고, 상술한 도 4 내지 9에 관하여 상술한 연산들을 수행할 수 있는 기능 유닛을 포함한다. 상호 연결 네트워크(1002)는 코어들(1001_1-1001_N) 각각을 서로에게뿐만 아니라 다른 컴포넌트들(1003, 1004, 1005)에 상호 연결하는 역할을 한다. 최종 레벨 캐싱 시스템(1003)은, 명령어 및/또는 데이터가 시스템 메모리(1008)로 축출되기 전에, 프로세서에서의 캐시의 최종 계층의 역할을 한다.
메모리 제어기(1004)는 데이터 및 명령어를 시스템 메모리(1008)로부터/에 판독/기입한다. I/O 허브(1005)는 프로세서와 "I/O" 디바이스들(예를 들어, 비 휘발성 저장 디바이스들 및/또는 네트워크 인터페이스들) 사이의 통신을 관리한다. 포트(1006)는 N개 초과의 코어들을 갖는 시스템이 실현될 수 있도록 다수의 프로세서를 링크시키기 위해 상호 연결 네트워크(1002)로부터 나온다. 그래픽 프로세서(1007)는 그래픽 계산을 수행한다. 전력 관리 회로(도시 안 됨)는 프로세서의 전력 상태 및 성능을 전체("패키지 레벨")로서 관리할 뿐만 아니라 개별적인 코어들(1001_1 내지 1001_N), 그래픽 프로세서(1007) 등과 같은 프로세서 내의 개별적인 유닛들의 성능 및 전력 상태의 측면을 관리한다. 다른 중요한 기능 블록들(예를 들어, 위상 동기 루프(PLL) 회로)은 편의상 도 10에 도시되지 않는다.
상기 명세서에서, 본 발명은 그 특정한 예시적인 실시예들을 참조하여 설명하였다. 그러나, 첨부된 청구항들에서 개시된 바와 같은 본 발명의 더 넓은 사상 및 범주로부터 벗어남이 없이 그에 대한 다양한 변형 및 변경들이 행해질 수 있다는 것은 명백할 것이다. 명세서 및 도면들은, 그에 따라, 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다.

Claims (21)

  1. 장치로서,
    벡터 소팅 명령어를 위한 벡터 소팅 트리를 구현하기 위해 네트워크 회로에 연결된 복수의 비교-및-교환 회로를 구비한, 명령어 실행 파이프라인의 기능 유닛을 포함하고,
    상기 비교-및-교환 회로들 각각은 한 쌍의 입력들을 비교하는 각각의 비교 회로를 가지며, 상기 비교-및-교환 회로들 각각은 2개의 입력들 중 큰 입력을 제시하기 위한 동일 측면의 제1 출력, 및 2개의 입력들 중 작은 입력을 제시하기 위한 동일 측면의 제2 출력을 가지고, 상기 비교 회로는 또한 상기 기능 유닛의 프리픽스 최소(prefix min) 및/또는 프리픽스 덧셈(prefix add) 명령어의 실행을 지원하는, 장치.
  2. 제1항에 있어서, 상기 기능 유닛은 상이한 사이즈의 벡터들의 소팅을 지원하는, 장치.
  3. 제2항에 있어서, 상기 사이즈들 중 특정 사이즈는 상기 벡터 소팅 명령어의 즉시 피연산자(immediate operand)를 이용하여 특정되는, 장치.
  4. 제2항에 있어서, 상기 상이한 사이즈의 벡터들은 2개의 엘리먼트들, 4개의 엘리먼트들, 8개의 엘리먼트들 및 16개의 엘리먼트들을 포함하는 장치.
  5. 제2항에 있어서, 상기 기능 유닛은 상기 벡터 소팅 트리를 통해 소팅될 수 있는 최대 벡터 사이즈보다 작은 사이즈를 갖는 2개의 벡터들을 동시에 소팅할 수 있는, 장치.
  6. 제1항에 있어서, 상기 네트워크 회로는 구성 가능한 스위칭 네트워크를 포함하는 장치.
  7. 제6항에 있어서, 상기 기능 유닛은 상기 벡터 소팅 명령어를 위한 상기 구성 가능한 스위칭 네트워크에 제어 신호들을 제시하는 마이크로코드를 갖고 있는 메모리 회로를 포함하는 장치.
  8. 장치로서,
    벡터 소팅 명령어를 위한 벡터 소팅 트리를 구현하기 위해 네트워크 회로에 연결된 복수의 비교-및-교환 회로를 구비한, 명령어 실행 파이프라인의 기능 유닛을 포함하고,
    상기 비교-및-교환 회로들 각각은 한 쌍의 입력들을 비교하는 각각의 비교 회로를 가지며, 상기 비교-및-교환 회로들 각각은 2개의 입력들 중 큰 입력을 제시하기 위한 동일 측면의 제1 출력, 및 2개의 입력들 중 작은 입력을 제시하기 위한 동일 측면의 제2 출력을 가지고,
    상기 회로들 각각은 또한,
    상기 기능 유닛을 이용하여 프리픽스 덧셈 명령어를 구현하기 위한 가산기; 및
    상기 기능 유닛을 이용하여 프리픽스 곱셈 명령어를 구현하기 위한 곱셈기
    중 임의의 것을 구비하는, 장치.
  9. 제8항에 있어서, 상기 기능 유닛은 상이한 사이즈의 벡터들의 소팅을 지원하는, 장치.
  10. 제9항에 있어서, 상기 사이즈들 중 특정 사이즈는 상기 벡터 소팅 명령어의 즉시 피연산자를 이용하여 특정되는, 장치.
  11. 제9항에 있어서, 상기 상이한 사이즈의 벡터들은 2개의 엘리먼트들, 4개의 엘리먼트들, 8개의 엘리먼트들 및 16개의 엘리먼트들을 포함하는 장치.
  12. 제9항에 있어서, 상기 기능 유닛은 상기 벡터 소팅 트리를 통해 소팅될 수 있는 최대 벡터 사이즈보다 작은 사이즈를 갖는 2개의 벡터들을 동시에 소팅할 수 있는, 장치.
  13. 제8항에 있어서, 상기 네트워크 회로는 구성 가능한 스위칭 네트워크를 포함하는 장치.
  14. 제13항에 있어서, 상기 기능 유닛은 상기 벡터 소팅 명령어를 위한 상기 구성 가능한 스위칭 네트워크에 제어 신호들을 제시하는 마이크로코드를 갖고 있는 메모리 회로를 포함하는 장치.
  15. 제8항에 있어서, 상기 회로들 각각의 상기 비교기는 또한, 프리픽스 최소 명령어 및 프리픽스 최대 명령어 중 임의의 것을 상기 기능 유닛을 이용하여 구현하는데 사용되는, 장치.
  16. 방법으로서,
    벡터 소팅 명령어를 수행하기 위해 명령어 실행 파이프라인의 기능 유닛 회로를 이용하여,
    제1 벡터 및 제2 벡터를 동시에 수신하는 것;
    상기 제1 및 제2 벡터들의 엘리먼트들을, 상기 제1 및 제2 벡터들을 소팅하기 위한 소팅 트리를 구현하는 복수의 비교-및-교환 회로를 통해 통과시키는 것을 수행하는 단계를 포함하며,
    상기 비교-및-교환 회로들 각각은,
    한 쌍의 상기 엘리먼트들을 비교하는 것;
    상기 한 쌍의 엘리먼트들 중 큰 엘리먼트를 동일 측면의 제1 출력상에 제시하는 것;
    상기 한 쌍의 엘리먼트들 중 작은 엘리먼트를 동일 측면의 제2 출력상에 제시하는 것을 수행하는, 방법.
  17. 제16항에 있어서, 상기 명령어는 상기 제1 및 제2 벡터들의 사이즈를 특정하는, 방법.
  18. 제17항에 있어서, 상기 기능 유닛은 상기 엘리먼트들이 상기 소팅 트리의 몇 개의 스테이지를 통과해야 하는지 결정하기 위해 상기 사이즈를 사용하는, 방법.
  19. 제16항에 있어서, 상기 프리픽스 합산 명령어 또는 프리픽스 덧셈 명령어 중 임의의 것을 상기 기능 유닛을 이용하여 실행하는 단계를 더 포함하는 방법.
  20. 제16항에 있어서, 상기 프리픽스 최소 명령어 또는 프리픽스 최대 명령어 중 임의의 것을 상기 기능 유닛을 이용하여 실행하는 단계를 더 포함하는 방법.
  21. 장치로서,
    1개보다 많은 입력 벡터를 동시에 소팅하기 위한 벡터 소팅 트리를 구현하기 위해 네트워크 회로에 연결된 복수의 비교-및-교환 회로를 구비한, 명령어 실행 파이프라인의 기능 유닛을 포함하고,
    상기 비교-및-교환 회로들 각각은 한 쌍의 입력들을 비교하는 각각의 비교 회로를 가지며, 상기 비교-및-교환 회로들 각각은 2개의 입력들 중 큰 입력을 제시하기 위한 동일 측면의 제1 출력 및 2개의 입력들 중 작은 입력을 제시하기 위한 동일 측면의 제2 출력을 가지는, 장치.
KR1020157014146A 2012-12-28 2013-06-20 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛 KR101703797B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/730,685 US9405538B2 (en) 2012-12-28 2012-12-28 Functional unit having tree structure to support vector sorting algorithm and other algorithms
US13/730,685 2012-12-28
PCT/US2013/046801 WO2015094145A2 (en) 2012-12-28 2013-06-20 Functional unit having tree structure to support vector sorting algorithm and other algorithms

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177002841A Division KR101766183B1 (ko) 2012-12-28 2013-06-20 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛

Publications (2)

Publication Number Publication Date
KR20150101995A true KR20150101995A (ko) 2015-09-04
KR101703797B1 KR101703797B1 (ko) 2017-02-07

Family

ID=51018675

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177002841A KR101766183B1 (ko) 2012-12-28 2013-06-20 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛
KR1020157014146A KR101703797B1 (ko) 2012-12-28 2013-06-20 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177002841A KR101766183B1 (ko) 2012-12-28 2013-06-20 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛

Country Status (5)

Country Link
US (2) US9405538B2 (ko)
KR (2) KR101766183B1 (ko)
CN (1) CN105051679B (ko)
DE (1) DE112013006309T5 (ko)
WO (1) WO2015094145A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409593B2 (en) 2017-03-31 2019-09-10 Samsung Electronics Co., Ltd. Semiconductor device
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303735B2 (en) 2015-11-18 2019-05-28 Intel Corporation Systems, apparatuses, and methods for K nearest neighbor search
TWI604379B (zh) * 2014-12-24 2017-11-01 英特爾公司 用於k最近相鄰者搜尋之系統、設備及方法
US20160283549A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Value sorter
CN107948102A (zh) * 2016-10-12 2018-04-20 深圳市中兴微电子技术有限公司 一种矢量数据的并行排序网络及方法
US10574593B2 (en) * 2017-04-19 2020-02-25 Infineon Technologies Ag Median filter that re-uses comparators when sorting data
KR102343652B1 (ko) 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
CN107833176A (zh) * 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
US10691412B2 (en) 2018-08-31 2020-06-23 International Business Machines Corporation Parallel sort accelerator sharing first level processor cache
US10725738B2 (en) 2018-08-31 2020-07-28 International Business Machines Corporation Adaptive sort accelerator sharing first level processor cache
US10579332B1 (en) 2018-08-31 2020-03-03 International Business Machines Corporation Hardware sort accelerator sharing first level processor cache
US20210098001A1 (en) 2018-09-13 2021-04-01 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
US10831478B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US11500841B2 (en) 2019-01-04 2022-11-15 International Business Machines Corporation Encoding and decoding tree data structures as vector data structures
US11042356B2 (en) 2019-02-28 2021-06-22 International Business Machines Corporation Tournament tree rollback for payload write exception
US11593106B1 (en) * 2021-09-24 2023-02-28 Apple Inc. Circuits and methods for vector sorting in a microprocessor

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4734877A (en) * 1986-03-10 1988-03-29 Hitachi, Ltd. Vector processing system
US5937188A (en) * 1994-05-16 1999-08-10 British Telecommunications Public Limited Company Instruction creation device
US20070046511A1 (en) * 2005-09-01 2007-03-01 Morzano Christopher K Method and apparatus for converting parallel data to serial data in high speed applications
US20090177657A1 (en) * 2008-01-08 2009-07-09 Dennis James Carroll In-place sorting using node specific mask width

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287494A (en) 1990-10-18 1994-02-15 International Business Machines Corporation Sorting/merging tree for determining a next tournament champion in each cycle by simultaneously comparing records in a path of the previous tournament champion
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
EP2466472A1 (en) 2010-12-17 2012-06-20 ST-Ericsson SA Vector-based matching circuit for data streams
CN104517091A (zh) * 2013-09-29 2015-04-15 北大方正集团有限公司 一种qr码探测图形的筛选方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4734877A (en) * 1986-03-10 1988-03-29 Hitachi, Ltd. Vector processing system
US5937188A (en) * 1994-05-16 1999-08-10 British Telecommunications Public Limited Company Instruction creation device
US20070046511A1 (en) * 2005-09-01 2007-03-01 Morzano Christopher K Method and apparatus for converting parallel data to serial data in high speed applications
US20090177657A1 (en) * 2008-01-08 2009-07-09 Dennis James Carroll In-place sorting using node specific mask width

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409593B2 (en) 2017-03-31 2019-09-10 Samsung Electronics Co., Ltd. Semiconductor device
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
US10990388B2 (en) 2017-03-31 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor device
US11645072B2 (en) 2017-03-31 2023-05-09 Samsung Electronics Co., Ltd. Semiconductor device

Also Published As

Publication number Publication date
US9405538B2 (en) 2016-08-02
US9760373B2 (en) 2017-09-12
CN105051679A (zh) 2015-11-11
CN105051679B (zh) 2018-06-29
KR101766183B1 (ko) 2017-08-07
US20140189292A1 (en) 2014-07-03
US20160342418A1 (en) 2016-11-24
KR20170016998A (ko) 2017-02-14
WO2015094145A2 (en) 2015-06-25
DE112013006309T5 (de) 2015-09-10
WO2015094145A3 (en) 2015-08-20
KR101703797B1 (ko) 2017-02-07

Similar Documents

Publication Publication Date Title
KR101703797B1 (ko) 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛
US8677106B2 (en) Unanimous branch instructions in a parallel thread processor
CN111414197B (zh) 数据处理系统、编译器、处理器的方法和机器可读介质
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
CN109062608B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
US20190196825A1 (en) Vector multiply-add instruction
TWI525537B (zh) 具有為向量衝突指令與置換指令所共享的全連接互連的處理器
US20240004666A1 (en) Floating-point supportive pipeline for emulated shared memory architectures
US10102001B2 (en) Parallel slice processor shadowing states of hardware threads across execution slices
US8601236B2 (en) Configurable vector length computer processor
CN112074810A (zh) 并行处理设备
CN106030517B (zh) 用于仿真共享内存架构中的长延迟操作的架构
US11940945B2 (en) Reconfigurable SIMD engine
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP5598114B2 (ja) 演算ユニット
WO2021014017A1 (en) A reconfigurable architecture, for example a coarse-grained reconfigurable architecture as well as a corresponding method of operating such a reconfigurable architecture
Jennings Breaking Amdahl’s law by changing the execution architecture
JPH0486920A (ja) 情報処理装置およびその方法
JP2009140514A (ja) 半導体装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 4