KR20070055487A - Programmable processor architecture - Google Patents
Programmable processor architecture Download PDFInfo
- Publication number
- KR20070055487A KR20070055487A KR1020077000909A KR20077000909A KR20070055487A KR 20070055487 A KR20070055487 A KR 20070055487A KR 1020077000909 A KR1020077000909 A KR 1020077000909A KR 20077000909 A KR20077000909 A KR 20077000909A KR 20070055487 A KR20070055487 A KR 20070055487A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- processor
- type sub
- high performance
- blocks
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 83
- 238000012545 processing Methods 0.000 claims abstract description 29
- 239000013598 vector Substances 0.000 claims description 62
- 230000006870 function Effects 0.000 claims description 58
- 238000003860 storage Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 12
- 238000004080 punching Methods 0.000 claims description 9
- 238000009825 accumulation Methods 0.000 claims description 6
- 230000002441 reversible effect Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 27
- 239000000872 buffer Substances 0.000 description 13
- 230000009467 reduction Effects 0.000 description 12
- 238000006467 substitution reaction Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 11
- 101000574648 Homo sapiens Retinoid-inducible serine carboxypeptidase Proteins 0.000 description 10
- 102100025483 Retinoid-inducible serine carboxypeptidase Human genes 0.000 description 10
- 235000019800 disodium phosphate Nutrition 0.000 description 10
- 238000013461 design Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 230000008707 rearrangement Effects 0.000 description 7
- 230000002829 reductive effect Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 239000006185 dispersion Substances 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000009413 insulation Methods 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000012536 storage buffer Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000219122 Cucurbita Species 0.000 description 1
- 235000009852 Cucurbita pepo Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002898 library design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002918 waste heat Substances 0.000 description 1
Images
Classifications
-
- 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
-
- 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7864—Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- 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/3001—Arithmetic instructions
-
- 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
-
- 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Advance Control (AREA)
- Microcomputers (AREA)
Abstract
본 발명의 일 실시예는 이종 고성능 스케일러블 프로세서를 포함하며, 이 프로세서는 W 이상의 비트들을 병렬로 처리할 수 있는 적어도 하나의 W-형 서브-프로세서로서, W 가 정수값인 W-형 서브-프로세서와, N 이상의 비트들을 병렬로 처리할 수 있는 적어도 하나의 N-형 서브-프로세서로서, N이 W보다 2의 인자만큼 작은 정수값인 N-형 서브-프로세서를 구비한다. 이 프로세서는 적어도 하나의 W-형 서브-프로세서와 적어도 하나의 N-형 서브-프로세서를 연결하는 공유 버스, 및 적어도 하나의 W-형 서브-프로세서와 적어도 하나의 N-형 서브-프로세서에 연결 및 공유된 메모리를 추가로 포함하고, W-형 서브-프로세서는 애플리케이션들의 실행을 수용하기 위해 메모리로부터 또는 메모리로 전달되는 바이트들을 재배열하여 신속한 연산들을 가능하게 한다.One embodiment of the invention includes a heterogeneous high performance scalable processor, which is at least one W-type sub-processor capable of processing W or more bits in parallel, wherein W is an integer value of the W-type sub-processor. A processor and at least one N-type sub-processor capable of processing N or more bits in parallel, wherein the N-type sub-processor is an integer value where N is an integer value less than two. The processor is connected to a shared bus connecting at least one W-type sub-processor and at least one N-type sub-processor, and to at least one W-type sub-processor and at least one N-type sub-processor. And shared memory, wherein the W-type sub-processor rearranges the bytes transferred from or to the memory to accommodate rapid execution of applications.
프로세서, 스케일러블 프로세서, 메모리 Processors, Scalable Processors, Memory
Description
관련 출원의 참조Reference of related application
본 출원은 2004년 7월 13일자로 출원한 발명의 명칭이 "Quasi-Adiabatic Programmable or COOL Processors Architecture"인 미국 가특허 출원 제60/598,691호 및 2004년 8월 2일자로 출원된 발명의 명칭이 "Qasi-Adiabatic Programmable Processor Architecture"인 미국 가특허 출원 제60/598,417호의 권익을 청구한다.This application is entitled U.S. Provisional Patent Application No. 60 / 598,691, filed July 13, 2004, entitled "Quasi-Adiabatic Programmable or COOL Processors Architecture," and an application filed on August 2, 2004. Claims the rights of U.S.
발명의 분야Field of invention
본 발명은 일반적으로 프로세서들, 특히, 낮은 전력 소비, 높은 성능, 낮은 다이 면적을 가지면서 멀티미디어 및 통신 애플리케이션들에 유연하면서 스케일가능하게 사용되는 프로세서에 관한 것이다.FIELD OF THE INVENTION The present invention relates generally to processors, in particular to processors that are used flexibly and scalable for multimedia and communication applications while having low power consumption, high performance, and low die area.
셀 또는 모바일 전화기들, 디지털 카메라들, iPod들 및 퍼스널 데이터 어시스턴트들(PDA들) 같은 소비자 가전들의 대중화의 도래로, 이들 가전들과의 통신을 위한 다수의 신규한 표준들이 산업적으로 널리 채택되어 오고 있다. 이들 표준들 중 일부는 H264, MPEG4, UWB, 블루투스, 2G/2.5G/3G/4G, GPS, MP3 및 시큐리티를 포함한다. 그러나, 도래하는 문제점은 서로 다른 가전들 사이의, 그리고, 그들의 통신을 지시하는 서로 다른 표준들의 사용이며, 이는 방대한 개발 노력을 필요로 한다. 상술한 문제점의 이유 중 하나는 현재 시장으로부터 입수할 수 있는 프로세서 또는 서브-프로세서 중 어떠한 것도, 모든 디지털 디바이스들에 의한 사용을 위해 쉽게 프로그램할 수 있으면서, 다양한 지정된 표준들에 부합할 수 없다는 것이다. 소비자 가전들의 새로운 경향들로 인해 미래의 산업적으로 매우 많은 표준들의 채택이 자명하기 때문에, 이 문제점이 심화되는 것은 시간 문제이다.With the advent of the popularity of consumer electronics such as cell or mobile telephones, digital cameras, iPods and personal data assistants (PDAs), many new standards for communication with these consumer electronics have been widely adopted industrially. have. Some of these standards include H264, MPEG4, UWB, Bluetooth, 2G / 2.5G / 3G / 4G, GPS, MP3 and security. However, an emerging problem is the use of different standards between different appliances and to direct their communication, which requires extensive development effort. One of the reasons for the above-mentioned problems is that none of the processors or sub-processors currently available on the market can be easily programmed for use by all digital devices, while meeting various specified standards. It is only a matter of time that this problem is exacerbated, as new trends in consumer electronics make adoption of so many industrial standards of the future apparent.
도래하는, 그리고, 그렇지는 않더라도, 현재의 프로세서들의 요구조건들 중 하나는 다수의 애플리케이션들을 처리하기에 충분한 코드의 실행을 유발하기 위한 기능에도 불구한 낮은 전력 소비이다. 현재의 전력 소비는 애플리케이션 당 수백 밀리와트 수준이지만, 목적은, 다수의 애플리케이션들을 실행하기 위해 수백 밀리와트 미만이 되는 것이다. 프로세서의 다른 요구조건은 낮은 비용이다. 소비자 제품들의 프로세서들의 방대한 활용으로 인해, 프로세서는 제조 비용이 낮아야만 하며, 그렇지 않으면, 대부분의 일반적 소비자 가전들에 이를 사용하는 것이 비실용적이다.One of the requirements of today's processors to come and, if not, is low power consumption despite the ability to cause execution of code sufficient to handle multiple applications. Current power consumption is on the order of hundreds of milliwatts per application, but the goal is to be less than a few hundred milliwatts to run multiple applications. Another requirement for the processor is low cost. Due to the widespread use of processors in consumer products, the processor must have a low manufacturing cost, otherwise it is impractical to use it in most common consumer electronics.
현재의 프로세서 문제들에 대한 특정 예들을 제공하기 위해, 각각 고유한 문제점을 나타내는 일부 소비자 제품에 사용되는 RISC들, 다른 소비자 제품들에 사용되는 마이크로프로세서들, 또 다른 소비자 제품들에 사용되는 디지털 신호 프로세서들(DSP들) 및 또 다른 소비자 제품들에 사용되는 용도 특정 집적 회로들(ASIC들)과, 일부 다른 잘 알려진 프로세서들과 연계한 문제점들을 간단히 후술한다. 이하, 각각의 사용의 장점들과 함께, 이들 문제점들을 그 단점들을 설명하는 "장점" 섹션과 그 이득들을 설명하는 "단점" 섹션에서 개요설명한다.To provide specific examples of current processor problems, RISCs used in some consumer products, microprocessors used in other consumer products, and digital signals used in other consumer products, each representing a unique problem. Problems associated with application specific integrated circuits (ASICs) used in processors (DSPs) and other consumer products, and some other well known processors, are briefly described below. Together with the advantages of each use, these problems are outlined in the "Advantages" section describing the disadvantages and the "Pros" section describing the benefits.
A. RISC/슈퍼 스칼라 프로세서들 A. RISC / Super Scalar Processors
RISC 및 슈퍼 스칼라 프로세서들은 모든 범용 목적 연산을 위해 가장 널리 수용되는 구조적 해법이되어 왔다. 이들은 종종 일반적 해법의 범주내에서 특정 특수한 문제점들을 해결하기 위해 용도 특정 가속기들로 강화된다. RISC and superscalar processors have been the most widely accepted structural solution for all general purpose computations. These are often enhanced with application specific accelerators to solve certain special problems within the scope of general solutions.
예들은 ARM 시리즈, ARC 시리즈, StrongARM 시리즈 및 MIPS 시리즈를 포함한다.Examples include ARM series, ARC series, StrongARM series and MIPS series.
장점 :Advantages :
ㆍ 산업적 넓은 수용은 보다 성숙한 툴 체인 및 넓은 소프트웨어 선택들을 초래한다. Industry wide acceptance leads to more mature tool chains and wider software choices.
ㆍ C 같은 고 레벨 언어들로부터 이진수들을 생성하기 위해 사용되는 매우 효과적인 자동 코드 생성기로부터 강인한 프로그래밍 모듈이 도출된다.A robust programming module is derived from the highly effective automatic code generator used to generate binary numbers from high level languages such as C.
ㆍ 이 부류의 프로세서들은 매우 양호한 범용 목적 해법들이다.This class of processors are very good general purpose solutions.
ㆍ 성능 증가를 위해 Moore의 법칙이 효과적으로 사용될 수 있다.Moore's law can be used effectively to increase performance.
단점 :Disadvantages :
ㆍ 이 아키텍처의 범용 목적 특성은 보다 양호한 가격, 파워 및 성능을 위한 애플리케이션의 집합 또는 부분집합의 공용/특정 특성들에 영향을 주지 않는다. The general purpose characteristics of this architecture do not affect the common / specific characteristics of a set or subset of applications for better price, power and performance.
ㆍ 제공되는 연산의 양에 관해 중간 내지 높은 양의 전력을 소비한다.Consumes moderate to high amounts of power with respect to the amount of computation provided.
ㆍ 성능 증가는 대부분 파이프라인 지연을 댓가로 하여 얻어지며, 이는 다수의 멀티미디어 및 통신 알고리즘들에 부정적인 영향을 준다.Performance gains are mostly obtained at the expense of pipeline delays, which negatively affects many multimedia and communication algorithms.
ㆍ 복잡한 하드웨어 스케줄러, 정교한 제어 메커니즘 및 범용 알고리즘들을 위한 보다 효과적인 자동 코드 생성에 대한 현저히 감소된 규제들은 이 부류의 해법들이 공간적으로 비효율적이 되게 한다.Significantly reduced regulations for more efficient automatic code generation for complex hardware schedulers, sophisticated control mechanisms and general purpose algorithms make this class of solutions spatially inefficient.
B. VLIW (Very Long Instruction Word) 및 DSP 들 B. The VLIW (Very Long Instruction Word) and DSP
VLIW 아키텍처들은 디지털 신호 처리 공간의 매우 일반적 해법을 생성하기 위해, RISC 및 슈퍼 스칼라 아키텍처들에서 발견되는 비효율성들 중 일부를 제거하였다. 병렬화는 현저히 증가되었다. 스케줄링의 부담은 면적을 절감하기 위해 하드웨어로부터 소프트웨어로 전가되었다.VLIW architectures have eliminated some of the inefficiencies found in RISC and super scalar architectures to create a very general solution of digital signal processing space. Parallelism has increased significantly. The burden of scheduling has shifted from hardware to software to save area.
예들은 TI 64xx, TI 55xx, StarCore SC140, ADI SHARC 시리즈를 포함한다.Examples include the TI 64xx, TI 55xx, StarCore SC140, and ADI SHARC series.
장점 : Advantages :
ㆍ 신호 처리 공간에 대한 해법의 규제는 RISC 및 슈퍼 스칼라 아키텍처들에 비해 3P를 증가시켰다.The regulation of solutions to the signal processing space has increased 3P over RISC and super scalar architectures.
ㆍ VLIW 아키텍처들은 RISC 및 슈퍼스칼라 아키텍처들에 대하여 보다 높은 수준의 병렬화를 제공한다.VLIW architectures provide a higher level of parallelism for RISC and superscalar architectures.
ㆍ 효과적 툴 체인 및 산업적 넓은 수용이 매우 급속히 발생되었다.Effective tool chains and widespread industrial acceptance have occurred very rapidly.
ㆍ 신호 처리를 위해 설계된 보다 많은 프로세서들이 이 부류에 들기 때문에 자동 코드 생성 및 프로그램성은 현저한 개선을 나타낸다.Automatic code generation and programmability represent a significant improvement as more processors designed for signal processing fall into this class.
단점 :Disadvantages :
ㆍ 비록, 문제 해결 능력이 디지털 신호 처리 공간으로 감소되었지만, VLIW 기계 같은 범용 해법이 효율적인 3P를 갖게 하기에는 너무 넓다.Although the problem solving ability has been reduced to the digital signal processing space, general solutions such as VLIW machines are too wide to have an efficient 3P.
ㆍ 특히, 다수의 멀티미디어 및 통신 애플리케이션들의 원시 제어 코드에 대 해 제어가 많은 비용을 소요하며 전력 소비가 높다.In particular, control is costly and power consuming for native control code for many multimedia and communication applications.
ㆍ 자동 코드 생성을 용이하게 하기 위해 다수의 파워 및 면적 비효율적 기술들이 사용된다. 소프트웨어 커뮤니티에 의한 이들 기술들에 대한 의존성은 세대가 지나도 이 비효율성을 지속시킨다. Multiple power and area inefficient techniques are used to facilitate automatic code generation. The dependence on these technologies by the software community persists this inefficiency over generations.
ㆍ VLIW 아키텍처들은 시리얼 코드를 처리하는데는 다소 부적합하다.VLIW architectures are somewhat inadequate for handling serial code.
C. 재구성가능 연산 C. Reconfigurable Operations
최근 10여년간 산업 및 학계의 다수의 노력들은 가격, 파워 및 성능 특성들의 유연한 해법을 구축하는 것에 초점을 두어왔다. 다수가 현존하는 그리고 성숙한 법규들 및 디자인 페러다임들에 도전하였으나, 산업적 성공은 적었다. 대부분의 시도들은 조립질(coarser grain) FPGA형 아키텍처들에 기초한 해법들의 생성에 방향을 두고 있다.In recent decades, many efforts in industry and academia have focused on building flexible solutions of price, power and performance characteristics. Many have challenged existing and mature laws and design paradigms, but had little industrial success. Most attempts are directed at creating solutions based on coarser grain FPGA-type architectures.
장점 :Advantages :
ㆍ 특정 애플리케이션에 제한된, 그 애플리케이션 내에서 필요한 유연성을 제공하는 소정의 디자인들은 가격, 전력, 성능 경쟁력이 있는 것으로 판명되었다.Certain designs, limited to a particular application, that provide the flexibility needed within that application, have proven to be competitive in price, power, and performance.
ㆍ 연구결과 이런 제한된, 그러나, 유연한 해법들은 다수의 애플리케이션 난점들을 해결할 수 있도록 생성될 수 있는 것으로 나타났다.Research has shown that these limited, but flexible solutions can be created to solve many application difficulties.
단점 :Disadvantages :
ㆍ 이 공간의 다수의 디자인들은 효율적이고 쉬운 프로그래밍 해법을 제공하지 않으며, 따라서, DPS들의 프로그래밍에 정통한 커뮤니티에 널리 수용되지 않았다.Many of the designs in this space do not provide an efficient and easy programming solution and therefore are not widely accepted by the community versed in the programming of DPS.
ㆍ C 같은 보다 높은 레벨의 언어들로부터의 자동 코드 생성이 다수의 디자인들에 대하여 실질적으로 불가능하거나, 매우 비효율적이다.Automatic code generation from higher level languages such as C is practically impossible or very inefficient for many designs.
ㆍ 한 레벨의 그래뉼러리티와 일 유형의 상호접속을 사용한 이종 애플리케이션들을 조합하기 위한 시도가 이루어질 때, 3P 장점은 소실된다. 제공된 병렬화의 활용 정도는 매우 빈약하다.3P advantages are lost when attempts are made to combine heterogeneous applications using one level of granularity and one type of interconnect. The degree of utilization of the provided parallelism is very poor.
ㆍ 대부분의 디자인들을 위한 3P에서 재구성 오버헤드가 현저하다. Reconstruction overhead is significant at 3P for most designs.
ㆍ 다수의 경우들에서, 외부 인터페이스가 복잡하며, 그 이유는 독점적 재구성가능한 페브릭이 표준 시스템 디자인 방법들과 일치하지 않기 때문이다. In many cases, the external interface is complex because the proprietary reconfigurable fabric is inconsistent with standard system design methods.
ㆍ 재구성가능한 기계들은 유니-프로세서들이며, 원시 제어를 처리하기 위해서도 밀집 집적된 RISC에 크게 의존한다. Reconfigurable machines are uni-processors and rely heavily on dense RISC to handle raw control.
D. 프로세서들의 어레이 D. Array of Processors
소정의 최근 접근법들은 이종 애플리케이션들을 처리하기 위해 보다 적합한 재구성가능한 시스템들의 구현에 초점을 두고 있다. 이 방향의 해법들은 프로세서 어레이 페브릭을 생성하기 위해, 하나의 애플리케이션 또는 애플리케이션들의 집합을 위해 최적화된 다수의 프로세서들을 연결한다.Certain recent approaches focus on the implementation of more suitable reconfigurable systems to handle heterogeneous applications. Solutions in this direction connect multiple processors optimized for a single application or set of applications to create a processor array fabric.
장점 :Advantages :
ㆍ 효율적 페브릭을 사용하여 함께 접속될 때, 서로 다른 애플리케이션들의 집합들을 위해 최적화된 다른 프로세서들이 광범위한 문제들의 해결을 도울 수 있다.When connected together using efficient fabrics, different processors optimized for different sets of applications can help solve a wide range of problems.
ㆍ 균일한 스케일링 모델은 성능 요구들이 증가함에 따라 다수의 프로세서들 이 함께 접속될 수 있게 한다. Uniform scaling model allows multiple processors to be connected together as performance requirements increase.
ㆍ 복합적 알고리즘들이 효율적으로 나누어질 수 있다.Complex algorithms can be efficiently divided.
단점 :Disadvantages :
ㆍ 비록, 성능 요구들이 적절히 응답될 수 있지만, 파워 및 가격 비효율성들이 너무 높다.Although performance requirements can be answered appropriately, power and price inefficiencies are too high.
ㆍ 프로그래밍 모델은 프로세서들간에 변한다. 이는 애플리케이션 개발자의 작업을 보다 힘들게 한다. The programming model varies between processors. This makes the task of the application developer more difficult.
ㆍ 다수의 프로세서들의 균일한 스케일링은 매우 비용 및 전력 소모적 자원이다. 이는 전체 시스템의 성능에 불리할 수 있는 소정의 논-디터미니즘(non-determinism)을 보여주는 것으로 나타났다.Uniform scaling of multiple processors is a very costly and power consuming resource. This has been shown to exhibit some non-determinism that can be detrimental to the performance of the overall system.
ㆍ 시스템 레벨의 프로그래밍 모델은 어떠한 공유된 메모리 자원들도 없는, 데이터, 코드 및 제어 정보의 통신의 복잡성으로 고통받는다-공유된 메모리는 균일하게 스케일할 수 없기 때문임.The system level programming model suffers from the complexity of communication of data, code and control information without any shared memory resources-since shared memory cannot be scaled uniformly.
ㆍ 다른 유형의 프로세서들을 균질 네트워크에 연결하기 위해 필요한 고가의 그리고, 반복적인 결합 논리는 면적 비효율성을 추가하고, 파워를 증가시키며, 지연을 추가한다.Expensive and iterative coupling logic required to connect different types of processors to a homogeneous network adds area inefficiency, increases power, and adds delay.
상술한 견지에서, 하나 이상의 멀티미디어 애플리케이션들의 동시 실행을 가능하게 하기 위해, 저 전력, 저가의, 효율적인, 고성능의, 유연하게 프로그램할 수 있는 균질한 프로세서에 대한 필요성이 존재한다.In view of the foregoing, there is a need for a low power, low cost, efficient, high performance, flexible programmable homogeneous processor to enable simultaneous execution of one or more multimedia applications.
간단히, 본 발명의 일 실시예는 이종, 고성능, 스케일러블 프로세서를 포함하며, 이는 W가 정수값인, 병렬로 W 비트 이상을 처리할 수 있는 적어도 하나의 W-형 서브-프로세서와, N이 W보다 작은 정수값인, 병렬로 N 비트 이상을 처리할 수 있는 적어도 하나의 N-형 서브-프로세서를 구비한다. 이 프로세서는 적어도 하나의 W-형 서브-프로세서와 적어도 하나의 N-형 서브-프로세서를 결합하는 공유 버스와, 적어도 하나의 W-형 서브-프로세서와 적어도 하나의 N-형 서브-프로세서에 결합되어 공유된 메모리를 추가로 포함하며, W-형 서브-프로세서는 애플리케이션들의 실행을 수용하기 위해 메모리 내외로 전달되는 바이트를 재배열하여 신속한 연산들을 가능하게 한다. Briefly, one embodiment of the present invention includes a heterogeneous, high performance, scalable processor comprising at least one W-type sub-processor capable of processing more than W bits in parallel, where W is an integer value, and N At least one N-type sub-processor capable of processing more than N bits in parallel, an integer value less than W. The processor is coupled to a shared bus that combines at least one W-type sub-processor and at least one N-type sub-processor, and to at least one W-type sub-processor and at least one N-type sub-processor. And further includes shared memory, and the W-type sub-processor rearranges the bytes passed into and out of memory to accommodate the execution of applications to enable rapid operations.
도 1은 본 발명의 실시예를 포함하는 디지털 제품(12)을 참조로 도시된 애플리케이션(10)을 도시하는 도면.1 shows an
도 2는 본 발명의 실시예에 따른 직접 메모리 액세스(DMA) 회로(@4) 및 메모리 제어기에 결합된 이종, 고성능 스케일러블 프로세서(22)를 포함하는 예시적 집적 회로(20)를 도시하는 도면.FIG. 2 illustrates an exemplary
도 3은 본 발명의 실시예에 따른 프로세서(20)의 추가적 상세도.3 is a further detailed view of a
도 4는 본 발명의 실시예에 따른, 블록(74 또는 76) 같은 W형 블록들 중 하나내에 포함된 블록들 또는 구조들의 고레벨 블록도.4 is a high level block diagram of blocks or structures contained within one of the W-shaped blocks, such as
도 5는 본 발명의 실시예에 따른, 블록(402)내에 포함된 회로 블록들의 블록도.5 is a block diagram of circuit blocks included in
도 6은 파일들을 등록하고, 매크로 펑셔널 유닛들, 특히, 블록들(402, 404, 406 및 408)내에서 포워딩하기 위해 사용되는 일반적 구조의 추가 상세도.6 is a further detailed view of the general structure used to register files and to forward within macro functional units, in
도 7은 본 발명의 실시예에 따른, 블록(408)의 추가 상세 고레벨 블록도.7 is a further detailed high level block diagram of
도 8은 본 발명의 실시예에 따른, 블록(404)의 추가 상세 블록도.8 is a further detailed block diagram of
도 9 및 도 10은 특히, 치환들을 수행하는 것에 관한, 블록(404)의 추가 상세도.9 and 10 show further details of
도 11은 본 발명의 실시예에 따른 블록(406)의 콤포넌트들의 추가 상세 블록도.11 is a further detailed block diagram of the components of
도 12는 본 발명의 실시예에 따른, 블록(78)의 상세 고레벨 블록도. 12 is a detailed high level block diagram of
도 13은 본 발명의 실시예에 따른 블록(78)의 또 다른 상세 고레벨 블록도.13 is another detailed high level block diagram of
도 14는 본 발명의 실시예에 따른, 블록(1322)의 추가 상세도.14 is a further detailed view of
도 15는 본 발명의 실시예에 따른, 블록(1324)에 포함된 회로의 추가 상세 고레벨 블록도.15 is a further detailed high level block diagram of a circuit included in
도 16은 본 발명의 실시예에 따른, 블록(1520)내에 포함된 감축 회로 블록(1602)의 블록도.16 is a block diagram of
도 17은 본 발명의 실시예에 따른 블록(1326)에 포함된 회로의 추가 상세 고레벨 블록도.17 is a further detailed high level block diagram of the circuitry included in
도 18은 본 발명의 실시예에 따른 블록(1330)에 포함된 회로의 추가 상세 고레벨 블록도.18 is a further detailed high level block diagram of a circuit included in
도 19는 본 발명의 실시예에 따른 블록(1332)에 포함된 회로의 추가 상세 고 레벨 블록도.19 is a further detailed high level block diagram of the circuitry included in
도 20은 본 발명의 실시예에 따른 블록(1334)에 포함된 회로의 추가 상세 고레벨 블록도.20 is a further detailed high level block diagram of a circuit included in
도 21은 본 발명의 실시예에 따른 프로세서(22)에 사용하는 툴들 및 프로그래밍 플로우를 예시하는 도면.21 illustrates tools and programming flow for use with
도 22는 본 발명의 실시예의 스케일능의 예를 도시하는 도면.Fig. 22 is a diagram showing an example of scale capability in the embodiment of the present invention.
도 23은 본 발명의 스케일능의 이득 중 일부를 나타내는 차트.23 is a chart showing a part of the gain of the scale capability of the present invention.
이제, 도 1을 참조하면, 본 발명의 실시예를 포함하는 디지털 제품(12)을 참조로, 애플리케이션(10)이 도시되어 있다. 도 1은 시장에서 입수할 수 있는 것들에 대한 본 발명의 실시예를 포함하는 제품의 장점들의 전체가 아닌 일부에 관한 전망을 독자에게 제공하기 위한 것이다.Referring now to FIG. 1, with reference to a
따라서, 제품(12)은 오늘날의 모바일 전화 디바이스(14), 디지털 카메라 디바이스(16), 디지털 기록 또는 음악 디바이스(18) 및 PDA 디바이스(20)에 의해 실행될 필요가 있는 애플리케이션들 모두를 통합하고 있는 집합 제품이다. 제품(12)은 디바이스들(14-20)의 펑션들 중 하나 이상을 동시에 실행할 수 있지만, 보다 적은 전력을 사용한다.Thus,
제품(12)은 통상 배터리 동작식이며, 따라서, 디바이스(14-20)에 의해 실행되는 애플리케이션들 중 다수의 애플리케이션들을 실행할 때에도 적은 전력을 소비한다. 또한, 이는 H264, MPEG4, UWB, 블루투스, 2G/2.5G/3G/4G, GPS, MP3 및 시큐 리티를 비제한적으로 포함하는 다수의 애플리케이션들과 일치하여 연산들을 실행하도록 코드를 실행할 수 있다.The
도 2는 본 발명의 실시예에 따른 메모리 제어기 및 직접 메모리 액세스(DMA) 회로(24)에 결합된 이종, 고성능 스케일러블 프로세서(22)를 포함하는 예시적 집적 회로(20)를 도시한다. 또한 도 2에서, 프로세서(22)가 범용 목적 버스(30)를 통해 인터페이스 회로(26)에 연결되고, 범용 목적 버스(31)를 통해 인터페이스 회로(28)에 연결되고, 추가로, 버스(30)를 통해, 버스(31)를 통해 범용 목적 프로세서(32)에 연결되어 있는 것이 도시되어 있다. 회로(20)는 또한, 회로(10)의 잔여 회로들에 의해 사용되는 클록 및 동일한 방식으로 사용되는 리셋 신호를 생성하기 위한 클록 리셋 및 전력 관리부(34)와, 동자에 의해 전력을 관리하기 위한 회로를 포함하는 것으로 도시되어 있다. 또한, 회로(20)에는 조인트 테스트 액션 그룹(JTAG) 회로(36)가 포함되어 있다. JTAG는 칩들을 테스트하기 위한 표준으로서 사용된다.2 illustrates an exemplary
버스(30)에 연결된 것으로 도시된 인터페이스 회로(26) 및 버스(31)에 연결된 것으로 도시된 인터페이스 회로(28)는 블록들(40-66)을 포함하며, 이들은 현용의 프로세서들에 의해 사용되며, 당업자들에게 잘 알려져 있다.The
이종 멀티 프로세서인 프로세서(22)는 공유 데이터 메모리(70), 공유 데이터 메모리(72), CoolW 서브-프로세서(또는 블록)(74), CoolW 서브-프로세서(또는 블록)(76), CoolN 서브-프로세서(또는 블록)(78) 및 CoolN 서브-프로세서(또는 블록)(80)을 포함하는 것으로 도시되어 있다. 블록들(74-80) 각각은 그와 연계된 명령 메모리를 가지며, 예로서, CoolW 블록(74)은 그와 연계된 명령 메모리(82)를 가 지고, CoolW 블록(76)은 그와 연계된 명령 메모리(84)를 가지고, CoolN 블록(78)은 그와 연계된 명령 메모리(86)를 가지고, CoolN 블록(80)은 그와 연계된 명령 메모리(88)를 갖는다. 유사하게, 블록들(74-80) 각각은 제어 블록과 연계되어 있다. 블록(74)은 제어 블록(90)과 연계되고, 블록(76)은 제어 블록(92)과 연계되고, 블록(78)은 제어 블록(94)과 연계되고, 블록(80)은 제어 블록(96)과 연계되어 있다. 블록들(74 및 76)은 일반적으로 16, 24, 32 및 64-비트 연산들 또는 애플리케이션들을 위해 효과적으로 동작하도록 설계되어 있는 반면, 블록들(78 및 80)은 일반적으로, 1, 4 또는 8-비트 연산들 또는 애플리케이션들을 위해 효과적으로 동작하도록 설계되어 있다.The
블록들(74-80)은 주로 서브-프로세서들이며, CoolW 브록들(74 및 76)은 와이드(또는 W) 형 블록들인 반면, CoolN 블록들(78, 80)은 네로우(또는 N) 형 블록들이다. 와이드 및 네로우는 서브-프로세서내에서 처리 또는 라우팅되는 병렬 비트들의 상대적 수를 지칭하며, 프로세서(22)의 이종 특성을 제공한다. 또한, 회로(24)는 직접적으로, 서브-프로세서들 중 하나, 즉, 블록들(74-80) 중 하나에 연결되어, 연결되어 있는 서브-프로세서를 통한 최저 지연 경로를 도출한다. 도 2에서, 회로(24)는 블록(76)에 직접적으로 연결되어 있는 것으로 도시되어 있지만, 이는 블록들(74, 78 또는 80) 중 임의의 것에 연결될 수 있다. 보다 높은 우선순위의 에이전트들 또는 테스크들은 회로(24)에 직접 연결된 블록에 할당될 수 있다.Blocks 74-80 are primarily sub-processors, while CoolW blocks 74 and 76 are wide (or W) shaped blocks, while CoolN blocks 78 and 80 are narrow (or N) shaped blocks. admit. Wide and narrow refer to the relative number of parallel bits that are processed or routed within a sub-processor and provide the heterogeneous nature of the
4개 블록들(74-80)이 도시되어 있지만, 다른 수의 블록들이 사용될 수 있지만, 부가적인 블록들의 사용은 자명하게, 부가적인 다이 공간 및 보다 높은 제조 비용들을 초래한다.Although four blocks 74-80 are shown, other numbers of blocks may be used, but the use of additional blocks obviously results in additional die space and higher manufacturing costs.
큰 처리 파워를 필요로 하는 복잡한 애플리케이션들은 회로(20) 내에서 분산되어 있지 않으며, 오히려, 이들은 처리를 위한 특정 서브-프로세서 또는 블록에 그룹화 또는 한정되어 있으며, 이는 배선(금속) 또는 라우팅 길이들을 제거 또는 적어도 감소시켜 배선 커패시턴스를 감소시킴으로써, 전력 소비를 현저히 개선한다. 부가적으로, 활용도가 증가되고 활동도가 감소되어 보다 낮은 전력 소비에 기여한다.Complex applications requiring large processing power are not distributed within the
회로(20)는 멀티미디어 및 통신 애플리케이션들을 위한 준-단열 프로그램가능한 서브-프로세서들을 제공하는 실리콘 온 칩(또는 SoC)의 예이며, 전술된 바와 같이, 서브-프로세서들의 두 가지 유형들, 즉 W-형 및 N-형이 포함되어 있다. W-형 또는 와이드 형 프로세서는 16, 24, 32 및 64 비트 처리를 필요로 하는 애플리케이션들에서의 높은 전력, 가격, 성능 효율을 위해 설계되어 있다. N-형 또는 네로우 형 프로세서는 8, 4 및 1 비트 처리를 필요로 하는 애플리케이션들에서의 높은 효율을 위해 설계되어 있다. 이들 비트 수들이 도면 및 설명에 의거한 본 발명의 실시예들에서 사용되지만, 다른 비트수들이 쉽게 사용될 수 있다.
다른 애플리케이션들은 다른 성능 또는 처리 기능들을 필요로 하며, 따라서, 다른 유형의 블록 또는 서브-프로세서에 의해 실행된다. 테스크, 예로서, DSP들에 의해 통상적으로 실행되는 애플리케이션들은 일반적으로, 특성적으로, 공통적으로 발생하는 DSP 커널들을 포함하기 때문에, 도 2의 블록들(74, 76) 같은 W-형 서브-프로세서들에 의해 처리된다. 이런 애플리케이션들은 패스트 푸리에 변환(FFT) 또 는 역 FFT(IFFT), 적응성 유한 임펄스 응답(FIR) 필터들, 이산 여현 변환(DCT) 또는 역 DCT(IDCT), 실/복소 FIR 필터, IIR 필터, 저항 커패시터 루트 라이즈 여현(RRC) 필터, 컬러 공간 컨버터, 3D 바이리니어 텍스쳐 맵핑, 고우라우드 세이딩, 골레이 콜렐레이션, 바이리니어 보간, 메디안/로우/컬럼 필터, 알파 블랜딩, 하이-오더 표면 모자이크, 버텍스 세이드(트랜스/라이트), 트라이앵글 셋업, 풀 스크린 안티 알리아싱 및 양자화를 비제한적으로 포함한다.Different applications require different performance or processing functions and, therefore, are executed by different types of blocks or sub-processors. Applications typically executed by DSPs, eg, DSPs, typically include W-type sub-processors, such as
다른 공통적으로 발생하는 DSP 커널들은 블록들(78, 80) 같은 N-형 서브-프로세서들에 의해 실행될 수 있으며, 가변 길이 코덱, 비터비 코덱, 터보 코덱, 사이클릭 러던던시 체크, 왈시 코드 생성기, 인터리버/역인터리버, LFSR, 스크램블러, 역분산기, 길쌈 인코더, 리드-솔로몬 코덱, 스크램블링 코드 생성기 및 펀처링/역펀처링을 비제한적으로 포함한다.Other commonly occurring DSP kernels can be executed by N-type sub-processors, such as
W 및 N-형 서브-프로세서들 양자 모두는 순수 활동도 및 결과적인 트렌지션 당 에너지를 낮게 유지할 수 있으며, 동시에, RISC, 재구성가능, 슈퍼스칼라, VLIW 및 다중 프로세서 접근법들 같은 현존하는 구조적 접근법들에 비해 증가된 활용도로 높은 성능을 유지할 수 있다. 프로세서(22)의 서브-프로세서 아키텍처는 최적의 처리 해법을 초래하는 다이 크기를 감소시키며, “준-단열” 또는 “COOL" 아키텍처라 지칭되는 신규한 아키텍처를 포함한다. 이에 따른 프로그램가능한 프로세서들은 준-단열 프로그램가능 또는 COOL 프로세서들이라 지칭된다.Both W and N-type sub-processors can keep pure activity and resulting energy per transition low, while simultaneously adapting to existing structural approaches such as RISC, reconfigurable, superscalar, VLIW and multiprocessor approaches. Compared to the increased utilization can maintain high performance. The sub-processor architecture of the
준-단열 프로그램가능 또는 COOL 프로세서들은 전술한 바와 같이, 애플리케이션들의 유한 부분집합을 일치시키도록 데이터 경로, 제어, 메모리 및 펑셔널 유 닛 그래뉼러리티를 최적화한다. 이것이 달성되는 방식은 후술된 바와 같은, 프로세서(22)의 그 상호 연산들 및 다른 유닛들 또는 블록들 또는 회로들에 관한 도면들의 도시 및 설명에 관하여 명백히 알 수 있을 것이다.Quasi-insulated programmable or COOL processors optimize data path, control, memory, and functional unit granularity to match a finite subset of applications, as described above. The manner in which this is achieved will be apparent with regard to the illustration and description of the drawings relating to its interoperations and other units or blocks or circuits of the
"준-단열 프로그램가능" 또는 이종 상호접속 및 펑셔널 유닛들의 동시발생 애플리케이션(Concurrent Applications of heterOgeneous intercOnnect and functionaL units(COOL)) 프로세서들. 열역학에 관하여, 단열 프로세스는 열을 낭비하지 않으며, 유용한 일을 수행하기 위해 모든 사용된 에너지를 전달한다. 현존하는 표준 프로세스들, 회로 디자인 및 논리 셀 라이브러리 디자인 기술들의 비단열 특성으로 인해, 단열 프로세서들을 제조할 수 없다. 그러나, 가능한 다른 가능 프로세서 아키텍처 중, 일부는 단열에 보다 근접할 수 있다. 본 발명의 다양한 실시예들은 종래 기술의 아키텍처들에 비해, 단열에 현저히 보다 근접한 프로세서 아키텍처들의 부류를 보여주며, 이들은 그럼에도 불구하고, 프로그램가능하다. 이들은 "준-단열 프로그램가능 프로세서들"이라 지칭된다.Concurrent Applications of heterOgeneous intercOnnect and functionaL units (COOL) processors. In terms of thermodynamics, the adiabatic process does not waste heat and transfers all the used energy to perform useful work. Due to the non-insulating nature of existing standard processes, circuit design and logic cell library design techniques, it is not possible to manufacture adiabatic processors. However, among other possible processor architectures possible, some may be closer to thermal insulation. Various embodiments of the present invention show a class of processor architectures that are significantly closer to thermal insulation than prior art architectures, which are nevertheless programmable. These are referred to as "quasi-insulated programmable processors".
집적 회로(20)는 프로세서(22)내의 자원들에 의해 지원될 수 있는 가능한 다수의 애플리케이션들이 함께 또는 동시에 실행될 수 있게 하며, 이런 애플리케이션들의 수는 현용의 프로세서들에 의해 지원되는 것을 현저히 초과한다. 동시에, 또는 동시발생적으로 집적 회로(20)에 의해 실행될 수 있는 애플리케이션들의 예는 수신된 영화를 디코딩하면서, 무선 디바이스로부터 애플리케이션을 다운로딩하는 것, 따라서, 영화가 동시에 다운로딩 및 디코딩될 수 있는 것을 비제한적으로 포함한다. 지원하는 애플리케이션들의 수에 비해 작은 다이 크기 또는 실리콘 면적을 갖는 집적 회로(20)상에서 동시적 애플리케이션 실행을 달성하는 것으로 인해, 집적 회로의 제조 비용들은 도 1의 다수의 디바이스들을 위해 필요한 것보다 현저히 낮다. 부가적으로, 프로세서(22)는 멀티미디어 복합 애플리케이션들 같은 다수의 펑션들을 구현하기 위해 사용자에게 단일의 프로그램가능한 프레임워크를 제공한다. 중요한 가치는 집적 회로(20), 즉, 프로세서(22)의 산업적으로 채택된 미래의 표준들을 지원하는 기능이며, 이 미래의 표준들은 오늘날의 표준들보다 현저히 복잡할 것으로 예상된다.The
블록들(74-80) 각각은 주어진 시간에 단 하나의 프로그램들의 시퀀스(또는 스트림)만을 실행할 수 있다. 프로그램의 시퀀스는 특정 애플리케이션과 연계된 펑션이라 지칭된다. 예로서, FFT는 시퀀스의 일 유형이다. 그러나, 다른 시퀀스들이 서로 의존적일 수 있다. 예로서, 완료 이후의 FFT 프로그램은 그 결과들을 메모리(70)에 저장할 수 있고, 그후, 다음 시퀀스가 저장된 결과를 사용할 수 있다. 이 방식으로 정보를 공유하거나 이 방식으로 서로 의존적인 다른 시퀀스들은 "스트림 플로우"라 지칭된다.Each of blocks 74-80 may execute only a sequence (or stream) of only one program at a given time. A sequence of programs is called a function associated with a particular application. As an example, an FFT is one type of sequence. However, other sequences may be dependent on each other. As an example, the FFT program after completion may store the results in
도 2에서, 메모리들(70, 72) 각각은 16 킬로바이트의 메모리의 8 블록들을 포함하지만, 다른 실시예들에서, 다른 크기의 메모리가 사용될 수 있다.In FIG. 2, each of the
명령 메모리(82, 84, 86 및 88)는 각각 블록들(74-80)에 의해 실행되는 명령들을 저장하기 위해 사용된다.
도 3은 본 발명의 실시예에 따른 프로세서(20)의 추가 세부사항을 도시한다. 도 3에서, 프로세서(20)는 각 서브-프로세서에 의해 처리되는 명령들을 각각 저장 하기 위해, 명령 캐시(302-308)를 각각 포함하는 서브-프로세서들(74-80)을 포함하는 것으로 도시되어 있다. 프로세서(20)는 추가로, 도 3에 도시된 방식으로 결합된, 중재 블록(310), 데이터 메모리(312), 범용 목적 입력/출력(GPIO) 블록(314), 공유된 SoC 버스 블록(316), DMA 블록(318)과의 라디오 주파수(RF) 인터페이스, DMA 제어기 블록(320) 및 메모리 제어기 블록(322)을 포함하는 것으로 도시되어 있다. 데이터 메모리(312)는 서브-프로세서들 및 중재 블록(310)의 감독하의 다른 블록에 의해 사용되는 데이터 정보의 저장부로서 기능하며, 이 중재 블록은 도 3에 도시된 다양한 구조들/블록들의 연산 및 데이터 트래픽을 감독한다. 블록(314)은 프로세서(22)로의 입력 및 출력 트래픽을 규제하고, 블록(320)은 버스(316)를 통해 프로세서(22)에 의해 수행되는 DMA 연산들을 제어하며, 블록(322)은 버스(316)를 통해 메모리(312)에 관한 연산들을 제어하고, 블록(318)은 DMA 연산들을 취급하기 위한 회로를 포함하고, 신호(들)(324)을 통해 연결된 RF 신호들을 전송 및/또는 수신할 수 있다.3 shows further details of a
선택적으로, 공유된 레지스터들(326, 328)은 서브-프로세서들의 두 유형들 사이의 직접적인 통신을 유발한다. 예로서, 도 3에서, 레지스터(326)는 이들 블록들에 의해 공유되는 정보의 저장을 유발하기 위해 블록들(74-80)에 연결된 것으로 도시되어 있으며, 이는 그 실행을 촉진하는 튠(tune)으로 하나 이상의 서브-프로세서를 활용하여 애플리케이션들의 실행을 촉진한다. 유사하게, 레지스터(328)는 레지스터(326)의 것과 동일한 펑션을 위해 블록들(80 및 76)에 연결된 것으로 도시되어 있다.Optionally, shared
도 4는 본 발명의 실시예에 따른, 블록(74 또는 76) 같은 W-형 블록들 중 하나에 포함된 블록들 또는 구조의 고레벨 블록도를 도시한다. 도 4에서는 일예로서 블록(74)이 사용된다. 도 4에서, 그리고, 본 명세서 전반에 걸쳐, 매우 특정한 상호접속 구조를 갖는 펑셔널 유닛들 또는 매크로블록들은 가산기들, 승산기들, 레지스터들 및 멀티플렉서들 같은 콤포넌트들 사이에 표시되어 있다. 이들 매크로블록들은 "매크로 펑셔널 유닛들" 또는 "MFU"라 지칭된다. "MFU"는 멀티미디어 및 통신 애플리케이션들의 유한 집합내의 하나 이상의 공통적으로 발생하는 연산들의 효과적으로 프로그램가능한 부분집합을 나타낸다. 매크로 펑셔널 유닛들의 높은 효율은 타겟 애플리케이션들에 형성된 미소 연산들의 임계적 그룹들을 매우 우수한 성능 및 전력 성능을 나타내는 유도된 연산들의 집합으로 치환한 결과이다. 일부 경우들에서, 공통적으로 발생하는 연산들은 하드웨어를 효과적으로 재사용하기 위해 고유한 방식으로 조합되어 있다.4 shows a high level block diagram of blocks or structure included in one of the W-shaped blocks, such as
도 4에서, 블록(74)은 로드/저장 MFU 블록(402), 스칼라 산술 논리 유닛(ALU) 및 승산 누산(ACC) MFU들 블록(406), 벡터 x MFU 블록(404), 벡터 ALU 및 승산 누산 MFU 블록(408) 및 로컬 메모리(410)를 도 4에 도시된 방식으로 함께 연결된 상태로 포함하는 것으로 도시되어 있다. 블록(402)은 메모리 어드레스들을 생성하며, 이를 메모리 어드레스들 버스(412)에 연결한다. 메모리 데이터는 메모리 데이터 버스(414)상에 결합되며, 블록들(404, 406)에 양방향적으로 결합된다. 벡터 저장 마스크는 벡터 저장 마스크 버스(416)상에 결합되며, 블록(404)에 의해 생성된다. 각 블록의 추가 세부사항들은 후속 도면들에 관하여 설명 및 제시되어 있다. 이런 제시 및 설명 이전에, 블록(74)의 일반적 특징들 및 블록들을 하기와 같이 설명한다.In FIG. 4, block 74 is a load /
블록들(406, 408)은 데이터상에 실제 연산의 대부분을 수행한다. 로드/저장 MFU 블록(402)은 메모리(410) 및 메모리(312)내외로 이루어지는 액세스들을 위한 어드레스들을 연산한다. 벡터 x MFU 블록(404)은 메모리(312)와 블록(408) 사이의 경로중에 벡터 데이터를 재배열한다. 벡터 x MFU 블록(404)은 또한 메모리(312)에 벡터 저장부들을 위한 벡터 저장 마스크들을 생성하기 위해서도 사용된다. 블록(406)은 단지 주어진 시간에 하나의 데이터 단편상에만 동작하는 반면, 블록들(404, 408)은 벡터의 형태로 데이터상에 동작한다. 블록(402)은 메모리 액세스들을 위한 어드레스들을 제공한다. 소정의 연산은 블록(402)에 의해 수행되지만, 이는 본질적으로 오버헤드 연산들이다.
기계 명령은 MFU 블록들 사이에서 데이터를 이동시키기 위한 연산들에 부가하여, 다양한 MFU 블록들을 위한 별개의 연산들을 인코딩한다(필요에 따라). 단일 명령의 모든 연산들은 병렬로 실행된다. 벡터 x MFU 블록(404)은 명령들의 개별적으로 인코딩된 연산들의 제어하에 벡터 데이터의 재배열 및 벡터 저장 마크들의 생성을 유발한다. 로컬 메모리(410)는 모든 명령을 위해 블록(74) 외부의 정보를 액세스하여야하는 것을 피하기 위해, 정보를 로컬 저장하기 위해 사용된다. 버스(412)는 메모리 어드레스들이 그를 통해 제공되는 메모리(312)에 연결된다.Machine instructions encode (as needed) separate operations for the various MFU blocks in addition to the operations for moving data between MFU blocks. All operations of a single instruction are executed in parallel. The vector x MFU block 404 causes the rearrangement of the vector data and the generation of vector storage marks under the control of the individually encoded operations of the instructions.
블록(402)은 버스(424)를 통해 블록(44)에 연결된 것으로 도시되어 있고, 블록(402)은 추가로, 버스(426)를 통해 블록(406)에 연결된 것으로 도시되어 있으며, 블록(402)은 추가로, 버스(428)를 통해 블록(410)에 연결된 것으로 도시되어 있다. 블록들(404, 408 및 410)은 벡터 버스(420)를 통해 서로 연결된 것으로 도시되어 있으며, 블록들(406, 404, 408, 410)은 스칼라 버스(422)를 통해 서로 연결된 것으로 도시되어 있다. 버스는 일반적으로, 배선들의 그룹이며, 각 배선은 신호를 연결하고, 배선들은 서로 병렬이며, 따라서, 병렬로 신호들을 연결할 수 있다. 도 4에서, 벡터 버스(420)는 스칼라 버스(422)보다 넓다. 즉, 버스(420)는 버스(422)에 비해, 병렬로 보다 많은 신호들을 연결할 수 있는 보다 많은 비트들 또는 배선들을 포함한다. 버스(422)에 대한 버스(420)의 비트수의 비율의 예는 예로서, 버스(422)가 32 비트이고, 버스(420)가 4 x 32 비트 또는 128 비트인 예에서, 4의 인자이다.
블록(404)은 또한 벡터 저장 마스크를 제공하며, 이는 버스(416)상에 결합된다. Block 404 also provides a vector storage mask, which is coupled on
메모리 데이터는 연산 동작들을 위해 블록(402)으로부터 블록(406)으로 연결되지만, 벡터 데이터는 최초에 블록(404)에 제공된다. 블록(404)은 연산 유닛, 즉, 블록(408)에 필요한 것에 일치하도록 메모리내의 데이터를 조직화하는 기능을 제공하며, 그에 의해, 현저한 성능 증가를 제공한다는 것을 인지하는 것이 중요하다. Memory data is connected from
도 5는 본 발명의 실시예에 따른, 블록(402)에 포함된 회로 블록들의 블록도를 도시한다. 블록(402)은 도 5에 도시된 방식으로 함께 연결된, 어드레스 블록(502), 서큘러 버퍼 레지스터 블록(504), 어드레스 생성기 블록(508), 어드레스 생성기 블록(506), 멀티플렉서(mux)(510) 및 mux(512)를 포함한다.5 shows a block diagram of circuit blocks included in
블록(502)은 도 4에 도시된 바와 같이, 블록(402)의 다른 블록들에 연결되 며, 어드레스들을 저장한다. 블록(504)은 서큘러 버퍼 레지스터들(블록 504) 중 하나내에 서큘러 버퍼 범위를 저장하도록 기능한다. 블록들(506, 508)은 프로그램에 의하여 요청되었을 때, 어드레스 연산이 서큘러 버퍼내에서 랩 어라운드되게 한다. 블록(504)에 이어지는 화살표는 이들 레지스터들이 로딩될 수 있게 한다. 즉, 블록(506)은 블록(504)에 의해 생성된 어드레스들 또는 블록(406)으로부터 수신된 어드레스 또는 심지어, 블록(502)으로부터 생성된 어드레스들을 변경하도록 기능하며, 블록(508)은 블록(502) 및/또는 블록(406) 및 심지어 블록(504)로부터 수신된 어드레스들을 변경하도록 기능한다.
블록(402)의 어드레스 레지스터들 및 블록(404)의 서큘러 버퍼 레지스터들은 블록들(506, 508)의 어드레스 생성기들에 입력들을 제공한다. 블록(402)의 어드레스 레지스터들의 경우에, 이들 입력들은 이전에 저장된 어드레스들이며, 블록(404)의 서큘러 버퍼 레지스터들에 대하여, 이들 입력들은 서큘러 버퍼들에 대한 정보이다.The address registers of
블록들(506, 508)은 어드레스들을 변경하도록 기능한다. 즉, 블록(506)은 블록(504)에 의해 생성된 어드레스들 또는 블록(406)으로부터 수신된 어드레스 또는 심지어 블록(502)으로부터 생성된 어드레스들을 변경하도록 기능하며, 블록(508)은 블록(502) 및/또는 블록(406)과 심지어 블록(504)으로부터 수신된 어드레스들을 변경하도록 기능한다. 블록(506)의 출력은 그후 mux(512)에 입력으로서 제공되며, 이는 또한, 입력으로서, 블록(502)에 의해 생성된 어드레스들을 수신한다. mux(512)는 그후, 그 입력들 중 하나를 선택하고, 도 4에 도시된 바와 같이, 블록(74)의 다 른 블록들에 의한 수신을 위해 버스(520)상에 이를 연결한다. 유사하게, 블록(508)의 출력은 mux(510)에 입력으로서 제공되며, 이는 또한, 입력으로서 블록(502)에 의해 생성된 어드레스들을 수신한다. mux(510)는 그후, 그 입력들 중 하나를 선택하고, 이를 도 4에 도시된 바와 같이 블록(74)의 메모리들에 의한 수신을 위해 버스(522)상에 연결한다.
따라서, 로드/저장 MFU는 병렬로 두 개의 어드레스들을 생성할 수 있다. 어드레스는 스칼라 ALU MFU로부터의 값 또는 상수 중 어느 하나와, 어드레스 레지스터를 조합함으로써 연산된다. 연산된 어드레스는 선택적으로, 서큘러 버퍼의 경계들내에서 랩 어라운드(wrap arround)될 수 있다. 연산된 어드레스들은 주로 메모리들을 액세스할 때 사용하기 위한 것이지만, 또한, 다른 MFU들에 대한 입력으로서 사용되거나, 어드레스 레지스터들 또는 서큘러 버퍼 레지스터들에 할당될 수도 있다.Thus, the load / store MFU can generate two addresses in parallel. The address is computed by combining the address register with either a value or a constant from the scalar ALU MFU. The computed address can optionally be wrapped around within the boundaries of the circular buffer. The computed addresses are primarily for use when accessing memories, but may also be used as input to other MFUs or assigned to address registers or circular buffer registers.
도 6은 파일들을 등록하고, 매크로 펑셔널 유닛들, 특히, 블록들(402, 404, 406, 408)내에서 포워딩하기 위하여 사용되는 일반적 구조를 더욱 상세히 도시한다. 도 6에서, 다수의 레지스터들(602), 다수의 mux들(604), 크로스바(606), 레지스터 블록(608), 다수의 스테이징 레지스터들(610), 다수의 펑셔널 유닛들(612) 및 다수의 mux들(614)이 본 발명의 실시예에 따라 도시되어 있다. 레지스터들(602)은 mux들(604)에 연결된 것으로 도시되어 있으며, 이 mux들은 순차적으로, 크로스바(606)에 연결된 것으로 도시되어 있다. 크로스바(606)는 레지스터들(610)에 연결된 것으로 도시되어 있으며, 이 레지스터들은 순차적으로 펑셔널 유닛(612)에 연결 된 것으로 도시되어 있으며, 펑셔널 유닛들(612)은 mux들(614)에 연결된 것으로 도시되어 있다. 일반적으로, mux의 펑션은 제공된 입력들 사이에서 선택하고, 선택된 입력을 생성하는 것이다. 크로스바(606)의 출력은 또한, 도 4의 다른 블록에 제공된다. 특정 수의 유닛들, mux들 및/또는 레지스터들이 도 6에 도시되어 있지만, 다른 수의 이들 구조들이 사용될 수 있다.6 illustrates in more detail the general structure used to register files and to forward macro functional units, in particular, blocks 402, 404, 406, 408. In FIG. 6,
도 6의 구조들은 여기에 도시된 방식으로 함께 연결되어 있다. mux들(604)은 도 4의 다른 블록들로부터의 부가적인 입력과, 이런 입력들 중 적어도 두 개와, mux들(614)의 출력을 수신하는 것으로 도시되어 있다.The structures of FIG. 6 are connected together in the manner shown here.
도 6의 레지스터들 및 피드백 경로들(연결)은 면적, 에너지 및 성능의 절충을 최적화하기 위해, 고유한 조직화를 제공한다. 이 조직화는 세 가지 주된 특성들을 갖는다.The registers and feedback paths (connections) of FIG. 6 provide unique organization to optimize tradeoffs in area, energy and performance. This organization has three main characteristics.
■ 어셈블리 언어에 가시적이며, 몇몇 이상의 레지스터들을 갖는 레지스터 파일들은 두 개의 부분집합들로 나누어진다 : 몇몇 레지스터들은 완전한 액세스성으로 구현되며, 나머지 레지스터들은 보다 제한된 액세스성으로 구현된다. 단지 최초 4개 레지스터들(0 내지 3으로 번호매김됨)만이 대부분의 경우에 완전한 액세스성을 지원한다. 이 레지스터 파일을 수반하는 기계 동작들을 위해, 전체 액세스가능한 레지스터들 모두 또는 그중 임의의 것은 동시에 연산들의 소스들 및 착신처들로서 선택될 수 있다. 대조적으로, 제한된 액세스성을 갖는 레지스터들은 그들 사이에 단지 소수의 판독 및 기록 포트들을 공유한다. 제한된 액세스성을 갖는 레지스터들에서, 대부분, 그들이 공유하는 두개의 판독 포트들과 하나의 기록 포트들을 가진다. 이 배열은 집합내의 레지스터들의 대부분을 위해 하나 또는 둘 이상의 판독/기록 포트들을 필요로 하지 않고, 다수의 판독 및 기록 포트들을 갖는 레지스터 파일의 이득들의 대부분을 제공한다.Visible to assembly language, register files with several or more registers are divided into two subsets: some registers are implemented with full access, and others are implemented with more limited access. Only the first four registers (numbered from 0 to 3) support full access in most cases. For machine operations involving this register file, all or any of the totally accessible registers may be selected as the sources and destinations of the operations at the same time. In contrast, registers with limited access share only a few read and write ports between them. In registers with limited access, most have two read ports and one write port that they share. This arrangement does not require one or more read / write ports for most of the registers in the collection, but provides most of the gains of a register file with multiple read and write ports.
■ 모든 펑셔널 유닛의 입력들에는 "스테이징 레지스터들"이 있다. 펑셔널 유닛이 일 클록 사이클내에서 사용되기 이전에, 그 입력 스테이징 레지스터들은 적절한 입력 값들을 갖는 이전 클록 사이클의 단부에서 설정되어야만 한다. 동시에 사용될 수 없는 펑셔널 유닛들은 레지스터들의 총수를 감소시키도록 동일 스테이징 레지스터들을 공유하도록 함께 그룹화될 수 있다. 동일 스테이징 레지스터들을 공유하는 펑셔널 유닛들 중 어떠한 것도 클록 사이클에 필요하지 않은 경우, 레지스터들의 이전 값들이 유지되며, 따라서, 그 사이클을 위해 이들 펑셔널 유닛들내에서의 트랜지션 전력 소비를 제거한다. ■ All functional unit inputs have "staging registers". Before the functional unit is used in one clock cycle, its input staging registers must be set at the end of the previous clock cycle with the appropriate input values. Functional units that cannot be used simultaneously can be grouped together to share the same staging registers to reduce the total number of registers. If none of the functional units sharing the same staging registers are needed for the clock cycle, the previous values of the registers are retained, thus eliminating the transition power consumption within these functional units for that cycle.
■ 펑셔널 유닛들 사이에서의 포워딩은 두 개의 스테이지들로 구현된다. 먼저, 전체 액세스가능 레지스터들의 다음 값들이, 필요시, 제한된 액세스성을 갖는 레지스터들에 대한 기록을 위한 값 또는 값들과 함께 멀티플렉서들을 통해 선택된다. 제2 스테이지에서, 전체 액세스가능 레지스터들의 다음 값들 및 제한된 액세스성을 갖는 레지스터들의 판독 포트들로부터의 값들이 함께 크로스바에 공급되고, 크로스바는 클록 사이클의 종점에서 스테이징 레지스터들에(그리고, 이에 따라, 다음 클록 사이클의 펑셔널 유닛들을 위해) 기록될 값들을 선택한다. 이 조직화는 하나가 아닌 두 개의 멀티플렉싱 스테이지들을 통해 진행하는 것으로부터 발생할 수 있는 증가된 지연을 댓가로, 그 크기에 큰 영향을 주는 크로스바에 대한 입력들의 수를 최소화한다.Forwarding between functional units is implemented in two stages. First, the following values of all accessible registers are selected through multiplexers with a value or values for writing to registers with limited access, if necessary. In the second stage, the next values of the entire accessible registers and the values from the read ports of the registers with limited accessibility are fed together to the crossbar, which crossbar is then fed to the staging registers (and thus, at the end of the clock cycle). Select values to be written) for the functional units of the next clock cycle. This organization minimizes the number of inputs to the crossbar that greatly affect its size, at the expense of the increased delay that can result from going through two multiplexing stages rather than one.
제한된 액세스성을 가지는 레지스터들의 기록 및 판독 포트들 사이에서, 포워딩은 구현되거나 구현되지 않을 수 있다. 포워딩이 여기에서 이루어지지 않는 경우, 이들 레지스터들 중 하나를 기록하는 동작과, 이를 판독하는 후속 동작 사이에 하나의 여분의 지연 사이클이 존재한다는 것은 명백하다.Between write and read ports of registers with limited accessibility, forwarding may or may not be implemented. If forwarding is not done here, it is clear that there is one extra delay cycle between the operation of writing one of these registers and the subsequent operation of reading it.
도 7은 본 발명의 실시예에 따른, 블록(408)의 추가 세부사항을 고레벨 블록도의 형태로 도시한다. 도 7에서, 벡터 레지스터 블록(702)은 N ALU들 블록(704), 벡터 엘리먼트 시프터 블록(706), 벡터 엘리먼트 선택기 블록(708), 2N 및 N 비트 컨버터 블록(710), N ALU들 블록(712) 및 2N 승산기 블록(714)에 연결된 것으로 도시되어 있다. 도 7에서, 블록(408)은 N 가산기들 블록(718)에 연결된 벡터 레지스터들 블록(716), N 시프터들 블록(720), 벡터 합산 블록(722), N 3-입력 가산기들 블록(724), 2N 및 N 비트 컨버터(726), mux(723) 및 mux(732)을 포함하는 것으로 추가로 도시되어 있다. 도 7의 블록들 및 mux들은 도 7에 도시된 방식으로 함께 연결된다. 블록(702)은 도 4의 다른 블록들에 연결되고, 블록들(704-714)에 추가로 연결된다. 블록(716)은 블록(406)과, mux(732), 블록(710) 및 블록(714)의 출력으로부터 입력을 수신하는 것으로 도시되어 있다. 일반적으로, 도 7의 회로들 또는 블록들은 N 수의 M-비트 값 같은 벡터 유형의 값상에 병렬로 동작하며, M은 정수의 비트이다.7 shows further details of
mux(732)는 입력으로서, 블록(718, 720)에 의해 생성된 출력들을 수신하고, mux(730)는 블록들(704, 706)에 의해 생성된 입력들을 수신하고, 블록(702)에 의해 수신되는 출력을 생성한다. 블록(708, 722)의 출력은 블록(406)에 제공된다. 여기서 사용시 N은 정수값이며, 예로서, N ALU들은 N 수의 ALU 회로들이다.
블록들(702-714) 및 mux(730)는 일반적으로, 승산 누산(MAC) 펑션을 수행하는 반면, 블록들(716-726) 및 mux(732)는 ALU 펑션을 수행하지만, 이런 MAC 및ALU 펑션들이 그 위에서 수행되는 병렬 비트 수는 일반적으로, 블록(406)에 의해 처리되는 비트 수보다 N 배 크다. 블록들(704, 712)은 세그먼트화할 수 있으며, 즉, 이들은 가산 연산을 선택적으로 세그먼트화할 수 있다. 예로서, N 32 비트가 병렬로 처리되는 경우, N 32 비트 가산 연산들을 수행할 수 있게 되는 것에 부가하여, 각 ALU 블록은 2N 16 비트 가산 연산들 또는 4N 8비트 가산 연산들을 수행할 수 있다. 블록(714)은 간단히 후술될 도 11의 블록(1110)의 것과 동일한 방식으로 기능한다. 블록들(710, 726)은 N 40 비트 값들 또는 2N 16 비트 값들을 2N 40 비트 값들로 변환하도록 기능한다. 일 예에서, 32 비트 값은 40 비트 값으로 변환되고, 다른 예에서, 16 비트 값이 40 비트 값으로 변환되며, 따라서, 비트 변환 기능을 제공한다.Blocks 702-714 and
블록(706)은 벡터 값, 즉, N M 비트 값을 정수값 만큼 우측 또는 좌측으로 이동시킨다. 벡터 이동의 예는 아래와 같은 벡터를 취하기 위한 것이며,
<a0, a1, a2, a3, a4, a5, a6, a7><a0, a1, a2, a3, a4, a5, a6, a7>
이는 이 경우 8개 값이고, 벡터This is 8 values in this case, the vector
<a1, a2, a3, a4, a5, a6, a7, 0><a1, a2, a3, a4, a5, a6, a7, 0>
또는, 가능하게는 Or possibly
<0, 0, 0, a0, a1, a2, a3, a4>를 반환한다.Returns <0, 0, 0, a0, a1, a2, a3, a4>.
이 연산들은 일반적으로, 임의의 종류의 승산 또는 제산으로서 해석되지 않는다. 블록(708)은 벡터 값의 단일 엘리먼트를 선택할 수 있게 하며, 예로서, 특정 바이트(8개 비트)가 벡터 값으로부터 선택될 수 있다. These operations are generally not to be interpreted as any kind of multiplication or division.
블록(720)은 블록(706)과 유사한 방식으로 기능하며, 블록(726)은 블록(710)과 유사한 방식으로 기능한다. 블록들(712, 726)의 출력은 mux(704)를 통해 블록(702)에 선택적으로 제공되고, 블록들(706, 704)의 출력은 mux(730)를 통해 선택적으로 블록(702)에 제공된다. 또한, 블록들(720, 718)의 출력들은 mux(732)를 통해 선택적으로 블록(716)에 제공된다.
블록(722)은 벡터 기반상에서 가산 연산을 수행하는 반면, 블록(408)의 다른 블록들은 엘리먼트 기반상에서 동작한다. 즉, 블록(722)은 단일 벡터의 엘리먼트들 모두를 함께 가산하며, 엘리먼트 기반상에서 동작하는 블록들은 선택된, 그리고, 대응하는 다른 벡터들의 엘리먼트(들) 중 하나 이상 상에 동작을 수행한다.
블록들(710, 726)은 각각 선택적으로 N으로부터 2N으로의 변환을 가능하게 한다. 도 8에는 블록(804)의 출력이 블록(802)의 입력으로 피드백되는 것이 추가로 도시되어 있다.
도 8은 본 발명의 실시예에 따른, 블록(404)의 추가 세부사항을 블록도 형태로 도시한다. 도 8에서, 블록(404)은 도 8에 도시된 방식으로 함께 연결된, 마스크 제어 레지스터들 블록(802), 마스크 생성기 블록(804), 마스크 레지스터들 블록(806), 벡터 레지스터들 블록(808) 및 벡터 바이트 마스크 치환 블록(810)을 포함하는 것으로 도시되어 있다.8 illustrates, in block diagram form, further details of
블록(802)은 도 4의 다른 블록들로부터 입력을 수신하고, 블록(804)에 대한 입력을 생성하는 것으로 도시되어 있으며, 블록(804)은 블록(806)에 연결된 것으로 도시되어 있다. 블록(806)은 블록(801)에 연결된 것으로 도시되어 있으며, 도 4의 다른 블록들 및 메모리(312)에 추가로 연결되어 있다. 블록(808)은 메모리(312) 및 도 4의 다른 블록들에 연결된 것으로 도시되어 있다. 블록(810)은 블록들(806, 808)로부터 입력을 수신하도록 연결된 것으로 도시되어 있다.
일 실시예에서, 블록(404)은 블록(408)과 동일한 N을 위한 N*32 비트 벡터 레지스터들로 이루어지는 레지스터 파일, 블록(808)을 가진다. 블록(404)의 블록(806)은 N*4 비트의 마스크 레지스터들을 포함한다. 마스크 레지스터들 각각은 벡터 레지스터의 1 바이트에 대응한다. N*32 비트 벡터가 외부 공유 메모리에 저장될 때, 벡터의 어느 바이트들이 실제로 메모리에 기록되는지를 나타내도록 N*4 비트 마스크가 공급될 수 있다. (마스크내의 0 비트에 대응하는 메모리 바이트들은 불변으로 남아있는다). 마스크 생성기 펑션은 마스크 제어 레지스터의 설정에 기초하여 4*N 비트 마스크를 연산한다.In one embodiment, block 404 has a register file, block 808, consisting of N * 32 bit vector registers for N equal to block 408.
블록(404)은 4*N 바이트들을 선택하도록 두 개의 벡터 레지스터들의 8*N 바이트들을 치환할 수 있다. 일반적 경우에, 특정 치환은 제3 벡터 레지스터의 값에 의해 제어된다. 특정 "사전코딩된" 치환들은 제어 벡터의 사용을 필요로 하지 않으며, 이들은 두 입력 벡터 레지스터들의 좌우측의 모든 펀늘 이동들을 포함한다. 두 벡터 레지스터들의 8*N 바이트들이 치환되는 것과 동시에, 두 마스크 레지스터들의 8*N 비트들이 동일하게 치환되어 마스크와 벡터 값들 사이의 비트-포-바이트 대응 성을 유지한다.
도 8의 블록들은 벡터 값 기반상에서 동작한다. 블록(810)은 전술한 바와 같은 벡터 값들의 재배열을 가능하게 한다. 이는 도 9 및 도 10을 참조로 추가로 설명되는 치환들을 사용하여 이루어진다. 블록들(810)은 어떤 치환이 예상되는지에 관한 정보를 제공한다. 유사하게, 블록들(804, 806)로부터 치환된 마스크는 어떤 치환된 마스크가 제공될지를 나타낸다. 일반적으로, 모든 바이트를 각각을 위한 하나의 마스크 비트가 저장된다. The blocks in FIG. 8 operate on a vector value basis.
도 8의 블록들(802, 804, 806, 810)은 실행중인 특정 애플리케이션에 적합하도록 메모리내의 어드레스들을 재배열하는 기능을 제공한다. 종래 기술들에서, 재배열은 통상적으로 자동으로 수행되지만, 본 발명의 실시예에서는 프로그램 또는 코드에 따라서, 프로그래머가 필요에 따라 재배열을 프로그램가능하게 수행할 수 있다. 이는 종래기술들은 단순히 제공하지 않는, 즉, 재배열을 위한 기능이 사전결정되고, 사전결정된 재배열 가능성들의 집합을 포함하는, 프로그래머의 필요성에 따른 거의 무한의 재배열들의 집합들을 가능하게 한다.
SIMD는 _단일 명령, 다중 데이터_를 위한 두문자어이며, MIMD는 _다중 명령, 다중 데이터_를 위한 두문자어이다. 이들은 당 분야에 알려진 컴퓨터 아키텍처 및 프로그래밍의 표준 용어들이다. SIMD is an acronym for single command, multiple data, and MIMD is an acronym for multiple command, multiple data. These are standard terms of computer architecture and programming known in the art.
도 9 및 도 10은 블록 <수>의 치환 회로의 추가 세부사항을 도시하며, 여기서, <수>는 "벡터 바이트 + 마스크 치환" 박스를 위한 수이다. 블록(404)은 도 9 및 도 10에 도시된 바와 같이, 치환된 결과 백터를 생성하기 위해, 두 개의 벡터들 의 치환을 수행하는 펑셔널 유닛을 갖는다. 치환을 수행하기 위해 사용되는 회로는 각각 N 유닛들의 두 개의 입력 벡터들 A 및 B를 취하고, 역시 N 유닛들의 출력 벡터 Z를 생성하는 것으로, 일반적인 방식으로 설명될 수 있으며, 여기서, 유닛은 임의의 임의적이지만 균일한 비트들의 수일 수 있고, 여기서, N은 2의 멱이될 필요가 있다. K가 N의 베이스 2 로그인 것으로 한다. 치환 회로는 도면에 도시된 바와 같이, 각각 특정 유형의 N 스위치 박스들을 갖는 K+1 스테이지들을 갖는다. 전체적으로, "유형 A", "유형 B" 및 "유형 C"라 지칭되는 스위치 박스들의 세개의 유형들이 존재한다. 스위치 박스 유형 A는 제1 스테이지에서만 사용되고, 스위치 박스 C는 단지 최종 스테이지에서만 사용되며, 중간의 모든 스테이지들은 단지 스위치 박스 유형 B만을 사용한다. 스위치 박스의 각 유형에 의해 지원되는 연결들은 개별적으로 도시되어 있다. 인접 스테이지들의 각 쌍의 스위치 박스들 사이에는 거리 1의 교환으로 시작하여, 거리 N/2의 교환까지 동작하는 버터플라이 교환이 존재한다. 스위치 박스들의 설정들은 모두 치환 회로에 대한 제3 입력인 "제어 벡터"에 의해 독립적으로 결정된다. 유형 A 및 유형 C 스위치 박스 각각의 설정이 서술을 위해 단지 단일의 비트를 필요로 하고, 각 유형 B 스위치 박스가 정확히 두 개의 비트를 필요로 하기 때문에, 완전한 제어 벡터는 2*K*N 비트를 필요로 한다. 제어 벡터는 전적으로 실행되는 치환 명령으로부터 암시될 수 있거나, 소정의 방식으로 프로그램에 의해 부분적으로 또는 전체적으로 제공될 수 있다.9 and 10 show further details of the substitution circuit of the block <number>, where <number> is the number for the "vector byte + mask substitution" box.
도 11은 본 발명에 따른, 블록(406)의 콤포넌트들의 추가 세부사항들을 블록도 형태로 도시한다. 도 11에서, 레지스터들 블록(1102)은 ALU 블록(1104), 비트 컨버터 블록(1106), ALU 블록(1108) 및 승산기 블록(1110)에 연결된 것으로 도시되어 있다. 블록(406)은 레지스터 블록(1112), 시프터 블록(1114), 가산기 블록(1116) 및 비트 컨버터 블록(1118)을 포함하는 것으로 추가로 도시되어 있다. mux들(1122, 1120, 1124)도 도 11에 도시되어 있다. 도 11의 mux들 및 블록들은 여기에 도시된 방식으로 함께 연결되어 있다.11 shows in block diagram form additional details of the components of
블록(1102)은 메모리(312) 및 도 4의 다른 블록들에 연결되는 것으로 도시되어 있으며, mux(1122) 및 mux(1120)로부터 입력을 수신한다. 시프터 블록(1114)은 mux(1122)의 입력들 중 하나를 제공하고, 블록(1104)은 그 다른 입력을 제공한다. mux(1120)는 블록들(1118, 1108)로부터 그 입력들을 수신한다. 블록(1114)은 블록(1102)에 연결된 것으로 추가로 도시되어 있으며, mux(1124)는 블록들(1112, 1102)로부터 입력들을 수신하고, 블록(1114)에 대한 출력을 생성하는 것으로 도시되어 있다.
블록(1112)은 블록(1112)에 대한 입력으로서 제공되는 출력을 생성하는 블록(1116)에 연결된 것으로 도시되어 있다. 블록(1118)은 블록(1112)에 연결된 것으로 도시되어 있으며, 블록들(1106, 1110)은 블록(1112)에 연결된 것으로 도시되어 있다.
블록들(1102, 1104, 1106, 1108, 1110) 및 mux(1122)는 ALU 펑션이 수행되게 하고, 블록들(1112-1118) 및 mux(1124)는 승산 누산(MAC) 펑션이 수행될 수 있게 한다.
블록들(1104, 1108)은 ALU들이며, 이런 펑션들을 수행하고, 그 출력은 선택 적으로 mux들(1122, 1120)을 통해, 블록(1102)에 입력(또는 피드백)으로서 제공된다. 매 클록 사이클 마다, 두 개의 ALU 연산들이 수행될 수 있다. 블록(1110)은 승산 펑션을 수행하고, 블록(1112)에 제공되는 출력을 생성하며, 블록(1112)은 블록(1102)보다 높은 수의 비트들을 병렬로 처리할 수 있다. 예로서, 블록(1102)이 32 비트 성능을 가지는 경우, 블록(1112)은 40 비트 성능을 갖는다. 블록(1112)은 누산기 레지스터로서 기능, 즉, 입력들을 누산 가산한다.
블록(1106)은 N 비트 값을 N+X로 변환하며, 여기서, X는 정수값이다. 예로서, 32 비트 값이 40 비트 값으로 변환될 수 있다. 블록(1114)은 값을 사전결정된 비트수 만큼 이동시키며, 결과를 mux(1122)를 통해 블록(1102)에 전달한다.
블록(1118)은 40 비트로부터 32 비트로 같이, 보다 높은 비트수로부터 보다 낮은 비트수로 변환한다. 이 블록은 블록(408)에 연결된다. 블록(406)은 블록(1102)으로부터의 값들에 두 개의 ALU 연산들을 실행할 수 있다. 제1 ALU 연산시, N 비트 이동 연산이 수행될 수 있거나, N 비트 값으로부터 블록(1112)에 저장될 X 비트 값으로의 변환이 수행될 수 있다. 제2 ALU 연산시, 블록(1110)에 의해 승산이 수행될 수 있으며, 결과가 블록(1112)의 레지스터들 중 하나에 저장될 수 있다.
블록(406)은 40 비트 이동, 40 비트 가산/감산 및 40 비트 값의 스칼라 ALU MFU들 32 비트 레지스터들 중 하나에 저장될 32 비트 값으로의 변환을 병렬로 수행할 수 있다.
블록(78) 같은 N-형 서브-프로세서들 중 하나의 추가적 세부사항들을 이제 도면들을 참조로 후술한다. W-형 서브-프로세서에 대한, 도 4의 블록들(406, 404)은 블록(78) 같은 N-형 서브-프로세서들에 공통적이라는 것을 주의하여야 한다.Further details of one of the N-type sub-processors, such as
도 12는 본 발명의 실시예에 따른 블록(78)의 세부사항들의 고레벨 블록도를 도시한다. 도 12에서, 블록(78)은 데이터 경로 유닛(DPU) 블록(1202), 메모리로의 경로 블록(1204) 및 제어기, 시퀀서 및 데이터 어드레스 생성기(DAG) 블록(1206)을 포함하는 것으로 도시되어 있다. 블록들(1204, 1206)은 W-형 서브-프로세서들의 블록들과 공통적이며, 그들에서 발견된다. 블록(1206)은 일반적으로, 기능적으로, 블록(402)과 동일하다.12 shows a high level block diagram of the details of
도 13은 본 발명의 실시예에 따른, 블록(78)의 다른 추가적 세부사항을 블록도 형태로 도시한다. 도 78에서, 저장 유닛 블록(1302)은 X 유닛 블록(1304)에 연결된 것으로 도시되어 있으며, X 유닛 블록은 순차적으로, 로드 유닛 블록(1306)에 연결된 것으로 도시되어 있다. 블록(1304)은 일반적으로, 기능적으로 블록(404)과 동일하며, 따라서, 상세히 상술되었다.13 shows another additional detail of
블록(1306)은 매크로 펑션 블록들(1340)에 추가로 연결된 것으로 도시되어 있으며, 매크로 펑션 블록들(1340)은 순차적으로, 매크로 펑션 버스(1310)를 통해 블록(1302)에 연결된 것으로 도시되어 있다. 블록(1302)은 저장 버퍼(1314), 저장 버퍼(1312) 및 버스 상호접속 블록(1308)을 포함하는 것으로 도시되어 있다. 블록(1302)은 메모리(312) 같은 메모리에 제공되는 출력을 생성하며, 따라서, 블록(1314)을 통해 이에 따라 연결되어 있다. 블록(1304)은 메모리(312) 같은 메모리에 연결되거나, 입력을 수신하는 것으로 도시되어 있으며, 블록(1306)은 로드 버 퍼(1320), 로드 버퍼(1318) 및 블록들(1340)에 연결된 버스 상호접속 블록(1316)을 포함하는 것으로 도시되어 있다.
블록들(1340)은 갈로아체(Galois field) MAC 블록(1322), 특수 ALU 블록(1324), 결합기 블록(1326), 메모리(1328), 펀처링/역펀처링 블록(1330), 인터리버 블록(1332) 및 비터비 블록(1334)을 포함하는 것으로 도시되어 있으며, 이들은 각각 버스(1310)에 연결되어 있는 것으로 도시되어 있다. 블록들(1322-1332)은 각각 블록(1316)으로부터 입력을 수신하거나 그에 연결된 것으로 도시되어 있다. 블록(1334)은 블록(1332)으로부터 입력을 수신하며, 그에 대한 데이터를 수신 및 생성하도록 연결되어 있다.
데이터의 흐름은 데이터 또는 정보가 블록(1306)으로부터, 그리고, 그를 통한, 블록(1340)으로, 그리고, 그후, 블록(1302)로, 그리고, 메모리로 흐르도록 이루어진다. 이 방식으로, 파이프라인 효과가 도입되며, 여기서, 다수의 연산들이 중첩하고, 파이프라인 형태로 동시적으로 처리된다. 예로서, 정보는 블록(1306)에 의해 로딩되고, 동시에, 정보는 블록(1302)에 의해 메모리내에 저장될 수 있다. 데이터는 메모리로부터 블록(1304)에 의해 수신된 이후, 블록(1306)의 블록들(1320, 1328)내에 저장되고, 후속하여, 블록(1340)에 제공되어 그에 의해 처리될 수 있으며, 그 세부사항은 후속 도면에 관련하여 간단히 설명될 것이다.The flow of data is such that data or information flows from and through
블록들(1340)에 의한 처리의 완료시, 처리된 데이터는 버스(1310)를 통해 블록(1302)에 제공되고, 블록(1312, 1314)에 저장되며, 이들은 메모리에 의해 수신되도록 연결될 때까지 저장된다. 블록들(1314, 1312, 1318, 1320)의 버퍼들은 병렬로 사전결정된 폭 또는 수의 비트로 이루어진다. 예로서, 이들 버퍼들 각각은 256 비트 폭이지만, 다른 수의 비트들이 사용될 수 있다.Upon completion of the processing by
블록들(1340)에 의해 처리될 수 있는 값 또는 데이터는 재사용을 위해 블록(1302)으로부터 블록(1306)으로 이동될 수 있다. 또한, 데이터는 메모리로부터 블록(1304)에 의해 수신되고, 그후, 그 처리를 위해 블록(1306)로 이동될 수 있다. 각 블록들(1340)의 추가적 세부사항들을 이제 설명한다. 블록들(1314, 1312)은 두 배의 버퍼링 효과를 유발하며, 이는 블록들(1318, 1320)이 하는 바와 같이, 파이프라이닝 동작들에서 일반적으로 겪게되는 "실속"을 감소시키는 것을 돕는다. 실속은 메모리에 의한 동시적인 블록들(1302, 1306)의 액세스로부터 초래된다. 다른 실시예에서, 블록들(1314, 1312)은 하나의 블록일 수 있으며, 블록들(1318, 1320)은 하나의 블록일 수 있다.The value or data that may be processed by
지연은 연산과 연계될 수 있거나, 파이프라인 영향이 존재할 수 있다. 지연은 블록들(1340)을 갖는 블록들 각각으로부터 초래될 수 있다.The delay may be associated with an operation or there may be a pipeline effect. Delay may result from each of the
도 14는 본 발명의 실시예에 따른 블록(1322)의 추가적 세부사항을 도시한다. 도 14에서, 갈로아체 블록(1402)은 XOR/Clr 회로(1404)에 연결된 것으로 도시되어 있으며, XOR/Clr 회로(1404)는 순차적으로, 누산기 레지스터 블록(1406)에 연결된 것으로 도시되어 있다. 블록(1402)은 갈로아체 mux(1410)에 대한 입력으로서 기능하는 갈로아체 출력 신호(408)를 생성하는 것으로 도시되어 있으며, 갈로아체 mux(1410)는 추가로, 누산기 레지스터 블록 출력 신호들(1412)이라 지칭되는, 블록(1406)의 출력에 의해 생성된 다른 입력을 수신한다. 신호들(1408, 1412)은 도 13의 버스(1310)상에 연결되어 있는 갈로아체 MAC 출력 신호(1416)를 선택적으로 생성하기 위한 mux(1410)에 대한 입력들로서 기능한다. mux(1410)에 대한 다른 입력으로서 기능하는 선택 신호(1414)는 신호(1416)의 생성을 위해, 신호들(1408, 1412) 중 하나를 선택하도록 기능한다. 따라서, 효과적으로는 갈로아체 연산의 결과인 블록(1402)의 출력이 블록(1322)의 출력으로서 제공되거나, 갈로아체 MAC 연산 결과가 블록(1322)의 출력으로서 제공된다.14 illustrates additional details of
블록(1406)의 출력은 그 다른 입력으로서 회로(1404)에 연결된 것으로 도시되어 있다. 블록(1404)의 출력은 블록(1406)에 제공되며, 이런 연결은 갈로아체 MAC 연산의 MAC 부분을 실행한다. 블록(1404)은 효과적으로, 갈로아체 MAC 연산들에 통상 사용되는 XOR 승산 연산을 수행한다.The output of
블록(1402)은 Xor 트리 블록(1424)에 연결된 것으로 도시되어 있는 레지스터 블록(1422) 및 레지스터 블록(1420)을 포함하는 것으로 도시되어 있다. 블록(1420)은 레지스터 블록(1426), 갈로아체 승산 반복 1(1428), 레지스터 블록(1430), 갈로아체 승산 반복 1(1432), 레지스터 블록(1434) 및 레지스터 블록(1436)을 포함하는 것으로 추가로 도시되어 있다. 도 14에 도시되어 있지 않지만, 블록들(1434, 1436) 같은 부가적인 수의 레지스터 블록들이 블록들(1434, 1436) 사이에 포함되어 직렬로 연결될 수 있다.
블록(1424)은 블록(1426)에 연결된 것으로 도시되어 있으며, 블록(1426)은 블록(1428)에 순차적으로 연결된 것으로 도시되어 있고, 블록(1428)은 순차적으로, 블록(1430)에 연결된 것으로 도시되어 있으며, 블록(1430)은 순차적으로, 블 록(1432)에 연결된 것으로 도시되어 있고, 블록(1432)은 순차적으로, 블록(1434)에 연결된 것으로 도시되어 있고, 블록(1434)은 블록(1436) 또는 블록들(1434, 1436) 사이에 바로 위치되어 있는 하나 이상의 레지스터 블록들 중 어느 한쪽에 연결된다.
도 14에서, 블록들(1420, 1422)은 블록(1306)으로부터 입력을 수신하며, 다른 실시예는 하나의 블록에 조합될 수 있다. 블록(1402)은 일반적으로, 당업자들에게 알려진 갈로아체 처리를 수행하며, 도 14의 나머지 블록들은 MAC 연산의 성능을 유발한다. 블록들(1426, 1430, 1434, 1436)은 갈로아 트리의 다른 반복들로서 기능하며, 최악의 경우의 시나리오에서, 반복들의 수는 8이고, 따라서, 8개 레지스터 블록들을 포함한다는 것이 경험되었다. MAC 연산의 승산 부분은 일반적으로, 회로(1404)에 의해 수행되는 XOR 연산에 의해 수행되며, 블록(1406)은 누산기 펑션으로서 기능한다. 회로(1404)는 블록(1402), 그리고, 도 14의 경우에는 블록(1436)에 의해 수행된 갈로아체 연산의 최종 반복으로부터 그 입력을 수신한다.In FIG. 14, blocks 1420 and 1422 receive input from
연산시, 블록(1322)은 8 비트 값 같은 N 비트 값 또는 테이터상에 동작하며, 동자에 기초하여, 다른 N 비트 값에 기초하여 8개 경로들로 원본 값을 이동시킴으로써, N 비트 값 또는 데이터를 생성한다. N 비트 값들은 그후, 결과가 감축 상수를 갖는 N 비트로 감축될 때까지 블록(1404)에 의해 XOR 연산되며, 선택적으로, 블록(1406)의 값 같은 N 비트 누산기 레지스터의 내용들과 가산된다. "클리어" 연산이 또한 블록(1406)에 의해 수행될 수도 있다. 갈로아체 MAC 연산들을 사용는 예에서, 블록(1322)은 이에 따라, 사이클릭 러던던시 코드(CRC) 연산들, 길쌈 인코더 연산들, 스크램블 코드 생성기 연산들 및 다른 연산들을 비제한적으로 포함한다.In operation,
도 15는 본 발명의 실시예에 따른, 블록(1324)에 포함된 회로의 추가적 세부사항들을 블록도 형태로 도시한다. 도 15에서, mux들(1504, 1502)은 각각 A 레지스터 블록(1508) 및 B 레지스터 블록(1506)에 연결된 것으로 도시되어 있다. 블록(1508)은 A라 지칭되는 값을 저장하고, 블록(1502)은 B라지칭되는 값을 저장하며, 이들 A 및 B 값들은 블록(1324)에 의해 연산될 데이터이다. A 및 B 값들은 각각 N 비트 폭이다.15 shows in block diagram form additional details of circuitry included in
블록들(1508, 1506)은 조건부 레지스터 블록(1512)에 대한 입력들을 생성하는 것으로 도시되어 있으며, 추가로, 애드/서브/에이비에스/디프/조건부(add/sub/Abs/diff/conditional) 가산-감산/승산(AGU) 블록(1510)에 대한 입력을 생성하도록 연결된 것으로 도시되어 있으며, 이는 출력 레지스터 블록(1514)에 대한 입력을 생성한다. 블록(1514)은 mux(1516)에 연결된 것으로 도시되어 있으며, mux(1516)는 순차적으로 가산기(1518)에 연결된 것으로 도시되어 있다. 가산기(1518)는 누산기-레지스터 블록(1520)에 연결된 것으로 도시되어 있으며, 누산기-레지스터 블록(1520)의 출력은 가산기(1518)의 다른 입력으로서 기능하는 것으로 도시되어 있다. 블록(1520)의 다른 출력은 다른 입력으로서 블록(1514)의 출력을 수신하는 mux(1522)에 대한 입력으로서 기능하는 것으로 도시되어있다. mux(1522)는 버스(1310)에 연결된 출력(1530)을 생성한다. mux들(1504, 1502)에 대한 입력들 중 일부는 블록(1316)으로부터 수신된다.
mux들(1504, 1502) 각각은 4개 입력들을 수신하는 것으로 도시되어 있다. mux(1504)의 입력들 중 하나는 데이터 처리과정에서의 mux(1502)의 입력과 같이, 데이터 처리과정에서, 블록(1306)으로부터 수신된다. mux(1504)의 다른 입력은 mux(1502)의 입력들 중 하나가 그런 것 같이, 블록(1514)의 출력의 일련의 최저 오더 비트로부터 도입된다. mux(1504)의 다른 입력은 블록(1514)의 동일 출력의 최고 오더 비트들로부터 도입된다. mux(1504)의 또 다른 입력은 값 '0'이다. mux(1502)의 입력들 중 하나는 값 '1'이며, 그 입력들 중 다른 하나는 값 '-1'이다. 값들 '0', '1', '-1'은 블록(1324)에 의해 수행된 연산들을 촉진시키기 위한 노력에서 제공되며, 이들 값들은 다양한 연산들에서 반복적으로 활용되며, 따라서, 그 존재는 시스템 성능을 증가시키는 것으로 판명되었다. 증가된 성능을 위해 활용되는 다수의 블록들(1510)이 존재할 수 있다는 것을 인지하여야 한다. 블록(1324)은 도 15에 도시된 바와 같이, 다수의 연산들이 수행될 수 있게 하여, 단일 클록 사이클에서 수행될 수 있게 하도록 조직화된다. Each of the
연산시, 블록들(1510, 1512)은 각각 블록들(1508, 1506)에 의해 제공된 A 및 B 값들상에 동작한다. mux(1516)에 대한 두개의 다른 입력들은 간단히 설명될 블록(1520)(도 15에는 미도시)내의 감축 연산 블록에 의해 생성된다. 이제, 이들 두 입력들에 대하여, 'neighbor-acc-reg' 및 'reduction-acc-reg'라 지칭하며, 각각은 2N 폭이다.In operation, blocks 1510 and 1512 operate on the A and B values provided by
블록(1512)은 2N 폭 레지스터이며, 역환산 연산들에 사용하기 위하여 블록(1510)에 의해 조건부 가산 또는 조건부 감산 연산들이 수행될 수 있게 한다. 블록(1512)은 블록(1510)에 의한 사용을 위해 A 및 B 값들을 실질적으로 변경한다.
mux(1522)는 mux(1522)에 대한 또 다른 입력으로서 제공된 선택 신호에 의해 결정되는 바와 같이, 블록(1514)에 의해 저장되어 있는 블록(1510)의 출력이 신호(1530)를 통해, 블록(1302)에 선택적으로 제공될 수 있게한다. 달리, 블록(1510)의 결과는 누산 가산 연산을 받으며, 그 최종 결과는 블록(1302)에 제공되기 이전에, 블록들(1518, 1520)을 통해, 블록(1520)에 저장된다. The
블록(1324)은 하기의 연산들을 지원하는 하나 이상의 ALU들을 포함하는 N-레이어 ALU이다.
- 두 개의 N 비트 값들이 그 합 또는 편차들을 생성하도록 연산되는 N 가산/감산 연산들N add / subtract operations where two N bit values are computed to produce their sum or deviations
- 두 개의 값들상의 N 비트 XORN-bit XOR on two values
- 두 개의 N 비트 입력값들상의 최대값/최소값 연산Maximum / minimum calculations on two N-bit inputs
- 그 결과가 하기와 같이 산출되도록 두 개의 N 비트 입력값들상에 최대값* 연산 : max(a,b) + 상수(메모리 또는 소형의 사전로딩된 참조표로부터)A maximum * operation on two N-bit input values such that the result is calculated as follows: max (a, b) + constant (from memory or a small preloaded reference table)
- 조건부 가산-감산 : 일반적으로 블록(1512)의 사용으로부터 초래하는 이 함수는 입력 코드에 의존하는 N 비트 값들의 스트림을 조건부 가산 또는 감산한다. 입력 코드는 제어 레지스터에 사전로딩된다. 입력 코드 ‘1’은 감산 연산을 초래하고, ‘0’는 가산 연산을 초래한다. 출력은 16 비트 누산기 레지스터에서 가용하다. 또한, 이 연산을 지원하는 다른 특수 ALU들로부터 '수집' 연산을 위한 지원도 존재한다.Conditional Add-Subtract: This function, which generally results from the use of
- 조건부 가산-감산 연산에서와 동일한 누산기를 사용하는 SADSAD using the same accumulator as in the conditional add-subtract operation
- N x N 승산 -N times N multiplication
블록(1510)은 W-형 서브-프로세서에 공통적이며, 각 블록(1510)은 적어도 128 비트를 판독할 수 있고, 따라서, 두 개의 블록들은 메모리내에 어떠한 내용도 없을 때 매 클록 사이클마다 적어도 256 비트의 데이터를 판독할 수 있다.
도 16은 본 발명의 실시예에 따른, 블록(1520)내에 포함된 감축 회로 블록(1602)의 블록도를 도시한다. 도 16에서, M 스테이지 누산기 레지스터 회로가 도시되어 있으며, acc-reg 블록(1610)내에 도시된 누산기 레지스터 회로들 중 각각의 세부사항들이 도시되어있다. 예로서, acc-reg 회로 블록(1602)은 도 16에도시된 방식으로 연결된 네 개의 블록들(1610)을 포함한다. 유사하게, acc-reg 회로 블록들(1604-608) 각각은 블록(1610)의 것 같은 4 스테이지 acc-reg 회로를 포함한다. 블록들(1602-1608) 각각내의 스테이지들 각각의 출력 또는 결과는 다음 스테이지에 대한 이력으로서 사용되며, 따라서, 누산을 달성하기 위해 가산된다. 블록들(1602-1608)은 각각 블록(1610) 같이 4 스테이지들 또는 4 블록들을 포함하는 것으로 도시되어 있지만, 다른 수의 블록들 또는 스테이지들이 사용될 수 있다. 16 shows a block diagram of a
블록들(1602-1608) 각각의 결과는 다른 블록에 가용해진다. 예로서, 블록(1602)의 결과는 블록(1604)의 입력으로서 기능하고, 블록(1604)의 결과 또는 출력은 블록(1608)내의 최종 acc-reg 블록에 입력으로서 기능하며, 블록(1606)의 결과 또는 출력은 블록(1608)에 대한 입력으로서 기능한다. 블록들의 결과들이 전진식으로 제공되며, 블록내의 스테이지들의 누산과 동시에 제공되기 때문에, 4 스테이지 acc-reg 블록이 사용될 때, 감축 연산을 수행하기 위해 단지 7개 사이클들이 필요하다. The result of each of blocks 1602-1608 is available to the other block. By way of example, the result of
블록(16)은 누산기에 연결된 mux로 구성된다. mux는 누산기에 제공되는 두 개의 입력들 중 하나를 선택하는 2:1 mux이다. 블록(1610)의 mux의 두 입력들 중 하나는 블록(1514)의 출력에 의해 제공되고, 다른 이력은 이전 스테이지 acc-reg 블록의 결과이다. 이 방식으로, 도 16의 감축 펑션은 그 데이터의 조작에 유연하다. 스테이지의 직전 출력으로부터의 입력들 각각은 mux(1516)에 대한 neighbor-acc-seq 입력을 생성하는 ‘이웃’ 신호들(1616)이라 지칭된다. 스테이지들 중 일부의 출력은 mux(1516)에 reduction-acc-seg를 생성하며, ‘감축’ 신호들(1618)이라 지칭된다. 블록(1608)의 최종 acc-reg 블록의 출력은 mux(1530)와 연결된 출력(1620)을 생성한다. 도 16의 감축 회로는 전력 소비를 절감하면서 감축 연산을 수행하기 위한 최소의 클록 사이클들을 초래한다.
도 17은 본 발명의 실시예에 따른, 블록(1326)에 포함된 회로의 추가 세부사항을 고레벨 블록도의 형태로 도시한다. 도 17에서, 블록(1326)은 블록(1306)으로부터 수신된 데이터 입력을 이동시키기 위한 시프터들(1702-1712)을 포함하는 것으로 도시되어 있다. 일 실시예에서, 입력(1700)은 128 비트이지만, 다른 수의 비트가 사용될 수 있다. 시프터들(1702-1712) 각각의 출력은 레지스터 뱅크 블록(1714)에 연결되는 것으로 도시되어 있다. 시프터들(1702-1712)은 입력(1700)의 비트들의 다른 조합들을 생성한다.17 illustrates, in the form of a high level block diagram, additional details of the circuitry included in
블록(1714)은 시프터들(1702-1712)의 출력의 조합을 생성하기 위해 사용되는 레지스터들(1716 내지 1746)을 포함하는 다수의 레지스터들을 포함한다. 예로서, 시프터(1702-1712) 출력 각각의 하부 8개 비트는 어느 하부 8개 비트들이 궁극적으로 생성되어야 하는지를 선택적으로 선택하도록 mux를 통과하게 될 수 있다. 따라서, 블록(1714)의 레지스터들 각각은 이동된 비트들의 "관심 위치“ 중에서 임의적으로 선택할 수 있다. 관심 위치는 시프터들(1702-1712) 각각의 출력에 의해 결정된다. 블록(1714)의 출력은 버스(1310)에 제공된다.
따라서, 본 발명의 일 실시예에서, 블록(1326)은 4개 20-비트 및 2개 24 비트 입력 레지스터들을 포함한다. 이는 그 입력 레지스터들로부터 난수적 32, 16, 8 및 4 비트의 비트 조합들이 생성 및 저장되는 8개 16 비트 레지스터들을 포함한다. 블록(1326)은 세가지 모드들로 사용될 수 있다 : 1) 출력 생성을 위해 두 개의 특정 20-비트 레지스터들을 사용, 2) 출력 생성을 위해 4개 20 비트 레지스터들을 사용 또는 3) 출력 생성을 위해 모든 7개 레지스터들을 사용. 시프터들(1702-1712)은 당업자들에게 시프터의 구조 및 기능이 알려져 있기 때문에 도시되어 있지 않은 입력 레지스터들을 포함한다.Thus, in one embodiment of the present invention,
블록(1326)의 조합 펑션을 수행하기 위해 필요한 회로들 또는 블록들의 수나 하드웨어를 감소시키기 위해, 32 비트 출력 레지스터내의 각 비트는 제1 모드에서 단지, 두 개의 20 비트 레지스터들의 최하위 8 비트로부터 채워지고, 제2 모드에서, 4개 20 비트 레지스터들의 4개 최하위 비트로부터 채워지고, 제3 모드에서, 24 비트 레지스터들의 4개 최하위 비트 및 4개 20 비트 레지스터들로부터의 2개 최하위 비트로 채워진다. 입력 레지스터들로부터의 난수 조합들은 2 단계 프로세스이며, 여기서 제1 단계는 출력 레지스터내로의 랜덤 충전이 이 모드에서 허용될 수 있는 최하위 위치들로 “관심” 비트들을 이동시키는 것을 수반한다. 도 17에 관하여 여기서 사용된 예에서, 블록(1326)은 최하위 위치들로 관심 비트들을 이동시키도록 입력 레지스터들상의 시프트 연산으로 파이프라인될 때의 매 사이클 마다 16 조합된 비트들을 생성할 수 있다. 출력의 소정의 조합들은 다수의 클록 사이클들을 취할 수 있다.In order to reduce the hardware or the number of circuits or blocks needed to perform the combination function of
메모리(1326)는 일반적 임의 접근 메모리이며, 따라서, 추가로 상세히 설명하지 않는다. 그러나, 메모리의 크기는 N-형 서브-프로세서가 그를 위해 사용되는 애플리케이션들에 기초한다는 것을 언급하는 것으로 충분하다.The
도 18은 본 발명의 실시예에 따른 블록(1330)내에 포함된 회로의 추가적 세부사항들을 고레벨 블록도 형태로 도시한다. 도 18에서, 1-워드 레지스터(1802)는 8 비트 위치들을 포함하는 것으로 도시되어 있으며, 각 비트 위치(1804)는 비트 선택 회로(1806)에 의해 변경될 수 있다. 이런 변경들은 ‘0’ 삽입, ‘1’ 삽입 및 “NOP"나 비 연산과 등가인 비트를 전혀 변경하지 않는 것 또는 비트를 반전시키는 것과 등가인 낫씽(NOTing) 비트를 비제한적으로 포함한다. 1 워드 레지스터는 반복, 즉, 워드 레지스터들(1810-1820)은 각각 레지스터(1802)로서 워드를 저장 및 변경한다. 따라서, 16 비트 워드 및 8 워드들의 예에서, 8개 16 비트 워드들의 변경은 이를 수행하기 위해 다수의 사이클들을 필요로 하는 종래의 DSP들과는 달리, 하나의 클록 사이클에서 수행된다. 워드들의 각 비트의 변경 또는 펀처링/역펀처링은 도18에 도시된 방식으로 레지스터 1(802) 및 서로에 연결된 mux(1824) 및 플립-플롭(1826)에 의해 제어된다. 레지스터들(1810-1822)은 또한 유사하게 다른 mux 및 플립-플롭 회로들에 연결된다. 모드 선택 비트는 mux의 4개 입력들 중 어느 것을 선택하여야하는지를 선택하고, 이는 명령 코드로부터 선택된다. mux(1824)에 대한 입력들(1828) 중 두 개는 또한, 명령 코드로부터 얻어지는 반면, mux 입력들 중 나머지 두 개는 메모리로부터 얻어지고, 그 중 하나는 도 18에 도시된 바와 같이, 나머지의 반전된 버전일 수 있다.18 illustrates, in high level block diagram form, additional details of circuitry included in
간단히 설명될, 블록(1330)의 회로들에 대한 입력은 블록(1332)으로부터 생성되었지만, 이제는, 블록(1330)으로, 전체 인터리브들, 부분 인터리브들 또는 비 인터리브들 N 비트 워드들 중 어느 하나를 생성한다. 일 예에서, 이 연산은 256 비트상에서 이루어지고, 이 경우, 블록(1330)은 주어진 시간에 16 비트상에서 동작한다. 프리패치된 제어 워드가 16 비트 워드내의 어느 비트들이 반전되어야만 하는지를 판정하기 위해 사용된다. 선택적으로, ‘0’ 또는 ‘1’ 값이 반전에 부가하여 특정 비트 위치들에 입력된다.The input to the circuits of
도 19는 본 발명의 실시예에 따른 블록(1332)에 포함된 회로의 추가 세부사항들을 고레벨 블록도의 형태로 도시한다. 도 19에서, 메모리 어레이(1902)는 버스(1316)를 통해 입력 디바이스로부터 입력(104)을 수신하고, 버스(1316)를 통해 판독 가능화 입력(1906)을 수신하며, 추가로, 출력 디바이스 신호(1910)를 생성하기 위해 제어 로우-컬럼 어드레스 생성 블록(1908)으로부터 입력을 수신하는 것으로 도시되어 있으며, 출력 디바이스 신호(1910)는 블록(1302)에 제공된다. 일 예에서, 블록(1902)은 128 x 16 비트로 이루어진 메모리 어레이를 포함한다. 데이터는 로우 기반 또는 컬럼 기반 중 어느 한쪽으로 블록(1902)에 기록 또는 그로부터 판 독될 수 있다. 즉, 블록(1902)의 메모리 어레이의 로우가 판독될 수 있거나, 블록(1902)의 메모리 어레이의 컬럼이 판독될 수 있다. 부가적으로, 데이터는 로우 기반으로 기록되지만 컬럼 기반으로 판독될 수 있고, 그 반대도 마찬가지이다.19 illustrates additional details of the circuitry included in
도 20은 본 발명의 실시예에 따른 블록(1334)에 포함된 회로의 추가 세부사항들을 고레벨 블록도의 형태로 도시한다. 도 20에서, 브랜치 메트릭 유닛(2002)은 순차적으로, 버스(1310)에 연결된 출력(2022)을 생성하는 mux(2020)에 연결된 것으로 도시되어 있는 서바이버 메모리 블록(2012)에 연결된 것으로 도시되어 있는 가산/비교/선택 블록에 연결되고, 블록(1332)으로부터 입력을 수신하는 것으로 도시되어 있다. mux(2020)는 또한, mux(2016)로부터 입력을 수신하는 누산기(2018)의 출력으로부터 다른 입력을 수신하는 것으로 추가로 도시되어 있다. 선택적으로, 절대 편차의 합(SAD) 블록(2008) 및 역분산기(역분산을 위한) 블록(2010)이 mux(1016)에 대한 입력을 생성하기 위해 사용된다. 블록들(2008, 2010)이 없는 경우, mux(2016), 블록(2018) 및 mux(2020)는 사용되지 않는다. 로컬 메모리(2006)는 블록(2004)에 연결되는 것으로 도시되어 있다. 블록(2002)은 비터비 코딩/디코딩에 친숙한 당업자들에게 알려진 브랜치 메트릭 계산을 수행한다. 역시, 비터비 코딩/디코딩에 친숙한 당업자들에게 알려져 있는 서바이버 경로들은 블록(2012)내에 저장된다.20 shows further details of circuitry included in
블록(1334)은 터보 디코더, SAD 및 역분산 펑션들을 실행할 수 있다. 일 예에서, 32 내지 256 가산-비교-선택 연산들이 로컬 메모리(2006)에 의해 생성된 경로 메트릭 값들 및 16 비트 브랜치상에서 블록(2004)에 의해 병렬로 수행될 수 있 다. 일 예에서, 로컬 메모리(2006)의 크기는 1 킬로바이트와 16 킬로바이트이다.
각각 8 비트 서명된 가산기들을 포함할 수 있는 블록(1334)내에 포함된 다수의 블록들(2004)이 존재할 수 있다. 부가적으로, 각각은 위닝(winning) 경로 및 판정 비트를 반환하는 비교 및 선택 블록을 포함할 수 있다. 가산-비교-선택 연산들은 위닝 경로 및 판정 비트들을 초래한다. 위닝 경로는 이리저리 격자를 내려가는 “멀티-캐스트” 상호접속 체계를 사용하여 이웃 블록들(2004)과 공유될 수 있다. 위닝 브랜치 및 경로 메트릭 값들을 가지는 판정 비트들은 역추적을 위해 저장된다.There may be a number of
블록(2008)은 4개 8 비트 ALU들을 포함하며, 일 예에서, 그 4개 절대 편차들이 매 사이클마다 산출될 수 있다. 감축 트리는 절대 편차들을 16 비트 누산기에 누산하기 위해, 블록(2004)내에 누적된다. 멀티 캐스트 네트워크는 추가 감축을 위해 이들 값들을 횡단 전송하기 위해 사용될 수 있다. 클록 사이클 당 총 128 8 비트(64 16 비트) 블록들(2008)이 가능하다. 그러나, 오버헤드들 모두를 고려한 효과적 활용은 보다 낮은 수에서 얻어지는 것으로 믿어진다.
ALU들은 전술된, 특수 ALU 블록이 이행하는 바와 동일한 조건부 가산-감산 펑션을 이행한다. 역분산을 위해 필요한 제어 비트들은 로컬 메모리내에 로딩되어야만 하며, 이 로컬 메모리로부터 패칭되고 레지스터에 저장된다. 이 결과들은 16 비트 누산기에 누산되며, 이 누산기로부터 그에 대한 감축 작업을 위해 다른 블록들(2004)로 전달될 수 있다. 역분산을 사용하여, 일 예에서, 단일 사이클에서 128 동시 조건부 가산-감산들을 수행하는 것이 가능하다. 이 유닛의 트랜지션 당 에너 지는 역분산 및 SAD 이외의 소정의 범용 펑션들을 수행하는 특수 ALU를 위해 사용되는 것보다 높다. 보다 작은 수의 핑거들 또는 보다 느린 운동 추정 속도에 대하여, 특수 ALU는 보다 전력 효율적인 선택사항이다.The ALUs implement the same conditional add-subtract function as the special ALU block, described above. The control bits needed for devariance must be loaded into local memory, patched from this local memory and stored in registers. These results are accumulated in a 16-bit accumulator and can be passed from this accumulator to
도 21은 본 발명의 실시예에 따른, 프로세서(22)를 사용하는 프로그래밍 흐름 및 툴들의 예를 도시한다. 도 22는 본 발명의 실시예들의 스케일능의 예를 도시한다. 예로서, 도 22에서, 클러스터들(2202) 또는 N-형 및 W-형의 서브-프로세서들이 버스(2204)를 사용하여 상호접속되는 것으로 도시되어 있다. 각 클러스터(2202)는 두 개 또는 네 개의 서브-프로세서들을 포함한다. 버스(2204)는 일 예에서, 표준 SoC 버스이다. 계층적 설계 방법을 유지함으로써, 상호접속성이 해결된다.21 illustrates an example of a programming flow and
프로세서(20)의 스케일링은 각 클러스터를 위한 별개의 버스들을 갖는 네 개의 서브-프로세서들의 클러스터들을 도출하며, 이렇지 않으면, 네 개의 서브-프로세서들은 단일 메모리를 공유할 수 있다. 프로세서들에 관한 스케일능은 일반적으로, 프로세서의 주파수 또는 속도의 증가나 프로세서들의 수의 증가에 의해 이루어진다. 그러나, 복잡한 애플리케이션들은 이전에 이행되는 것을 초과한 스케일링을 필요로한다. 본 발명에서, W-형 및 N-형 서브-프로세서들은 프로세싱을 형성하는 4개의 이런 서브-프로세서들이 단일 애플리케이션을 처리할 수 있도록 변형되어 있다.Scaling of the
따라서, 프로세서(22)는 C 코드로부터의 편집에 직접적으로 기초한 RISC 및 슈퍼 스칼라 프로세서들보다 효율적으로 목표 애플리케이션들에 형성된 제어 및 순차 DSP 코드를 운용하기 위한 기능을 갖는다. 동시에, 이는 리가시 및 경량 애플리 케이션들을 위하여 RISC 및 슈퍼 스칼라 프로세서들에 사용되는 자동 코드 생성 기술들의 장점을 취하도록 설계되어 있다. 또한, 프로세서(22)는 애플리케이션 맵핑 및 개발을 위해 시뮬링크 같은 성숙하고 산업적 표준인 소프트웨어 툴들을 사용하여 작업한다. 무어의 법칙이 프로세서(22)의 성능을 향상시키기 위해 사용될 수 있다. 프로세서(22)는 매우 병렬적인 기계일 뿐만 아니라, 또한, 이종 멀티 프로세서이다. 산업 및 학계 양자에서, 멀티미디어 및 통신 애플리케이션들의 수요를 해결하기 위해 병렬 이종 멀티 프로세서들이 필요하다는 사실이 검증되었다. 이는 임의의 전력 및 면적 비효율적 기술들을 사용하지 않고, VLIW에서 사용되는 자동 코드 생성 기술들 중 다수의 활용을 가능하게 한다. 이는 C로부터의 제어 코드의 편집에 기초한 패턴들을 반복하는 장점을 취하도록 최적화되어 있다. 이는 제어 전력을 현저히 감소시키고, 컴파일된 시리얼 코드를 효과적으로 운용할 수 있게 한다. 부가적으로, 프로세서(22)의 프로그래밍 모델은 시뮬링크 같은 그들에 친숙한 툴들을 사용하여 DSP 프로그래머들의 대형 커뮤니티에 적합하도록 설계되어 있다. 그 개발 흐름은 효율적인 제어 및 순차 DSP 코드의 C-편집을 위한 수단을 제공한다. 또한, 매우 효율적인 통신들 및 멀티미디어 커널들의 라이브러리의 방대한 집합이 제공된다. 예들은 FFT, IDCT, RRC, 비터비, VLC, 2D/3D 그래픽스, 터보 코덱 및 역 스크램블러의 파라미터화된 라이브러리이다.Thus,
프로세서(22)의 데이터 경로 디자인은 집중된, 그러나 매우 유리한 애플리케이션 혼합물을 효과적으로 어드레스하기 위해 변하는 그래뉼러리티의 펑셔널 유닛들을 연결하는 가변적 상호접속 구조들을 성공적으로 통합한다.The data path design of the
프로세서(22)의 스케일능은 표준 SoC 버스에 기초한 블록내의 가장 가까운 이웃 접속들을 갖는 단일 블록(시간 멀티플렉싱된)내의 모든 애플리케이션들에 맞도록 설계되어있다. 다수의 블록들이 그들 사이의 임의의 전용 통신 없이, 다수의 애플리케이션들을 처리하도록 사용될 수 있기 때문에, 현저한 양의 비효율성 및 모든 시스템 레벨 논 디터미니즘이 감소된다.The scalability of the
도 23은 본 발명의 스케일능의 이득 중 일부를 나타내는 차트를 도시한다.Fig. 23 shows a chart showing some of the gains of the scale capability of the present invention.
비록, 특정 실시예들에 관하여, 본 발명을 설명하였지만, 당업자들은 그 변형 및 대안들을 명백히 알 수 있다는 것은 의심할 여지가 없다. 따라서, 하기의 청구범위는 본 발명의 진정한 개념 및 범주내에 드는 것으로 이런 모든 대안들 및 변용들을 포함하는 것으로 해석되어야 한다.Although the invention has been described with respect to specific embodiments, there is no doubt that those skilled in the art can clearly see the variations and alternatives. Accordingly, the following claims are to be construed as including all such alternatives and modifications as fall within the true spirit and scope of the present invention.
Claims (20)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US58769104P | 2004-07-13 | 2004-07-13 | |
US60/587,691 | 2004-07-13 | ||
US59841704P | 2004-08-02 | 2004-08-02 | |
US60/598,417 | 2004-08-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070055487A true KR20070055487A (en) | 2007-05-30 |
Family
ID=35839807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077000909A KR20070055487A (en) | 2004-07-13 | 2005-07-12 | Programmable processor architecture |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1779256A4 (en) |
JP (1) | JP2008507039A (en) |
KR (1) | KR20070055487A (en) |
CA (1) | CA2572954A1 (en) |
WO (1) | WO2006017339A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180111321A (en) * | 2017-03-31 | 2018-10-11 | 삼성전자주식회사 | Semiconductor device |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7856246B2 (en) | 2007-03-21 | 2010-12-21 | Nokia Corporation | Multi-cell data processor |
GB2474901B (en) * | 2009-10-30 | 2015-01-07 | Advanced Risc Mach Ltd | Apparatus and method for performing multiply-accumulate operations |
WO2014190263A2 (en) | 2013-05-24 | 2014-11-27 | Coherent Logix, Incorporated | Memory-network processor with programmable optimizations |
JP6102528B2 (en) | 2013-06-03 | 2017-03-29 | 富士通株式会社 | Signal processing apparatus and signal processing method |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9509989D0 (en) * | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
US6331856B1 (en) * | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US5909559A (en) * | 1997-04-04 | 1999-06-01 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
US5878085A (en) * | 1997-08-15 | 1999-03-02 | Sicom, Inc. | Trellis coded modulation communications using pilot bits to resolve phase ambiguities |
WO1999010226A2 (en) * | 1997-08-22 | 1999-03-04 | Jens Korsgaard | Fluid swivel for oil production vessels and tanker vessels |
JP2991694B1 (en) * | 1998-06-12 | 1999-12-20 | 日本放送協会 | Digital transmitter and receiver |
US6643332B1 (en) * | 1999-07-09 | 2003-11-04 | Lsi Logic Corporation | Method and apparatus for multi-level coding of digital signals |
US6539467B1 (en) * | 1999-11-15 | 2003-03-25 | Texas Instruments Incorporated | Microprocessor with non-aligned memory access |
US7313583B2 (en) * | 2002-10-22 | 2007-12-25 | Broadcom Corporation | Galois field arithmetic unit for use within a processor |
-
2005
- 2005-07-12 KR KR1020077000909A patent/KR20070055487A/en not_active Application Discontinuation
- 2005-07-12 WO PCT/US2005/024867 patent/WO2006017339A2/en active Application Filing
- 2005-07-12 JP JP2007521614A patent/JP2008507039A/en active Pending
- 2005-07-12 EP EP05771043A patent/EP1779256A4/en not_active Withdrawn
- 2005-07-12 CA CA002572954A patent/CA2572954A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180111321A (en) * | 2017-03-31 | 2018-10-11 | 삼성전자주식회사 | Semiconductor device |
Also Published As
Publication number | Publication date |
---|---|
EP1779256A2 (en) | 2007-05-02 |
WO2006017339A2 (en) | 2006-02-16 |
EP1779256A4 (en) | 2007-11-28 |
JP2008507039A (en) | 2008-03-06 |
WO2006017339A3 (en) | 2006-04-06 |
CA2572954A1 (en) | 2006-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8880850B2 (en) | Low power, high performance, heterogeneous, scalable processor architecture | |
CN100541425C (en) | scalar/vector processor | |
KR100740081B1 (en) | Reconfigurable operation apparatus | |
JP2001256038A (en) | Data processor with flexible multiplication unit | |
US20070198901A1 (en) | Configurable interface for connecting various chipsets for wireless communication to a programmable (multi-)processor | |
US8989242B2 (en) | Encoding/decoding processor and wireless communication apparatus | |
CN105335331B (en) | A kind of SHA256 realization method and systems based on extensive coarseness reconfigurable processor | |
Li et al. | Efficient parallel implementation of three‐point viterbi decoding algorithm on CPU, GPU, and FPGA | |
KR20070055487A (en) | Programmable processor architecture | |
CN101031904A (en) | Programmable processor system with two kinds of subprocessor to execute multimedia application | |
Song et al. | Gpnpu: Enabling efficient hardware-based direct convolution with multi-precision support in gpu tensor cores | |
KR100722428B1 (en) | Resource Sharing and Pipelining in Coarse-Grained Reconfigurable Architecture | |
Lee et al. | A low-power DSP for wireless communications | |
Tanskanen et al. | Byte and modulo addressable parallel memory architecture for video coding | |
Lin et al. | A unified processor architecture for RISC & VLIW DSP | |
US7890566B1 (en) | Microprocessor with rounding dot product instruction | |
Heysters et al. | A reconfigurable function array architecture for 3G and 4G wireless terminals | |
Feng et al. | Floating-point operation based reconfigurable architecture for radar processing | |
WO2006083768A2 (en) | Same instruction different operation (sido) computer with short instruction and provision of sending instruction code through data | |
Karlsson et al. | ePUMA: A unique memory access based parallel DSP processor for SDR and CR | |
Kao | Performance-driven parallel reconfigurable computing architecture for multi-standard video decoding | |
WO2005038644A1 (en) | Data processing device | |
Vega et al. | Architectural perspectives of future wireless base stations based on the IBM PowerEN™ processor | |
Chen et al. | VLSI architecture of the reconfigurable computing engine for digital signal processing applications | |
ANTONESCU | PhD Thesis Summary |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |