KR20120134549A - Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법 - Google Patents
Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법 Download PDFInfo
- Publication number
- KR20120134549A KR20120134549A KR1020110053512A KR20110053512A KR20120134549A KR 20120134549 A KR20120134549 A KR 20120134549A KR 1020110053512 A KR1020110053512 A KR 1020110053512A KR 20110053512 A KR20110053512 A KR 20110053512A KR 20120134549 A KR20120134549 A KR 20120134549A
- Authority
- KR
- South Korea
- Prior art keywords
- source node
- column
- input data
- previous
- node belonging
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000003672 processing method Methods 0.000 claims description 5
- 238000013500 data storage Methods 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 5
- 239000002699 waste material Substances 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4107—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4161—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
- H03M13/4169—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
Abstract
SIMD 프로세서를 이용하여 비터비 디코딩을 수행하는 병렬 연산 처리 장치 및 방법이 제공된다. 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 소스 노드의 입력 데이터를 이전 컬럼에 속하는 각 소스 노드의 입력 데이터와 병합하여 저장할 수 있다.
Description
아래의 실시예들은 SIMD 프로세서를 이용하여 병렬로 연산을 처리하기 위한 방법 및 장치에 관한 것이다.
SIMD(Single Instruction Multiple Data)는 하나의 명령어(instruction)로 여러 개의 데이터를 처리하는 병렬 컴퓨팅의 한 분류이다. SIMD는 다수의 연산 장치들이 동일(또는, 유사)한 연산을 다수의 데이터에 적용하여 동시에 처리하는 방식이다. SIMD는 주로 백터(vector) 프로세서(processor)에서 이용되는 기술이다.
일반적으로, 비터비 디코딩(Viterbi Decoding)은 3단계의 연산 과정으로 이루어진다. 1단계는 브랜치의 메트릭을 계산(Branch Metric Computation: BMC)하는 과정이고, 2단계는 계산된 메트릭들을 비교하여 브랜치를 선택(Add Compare Select: ACS)하는 과정이고, 3단계는 역추적(Traceback: TB)하는 과정이다.
그러나, 비터비 디코딩의 깊이(Depth)가 깊어질수록 디코딩 시 요구되는 메모리의 양이 증가하여 전체 하드웨어 로직(logic)의 크기가 증가하며, ACS 연산 결과 정보의 크기가 매우 작아 ACS 연산 결과 정보를 저장하면서 낭비되는 메모리가 발생한다.
이에 따라, 비터비 디코딩 연산 시 메모리를 효과적으로 사용하여 디코딩의 깊이가 깊어지더라도 전체 하드웨어 로직의 사이즈를 감소시키고, 낭비되는 메모리를 감소시킬 수 있는 기술이 필요하다.
본 병렬 연산 처리 장치는, 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값을 계산하고, 상기 경로값을 이용하여 선택된 경로에 해당하는 입력 데이터와 이전 컬럼에 속하는 소스 노드를 각각 결정하는 병렬 연산부-상기 이전 컬럼에 속하는 소스 노드는, 상기 선택된 경로에 기초하여 상기 현재 컬럼에 속하는 소스 노드와 논리적으로 연결된 소스 노드임-, 및 상기 이전 컬럼에 속하는 각 소스 노드의 입력 데이터 순서에 기초하여 상기 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬하는 데이터 정렬부를 포함할 수 있다. 그리고, 상기 병렬 연산부는, 상기 이전 컬럼의 입력 데이터와 상기 순서가 정렬된 현재 컬럼의 입력 데이터를 레지스터 처리 단위에 따라 병합하여 병렬 레지스터부에 저장할 수 있다.
또한, 상기 병렬 연산부는, 상기 이전 컬럼의 입력 데이터에 대해 비트 쉬프트(bit shift) 연산을 수행하여 상기 이전 컬럼의 입력 데이터에 상기 현재 컬럼의 입력 데이터를 병합하여 저장할 수 있다.
또한, 상기 데이터 정렬부는, 상기 현재 컬럼에 속하는 각 소스 노드의 입력 데이터가 상기 현재 컬럼에 속하는 각 소스 노드와 논리적으로 연결된 이전 컬럼에 속하는 소스 노드의 입력 데이터와 물리적으로 연결되게(concatenate) 위치하도록 상기 입력 데이터 순서를 정렬할 수 있다.
또한, 상기 병렬 연산부는, 상기 현재 컬럼에 속하는 각 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드를 나타내는 인덱스 정보를 상기 레지스터 처리 단위마다 저장할 수 있다.
또한, 상기 인덱스 정보는, 상기 선택된 경로에 기초하여 현재 레지스터의 첫 번째 컬럼의 각 소스 노드와 논리적으로 연결된 이전 레지스터의 마지막 컬럼의 각 소스 노드를 나타내는 정보일 수 있다.
또한, 상기 병렬 연산부는, 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값이 복수개인 경우, 복수의 경로값들 중 최소 경로값을 결정할 수 있다. 그러면, 상기 병렬 레지스터부는, 상기 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 최소 경로값을 이전 컬럼에 속하는 각 소스 노드에서의 최소 경로값이 저장된 위치에 덮어쓰기(overwrite)를 이용하여 상기 병렬 레지스터부에 저장할 수 있다.
또한, 상기 병렬 연산부는, 마지막 컬럼에 속하는 각 소스 노드에서의 경로값을 계산하고, 계산된 경로값들 중 최소 경로값에 해당하는 최종 소스 노드와 연결된 이전 컬럼들에 속하는 소스 노드의 입력 데이터를 역추적(Traceback)할 수 있다.
또한, 상기 병렬 연산부는, 상기 마지막 컬럼부터 첫 번째 컬럼에 속하는 소스 노드까지 상기 역추적을 반복함에 따라, 상기 최종 소스 노드와 연결된 각 소스 노드에 해당하는 입력 데이터를 획득할 수 있다.
또한, 상기 경로값은, 비터비 디코딩(Viterbi Decoding)을 수행함에 따라 컬럼 별로 계산된 각 노드에서의 메트릭(metric)을 현재 컬럼을 기준으로 누적한 값일 수 있다.
본 병렬 연산 처리 방법은, 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값을 계산하는 단계, 상기 경로값을 이용하여 선택된 경로에 해당하는 입력 데이터와 이전 컬럼에 속하는 소스 노드를 각각 결정하는 단계-상기 이전 컬럼에 속하는 소스 노드는, 상기 선택된 경로에 기초하여 상기 현재 컬럼에 속하는 소스 노드와 논리적으로 연결된 소스 노드임-, 상기 이전 컬럼에 속하는 각 소스 노드의 입력 데이터 순서에 기초하여 상기 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬하는 단계, 및 상기 이전 컬럼의 입력 데이터와 상기 순서가 정렬된 현재 컬럼의 입력 데이터를 레지스터 처리 단위에 따라 병합하여 저장하는 단계를 포함할 수 있다.
본 발명에 따르면, SIMD 프로세서를 이용하여 비터비 디코딩을 수행함에 따라 메모리를 효과적으로 사용하여 전체 하드웨어 로직의 사이즈를 감소시킬 수 있다.
본 발명에 따르면, ACS 연산 시 복수의 입력 데이터를 병합하여 메모리에 저장함에 따라, 낭비되는 메모리를 감소 또는 제거할 수 있을 뿐만 아니라, 한 번의 데이터 읽기로 많은 입력 데이터를 역추적하여 TB 연산을 고속으로 처리할 수 있다.
도 1은 본 발명의 일 실시예에 따른 SIMD 프로세서를 이용하는 병렬 연산 처리 장치(100)의 구조를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 병렬 레지스터부의 세부 구조를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 BMC 연산을 병렬로 처리하는 구성을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 ACS 연산을 병렬로 처리하는 구성을 도시한 도면이다.
도 5는 비터비 알고리즘의 동작을 트레일리스 다이어그램(Trellis Diagram)으로 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 병렬 연산 처리 장치의 구성 요소들 중 ACS 연산을 수행하는 주요 구성 요소를 도시한 블록도이다.
도 7은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬하는 구성을 설명하기 위해 제공되는 도면이다.
도 8은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 수행하는 비트 쉬프트 연산을 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 TB 연산을 병렬로 처리하는 구성을 도시한 도면이다.
도 10은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 SIMD 프로세서를 이용하여 비터비 디코딩을 병렬로 처리하는 방법을 설명하기 위해 제공되는 흐름도이다.
도 11은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 2개의 데이터 입력으로 연산을 처리하는 구성을 설명하기 위해 제공되는 도면이다.
도 2는 본 발명의 일실시예에 따른 병렬 레지스터부의 세부 구조를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 BMC 연산을 병렬로 처리하는 구성을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 ACS 연산을 병렬로 처리하는 구성을 도시한 도면이다.
도 5는 비터비 알고리즘의 동작을 트레일리스 다이어그램(Trellis Diagram)으로 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 병렬 연산 처리 장치의 구성 요소들 중 ACS 연산을 수행하는 주요 구성 요소를 도시한 블록도이다.
도 7은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬하는 구성을 설명하기 위해 제공되는 도면이다.
도 8은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 수행하는 비트 쉬프트 연산을 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 TB 연산을 병렬로 처리하는 구성을 도시한 도면이다.
도 10은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 SIMD 프로세서를 이용하여 비터비 디코딩을 병렬로 처리하는 방법을 설명하기 위해 제공되는 흐름도이다.
도 11은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 2개의 데이터 입력으로 연산을 처리하는 구성을 설명하기 위해 제공되는 도면이다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 SIMD 프로세서를 이용하는 병렬 연산 처리 장치(100)의 구조를 도시한 도면이다.
병렬 연산 처리 장치(100)는 명령어 저장부(110), 제어부(120), 스칼라 연산부(130), 스칼라 레지스터(scalar register)부(140), 병렬 연산부(150), 병렬 레지스터부(160), 데이터 정렬부(170) 및 데이터 저장부(180)를 포함할 수 있다.
먼저, 명령어 저장부(110)는 병렬 연산 처리 장치(100)에서 수행되는 각종 제어를 위한 명령어가 저장될 수 있다. 일례로, 명령어 저장부(110)는 비터비 디코딩 처리 시 필요한 연산에 대한 명령어들이 저장될 수 있다. 예를 들어, 브랜치의 메트릭을 계산(Branch Metric Computation: BMC)하는 BMC 연산 명령어, 계산된 브랜치 메트릭들(Branch Metrics)을 누적하여 생성한 경로 메트릭(Path Metric, 이하, 경로값이라 칭함)을 각 노드 별로 비교하여 어느 하나를 선택(Add Compare Select: ACS)하는 ACS 연산 명령어, 및 마지막 컬럼에 속하는 각 소스 노드의 경로 메트릭 중 최소에 해당하는 노드와 연결된 이전 컬럼들의 소스 노드를 역추적(Traceback: TB)하는 TB 연산 명령어 등을 포함할 수 있다.
제어부(120)는 명령어 저장부(110)에 저장된 명령어에 해당하는 제어 신호를 생성할 수 있다. 예를 들어, 제어부(120)는 SIMD 프로세서를 이용한 병렬 연산 처리 장치를 제어하기 위해 필요한 제어 신호를 생성할 수 있다.
데이터 저장부(180)는 비터비 디코딩 수행 시 필요한 입력 데이터 및 비터비 디코딩 수행에 따라 생성된 연산 결과 데이터를 저장할 수 있다. 예를 들어, 데이터 저장부(180)는 BMC 연산에 따른 BMC 연산 결과, ACS 연산에 따른 ACS 연산 결과, 및 TB 연산에 따른 TB 연산 결과를 저장할 수 있다.
스칼라 연산부(130)는 병렬로 처리되기 어려운 연산을 처리할 수 있다.
스칼라 레지스터부(140)는 스칼라 연산부(130)가 연산을 수행하기 위해 사용하는 레지스터들을 포함할 수 있다.
병렬 연산부(150)는 하나의 명령어로 다수의 데이터를 처리하는 연산을 처리할 수 있다. 병렬 연산부(150)는 SIMD(Single Instruction Multiple Data) 연산부로 표현할 수도 있다.
병렬 레지스터부(160)는 병렬 연산부(150)가 연산을 수행하기 위해 사용하는 레지스터들을 포함할 수 있다. 여기서, 병렬 레지스터부(160)는 SIMD 레지스터부로 표현할 수도 있다.
데이터 정렬부(170)는 병렬 연산부(150)에서 처리된 연산의 결과들의 순서를 정렬할 수 있다. 일례로, 데이터 정렬부(170)는 ACS 연산에 따라 생성된 ACS 연산 결과의 순서를 정렬할 수 있다. 예를 들어, 복수의 컬럼들(Columns)에 대핸 ACS 연산이 수행된 경우, 데이터 정렬부(170)는 각 컬럼의 연산 결과를 다음 컬럼의 입력으로 사용할 수 있도록 현재 컬럼의 연산 결과에 대한 순서를 정렬할 수 있다. 그러면, 병렬 연산부(150)는 데이터 순서가 정렬된 현재 컬럼의 연산 결과들을 이전 컬럼의 연산 결과들과 병합하여 병렬 레지스터부(160)에 저장할 수 있다.
도 2는 본 발명의 일실시예에 따른 병렬 레지스터부의 세부 구조를 도시한 도면이다.
도 2에 따르면, 병렬 레지스터(150)는 복수의 벡터 레지스터(Vector Registor)를 포함할 수 있다.
그리고, 병렬 연산부(160)는 복수의 ALU(Arithmetic and Logical Unit)을 포함할 수 있다. 이때, 병렬 연산부(160)는 소스 노드(Source Node: SN)의 개수에 대응하는 복수의 ALU를 포함할 수 있다. 예를 들어, 소스 노드의 개수가 N-1개인 경우, 병렬 연산부(160)는 N-1개의 ALU를 포함할 수 있다.
그러면, ALU는 병렬 레지스터(150)에 저장된 입력 데이터들 중 2개의 입력 데이터를 읽어들여 연산을 수행하고, 1개의 연산 결과를 다시 병렬 레지스터(150)에 저장할 수 있다. 예를 들어, ALU 0(201)는 벡터 레지스터 0(202)에 저장된 입력 데이터와 벡터 레지스터 1(203)에 저장된 입력 데이터를 읽어들일 수 있다. 그리고, ALU 0(201)는 읽어들인 2개의 비터비 디코딩 시 필요한 연산을 수행하여 1개의 연산 결과를 생성할 수 있다. 이어, ALU 0(201)는 생성된 연산 결과를 벡터 레지스터들 중 어느 하나에 저장할 수 있다. 예를 들어, ALU 0(201)는 생성된 연산 결과를 벡터 레지스터 0(202) 중 필요없는 공간에 저장할 수도 있고, 벡터 레지스터 2 내지 벡터 레지스터 m-1 중 빈 공간에 저장할 수도 있다.
이하에서는, SIMD 프로세서를 이용하여 BMC 연산, ACS 연산, 및 TB 연산을 수행하는 구성에 대해 설명하기로 한다.
도 3은 본 발명의 일실시예에 따른 BMC 연산을 병렬로 처리하는 구성을 도시한 도면이다. 도 3에서, BMC 연산은 도 1의 병렬 연산부(150)에 의해 수행될 수 있다.
도 3에 따르면, 병렬 연산 처리 장치는, 두 데이터(A0, B0) 간의 차의 절대값을 계산하여 출력(R0)할 수 있다. 이처럼, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 n개의 모든 소스 노드들에 대해 BMC 연산을 병렬로 수행할 수 있다.
다시 말해, BMC 연산은 다른 BMC 연산의 결과를 입력으로 사용하지 않기 때문에, 현재 컬럼에 속하는 각 소스 노드들에서의 BMC 연산을 동시에 수행할 수 있다. 예를 들어, 병렬 연산 처리 장치는, BMC 0, BMC 1, … BMCn 연산을 동시에 수행하여 R0 내지 Rn을 출력할 수 있다.
도 4는 본 발명의 일실시예에 따른 ACS 연산을 병렬로 처리하는 구성을 도시한 도면이다. 도 4에서, ACS 연산은 도 1의 병렬 연산부(150)에 의해 수행될 수 있다.
도 4에 따르면, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 노드에서의 메트릭과 이전 컬럼의 경로값을 더하여 생성된 경로값들 중 어느 하나를 선택하여 출력할 수 있다.
일례로, 도 5를 참조하면, 현재 컬럼이 컬럼 4(Col. 4: 502)이고, 컬럼 4의 소스 노드 a로 2개의 경로(503, 504)가 입력되는 경우, 병렬 연산 처리 장치는, 경로 0(503)에 해당하는 메트릭 0(도 4의 path-metric 0에 해당함)과 이전 컬럼인 컬럼 3(501)의 소스 노드 a에서의 경로값(도 4의 BMC 0에 해당함)을 더하고, 경로 1(504)에 해당하는 메트릭 1(도 4의 path-metric 1에 해당함)과 컬럼 3(501)의 소스 노드 c에서의 경로값(도 4의 BMC 1에 해당함)을 더하여 서로 비교할 수 있다.
그리고, 병렬 연산 처리 장치는, 비교를 통해 더한 결과 값이 작은 값을 현재 컬럼의 경로값(401)으로 출력하고, 현재 컬럼의 경로값에 해당하는 경로를 선택하고, 선택된 경로에 해당하는 입력 데이터(403)를 출력할 수 있다. 이때, 병렬 연산 처리 장치는, 선택된 경로에 기초하여 현재 컬럼의 소스 노드와 연결된 이전 컬럼의 소스 노드를 나타내는 인덱스 정보(402)를 함께 출력할 수 있다.
예를 들어, 메트릭 0와 이전 컬럼인 컬럼 3(501)의 소스 노드 a에서의 경로값을 더한 결과값이 13이고, 메트릭 1과 컬럼 3(501)의 소스 노드 c에서의 경로값을 더한 결과값이 8인 경우, 병렬 연산 처리 장치는 8을 현재 컬럼의 경로값(401)으로 출력할 수 있다. 그리고, 병렬 연산 처리 장치는, 컬럼 4(502)의 소스 노드 a로 입력되는 경로 0(503) 및 경로 1(504) 중에서 경로값 8에 해당하는 경로 1(504)을 선택할 수 있다. 이어, 병렬 연산 처리 장치는, 경로 1(504)에 기초하여 현재 컬럼인 컬럼 4(502)의 소스 노드 a가 이전 컬럼인 컬럼 3(501)의 소스 노드 c와 논리적으로 연결됨을 나타내는 인덱스 정보(402)를 출력할 수 있다. 그리고, 병렬 연산 처리 장치는, 선택된 경로에 해당하는 입력 데이터(403)를 출력할 수 있다.
이처럼, 병렬 연산 처리 장치는 ACS 연산을 통해 현재 컬럼에 속하는 각 소스 노드 별로 현재 컬럼의 경로값(401), 인덱스 정보(402), 및 입력 데이터(403)를 출력할 수 있다.
도 6은 본 발명의 일실시예에 따른 병렬 연산 처리 장치의 구성 요소들 중 ACS 연산을 수행하는 주요 구성 요소를 도시한 블록도이다.
도 6에 따르면, 병렬 연산 처리 장치(600)는 병렬 연산부(601), 병렬 레지스터부(602), 데이터 정렬부(603), 및 데이터 저장부(604)를 포함할 수 있다.
먼저, 병렬 연산부(601)는 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값을 계산할 수 있다. 여기서, 경로값은 컬럼 별로 계산된 각 소스 노드에서의 메트릭을 현재 컬럼을 기준으로 누적한 값을 의미한다. 다시 말해, 경로 값은, 현재 컬럼에 속하는 소스 노드를 기준으로 이전 컬럼들 각각에 속하는 소스 노드에서의 메트릭들과 현재 컬럼에 속하는 소스 노드에서의 메트릭을 모두 더한 값을 나타낼 수 있다. 예를 들어, 경로값은 비터비 디코딩에서 해밍 디스턴스(hamming distance)를 누적한 값을 의미할 수 있다.
그리고, 병렬 연산부(601)는 현재 컬럼에 속하는 소스 노드에서의 경로값을 이용하여 어느 하나의 경로를 선택할 수 있다. 예를 들어, 현재 컬럼에 속하는 각 소스 노드에서의 경로값이 복수개인 경우, 병렬 연산부(601)는 복수의 경로값들 중 가장 작은 경로값을 최소 경로값으로 결정하고, 결정된 최소 경로값에 해당하는 경로를 선택할 수 있다. 이어, 병렬 연산부(601)는 현재 컬럼에 속하는 각 소스 노드에서의 최소 경로값을 이전 컬럼에 속하는 각 소스 노드에서의 최소 경로값이 저장된 위치에 덮어쓰기(overwrite)를 이용하여 병렬 레지스터부(602)에 저장할 수 있다.
이어, 병렬 연산부(601)는 상기 선택된 경로에 해당하는 입력 데이터(input data)를 결정하고, 선택된 경로에 기초하여 이전 컬럼에 속하는 소스 노드를 각각 결정할 수 있다. 여기서, 이전 컬럼에 속하는 소스 노드는, 상기 선택된 경로에 기초하여 현재 컬럼에 속하는 소스 노드와 논리적으로 연결된 소스 노드일 수 있다. 이에 따라, 병렬 연산부(601)는 현재 컬럼에 속하는 각 소스 노드에 연결된 이전 컬럼의 소스 노드를 나타내는 인덱스 정보를 결정할 수 있다.
이어, 데이터 정렬부(603)는 이전 컬럼에 속하는 각 소스 노드의 입력 데이터 순서에 기초하여 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 결정할 수 있다.
일례로, 도 7를 참조하면, 데이터 정렬부(603)는 현재 컬럼(701)에 속하는 소스 노드 1(703)의 인덱스 정보에 기초하여 소스 노드 1(703)이 이전 컬럼의 소스 노드 3(704)과 논리적으로 연결되었음을 확인할 수 있다. 마찬가지로, 데이터 정렬부(603)는 현재 컬럼의 소스 노드 2(705)의 인덱스 정보에 기초하여 소스 노드 2(705)가 이전 컬럼의 소스 노드 5(706)와 논리적으로 연결되었음을 확인할 수 있다. 동일한 방식으로, 데이터 정렬부(603)는 현재 컬럼에 속하는 모든 소스 노드들 각각과 논리적으로 연결된 이전 컬럼의 소스 노드들을 확인할 수 있다.
그러면, 데이터 정렬부(603)는 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬할 수 있다. 이때, 데이터 정렬부(603)는 현재 컬럼에 속하는 각 소스 노드의 입력 데이터가, 현재 컬럼에 속하는 각 소스 노드와 논리적으로 연결된 이전 컬럼에 속하는 소스 노드의 입력 데이터와 물리적으로 연결되게(concatenated) 위치하도록 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬할 수 있다.
예를 들어, 도 7을 참조하면, 데이터 정렬부(603)는 현재 컬럼의 소스 노드 0에 해당하는 입력 데이터는 소스 노드 0와 논리적으로 연결된 이전 컬럼의 소스 노드 0에 해당하는 입력 데이터와 벡터 레지스터에 물리적으로 연결되게 정렬할 수 있다. 그리고, 데이터 정렬부(603)는 현재 컬럼의 소스 노드 1(703)에 해당하는 입력 데이터는 소스 노드 1(703)과 논리적으로 연결된 이전 컬럼의 소스 노드 3에 해당하는 입력 데이터와 벡터 레지스터에 물리적으로 연결되게 저장할 수 있다. 마찬가지로, 데이터 정렬부(603)는 현재 컬럼의 소스 노드 2(705)에 해당하는 입력 데이터부터 현재 컬럼의 소스 노드 7에 해당하는 입력 데이터까지 데이터 순서를 정렬할 수 있다.
그리고, 병렬 연산부(601)는 입력 데이터 순서가 정렬된 현재 컬럼의 입력 데이터를 이전 컬럼의 입력 데이터에 레지스터 처리 단위에 따라 병합하여 병렬 레지스터부(602)에 저장할 수 있다. 여기서, 레지스터 처리 단위는, 병렬 레지스터가 동시에 처리할 수 있는 데이터의 크기를 나타내는 단위로서 미리 설정될 수 있다. 예를 들어, 레지스터 처리 단위가 8bits, 16 bits, 32 bits 등으로 설정될 수 있으며, 16bits로 설정된 경우, 병렬 레지스터부(602)는 16bits까지 복수의 컬럼들에 속하는 각 소스 노드의 입력 데이터들을 병합하여 저장할 수 있다.
이때, 병렬 연산부(601)는 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서가 정렬됨에 따라 이전 컬럼의 입력 데이터에 대해 비트 쉬프트(bit shift) 연산을 수행할 수 있다. 이처럼, 병렬 연산부(601)는 비트 쉬프트 연산을 통해 이전 컬럼의 입력 데이터에 현재 컬럼의 입력 데이터를 병합하여 병렬 레지스터부(602)에 저장할 수 있다.
일례로, 도 8을 참고하면, 레지스터 처리 단위가 k 비트로 기설정된 경우, 벡터 레지스터 0에 저장된 이전 컬럼들의 입력 데이터(803)를 비트 쉬프트할 수 있다. 그러면, 이전 컬럼들의 입력 데이터(803)가 비트 쉬프트됨에 따라 벡터 레지스터 (801)의 마지막 컬럼은 0으로 채워질 수 있다. 그러면, 병렬 연산부(601)는 비트 쉬프트를 통해 채워진 0과 현재 컬럼의 입력 데이터(804)를 XOR 연산하여, 이전 컬럼의 입력 데이터에 현재 컬럼의 입력 데이터를 병합(806)하여 벡터 레지스터 2(805)에 저장할 수 있다. 다시 말해, 정렬을 통해 데이터 순서가 정렬된 현재 컬럼의 입력 데이터와 논리적으로 연결된 이전 컬럼들의 입력 데이터가 물리적으로 연결되도록 붙여서 벡터 레지스터에 저장될 수 있다. 이처럼 병합을 통해, 현재 컬럼의 입력 데이터와 이전 컬럼들의 입력데이터가 레지스터 처리 단위까지 붙여서 저장됨에 따라, ACS 연산 결과가 매우 작인 비트를 차지하더라도 낭비되는 비트가 감소 또는 제거될 수 있다.
이때, 병렬 연산부(601)는 이전 컬럼의 입력 데이터에 현재 컬럼의 입력 데이터를 병합하는 연산을 마지막 컬럼이 현재 컬럼이 될 때까지 레지스터 처리 단위마다 반복할 수 있다. 예를 들어, 레지스터 처리 단위가 16비트로 설정되고, 전체 컬럼이 160개로 구성된 경우, 병렬 연산부(601)는 전체 컬럼들을 대상으로 첫 번째 컬럼부터 16번째 컬럼까지 병합하여 병렬 레지스터부(602)에 저장할 수 있다. 그리고, 병렬 연산부(601)는 이러한 병합을 마지막 160 번째 컬럼까지 반복할 수 있다. 다시 말해, 병렬 연산부(601)는 레지스터 처리 단위에 기초하여 현재 컬럼의 입력 데이터를 병합하는 연산을 10번(160개 컬럼/16비트) 반복할 수 있다. 그러면, 병렬 레지스터부(602)는 데이터 순서가 정렬된 16개의 컬럼들 각각의 입력 데이터를 10번에 걸쳐서 데이터 저장부(604)에 저장할 수 있다.
한편, 데이터 정렬부(603)가 현재 컬럼의 입력 데이터 순서를 정렬하는 경우, 현재 컬럼에 속하는 각 소스 노드들은 ACS 연산 수행 이후에 데이터 정렬 및 경로를 선택하는 과정이 수행되므로, 현재 컬럼의 입력 데이터 순서는 이전 컬럼의 입력 데이터 순서와 서로 달라질 수 있다. 이로 인해, 병렬 연산부(601)는 현재 컬럼의 소스 노드와 이전 컬럼의 소스 노드 간의 논리적 연결 관계를 나타내는 인덱스 정보를 병렬 레지스터부(602)에 저장할 수 있다. 이때, 병렬 연산부(601)는 트레일리스 다이어그램(Trellis Diagram)을 이용하여 이전 컬럼의 소스 노드와 현재 컬럼의 소스 노드 간의 논리적 연결 관계를 결정할 수 있다. 이처럼, 인덱스 정보는, 컬럼 별로 ACS 연산을 수행할 때마다 생성되며, 생성되는 인덱스 정보를 컬럼 별로 저장하는 경우, 메모리가 낭비되어 많은 메모리가 필요하고 하드웨어 로직의 크기가 증가할 수 있다.
이때, 병렬 레지스터부(602)에는 컬럼 별로 인덱스 정보를 저장되지 않고, 레지스터 처리 단위마다 인덱스 정보가 저장됨에 따라 메모리의 낭비가 감소 또는 제거되고, 결국 하드웨어 로직의 크기를 감소될 수 있다.
상세하게는, 병렬 연산부(601)는 현재 레지스터의 첫 번째 컬럼의 각 소스 노드와 논리적으로 연결된 이전 레지스터의 마지막 컬럼의 각 소스 노드에 대한 인덱스 정보를 현재 레지스터에 저장할 수 있다.
예를 들어, 도 2를 참고하면, 벡터 레지스터 0(VR 0: 202)가 이전 컬럼들에 속하는 각 소스 노드의 입력 데이터가 저장된 이전 레지스터이고, 벡터 레지스터 1(VR 1: 203)이 현재 컬럼이 속하는 각 소스 노드의 입력 데이터가 저장된 현재 레지스터인 경우, 병렬 연산부(601)는 현재 컬럼이 속하는 각 소스 노드의 입력 데이터와 함께 현재 컬럼의 인덱스 정보를 벡터 레지스터 1(203)에 저장할 수 있다. 그러면, 레지스터 처리 단위가 k비트로 기설정되고, 전체 컬럼이 n개로 구성된 경우, 병렬 연산부(601)는 n번째 컬럼에 속하는 각 소스 노드의 입력 데이터를 저장할 때까지 k비트마다 인덱스 정보를 병렬 레지스터부(602)에 저장할 수 있다.
그리고, 데이터 저장부(604)는 병렬 레지스터부(602)에 임시로 저장된 ACS 연산 결과들을 저장할 수 있다. 예를 들어, 데이터 저장부(604)는 입력 데이터 순서가 정렬된 컬럼 별 입력 데이터, 레지스터 처리 단위 마다 인덱스 정보, 및 최종 소스 노드의 경로값 등을 저장할 수 있다. 그러면, ACS 연산 결과가 데이터 저장부(604)에 저장된 경우, 병렬 레지스터부(602)는 레지스터를 비우고 다시 새로운 연산을 수행하는 데 이용될 수 있다.
이상의 도 6에서는 데이터 저장부(604)가 데이터 순서가 정렬된 입력 데이터를 저장하는 것에 대해 설명하였으나, 이는 실시예에 해당되며, 병렬 연산 처리 장치(600)는 병렬 레지스터부(602)와 바로 연결된 데이터 저장부 2를 포함할 수도 있다. 그러면, 데이터 저장부 2는 BMC 연산 결과와 같이, 연산 결과 데이터의 순서가 바뀌지 않아도 되는 데이터를 저장하기 위해 이용될 수 있다.
도 9는 본 발명의 일실시예에 따른 TB 연산을 병렬로 처리하는 구성을 도시한 도면이다. 도 9에서, TB 연산은 도 1의 병렬 연산부(150)에 의해 수행될 수 있다.
병렬 연산 처리 장치는, 마지막 컬럼인 n번째 컬럼에 속하는 m개의 소스 노드들의 경로값을 각각 비교할 수 있다. 그리고, 병렬 연산 처리 장치는, m개의 소스 노드들 중 경로값이 최소인 소스 노드를 최종 소스 노드로 결정할 수 있다. 이어, 병렬 연산 처리 장치는, 최종 소스 노드와 논리적으로 연결된 이전 컬럼들에 속하는 소스 노드의 입력 데이터를 역추적(Traceback: 903)할 수 있다. 예를 들어, 전체 컬럼의 개수가 n+1개이고, 소스 노드의 개수가 m=8이고, 8개의 소스 노드들 중 소스 노드 2의 경로값이 가장 작은 경우, 병렬 연산 처리 장치는, 마지막 n+1번째 컬럼에 속하는 소스 노드 2를 최종 소스 노드로 결정할 수 있다. 그리고, 병렬 연산 처리 장치는, 소스 노드 2와 논리적으로 연결된 이전 컬럼 n에 속하는 소스 노드 5의 입력 데이터를 역추적할 수 있다. 마찬가지로, 병렬 연산 처리 장치는, 이전 컬럼에 속하는 소스 노드 5와 논리적으로 연결된 이전 컬럼 n-1에 속하는 소스 노드 3의 입력 데이터를 역추적할 수 있다. 동일한 방법으로, 병렬 연산 처리 장치는, 첫 번째 컬럼인 이전 컬럼 n=0까지 역추적을 반복하여 모든 입력 데이터를 획득할 수 있다.
도 10은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 SIMD 프로세서를 이용하여 비터비 디코딩을 병렬로 처리하는 방법을 설명하기 위해 제공되는 흐름도이다.
먼저, 1001 단계에서, 병렬 연산 처리 장치는, 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값을 계산할 수 있다. 여기서, 경로값은 컬럼 별로 계산된 각 소스 노드에서의 메트릭을 현재 컬럼을 기준으로 누적한 값을 의미할 수 있다.
이어, 1002 단계에서, 병렬 연산 처리 장치는, 경로값에 기초하여 경로를 선택할 수 있다. 예를 들어, 현재 컬럼에 속하는 각 소스 노드에서의 경로값이 복수개인 경우, 병렬 연산 처리 장치는, 복수의 경로값들 중 가장 작은 경로값을 최소 경로값으로 결정하고, 결정된 최소 경로값에 해당하는 경로를 선택할 수 있다.
그리고, 1003 단계에서, 병렬 연산 처리 장치는, 선택된 경로에 기초하여 현재 컬럼에 속하는 소스 노드와 연결된 이전 컬럼에 속하는 소스 노드를 결정할 수 있다. 예를 들어, 현재 컬럼에 속하는 소스 노드 2와 경로 1을 통해 이전 컬럼에 속하는 소스 노드 1이 논리적으로 연결, 현재 컬럼에 속하는 소스 노드 2와 경로 4를 통해 이전 컬럼에 속하는 소스 노드 4가 논리적으로 연결되고, 소스 노드 2와 소스 노드 1에 해당하는 경로값이 10, 소스 노드 2와 소스 노드 4에 해당하는 경로값이 8인 경우, 병렬 연산 처리 장치는, 경로값 8을 현재 컬럼에 속하는 소스 노드 2에서의 최소 경로값으로 결정하고, 소스 노드 2와 논리적으로 연결된 경로 1 및 경로 4 중 최소 경로값에 기초하여 경로 4를 선택할 수 있다.
이때, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 소스 노드에서의 최소 경로값을 이전 컬럼에 속하는 각 소스 노드에서의 최소 경로값이 저장된 위치에 덮어쓰기를 이용하여 저장할 수 있다. 예를 들어, 소스 노드 2에서의 최소 경로값 8을 이전 컬럼에 속하는 소스 노드 4에서의 최소 경로값이 저장된 위치에 덮어씌워 저장할 수 있다.
이어, 1004 단계에서, 병렬 연산 처리 장치는, 선택된 경로에 해당하는 입력 데이터를 결정할 수 있다. 예를 들어, 현재 컬럼에 속하는 소스 노드 2와 논리적으로 연결된 이전 컬럼에 속하는 소스 노드 1에 해당하는 입력 데이터가 0이고, 상기 소스 노드 2와 논리적으로 연결된 이전 컬럼에 속하는 소스 노드 4에 해당하는 입력 데이터가 1인 경우, 병렬 연산 처리 장치는 경로 4가 선택됨에 따라, 경로 4에 해당하는 입력 데이터를 '1'로 결정할 수 있다. 동일한 방법으로, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 소스 노드에 대한 입력 데이터를 결정할 수 있다.
그리고, 1005 단계에서, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 소스 노드의 입력 데이터의 순서를 정렬할 수 있다. 이때, 병렬 연산 처리 장치는, 이전 컬럼에 속하는 각 소스 노드의 입력 데이터 순서에 기초하여 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬할 수 있다.
일례로, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 소스 노드의 입력 데이터가 현재 컬럼에 속하는 각 소스 노드와 논리적으로 연결된 이전 컬럼에 속하는 소스 노드의 입력 데이터와 물리적으로 연결되게(concatenate) 위치하도록 입력 데이터 순서를 정렬할 수 있다.
그러면, 1006 단계에서, 병렬 연산 처리 장치는, 데이터 순서가 정렬된 현재 컬럼의 입력 데이터를 이전 컬럼의 입력 데이터와 함께 레지스터 처리 단위에 따라 병합하여 저장할 수 있다. 이때, 병렬 연산 처리 장치는, 이전 컬럼의 입력 데이터에 비트 쉬프트 연산을 수행하여 이전 컬럼의 입력 데이터에 현재 컬럼의 입력 데이터를 병합하여 저장할 수 있다. 그러면, 이전 컬럼의 입력 데이터 옆에 나란히 묶여서 데이터 순서가 정렬된 현재 컬럼의 입력 데이터가 저장될 수 있다.
이때, 병렬 연산 처리 장치는, 컬럼 별로 ACS 연산이 수행됨에 따라 생성된 인덱스 정보를 계속 저장하지 않고, 레지스터 처리 단위마다 인덱스 정보를 저장할 수 있다.
일례로, 병렬 연산 처리 장치는, 현재 레지스터의 첫 번째 컬럼의 각 소스 노드와 논리적으로 연결된 이전 레지스터의 마지막 컬럼의 각 소스 노드를 나타내는 인덱스 정보를 현재 레지스터에 저장할 수 있다. 이처럼, 병렬 연산 처리 장치는, 레지스터 처리 단위마다 인덱스 정보를 저장하고, 이전 컬럼의 입력 데이터에 현재 컬럼의 입력 데이터를 병합하여 저장함에 따라, 메모리의 낭비를 감소 또는 제거하고, 결국, 하드웨어 로직(logic)의 크기를 감소시킬 수 있다.
그리고, 1007 단계에서, 병렬 연산 처리 장치는, 최종 소스 노드를 기준으로 이전 컬럼들에 속하는 소스 노드의 입력 데이터를 역추적할 수 있다.
일례로, 전체 컬럼의 개수가 n+1개인 경우, 병렬 연산 처리 장치는, 마지막 n+1번째 컬럼에 속하는 각 소스 노드에서의 경로값을 계산할 수 있다. 그리고, 병렬 연산 처리 장치는 계산된 경로값들 중 가장 작은 경로값을 최소 경로값으로 결정하고, 최소 경로값에 해당하는 소스 노드를 최종 소스 노드로 결정할 수 있다. 이어, 병렬 연산 처리 장치는, 최종 소스 노드를 기준으로 최종 소스 노드와 논리적으로 연결된 이전 컬럼들의 입력 데이터를 역추적할 수 있다. 이때, 병렬 연산 처리 장치는 n=0인 첫 번째 컬럼까지 입력 데이터에 대한 역추적을 반복하여, 전체 컬럼에 대한 입력 데이터들을 모두 획득할 수 있다.
지금까지, 병렬 연산 처리 장치가, 이전 컬럼에 속하는 각 소스 노드의 입력 데이터와 현재 컬럼에 속하는 각 소스 노드의 입력 데이터를 병합하여 병렬 레지스터부에 저장함으로써, 낭비되는 메모리를 제거 또는 감소하는 구성에 대해 설명하였다.
이상에서 설명한 바와 같이, 병렬 연산 처리 장치는, 2개의 입력 데이터와 2개의 경로값을 입력받아 ACS 연산을 수행하여 1개의 ACS 연산 결과를 출력할 수 있다. 이처럼, 4개의 데이터를 입력받는 경우, 하드웨어 로직의 크기가 매우 커질 수 있다. 그러나, 도 2를 참고하면, 본 발명의 일실시예에 따른 병렬 연산 처리 장치는 2개의 데이터만을 입력 받아 ACS 연산을 수행하여 1개의 ACS 연산 결과를 출력할 수 있다.
도 11은 본 발명의 일실시예에 따른 병렬 연산 처리 장치에서 2개의 데이터 입력으로 연산을 처리하는 구성을 설명하기 위해 제공되는 도면이다. 도 11에서, 2개의 데이터 입력에 대한 연산은 도 1의 병렬 연산부(150)에 의해 수행될 수 있다.
도 11에 따르면, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 소스 노드로 입력되는 경로들 중 입력 데이터 0에 해당하는 포트 0와 입력 데이터 1에 해당하는 포트 1를 나누어 처리할 수 있다.
일례로, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 소스 노드(1101)와 논리적으로 연결된 이전 컬럼에 속하는 각 소스 노드(1102) 중에서, 포트 0을 통해 현재 컬럼의 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드(1104)와 포트 1을 통해 현재 컬럼의 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드(1102)에 해당하는 이전 컬럼의 소스 노드(1005)를 서로 분리하여 배열할 수 있다. 예를 들어, 현재 컬럼의 소스 노드 0와 포트 0을 통해 연결된 이전 컬럼의 소스 노드는 소스 노드 0, 현재 컬럼의 소스 노드 1과 포트 0을 통해 연결된 이전 컬럼의 소스 노드는 소스 노드 2이다. 마찬가지로, 도 11에 따르면, 현재 컬럼의 소스 노드 3부터 7까지 각각 논리적으로 연결된 이전 컬럼의 소스 노드를 확인할 수 있다. 그러면, 현재 컬럼의 각 소스 노드(1101)와 포트 0을 통해 논리적으로 연결된 이전 컬럼의 소스 노드(1004)는 소스 노드 '0, 2, 4, 6, 0, 2, 4, 6'일 수 있다. 마찬가지로, 현재 컬럼의 각 소스 노드(1101)와 포트 1을 통해 논리적으로 연결된 이전 컬럼의 소스 노드(1005)는 소스 노드 '1, 3, 5,7, 1,3, 5, 7'일 수 있다.
그리고, 병렬 연산 처리 장치는, 현재 컬럼에 속하는 각 소스 노드에서 선택된 경로에 해당하는 입력 데이터를 결정할 수 있다. 이때, 병렬 연산 처리 장치는, 포트 0 및 포트 1을 분리하여 상기 입력 데이터를 결정할 수 있다. 예를 들어, 포트 0에서 입력 데이터를 결정하는 경우, 병렬 연산 처리 장치는, 현재 컬럼의 소스 노드 0(1108)에서 결정된 경로에 해당하는 입력 데이터를 '0'으로 결정할 수 있다. 동일한 방법으로, 병렬 연산 처리 장치는, 현재 컬럼의 소스 노드 1 내지 소스 노드 7 각각에서 결정된 경로에 해당하는 입력 데이터를 결정할 수 있다. 그러면, 소스 노드 0 내지 소스 노드 7 각각에서 결정된 입력 데이터는, '0, 1, 0, 0, 1, 1, 1, 1'을 포함할 수 있다. 마찬가지로, 포트 0에서 입력 데이터를 결정하는 경우, 병렬 연산 처리 장치는, 현재 컬럼의 소스 노드 0 내지 7 각각에서 입력 데이터를 결정할 수 있다. 이때, 포트 1에서, 결정된 입력 데이터는, '0, 1, 0, 0, 1, 1, 1, 1'을 포함할 수 있다.
이어, 병렬 연산 처리 장치는, 결정된 입력 데이터 중 입력 데이터가 '0'에 해당하는 현재 컬럼의 소스 노드와 연결된 이전 컬럼의 소스 노드를 결정할 수 있다.
일례로, 포트 0인 경우, 병렬 연산 처리 장치는, 결정된 입력 데이터들(1106) 중에서 입력 데이터가 '0'에 해당하는 현재 컬럼의 소스 노드를 선택할 수 있다. 예를 들어, 입력 데이터가 '0'에 해당하는 현재 컬럼의 소스 노드는 소스 노드 0, 소스 노드 2, 및 소스 노드 3을 포함할 수 있다. 그러면, 병렬 연산 처리 장치는, 선택된 현재 컬럼의 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드를 결정할 수 있다. 예를 들어, 입력 데이터가 '0'에 해당하는 현재 컬럼의 소스 노드 0, 2, 및 3과 연결된 이전 컬럼의 소스 노드(1109)는 소스 노드 0, 소스 노드 4, 및 소스 노드 6으로 결정될 수 있다.
동일한 방법으로, 포트 1인 경우, 병렬 연산 처리 장치는, 결정된 입력 데이터들(1107) 중에서 입력 데이터가 '1'에 해당하는 현재 컬럼의 소스 노드를 선택할 수 있다. 예를 들어, 입력 데이터가 '1'에 해당하는 현재 컬럼의 소스 노드는 소스 노드 1, 소스 노드 4 내지 소스 노드 7을 포함할 수 있다. 그러면, 병렬 연산 처리 장치는, 선택된 현재 컬럼의 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드를 결정할 수 있다. 예를 들어, 입력 데이터가 '1'에 해당하는 현재 컬럼의 소스 노드 0, 4 내지 7과 각각 논리적으로 연결된 이전 컬럼의 소스 노드(1110)는 소스 노드 3, 소스 노드 1, 소스 노드 3, 소스 노드 5, 및 소스 노드 7로 각각 결정될 수 있다.
그러면, 병렬 연산 처리 장치는, 포트 0에서 선택된 현재 컬럼의 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드와 포트 1에서 선택된 현재 컬럼의 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드를 XOR 연산할 수 있다. 그리고, 병렬 연산 처리 장치는, 상기 XOR 연산 결과를 통해 현재 컬럼의 각 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드들 중에서 선택된 경로에 해당하는 이전 컬럼의 각 소스 노드를 결정(1112)할 수 있다.
예를 들어, 병렬 연산 처리 장치는, XOR 연산을 통해 '0, 3, 4, 6, 1, 3, 5, 7'을 연산 결과로 출력할 수 있다. 그러면, 병렬 연산 처리 장치는, 연산 결과 '0'에 기초하여 현재 컬럼의 소스 노드 0와 이전 컬럼의 소스 노드 0가 논리적으로 연결, 연산 결과 '3'에 기초하여 현재 컬럼의 소스 노드 1과 이전 컬럼의 소스 노드 3이 논리적으로 연결됨을 결정할 수 있다. 동일한 방법으로, 연산 처리 장치는 XOR 연산 결과에 기초하여 현재 컬럼의 소스 노드 2 내지 현재 컬럼의 소스 노드 7과 논리적으로 연결된 이전 컬럼의 소스 노드를 각각 결정할 수 있다.
이처럼, 병렬 연산 처리 장치는, ACS 연산을 포트 0 및 포트 1로 나누어 처리하고, XOR 연산을 이용함에 따라, 현재 컬럼의 각 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드들 중에서, 현재 컬럼의 소스 각 소스 노드에서 선택된 경로에 해당하는 이전 컬럼의 소스 노드를 결정할 수 있다. 이에 따라, 병렬 연산 처리 장치는, 2개의 데이터를 입력받아 ACS 연산을 수행하고, 1개의 ACS 연산 결과를 출력할 수 있다. 이처럼, ACS 연산 시 요구되는 데이터 입력의 개수가 4개에서 2개로 감소함에 따라, 하드웨어 로직의 복잡도가 감소할 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 병렬 연산 처리 장치
110: 명령어 저장부
120: 제어부
130: 스칼라 연산부
140: 스칼라 레지스터부
150: 병렬 연산부
160: 병렬 레지스터부
170: 데이터 정렬부
180: 데이터 저장부
110: 명령어 저장부
120: 제어부
130: 스칼라 연산부
140: 스칼라 레지스터부
150: 병렬 연산부
160: 병렬 레지스터부
170: 데이터 정렬부
180: 데이터 저장부
Claims (19)
- 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값을 계산하고, 상기 경로값을 이용하여 선택된 경로에 해당하는 입력 데이터와 이전 컬럼에 속하는 소스 노드를 각각 결정하는 병렬 연산부-상기 이전 컬럼에 속하는 소스 노드는, 상기 선택된 경로에 기초하여 상기 현재 컬럼에 속하는 소스 노드와 논리적으로 연결된 소스 노드임-; 및
상기 이전 컬럼에 속하는 각 소스 노드의 입력 데이터 순서에 기초하여 상기 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬하는 데이터 정렬부
를 포함하고,
상기 병렬 연산부는,
상기 이전 컬럼의 입력 데이터와 상기 순서가 정렬된 현재 컬럼의 입력 데이터를 레지스터 처리 단위에 따라 병합하여 병렬 레지스터부에 저장하는 것을 특징으로하는 병렬 연산 처리 장치. - 제1항에 있어서,
상기 병렬 연산부는,
상기 이전 컬럼의 입력 데이터에 대해 비트 쉬프트(bit shift) 연산을 수행하여 상기 이전 컬럼의 입력 데이터에 상기 현재 컬럼의 입력 데이터를 병합하여 저장하는 것을 특징으로 하는 병렬 연산 처리 장치. - 제1항에 있어서,
상기 데이터 정렬부는,
상기 현재 컬럼에 속하는 각 소스 노드의 입력 데이터가 상기 현재 컬럼에 속하는 각 소스 노드와 논리적으로 연결된 이전 컬럼에 속하는 소스 노드의 입력 데이터와 물리적으로 연결되게(concatenate) 위치하도록 상기 입력 데이터 순서를 정렬하는 것을 특징으로 하는 병렬 연산 처리 장치. - 제1항에 있어서,
상기 병렬 연산부는,
상기 현재 컬럼에 속하는 각 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드를 나타내는 인덱스 정보를 상기 레지스터 처리 단위마다 저장하는 것을 특징으로 하는 병렬 연산 처리 장치. - 제4항에 있어서,
상기 인덱스 정보는, 상기 선택된 경로에 기초하여 현재 레지스터의 첫 번째 컬럼의 각 소스 노드와 논리적으로 연결된 이전 레지스터의 마지막 컬럼의 각 소스 노드를 나타내는 정보인 것을 특징으로 하는 병렬 연산 처리 장치. - 제1항에 있어서,
상기 병렬 연산부는,
현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값이 복수개인 경우, 복수의 경로값들 중 최소 경로값을 결정하고, 상기 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 최소 경로값을 이전 컬럼에 속하는 각 소스 노드에서의 최소 경로값이 저장된 위치에 덮어쓰기(overwrite)를 이용하여 상기 병렬 레지스터부에 저장하는 것을 특징으로 하는 병렬 연산 처리 장치. - 제1항에 있어서,
상기 병렬 연산부는,
마지막 컬럼에 속하는 각 소스 노드에서의 경로값을 계산하고, 계산된 경로값들 중 최소 경로값에 해당하는 최종 소스 노드와 연결된 이전 컬럼들에 속하는 소스 노드의 입력 데이터를 역추적(Traceback)하는 것을 특징으로 하는 병렬 연산 처리 장치. - 제7항에 있어서,
상기 병렬 연산부는,
상기 마지막 컬럼부터 첫 번째 컬럼에 속하는 소스 노드까지 상기 역추적을 반복함에 따라, 상기 최종 소스 노드와 연결된 각 소스 노드에 해당하는 입력 데이터를 획득하는 것을 특징으로 하는 병렬 연산 처리 장치. - 제1항에 있어서,
상기 경로값은, 비터비 디코딩(Viterbi Decoding)을 수행함에 따라 컬럼 별로 계산된 각 노드에서의 메트릭(metric)을 현재 컬럼을 기준으로 누적한 값인 것을 특징으로 하는 병렬 연산 처리 장치. - 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값을 계산하는 단계;
상기 경로값을 이용하여 선택된 경로에 해당하는 입력 데이터와 이전 컬럼에 속하는 소스 노드를 각각 결정하는 단계-상기 이전 컬럼에 속하는 소스 노드는, 상기 선택된 경로에 기초하여 상기 현재 컬럼에 속하는 소스 노드와 논리적으로 연결된 소스 노드임-;
상기 이전 컬럼에 속하는 각 소스 노드의 입력 데이터 순서에 기초하여 상기 현재 컬럼에 속하는 각 소스 노드의 입력 데이터 순서를 정렬하는 단계; 및
상기 이전 컬럼의 입력 데이터와 상기 순서가 정렬된 현재 컬럼의 입력 데이터를 레지스터 처리 단위에 따라 병합하여 저장하는 단계
를 포함하는 병렬 연산 처리 방법. - 제10항에 있어서,
상기 레지스터 처리 단위에 따라 병합하여 저장하는 단계는,
상기 이전 컬럼의 입력 데이터에 대해 비트 쉬프트(bit shift) 연산을 수행하여 상기 이전 컬럼의 입력 데이터에 상기 현재 컬럼의 입력 데이터를 병합하여 병렬 레지스터부에 저장하는 것을 특징으로 하는 병렬 연산 처리 방법. - 제10항에 있어서,
상기 입력 데이터 순서를 정렬하는 단계는,
상기 현재 컬럼에 속하는 각 소스 노드의 입력 데이터가 상기 현재 컬럼에 속하는 각 소스 노드와 논리적으로 연결된 이전 컬럼에 속하는 소스 노드의 입력 데이터와 물리적으로 연결되게(concatenate) 위치하도록 상기 입력 데이터 순서를 정렬하는 것을 특징으로 하는 병렬 연산 처리 방법. - 제10항에 있어서,
상기 레지스터 처리 단위에 따라 병합하여 저장하는 단계는,
상기 현재 컬럼에 속하는 각 소스 노드와 논리적으로 연결된 이전 컬럼의 소스 노드를 나타내는 인덱스 정보를 상기 레지스터 처리 단위마다 저장하는 것을 특징으로 하는 병렬 연산 처리 방법. - 제13항에 있어서,
상기 인덱스 정보는, 상기 선택된 경로에 기초하여 현재 레지스터의 첫 번째 컬럼의 각 소스 노드와 논리적으로 연결된 이전 레지스터의 마지막 컬럼의 각 소스 노드를 나타내는 정보인 것을 특징으로 하는 병렬 연산 처리 방법. - 제10항에 있어서,
상기 결정하는 단계는,
현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 경로값이 복수개인 경우, 복수의 경로값들 중 최소 경로값을 결정하고,
상기 레지스터 처리 단위에 따라 누적하여 저장하는 단계는,
상기 현재 컬럼(column)에 속하는 각 소스 노드(source node)에서의 최소 경로값을 이전 컬럼에 속하는 각 소스 노드에서의 최소 경로값이 저장된 위치에 덮어쓰기(overwrite)를 이용하여 저장하는 것을 특징으로 하는 병렬 연산 처리 방법. - 제10항에 있어서,
상기 경로값을 계산하는 단계는,
마지막 컬럼에 속하는 각 소스 노드에서의 경로값을 계산하고, 계산된 경로값들 중 최소 경로값에 해당하는 최종 소스 노드와 연결된 이전 컬럼들에 속하는 소스 노드의 입력 데이터를 역추적하는 것을 특징으로 하는 병렬 연산 처리 방법. - 제16항에 있어서,
상기 경로값을 계산하는 단계는,
상기 마지막 컬럼부터 첫 번째 컬럼에 속하는 소스 노드까지 상기 역추적을 반복함에 따라, 상기 최종 소스 노드와 연결된 각 소스 노드에 해당하는 입력 데이터를 획득하는 것을 특징으로 하는 병렬 연산 처리 방법. - 제10항에 있어서,
상기 경로값은, 비터비 디코딩(Viterbi Decoding)을 수행함에 따라 컬럼 별로 계산된 각 노드에서의 메트릭(metric)을 현재 컬럼을 기준으로 누적한 값인 것을 특징으로 하는 병렬 연산 처리 방법. - 제10항 내지 제18항 중 어느 한 항의 병렬 연산 처리 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110053512A KR20120134549A (ko) | 2011-06-02 | 2011-06-02 | Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법 |
US13/364,687 US8769390B2 (en) | 2011-06-02 | 2012-02-02 | Apparatus and method for processing operations in parallel using a single instruction multiple data processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110053512A KR20120134549A (ko) | 2011-06-02 | 2011-06-02 | Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20120134549A true KR20120134549A (ko) | 2012-12-12 |
Family
ID=47262614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110053512A KR20120134549A (ko) | 2011-06-02 | 2011-06-02 | Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8769390B2 (ko) |
KR (1) | KR20120134549A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042502B2 (en) | 2014-12-24 | 2021-06-22 | Samsung Electronics Co., Ltd. | Vector processing core shared by a plurality of scalar processing cores for scheduling and executing vector instructions |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9760372B2 (en) * | 2011-09-01 | 2017-09-12 | Hewlett Packard Enterprise Development Lp | Parallel processing in plural processors with result register each performing associative operation on respective column data |
US9342544B2 (en) | 2014-01-30 | 2016-05-17 | International Business Machines Corporation | Parallel load in a column-store database |
CN111523888B (zh) * | 2020-04-16 | 2023-09-05 | 武汉有牛科技有限公司 | 基于区块链技术的链上数据及信息溯源系统 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752001A (en) | 1995-06-01 | 1998-05-12 | Intel Corporation | Method and apparatus employing Viterbi scoring using SIMD instructions for data recognition |
US5838984A (en) | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
US5805875A (en) | 1996-09-13 | 1998-09-08 | International Computer Science Institute | Vector processing system with multi-operation, run-time configurable pipelines |
US6665790B1 (en) | 2000-02-29 | 2003-12-16 | International Business Machines Corporation | Vector register file with arbitrary vector addressing |
WO2002003637A1 (de) * | 2000-07-03 | 2002-01-10 | Infineon Technologies Ag | Viterbi-entzerrer mittels verschiedener hardware-datenpfaden für acs und übertr agungsmetriken operationen |
US6922716B2 (en) | 2001-07-13 | 2005-07-26 | Motorola, Inc. | Method and apparatus for vector processing |
US7315934B2 (en) * | 2002-03-06 | 2008-01-01 | Matsushita Electric Industrial Co., Ltd. | Data processor and program for processing a data matrix |
US6718504B1 (en) * | 2002-06-05 | 2004-04-06 | Arc International | Method and apparatus for implementing a data processor adapted for turbo decoding |
US6954841B2 (en) * | 2002-06-26 | 2005-10-11 | International Business Machines Corporation | Viterbi decoding for SIMD vector processors with indirect vector element access |
GB2394571B (en) | 2002-10-23 | 2005-08-10 | Motorola Inc | Arrangement system and method for vector permutation in single-instruction multiple-data microprocessors |
US7343530B2 (en) | 2004-02-10 | 2008-03-11 | Samsung Electronics Co., Ltd. | Turbo decoder and turbo interleaver |
US7275204B2 (en) | 2004-09-30 | 2007-09-25 | Marvell International Ltd. | Distributed ring control circuits for Viterbi traceback |
KR100725931B1 (ko) * | 2004-12-17 | 2007-06-11 | 한국전자통신연구원 | 하이브리드 역추적 장치 및 그를 이용한 고속 비터비 복호시스템 |
US7933405B2 (en) | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US8966223B2 (en) | 2005-05-05 | 2015-02-24 | Icera, Inc. | Apparatus and method for configurable processing |
KR100726171B1 (ko) | 2005-09-28 | 2007-06-11 | 한국전자통신연구원 | 비터비 복호 장치 및 방법 |
US7979781B2 (en) * | 2006-11-10 | 2011-07-12 | Samsung Electronics Co., Ltd. | Method and system for performing Viterbi decoding using a reduced trellis memory |
US20080133879A1 (en) | 2006-12-05 | 2008-06-05 | Electronics And Telecommunications Research Institute | SIMD parallel processor with SIMD/SISD/row/column operation modes |
US8099657B2 (en) * | 2008-07-11 | 2012-01-17 | Freescale Semiconductor, Inc. | Error correcting Viterbi decoder |
US8627189B2 (en) * | 2009-12-03 | 2014-01-07 | Microsoft Corporation | High performance digital signal processing in software radios |
US8495480B2 (en) * | 2010-06-09 | 2013-07-23 | Topcon Positioning Systems, Inc. | Method and apparatus for signal-to-noise ratio estimation in convolutional codes (Viterbi) decoder |
-
2011
- 2011-06-02 KR KR1020110053512A patent/KR20120134549A/ko not_active Application Discontinuation
-
2012
- 2012-02-02 US US13/364,687 patent/US8769390B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042502B2 (en) | 2014-12-24 | 2021-06-22 | Samsung Electronics Co., Ltd. | Vector processing core shared by a plurality of scalar processing cores for scheduling and executing vector instructions |
Also Published As
Publication number | Publication date |
---|---|
US8769390B2 (en) | 2014-07-01 |
US20120311302A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
CN107077322A (zh) | 用于执行转换运算的装置和方法 | |
CN107851019B (zh) | 用于执行叠接操作的设备和方法 | |
US8959275B2 (en) | Byte selection and steering logic for combined byte shift and byte permute vector unit | |
JP6616608B2 (ja) | 半導体装置 | |
CN104111818B (zh) | 用于批量线程处理的处理器、处理方法和代码生成设备 | |
US9965275B2 (en) | Element size increasing instruction | |
US10409604B2 (en) | Apparatus and method for performing multiply-and-accumulate-products operations | |
KR102560424B1 (ko) | 와이드 데이터 타입들의 비교 | |
KR20120134549A (ko) | Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법 | |
US20200278865A1 (en) | Hazard Mitigation for Lightweight Processor Cores | |
US10768897B2 (en) | Arithmetic logic unit for single-cycle fusion operations | |
JP4255475B2 (ja) | データ駆動型情報処理装置 | |
JP7324754B2 (ja) | ベクトル・キャリー付き加算命令 | |
CN108228238B (zh) | 用于确定具有多个数据元素的数据集合中的最小的两个值的方法及装置 | |
KR20120077177A (ko) | Simd 프로세서를 이용하는 갈로아 필드 이진 다항식 제산 장치 및 방법 | |
JP2016224596A (ja) | 加減算器及び加減算器の制御方法 | |
CN104317554A (zh) | 用于simd处理器的寄存器文件数据读写装置和方法 | |
US11550574B2 (en) | Generating a vector predicate summary | |
US6240540B1 (en) | Cyclic redundancy check in a computer system | |
US8892622B2 (en) | Pipelined divide circuit for small operand sizes | |
JP4873546B2 (ja) | データ処理装置、データ処理方法 | |
US9411582B2 (en) | Apparatus and method for processing invalid operation in prologue or epilogue of loop | |
KR102628658B1 (ko) | 뉴럴 프로세서 및 뉴럴 프로세서의 제어 방법 | |
US11669489B2 (en) | Sparse systolic array design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |