JP2008507039A - Programmable processor architecture - Google Patents

Programmable processor architecture Download PDF

Info

Publication number
JP2008507039A
JP2008507039A JP2007521614A JP2007521614A JP2008507039A JP 2008507039 A JP2008507039 A JP 2008507039A JP 2007521614 A JP2007521614 A JP 2007521614A JP 2007521614 A JP2007521614 A JP 2007521614A JP 2008507039 A JP2008507039 A JP 2008507039A
Authority
JP
Japan
Prior art keywords
block
processor
sub
connected
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007521614A
Other languages
Japanese (ja)
Inventor
ランチャンドラン アミト,
レイド ハウザー ジュニア ジョン,
Original Assignee
スリープラスワン テクノロジー, インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US58769104P priority Critical
Priority to US59841704P priority
Application filed by スリープラスワン テクノロジー, インコーポレイテッド filed Critical スリープラスワン テクノロジー, インコーポレイテッド
Priority to PCT/US2005/024867 priority patent/WO2006017339A2/en
Publication of JP2008507039A publication Critical patent/JP2008507039A/en
Application status is Pending legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7864Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions; instructions using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

本発明の一実施形態は、Wビットを平行して処理することが可能な少なくとも1つのWタイプのサブプロセッサ(74、76)(Wは整数値である)と、Nビットを平行して処理することが可能な少なくとも1つのNタイプのサブプロセッサ(78、80)(NはWより1/2倍小さい整数値である)とを有する、異種の、高性能で拡張可能なプロセッサを含む。 One embodiment of the invention, at least one W-type sub-processor capable of processing in parallel the W bit (74, 76) (W is an integer), in parallel N-bit processing at least one N-type sub-processor (78, 80) capable of (N 1/2 times a small integer value from W) and a, heterologous, including extensible processor with high performance. 前記プロセッサは、前記少なくとも1つのWタイプのサブプロセッサと少なくとも1つのNタイプのサブプロセッサを接続する共有バス、および前記少なくとも1つのWタイプのサブプロセッサと前記少なくとも1つのNタイプのサブプロセッサに接続されて共有されるメモリ(312)を備え、前記Wタイプのサブプロセッサは、高速動作を可能にするアプリケーションの実行に対応するようメモリを再配置する。 Wherein the processor is connected to the at least one W-type sub-processor and at least one of the shared bus, and wherein at least one W-type sub-processor at least one N-type sub-processor connecting the N-type sub-processor is provided with a memory (312) shared by the sub-processor of the W-type rearranges the memory so as to correspond to the execution of the application that enable high-speed operation.

Description

(関連出願の引用) (Citation of the relevant application)
本発明は、2004年7月13日に出願され、「Quasi−Adiabatic Programmable or COOL Processors Architecture」と題された、米国仮特許出願第60/598,691号の利益、および、2004年8月2日に出願され、「Quasi−Adiabatic Programmable Processor Architecture」と題された、米国仮特許出願第60/598,417号の利益を主張する。 The present invention, filed July 13, 2004, entitled "Quasi-Adiabatic Programmable or COOL Processors Architecture", U.S. Provisional Patent Application No. 60 / 598,691 profit, and August 2004 2 filed on the date, entitled "Quasi-Adiabatic Programmable Processor Architecture", claims the benefit of U.S. provisional Patent application No. 60 / 598,417.

(本発明の分野) (The field of the invention)
本発明は、一般に、プロセッサの分野に関し、特に、通信およびマルチメディアのアプリケーションにおいて用いられる低消費電力、高性能、小ダイ面積(low die area)、ならびに、柔軟性および拡張性を有するプロセッサに関する。 The present invention relates generally to the field of processors, in particular, low power consumption for use in communications and multimedia applications, high-performance, small die area (low die area), and to a processor with flexibility and extensibility.

(従来技術の説明) (Description of the prior art)
セルフォンまたはモバイルフォン、デジタルカメラ、iPod、および携帯情報端末(PDA)などの消費者機器の人気の到来により、これらの機器を使用する通信についての多くの新規格が、この業界によって広く導入されてきた。 Cellphone or mobile phones, digital cameras, iPod, and the popularity of the advent of consumer devices such as personal digital assistant (PDA), many new standard for communications using these devices, have been widely adopted by the industry It was. これらの規格のいくつかには、H264、MPEG4、UWB、Bluetooth、2G/2.5G/3G/4G、GPS、MP3およびSecurityが挙げられる。 Some of these standards, H264, MPEG4, UWB, Bluetooth, 2G / 2.5G / 3G / 4G, GPS, MP3 and Security and the like. しかしながら、異なる機器の間の通信を定める異なる規格を使用することは、とてつもない開発努力が必要であるという新たな問題が発生している。 However, the use of different standards define communication between the different devices, a new problem has occurred that requires tremendous development effort. 前述の問題の理由の1つは、現在市販されているプロセッサまたはサブプロセッサは、あらゆるデジタル素子によって容易にはプログラム可能でなく、さまざまな強制規格に適合していないということが挙げられる。 One reason of the foregoing problems, a processor or sub-processor are currently marketed are readily by any digital device not programmable, include that it does not conform to a variety of technical regulations. 家庭用電化製品の保証における新しい傾向としてこの問題が大きくなることは時間の問題であり、ましてや今後この業界により導入される規格はなおさらのことである。 This problem becomes larger as a new trend in the guarantee of consumer electronics products is a matter of time, let alone the standards introduced by the industry future is even more of it.

プロセッサの新たな、あるいは現在の要求の1つは、低消費電力、さらには、複数のアプリケーションを処理するのに十分なコードの実行をもたらす能力である。 New processor, or one of the current request is a low power, and further, the ability to bring about the execution of code sufficient to handle multiple applications. 現在の電力消費は、アプリケーション当たりおよそ数百ミリワット未満であるが、多数のアプリケーションを実行するためには、数百ミリワット未満にすることが目標である。 Current power consumption is less than the order of hundreds of milliwatts per application, in order to perform a large number of applications, the goal is to less than a few hundred milliwatts. プロセッサの別の要求は、低コストである。 Another request processor is a low-cost. 消費者製品においてプロセッサは幅広く利用されているため、プロセッサは費用をかけずに製造されなければならない。 Since the processor is widely used in consumer products, the processor must be produced at no cost. そうでなければ、最も一般的な家庭用電化製品におけるプロセッサの使用は、実利的ではない。 Otherwise, the use of the processor in the most common household appliances, not pragmatic.

現在のプロセッサの問題の具体例を挙げると、いくつかの消費者製品において使用されるRISCに関連する問題、その他の消費者製品において使用されるマイクロプロセッサに関連する問題、さらにその他の消費者製品において使用されるデジタル信号処理プロセッサ(DSP)に関連する問題、さらにその他消費者製品において使用される特定用途向け集積回路(ASIC)に関連する問題、既知のプロセッサのいくつかに関連する問題が挙げられ、それぞれが独特の問題を示しており、以下に簡潔に説明される。 Specific examples of problems in the current processor, some RISC the associated problems that are used in consumer products, and other consumer problems associated with the microprocessor used in the product, still other consumer products It includes digital signal processor (DSP) to the associated problems that are used, further other consumer application specific integrated circuit used in the product (ASIC) in related problems, issues related to some known processor in are, each represents the unique problems are briefly described below. これらの問題は、それぞれを使用する利点とともに、その不利点を説明する「欠点」の部分およびその利点を説明する「長所」の部分について、以下で説明される。 These problems, together with the benefits of using each of the portions of the "advantage" described parts and its advantages "disadvantages" that describes the disadvantages are described below.

(A.RISC/スーパースケーラプロセッサ) (A.RISC / superscalar processor)
RISCおよびスーパースケーラプロセッサは、あらゆる汎用目的のコンピューティングに最も広く受け入れられるアーキテクチャのソリューションである。 RISC and superscalar processors is the most widely architecture solutions acceptable to computing any general purpose. それらは、一般のソリューションのコンテクストにおいて特定の特殊な問題を解決するために、アプリケーション特有のアクセラレータを用いて強化されることが多い。 They, in order to resolve certain special problems in the context of general solutions are often augmented with an application-specific accelerators.

例:ARMシリーズ、ARCシリーズ、ストロングARMシリーズ、およびMIPSシリーズ。 Example: ARM series, ARC series, Strong ARM series, and MIPS series.

長所: Pros:
・ 業界に広く受け入れられることによって、ツールチェーンがより成熟し、ソフトウェアの選択が幅広くなった。 · Widely by being accepted by the industry, tool chain is more mature, the choice of software has become widely.
・ 強固なプログラミングモデルが、Cのような高級言語からバイナリを生成するために使用される、極めて効率的な自動コードジェネレータによってもたらされた。 - robust programming model, a high-level language such as C are used to generate a binary, brought about by an extremely efficient automatic code generators.
・ このカテゴリーにおけるプロセッサは、極めて優れた汎用目的のソリューションである。 Processor in this category is the solution of extremely excellent general purpose.
・ ムーアの法則を性能向上のために効率的に使用することができる。 · Moore's Law can be effectively used to improve the performance.

欠点: Disadvantage:
・ アーキテクチャの汎用目的の性質は、価格、電力、性能の改善に関して、アプリケーションのセットまたはサブセットの一般/特定の特性を活用しない。 - the nature of general-purpose architecture, the price does not utilize power, for improved performance, general / specific characteristics set or subset of applications.
・ 提供される計算の量に対して、中程度から大量の電力を消費する。 - the amount of calculations to be provided, consume large amounts of power from moderate.
・ 性能の向上は、いくつかのマルチメディアおよび通信のアルゴリズムに悪影響を与えるパイプラインレイテンシを代償にして主に達成される。 And performance improvement of, and a pipeline latency adversely affect some multimedia and communications algorithms expense is mainly achieved.
・ 一般的アルゴリズムに対する、より効率的な自動コード生成のための、複雑なハードウェアスケジューラ、高度な制御機構、および大幅に削減された制限により、このカテゴリーのソリューションの面積効率が低下した。 - for common algorithm more efficient for automatic code generation, complex hardware scheduler, advanced control mechanisms, and the significantly reduced restriction, area efficiency of the solution in this category is lowered.

(B.超長命令語(VLIW)およびDSPs) (B. very long instruction word (VLIW) and DSPs)
VLIWアーキテクチャは、デジタル信号処理スペースにおける極めて一般的なソリューションを生み出すために、RISCおよびスーパースケーラプロセッサのアーキテチャに見られる非効率性のいくつかを解消した。 VLIW architecture, in order to produce a very general solution in digital signal processing space, and eliminate some of the inefficiencies found in Akitecha of RISC and superscalar processors. 並列性が大幅に増加した。 Parallel has increased significantly. スケジューリングの負担が、面積を確保するためにハードウェアからソフトウェアに移行された。 Scheduling burden was transferred to the software from the hardware in order to secure the area.
例:TI 64xx、TI 55xx、StarCore SC140、ADI SHARCシリーズ。 Example: TI 64xx, TI 55xx, StarCore SC140, ADI SHARC series.

長所: Pros:
・ ソリューションを信号処理スペースに制限することによって、RISCおよびスーパースケーラのアーキテクチャと比べて、3Pが改善された。 - By limiting the signal processing space solution, as compared with RISC and superscalar architecture, it was improved 3-Way.
・ VLIWアーキテクチャは、RISCおよびスーパースケーラのアーキテクチャに比べ、より高いレベルの並列性を提供する。 · VLIW architecture, compared to the architecture of the RISC and superscalar, provides a higher level of parallelism.
・ 効率的なツールチェーンが急速に作成され、業界での幅広い受け入れが急速に広がった。 And efficient tool chain is rapidly created, wide acceptance in the industry has spread rapidly.
・ 自動コード生成およびプログラマビリティは、信号処理用に設計された多くのプロセッサがこのカテゴリーにあてはまるため、大幅な改善を示している。 Automatic code generation and programmability, because many processor designed for signal processing fall into this category, shows a significant improvement.

欠点: Disadvantage:
・ 問題解決能力は、デジタル信号処理スペースにまで低下するが、VLIWマシンのような一般的なソリューションが効率的な3Pを有するには広すぎる。 · Problem solving ability, but drops to a digital signal processing space, too wide for general solutions such as VLIW machines have an efficient 3-Way.
・ 制御は、多くのマルチメディアおよび通信のアプリケーションにおける、特に、基本制御コードに対し、高価であり、なおかつ、電力を消費する。 And control is in many multimedia and communications applications, in particular, to the basic control code, expensive, yet consumes power.
・ いくつかの電力および面積に関する非効率な技術が、自動コード生成を容易にするために使用された。 · Some inefficient technology relating power and area were used to facilitate automatic code generation. ソフトウェアコミュニティによるこれらの技術への強い依存性は、この非効率性を世代から世代へと持ち越している。 Strong dependence to these technologies by the software community has carried over this inefficiency from generation to generation.
・ VLIWアーキテクチャは、シリアルコードを処理するにはあまり適切ではない。 · VLIW architecture is not very suitable to process the serial code.

(C.再構成可能コンピューティング) (C. reconfigurable computing)
過去10年間にわたる業界および学界におけるさまざまな努力は、価格、電力、および性能の特性のようなASICを使用して柔軟性のあるソリューションを構築することに集中していた。 Various efforts in the industry and academia over the past 10 years, the price, has focused on building power, and using an ASIC such as a characteristic of the performance a flexible solution. その多くは、業界においてほとんど成果がなくても、現行法および成熟した法(matured law)ならびに設計パラダイムに挑戦した。 Many of which, even if there is no little achievement in the industry, challenged the current law and mature law (matured law) as well as the design paradigm. その試みのほとんどは、アーキテクチャのような粗いFPGAに基づいてソリューションを生み出すことを目指していた。 Most of the attempts were aiming at creating solutions based on rough FPGA like architecture.

長所: Pros:
・ 特定のアプリケーションに制限され、そのアプリケーションの範囲内で必要とされる柔軟性を提供するいくつかの設計は、価格、電力、性能の競争力があることが判明した。 · Being limited to any particular application, some designs to provide the flexibility needed within the scope of the application, price, power, that is competitive in performance was found.
・ 研究によると、制限されているが柔軟性のあるそのようなソリューションを、多くのアプリケーションのホットスポットに対処するように生み出すことが可能であることが示された。 · According to the study, such a solution has been limited to a flexible, it was shown to be possible to create to cope with the hot spot for many applications.

短所: Cons:
・ このスペースにおけるいくつかの設計は、効率的かつ容易なプログラミングソリューションを提供しなかったので、DSPのプログラミングに精通しているコミュニティに広く受け入れられなかった。 - some designs in this space, so did not provide an efficient and easy programming solution, it was not widely accepted in the community who are familiar with the programming of DSP.
・ Cのような高級言語からの自動コード生成は、その設計の多くにとって、実質的に不可能または極めて非効率的であった。 Automatic code generation from high-level language such as C are for many of the design, was substantially impossible or very inefficient.
・ 3Pの利点は、1種類の相互接続および1レベルの粒度を使用して異種アプリケーションを統合しようと試みる場合に、失われた。 - The advantage of 3P, when using one kind of interconnection and one level granularity attempt to integrate disparate applications, lost. 提供された並列性の利用レベルが、大幅に犠牲になった。 Offered parallelism usage levels were significantly sacrificed.
・ 再構成オーバーヘッドは、ほとんどの設計に対する3Pにおいて重要であった。 And re-configuration overhead, was important in 3P for most of the design.
・ 多くの場合において、外部インターフェースは、専用の再構成可能構造が業界標準のシステム設計手法に適合しなかったため、複雑であった。 - most in the case, the external interface, since the reconfigurable structure dedicated not compatible with the system design methodology industry standard, was complicated.
・ 再構成生可能なマシンは単一プロセッサであり、基本制御の処理に対してさえ、タイトに集積されたRISCに大きく依存する。 - reconstruction raw possible machine is a single processor, even for processing of the basic control, greatly depends on the RISC that are integrated tightly.

(D.プロセッサのアレイ) (Array of D. processor)
いくつかの最近の取り組みは、再構成可能なシステムを、異種アプリケーションを処理するのにより適切にすることに集中させられている。 Some recent efforts, a reconfigurable system, are allowed to focus on more suitable to process different applications. 1つまたは1セットのアプリケーションに対して最適化された複数のプロセッサを接続し、この方向におけるソリューションは、プロセッサのアレイ構造を作成する。 A plurality of processors optimized for one or a set of applications to connect, solutions in this direction, to create an array structure of the processor.

長所: Pros:
・ 効率的な構造を使用して共に接続される場合に、異なるセットのアプリケーションに対して最適化された異なるプロセッサは、幅広い問題を解決するのに役立つことができる。 · If the efficient structure using are connected together, the optimized different processors against different sets applications, can help solve a wide range of problems.
・ 一様なスケーリングモデルは、性能要件が増加する場合に、ナンバープロセッサが共に接続されることを可能にする。 · Uniform scaling model, when increasing the performance requirements, allows the number processors are connected together.
・ 複雑なアルゴリズムは、効率的に分割されることができる。 - complex algorithms can be efficiently divided.

短所: Cons:
・ 性能要求は十分に満たされ得るが、電力および価格の非効率性が高すぎる。 - performance requirements can sufficiently satisfied but inefficiencies power and price is too high.
・ プログラミングモデルはプロセッサにごとに異なる。 Programming model is different for each processor. これはアプリケーション開発者の仕事をさらに困難にする。 This makes it even more difficult the work of application developers.
・ 多数のプロセッサの一様なスケーリングは、極めて費用がかかり、なおかつ、電力を消費するリソースである。 · Uniform scaling of multiple processors, consuming very expensive, yet, a resource that consumes power. これは、全体のシステムの性能に悪影響を及ぼし得るいくつかの非決定論を表示するために示された。 This was shown to display some nondeterministic which may adversely affect the performance of the overall system.
・ システムレベルでのプログラミングモデルは、いかなる共有メモリリソースも備えないので、通信データ、コード、および、制御情報の複雑性を被る。 Programming model at the system level, since it includes any shared memory resource, communication data, code, and suffer from the complexity of the control information. 共有メモリが、一様に拡張可能ではないためである。 Shared memory, because it is not uniformly extensible.
・ 異なるタイプのプロセッサを異種のネットワークに接続するのに必要な拡張性および反復性のグルーロジック(glue logic)は、面積の非効率を増大させ、消費電量を増加させ、レイテンシを増加させる。 - different types of processors required to connect to a heterogeneous network scalability and repeatability of glue logic (glue logic) increases the inefficiency of the area, increasing the dissipation amount increases latency.

前述を踏まえて、1つまたは複数のマルチメディアアプリケーションを同時に実行することを可能にするために、低電力、安価、効率的、高性能、柔軟にプログラム可能、なおかつ、異種であるプロセッサが必要とされる。 In light of the above, in order to be able to perform one or more multimedia applications simultaneously, low power, low cost, efficient, high-performance, flexible programmable, yet, requires the processor is heterologous It is.

簡潔に説明すると、本発明の一実施形態は、Wビット以上のビットを並列的に処理することが可能な少なくとも1つのWタイプのサブプロセッサであって、Wは整数値であるサブプロセッサと、Nビットを並列的に処理することが可能な少なくとも1つのNタイプのサブプロセッサであって、NはWより小さい整数値であるサブプロセッサとを備える、異種の、高性能で、拡張可能なプロセッサを含む。 Briefly, an embodiment of the present invention includes at least one W-type sub-processor capable of processing the above bit W bit parallel, W is a sub-processor is an integer value, and at least one N-type sub-processor capable of processing the N-bit parallel, N includes a sub-processor is W smaller integer, heterogeneous, high performance, scalable processors including. 前記プロセッサは、前記少なくとも1つのWタイプのサブプロセッサと少なくとも1つのNタイプのサブプロセッサとを接続する共有バスと、前記少なくとも1つのWタイプのサブプロセッサと前記少なくとも1つのNタイプのサブプロセッサに接続されて共有されるメモリとをさらに備え、前記Wタイプのサブプロセッサは、メモリを出入りするバイトを再配置し、アプリケーションの実行に対応することにより、高速動作を可能にする。 Wherein the processor and at least one W-type sub-processor and a shared bus which connects a sub-processor of the at least one N type, the at least one W wherein the type of sub-processors at least one N-type sub-processor further comprising a memory that is shared is connected, the sub-processor of the W type, reposition bytes in and out of memory, by corresponding to the execution of the application, to enable high speed operation.

まず図1を参照すると、本発明の実施形態を含むデジタル製品12に関するアプリケーション10が示される。 Referring first to FIG. 1, the application 10 is shown a digital product 12 including an embodiment of the present invention. 図1は、市販されているものに関連する、本発明の実施形態を含む製品の利点のうちの、必ずしも全てではないが、そのいくつかに関する図を読み手に提供することを意図している。 Figure 1 is related to those marketed, of the advantages of the product including an embodiment of the present invention, but not necessarily all, are intended to provide figures relating to the some the reader.

したがって、製品12は、現代の携帯電話装置14、デジタルカメラ装置16、デジタル録音または音楽装置18、およびPDA装置20により実行される必要のあるアプリケーションの全てを組み込むことにおいて、コンバージェンス製品である。 Thus, the product 12, modern mobile phone device 14, a digital camera device 16, in the incorporation of all the applications that need to be performed by the digital recording or musical apparatus 18, and PDA device 20, a convergence product. 製品12は、装置14〜20の機能のうちの1つまたは複数の機能を同時に実行することができるが、低電力消費である。 Product 12 can be performed one of the functions of the device 14 to 20 or more functions at the same time, a low power consumption.

製品12は通常、電池式であるため、装置14〜20によって実行されるアプリケーションのうちの複数のアプリケーション実行する場合でさえ、ほとんど電力を消費しない。 Product 12 is typically because it is battery powered, apparatus even when executing a plurality of applications of the application executed by the 14-20, does not consume little power. また製品12は、H264、MPEG4、UWB、Bluetooth、2G/2.5G/3G/4G、GPS、MP3、およびSecurityを含むがそれだけに限定されない複数のアプリケーションに適合して動作を達成するために、コードを実行することもできる。 The product 12, H264, MPEG4, UWB, Bluetooth, 2G / 2.5G / 3G / 4G, GPS, MP3, and to achieve an operation conforms to a plurality of applications is not limited to much including Security, code it is also possible to run.

図2は、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス(DMA)回路24に接続される、異種の、高性能で、拡張可能なプロセッサ22を備える典型的な集積回路20を示す。 2, according to an embodiment of the present invention are connected to the memory controller and direct memory access (DMA) circuit 24, the heterogeneous, high performance, showing a typical integrated circuit 20 comprising an expandable processor 22 . また図2において、プロセッサ22は、汎用バス30を介してインターフェース回路26に接続され、汎用バス31を介してインターフェース回路28に接続され、バス30を介し、バス31を介して汎用プロセッサ32とさらに接続されることを示す。 In Figure 2, the processor 22 is connected to the interface circuit 26 via a general purpose bus 30 is connected to the interface circuit 28 via a general purpose bus 31, via bus 30, further with a general purpose processor 32 via the bus 31 It is meant to be connected. 回路20は、回路10の残りの回路によって利用されるクロック、同様に利用されるリセット信号、および同様に電力を管理するための回路を生成するために、クロックリセットおよび電源管理34を含むようにさらに示される。 Circuit 20 to generate a circuit for managing clock used by the remaining circuitry of circuit 10, the reset signal is utilized in the same manner, and similarly the power, to include the clock reset and power management 34 further shown. 回路20には、Joint Test Action Group(JTAG)回路36がさらに含まれる。 The circuit 20, Joint Test Action Group (JTAG) circuit 36 ​​is further included. JTAGはチップを検査するための規格として使用される。 JTAG is used as a standard for testing the chip.

バス30に接続されて示されるインターフェース回路26およびバス31に接続されて示されるインターフェース回路28は、当業者にとっては通常既知である現行のプロセッサにより使用されるブロック40〜66を備える。 Interface circuit 28 which is shown connected to the interface circuit 26 and the bus 31 is shown connected to bus 30 typically comprises a block 40 to 66 used by the current processor is known to those skilled in the art.

異種のマルチプロセッサであるプロセッサ22は、共有データメモリ70、共有データメモリ72、CoolWサブプロセッサ(またはブロック)74、CoolWサブプロセッサ(またはブロック)76、CoolNサブプロセッサ(またはブロック)78、および、CoolNサブプロセッサ(またはブロック)80を含むように示される。 Processor 22 is a multiprocessor heterogeneous, shared data memory 70, a shared data memory 72, CoolW sub-processors (or block) 74, CoolW sub-processors (or block) 76, CoolN sub-processors (or block) 78 and,, CoolN It is shown to include a sub-processor (or block) 80. ブロック74〜80の各々は、命令メモリと関連し、例えば、CoolWブロック74は命令メモリ82と関連し、CoolWブロック76は命令メモリ84に関連し、CoolNブロック78は命令メモリ86に関連し、CoolNブロック80は命令メモリ88に関連する。 Each block 74-80 is associated with the instruction memory, for example, CoolW block 74 is associated with the instruction memory 82, CoolW block 76 is associated with the instruction memory 84, CoolN block 78 is associated with the instruction memory 86, CoolN block 80 relates to the instruction memory 88. 同様に、ブロック74〜80の各々は、制御ブロックに関連する。 Similarly, each of the blocks 74-80 is associated with the control block. ブロック74は制御ブロック90に関連し、ブロック76は制御ブロック92に関連し、ブロック78は制御ブロック94に関連し、ブロック80は制御回路96に関連する。 Block 74 is associated with the control block 90, block 76 is associated with the control block 92, block 78 is associated with the control block 94, block 80 is associated with the control circuit 96. ブロック74および76は、16、24、32および64ビットの動作またはアプリケーションに対して通常効率的に動作するように設計され、一方、ブロック78および80は、1、4、または8ビットの動作またはアプリケーションに対して通常効率的に動作するように設計される。 Block 74 and 76 are designed to operate normally efficiently against 16, 24, 32 and 64-bit operation or application, while the blocks 78 and 80, 1,4, or 8-bit operation or It is designed to operate normally efficiently the application.

ブロック74〜80は、本質的にサブプロセッサであり、CoolWブロック74および76はワイド(またはW)タイプのブロックで、一方、CoolNブロック78および80はナロー(またはN)タイプのブロックである。 Block 74-80 is essentially a sub-processor, CoolW blocks 74 and 76 are wide (or W) type block, whereas, CoolN blocks 78 and 80 are narrow (or N) type block. ワイドおよびナローは、サブプロセッサ内で処理または転送される並列ビットの相対数を参照し、プロセッサ22に異種特性を付与する。 Wide and narrow refers to the relative number of parallel bits to be processed or transferred within a sub-processor, to impart different properties to the processor 22. さらに、回路24は、サブプロセッサのうちの1つすなわち、ブロック74〜80のうちの1つと直接接続され、接続されるサブプロセッサを介して低レイテンシパスをもたらす。 Furthermore, circuit 24, one of the sub-processor or, connected one directly of the blocks 74-80, resulting in low latency path through the sub-processor connected. 図2において、回路24は、ブロック76に直接接続されて示されるが、ブロック74、78、または80のいずれに接続されてもよい。 2, the circuit 24 is shown directly connected to the block 76 may be connected to any of the blocks 74, 78 or 80,. 優先順位の高いエージェントまたはタスクは、回路24に直接接続されるブロックに割り当てられ得る。 High agent or task priority may be assigned to the block connected directly to the circuit 24.

4つのブロック74〜80が示されているが、その他の数のブロックが利用されてもよい。 Four blocks 74-80 are shown, other numbers of blocks may be utilized. しかしながら、追加のブロックを利用することによってダイスペースが増加し、製造原価が高くなることが留意されるべきである。 However, the die space is increased by utilizing an additional block, it should be noted that manufacturing cost becomes high.

多大な処理能力を必要とする複雑なアプリケーションは、回路20に散布(scatter)されず、むしろ、特定のサブプロセッサまたはブロックに集められ、またはブロック内に限定されており、素線(金属)または経路長さを排除または少なくとも削減し、素線の電気容量を減らすことによって、本質的に電力消費を改善する。 Complex applications requiring a lot of processing power, spraying the circuit 20 (scatter) Sarezu, rather, is collected in a particular sub-processor or a block or are limited in the block, wire (metal) or the path length to eliminate or at least reduce, by reducing the capacitance of the wires, substantially improve the power consumption. さらに、利用が増えてアクティビティが減少すると、低電力消費に寄与することになる。 Furthermore, the utilization increases activity and decreases, which contributes to low power consumption.

回路20は、マルチメディアおよび通信のアプリケーションのために擬似断熱のプログラム可能な(Quasi−Adiabatic Programmable)サブプロセッサを提供する、シリコンオンチップ(またはSoC)の例であって、前述のとおり、WタイプとNタイプの2種類のサブプロセッサが提供される。 Circuit 20 provides a pseudo-adiabatic programmable (Quasi-Adiabatic Programmable) sub-processor for multimedia and communications applications, an example of a silicon-on-chip (or SoC), as described above, W type two sub-processors N type is provided with. Wタイプつまりワイドタイプのプロセッサは、16、24、32、および64ビットの処理を必要とするアプリケーションにおいて、高出力、高価、高性能の効率のために設計される。 W Type clogging wide type of processor, 16, 24, 32, and in applications requiring 64-bit processing, high power, expensive, are designed for high performance efficiency. Nタイプつまりナロータイプのプロセッサは、8、4、および1ビットの処理を必要とするアプリケーションにおいて高効率のために設計される。 Processor N type, i.e. narrow type is designed for high efficiency in applications requiring 8, 4, and 1-bit processing. これらのビット数が本発明の実施形態において、図面および説明によって使用されるが、その他のビット数が容易に用いられ得る。 In an embodiment of the number of these bits present invention, are used by the drawings and described, other numbers of bits may readily be used.

アプリケーションが異なると、異なる性能または処理能力が必要になるため、アプリケーションが異なると、異なるタイプのブロックまたはサブプロセッサによって実行される。 When the application is different, because they require different performance or processing capability, when an application different, are performed by different types of blocks or sub-processors. 例えば、通常DSPsによって実行されるアプリケーションは、通常発生するDSPカーネルを特徴的に備えるため、通常、図2のブロック74または76などのWタイプのサブプロセッサによって処理される。 For example, an application executed by conventional DSPs, since with a DSP kernel that normally occurs characteristically usually treated by W type sub-processors, such as the block 74 or 76 of FIG. このようなアプリケーションは、高速フーリエ変換(FFT)または逆高速フーリエ変換(IFFT)、適応有限インパルス応答(FIR)フィルタ、離散コサイン変換(DCT)または逆離散コサイン変換(IDCT)、リアル/コンプレックスFIRフィルタ、HRフィルタ、抵抗コンデンサのルートレイズコサイン(RRC)フィルタ、カラースペースコンバータ、3Dバイリニアテクスチャマッピング、グローシェーディング、Golay相関、バイリニア補間、メジアン/行/列フィルタ、アルファブレンディング、高次サーフェステセレーション(Higher―Order Surface Tessellation)、バーテックスシェード(トランス/ライト)、トライアングルセットアップ、フルスクリーンアンチエイ Such applications, fast Fourier transform (FFT) or an inverse fast Fourier transform (IFFT), the adaptive finite impulse response (FIR) filter, discrete cosine transform (DCT) or inverse discrete cosine transform (IDCT), real / complex FIR filter , HR filter, root raised cosine (RRC) filter resistor-capacitor, color space converter, 3D bilinear texture mapping, Gouraud shading, Golay correlator, bilinear interpolation, median / row / column filters, alpha blending, higher surface tessellation (higher -order Surface Tessellation), vertex shade (trans / write), triangle setup, full-screen anti-rays アスおよび量子化が含まれるが、それだけに限定されない。 Including but astigmatism and quantization, but are not limited to.

その他の通常発生するDSPカーネルは、ブロック78および80などのNタイプのサブプロセッサによって実行されることが可能であり、可変長コーデック、ビタビコーデック、ターボコーデック、周期的冗長検査、Walshコードジェネレータ、インタリーバ/デインタリーバ、LFSR、スクランブラ、デスプレッダ、コンボリューションエンコーダ、リードソロモンコーデック、スクランブルコードジェネレータ、およびパンクチュアリング/デパンクチュアリングを含むが、それだけに限定されない。 The DSP kernel other conventional generator, it can be performed by N-type sub-processors, such as blocks 78 and 80, variable length codec, Viterbi codec, turbo codec, cyclic redundancy check, Walsh code generator, interleaver / deinterleaver, LFSR, scrambler, despreader convolution encoder, a Reed-Solomon codec, scrambling code generator, and including puncturing / de-puncturing, but are not limited to.

WタイプとNタイプの両方のサブプロセッサは、RISC、再構成、スーパースケーラ、VLIW、およびマルチプロセッサのアプローチなどの既存のアーキテクチャのアプローチと比べ、利用が増加しても高性能を維持しつつ、ネットアクティビティおよびその結果として生じる遷移ごとのエネルギーを低く維持することが可能である。 W type and sub processors both N type, RISC, reconstruction, superscalar, VLIW, and compared to the approach of the existing architecture of such approaches multiprocessor, while maintaining high performance be increased utilized, it is possible to maintain the energy of each transition occurring as the net activity and consequent low. プロセッサ22のサブプロセッサのアーキテクチャは、結果として最適な処理ソリューションをもたらすダイサイズを縮小し、「擬似断熱(Quasi−Adiabatic)」または「COOL」アーキテクチャと呼ばれる新規のアーキテクチャを含む。 Architecture of the sub-processor of the processor 22, to reduce the die size resulting in optimal processing solution as a result, includes a novel architecture called "quasi adiabatic (Quasi-Adiabatic)" or "COOL" architecture. これにしたがうプログラム可能なプロセッサは、擬似断熱プログラム可能(Quasi−Adiabatic Programmable)またはCOOLプロセッサと呼ばれる。 Programmable processor according to this is referred to as pseudo-adiabatic programmable (Quasi-Adiabatic Programmable) or COOL processor.

擬似断熱プログラム可能(Quasi−Adiabatic Programmable)またはCOOLプロセッサは、上に説明されたとおり、アプリケーションの有限サブセットと適合させるために、データパス、制御、メモリ、および機能ユニット粒度を最適化する。 Pseudo adiabatic programmable (Quasi-Adiabatic Programmable) or COOL processor, as described above, in order to adapt a finite subset of the application, optimized data path, control, memory, and a functional unit granularity. これが達成される方法は、以下に提示されるプロセッサ22の異なるユニットまたはブロックまたは回路および相互動作に関する図面の説明および提示によって明白である。 This method is accomplished is apparent from the description of the figures and presented for different units or blocks or circuits and interworking of the processor 22 to be presented below.

「擬似断熱プログラム可能」または異種の相互接続および機能ユニットの並列アプリケーション(COOL;Concurrent Applications of HeterOgeneous intercOnnect and functionaL unit)プロセッサ。 Parallel application of interconnection and the functional units of the "pseudo-adiabatic programmable" or heterologous (COOL; Concurrent Applications of HeterOgeneous intercOnnect and functionaL unit) processors. 熱力学の観点から見ると、断熱プロセッサは、熱を無駄にせず、全ての使用されるエネルギーを有効な仕事を実行することに変換する。 From the point of view of thermodynamics, adiabatic processor without wasting heat is converted to performing useful work energy to be all used. 既存の標準プロセッサの非断熱の性質、回路設計、および論理セルのライブラリーデザイン技術のために、断熱プロセッサを製造することは、今までは可能でなかった。 Nonadiabatic nature of existing standard processors, circuit design, and for the library design technology of the logic cell, to produce the adiabatic processor was not possible until now. しかしながら、実行し得る、異なる可能性のあるプロセッサのアーキテクチャの中でいくつかは断熱に近い。 However, may perform some among the processors with different possible architectures is close to adiabatic. 本発明のさまざまな実施形態は、従来の技術のアーキテクチャと比べ、著しく断熱に近いがそれでもなおプログラム可能であるプロセッサのアーキテクチャの種類を示す。 Various embodiments of the present invention as compared to the prior art architecture, indicating the type of architecture of the processor is possible but still program closer to significantly heat insulation. それらは、「擬似断熱プログラム可能プロセッサ」と呼ばれる。 They are referred to as "pseudo-adiabatic programmable processor".

集積回路20は、プロセッサ22内のリソースによってサポートされ得るできるだけ多くのアプリケーションが、共にまたは並列的に実行されることを可能にし、そのアプリケーションの数は、現行のプロセッサによって対応される数をはるかに超える。 Integrated circuit 20 includes, as many applications can be supported by the resources in the processor 22, to allow it to be performed together or in parallel, the number of its applications, much the number that is addressed by the current processor more than. 集積回路20によって同時または平行して実行されることが可能なアプリケーションの例は、受信された映画をデコードしながらワイヤレス機器からアプリケーションをダウンロードし、映画は同時にダウンロードとデコードされることが可能であることを含むが、それだけに限定されない。 Examples of operations that may be performed simultaneously or in parallel by the integrated circuit 20 application downloads the application from the wireless device while decoding the received movies, movie is capable of being decoded and downloaded at the same time including the thing, but are not limited. 集積回路20が対応するアプリケーションの数に比べ、小さいダイサイズまたはシリコン領域を有する集積回路20で同時にアプリケーションを実行することを達成することにより、図1の多種機器に必要であるコストよりも、集積回路を製造するコストが大幅に削減される。 Compared to the number of applications that the integrated circuit 20 corresponds, by achieving executing the application at the same time in an integrated circuit 20 having a small die size or silicon region, than the cost is required for a wide instrument of FIG. 1, the integrated the cost of manufacturing a circuit is greatly reduced. 加えて、プロセッサ22は、マルチメディアの複雑なアプリケーションなどの多数の機能を実行するために、単一のプログラム可能なフレームワークをユーザーに提供する。 In addition, the processor 22 in order to perform a number of functions, such as multimedia complex applications, provides a single programmable framework user. この業界に採用される将来的な規格に対応するために、集積回路20、つまりプロセッサ22の能力は重要な価値を有し、この業界は現在の規格のものよりもさらに複雑になることが予想される。 To accommodate future standards to be adopted in the industry, an integrated circuit 20, i.e. the ability of the processor 22 has a significant value, the industry expected to be more complicated than that of the current standard It is.

ブロック74〜80の各々は、プログラムの1つだけのシーケンス(またはストリーム)を所定の時間に実行することができる。 Each block 74-80 may be performed only in the sequence (or stream) one of the program at a given time. プログラムのシーケンスは、特定のアプリケーションと関連する機能によって決まる。 Program sequence is determined by the function associated with a particular application. 例えば、FFTはシーケンスの種類である。 For example, FFT is a kind of sequence. しかしながら、シーケンスが異なる場合でも相互に依存する場合がある。 However, there are cases where interdependent even if the sequence is different. 例えば、FFTプログラムは、完了すると、その結果をメモリ70に保存し、次のシーケンスは、保存された結果を使用し得る。 For example, FFT program has completed, and stores the result in the memory 70, the following sequence may use the results stored. このように情報を共有する、またはこのように相互に依存する異なるシーケンスは、「ストリームフロー」と呼ばれる。 Different sequences in this way to share information, or rely Thus each other is referred to as a "stream flow".

図2において、メモリ70および72は、それぞれ8ブロックの16キロバイトのメモリを備えるが、その他の実施形態において異なるサイズのメモリは使用されてもよい。 2, memory 70 and 72 is provided with a memory 16 kilobytes each 8 blocks, different sizes of memory in other embodiments may be used.

命令メモリ82、84、86、および88は、ブロック74〜80による実行のために、命令を保存するためにそれぞれ使用される。 Instruction memory 82, 84, 86, and 88, for execution by block 74-80, are used respectively to store instructions.

図3は、本発明の実施形態にしたがう、プロセッサ20のさらなる詳細を示す。 3, according to an embodiment of the present invention, showing further details of the processor 20. 図3において、プロセッサ20はサブプロセッサ74〜80を含むように示され、それぞれのサブプロセッサによって処理される命令を保存するために、命令キャッシュ302〜308をそれぞれ含む。 3, the processor 20 is shown to include a sub-processor 74-80, in order to store instructions to be processed by the sub-processors includes an instruction cache 302-308, respectively. プロセッサ20は、図3に示されるように接続される、アービトレーションブロック310、データメモリ312、汎用入力/出力(GPIO)ブロック314、共有SoCバスブロック316、DMAとの高周波(RF)インターフェースブロック318、DMAコントローラブロック320、およびメモリコントローラブロック322を含むようにさらに示される。 The processor 20 is connected as shown in FIG. 3, the arbitration block 310, data memory 312, general purpose input / output (GPIO) block 314, the shared SoC bus block 316, the high frequency of the DMA (RF) interface block 318, further shown to include a DMA controller block 320 and the memory controller block 322,. データメモリ312は、図3に示されるさまざまな構造/ブロックの動作およびデータトラフィックを指示するアービトレーションブロック310の指示のもと、サブプロセッサおよびその他のブロックによって利用されるデータ情報の保存の役割を果たす。 Data memory 312 serves as storage of data information to be utilized by the instruction of the original, the sub-processors and other blocks arbitration block 310 for instructing the operation and data traffic of various structures / blocks shown in FIG. 3 . ブロック314は、プロセッサ22に出入りする入力および出力トラフィックを調整し、ブロック320はバス316を介してプロセッサ22によって実行されるDMA動作を制御し、ブロック322はバス316を介してメモリ312に対して動作を制御し、ブロック318はDMA動作を処理するための回路を含み、信号324を介して接続されるRF信号を受信および/送信することができる。 Block 314 adjusts the input and output traffic into and out of the processor 22, the block 320 controls the DMA operation to be performed by the processor 22 via the bus 316, block 322 to the memory 312 via the bus 316 to control the operation, block 318 includes circuitry for processing the DMA operation, it is possible to receive and / transmit RF signals which is connected via a signal 324.

任意で、共有レジスタ326および328は、2種類のサブプロセッサ間での直接通信をもたらす。 Optionally, the shared registers 326 and 328, resulting in direct communication between the two sub-processors. 例えば、図3において、レジスタ326はブロック74と78に接続され、これらのブロックによって共有されるべき情報を保存し、実行を迅速に処理するために複数のサブプロセッサを利用するアプリケーションの実行を容易にする。 For example, easily 3, register 326 is connected to the block 74 and 78, to save the information to be shared by these blocks, the execution of an application that uses a plurality of sub-processors to expedite the execution to. 同様に、レジスタ328は、レジスタ326と同一の機能でブロック80と76に接続されて示される。 Similarly, register 328, shown in the same function as the register 326 is connected to the block 80 and 76.

図4は、本発明の実施形態にしたがい、ブロック74または76などのWタイプブロックのうちの1つの中に備えられるブロックまたは構造のハイレベルブロック図を示す。 4, in accordance with an embodiment of the invention, a high-level block diagram of the block or structure is provided in one of the W-type block such as block 74 or 76. 例として、ブロック74が図4において使用される。 As an example, the block 74 is used in FIG. 図4において、およびこの明細書全体において、機能ユニットまたはマクロブロックは、加算器、乗算器、レジスタ、およびマルチプレクサなどの構成要素間で、具体的な相互接続構造とともに提示される。 4, and throughout this specification, functional units or macroblock, adders, multipliers, registers, and among the components, such as multiplexers, is presented along with specific interconnect structure. これらのマクロブロックは、「マクロ機能ユニット」または「MFU」と呼ばれる。 These macroblocks are referred to as "macro function unit" or "MFU". MFUsは、マルチメディアおよび通信のアプリケーションの有限セットにおいて1つまたは複数の通常発生する動作のうちの効率的なプログラム可能なサブセットを示す。 MFUs show efficient programmable subset of the one or more normal behavior that occurs in the multimedia and communications finite set of applications. マクロ機能ユニットにおける高効率は、対象のアプリケーションに見られる原子動作(atomic operation)のクリティカルなグループを、さらに優れた性能および電力性能を示す派生動作(derived operation)のセットに置換えたことによってもたらされる。 High efficiency in the macro function unit is brought about by critical groups found atoms operates on the application (atomic operation), was replaced with a set of derived operations (derived operation) showing a better performance and power performance . 場合によって、通常発生する動作は、ハードウェアを効率的に再利用するために、独特な方法で組み合わされられてきた。 Optionally, the operation that normally occurs, in order to reuse the hardware efficiently, have been combined in a unique way.

図4において、ブロック74は、図4に示されるように共に接続される、ロード/ストアMFUブロック402、スカラー算術論理演算ユニット(ALU)および乗累算(ACC)MFUsブロック406、ベクトルxMFUブロック404、ベクトルALUおよび乗累算ACC MFUブロック408、およびローカルメモリ410を備えるように示される。 4, block 74, are connected together as shown in FIG. 4, the load / store MFU block 402, scalar arithmetic logic unit (ALU) and multiply-accumulate (ACC) MFUs block 406, the vector xMFU block 404 It is shown as comprising a vector ALU and multiply accumulate ACC MFU block 408 and the local memory 410,. ブロック402はメモリアドレスを生成し、メモリアドレスバス412にメモリアドレスを接続する。 Block 402 generates a memory address, connects the memory address to the memory address bus 412. メモリデータは、メモリデータバス414に接続され、ブロック404とブロック406に双方向で接続される。 Memory data is connected to the memory data bus 414 is connected bidirectionally to the block 404 and the block 406. ベクトル保存マスクは、ベクトル保存マスクバス416に接続され、ブロック404によって生成される。 Vector storage mask is connected to the vector storage mask bus 416, generated by block 404. 各ブロックのさらなる詳細は、後に続く図面に関して提示および説明される。 Further details of each block is presented and described with respect to figures to follow. その提示および説明の前に、ブロック74の一般的な機能およびブロックのいくつかを以下のとおり説明する。 Before the presentation and description, some common functions and blocks of the block 74 as follows.

ブロック406および408は、データの実際の計算の大部分を実行する。 Block 406 and 408 perform the actual majority of calculations of the data. ロード/ストアMFUブロック402は、メモリ312およびメモリ410に出入りするアクセスのためにアドレスを計算する。 Load / Store MFU block 402 calculates an address for access to and from the memory 312 and memory 410. ベクトルX MFUブロック404は、ベクトルデータをメモリ312およびブロック408の間の途中に再配置する。 Vector X MFU block 404 rearranges vector data in the middle between the memory 312 and the block 408. ベクトルX MFUブロック404は、ベクトルをメモリ312に保存するために、ベクトル保存マスクを生成するためにも使用される。 Vector X MFU block 404 to store the vector memory 312 is also used to generate the vector saved mask. ブロック406は、所定の時間に1つのデータを動作するのみであるが、ブロック404および408は、ベクトルの形式でデータ上を動作する。 Block 406 is only operated a single data at a given time, the block 404 and 408 operate on the data in the form of a vector. ブロック402はメモリアクセスにアドレスを提供する。 Block 402 provides the address to the memory access. 計算によっては、ブロック402によって実行されるものもあるが、本質的にはオーバーヘッドの計算である。 Calculated by is also being performed by block 402, it is essentially a computational overhead.

機械命令エンコード(必要に応じ)は、MFUブロック間のデータを移動する動作の他に、さまざまなMFUブロックのための動作を区別する。 Machine instruction encoding (if necessary), in addition to the operation of moving data between MFU block, distinguishes the operation for various MFU block. 単一の命令におけるすべての動作は平行して実行される。 All operations in a single instruction is executed in parallel. ベクトルX MFUブロック404は、命令において別々にエンコードされた動作の制御のもと、ベクトルデータの再配置およびベクトル保存マスクの生成をもたらす。 Vector X MFU block 404 under the control of the operation which is separately encoded in the instruction, resulting in the generation of relocation and vector store mask vector data. ローカルメモリ410は、命令毎にブロック74の外部の情報にわざわざアクセスすることを回避するために、局所的に情報を保存するために使用される。 Local memory 410, in order to avoid trouble access external information block 74 for each instruction, are used to store information locally. バス412は、メモリアドレスが提供されるメモリ312に接続される。 Bus 412 is coupled to a memory 312 that memory address is provided.

ブロック402は、バス424を介してブロック44に接続されて示され、ブロック402は、バス426を介してブロック406に接続されるようにさらに示され、ブロック402は、バス428を介してブロック410に接続されてさらに示される。 Block 402 via the bus 424 is shown coupled to the block 44, the block 402 is further shown connected to block 406 via the bus 426, block 402, block 410 via the bus 428 further it is shown connected to. ブロック404、408、および410は、ベクトルバス420を介して相互に接続されて示され、ブロック406、404、408、および410は、スカラーバス422を介して相互に接続されて示される。 Block 404, 408, and 410 are shown coupled to each other via a vector bus 420, block 406,404,408, and 410 are shown coupled to each other via a scalar bus 422. バスは通常、素線の集まりであり、各素線は信号に接続し、その素線は相互に平行であるゆえ、平行して信号を接続することができる。 Bus is typically a collection of wires, the wires are connected to the signal, the strands thus are parallel to each other, it is possible to connect the signal in parallel. バス内の素線の数はバイナリビット数を規定し、バスの特性としての役割を果たす。 The number of wires in the bus defines the number of binary bits, serve as a characteristic of the bus. 図4において、ベクトルバス420は、スカラーバス422よりも広い、すなわち、バス420はバス422に比べ、平行してより多くの信号を接続可能であるより多くのビットまたは素線を含む。 4, vector bus 420 is wider than the scalar bus 422, i.e., includes a number of bit or wire from bus 420 than the bus 422, it is possible to connect more signals in parallel. バス420とバス422のビット数の割合の例は4倍であり、例えば、バス422が32ビットである場合、バス420は32ビットの4倍の128ビットである。 Examples of the ratio of the number of bits of the bus 420 and bus 422 is 4-fold, for example, when the bus 422 is 32 bits, the bus 420 is 4 times the 128 bits of the 32 bits.

ブロック404は、バス416に接続されるベクトル保存マスクも提供する。 Block 404 also provides vector storage mask connected to the bus 416.

メモリデータは、計算動作のためにブロック402からブロック406に接続されるが、ベクトルデータがまずブロック404に提供される。 Memory data is from the block 402 for the calculation operation is connected to the block 406, is provided in the first block 404 is vector data. ブロック404は、計算ユニット、すなわちブロック408において必要とされるものに適合させるために、メモリにおけるデータを整理する能力を提供することにより、性能が大幅に向上するということを留意することが重要である。 Block 404, calculation unit, i.e. to adapt to what is required in the block 408, by providing the ability to organize data in a memory, it is worth noting that the performance is greatly improved is there.

図5は、本発明の実施形態にしたがい、ブロック402に含まれる回路ブロックのブロック図を示す。 5, in accordance with embodiments of the present invention, illustrates a block diagram of a circuit block included in the block 402. ブロック402は、図5に示されるように共に接続される、アドレスブロック502、サーキュラバッファレジスタブロック504、アドレスジェネレータブロック508、アドレスジェネレータブロック506、マルチプレクサ(mux)510、およびmux512を含む。 Block 402 includes are connected together as shown in Figure 5, the address block 502, a circular buffer register block 504, address generator block 508, address generator block 506, a multiplexer (mux) 510, and Mux512.

ブロック502は、図4に示されるブロック402のその他のブロックと接続され、アドレスを保管する。 Block 502 is connected to the other blocks of the block 402 shown in FIG. 4, it stores the address. ブロック504は、サーキュラバッファレンジをサーキュラバッファレジスタ(ブロック504)のうちの1つに保存する役割を果たす。 Block 504 is responsible for saving the circular buffer range to one of the circular buffer register (block 504). ブロック506および508は、プログラムによって要求される場合にサーキュラバッファレンジ内で包括(wrap)するために、アドレス計算をもたらす。 Block 506 and 508, in order to cover (wrap) in a circular buffer within range if it is required by the program, resulting in address calculation. ブロック504に向かっている矢印は、それらのレジスタがロードされることを可能にする。 Arrows toward the block 504, those registers to allow it to be loaded. すなわち、ブロック506は、ブロック504によって生成されるアドレス、またはブロック406から受信されるアドレス、さらにブロック502から生成されるアドレスを修正する役割を果たし、一方、ブロック508は、ブロック502および/またはブロック406さらにブロック504から受信されるアドレスを修正する役割を果たす。 That is, the block 506 serves to correct the address generated from the address generated or address received from the block 406, further block 502, the block 504, whereas, block 508, block 502 and / or block 406 further serves to correct the address received from the block 504.

ブロック402のアドレスレジスタおよびブロック404のサーキュラバッファレジスタは、入力をブロック506および508のアドレスジェネレータに提供する。 Circular buffer registers of the address register and the block 404 of the block 402 provides input to the address generator block 506 and 508. ブロック402のアドレスレジスタの場合、それらの入力は前に保存されたアドレスであり、一方、ブロック404のサーキュラバッファレジスタについては、それらの入力はサーキュラバッファに関する情報である。 If the address register block 402, those inputs are address stored previously, whereas, for the circular buffer register block 404, those inputs are information about a circular buffer.

ブロック506および508は、アドレスを改変する役割を果たす。 Block 506 and 508 serve to alter the address. すなわち、ブロック506は、ブロック504によって生成されるアドレス、またはブロック406から受信されるアドレス、さらにブロック502から生成されるアドレスを改変する役割を果たし、一方、ブロック508は、ブロック502および/またはブロック406、さらにブロック504から受信されるアドレスを修正する役割を果たす。 That is, the block 506 acts to modify the address generated by the block 504 or address received from the block 406, the addresses generated from the further block 502, whereas, block 508, block 502 and / or block 406, serves to modify the address is further received from the block 504. ブロック506の出力は、次に、mux512への入力として提供され、そのmux512は、ブロック502によって生成されるアドレスを入力として受信もする。 The output of block 506 is then provided as input to Mux512, its Mux512 will also receive the addresses generated by block 502 as inputs. mux512は、次に、その入力のうちの1つを選択し、図4に示されるブロック74のその他のブロックによる受信のために、選択されたものをバス520に接続する。 mux512 then selects one of its inputs, for reception by other blocks of the block 74 shown in FIG. 4, for connecting selected ones to the bus 520. 同様に、ブロック508の出力は、mux510への入力として提供され、そのmux510は、ブロック502によって生成されるアドレスを入力として受信もする。 Similarly, the output of block 508 is provided as input to Mux510, its Mux510 will also receive the addresses generated by block 502 as inputs. mux510は、次に、その入力のうちの1つを選択し、図4に示されるブロック74のメモリによる受信のために、選択されたものをバス522に接続する。 mux510 then selects one of its inputs, for reception by the memory block 74 shown in FIG. 4, for connecting selected ones to the bus 522.

このようにして、ロード/ストアMFUは、並列的に2つのアドレスを生成することができる。 In this way, the load / store MFU can generate two addresses in parallel. アドレスは、アドレスレジスタと、スカラーALU MFUからの定数または値のどちらかを組み合わせることによって計算される。 Address is calculated by combining the address register, either constant or value from the scalar ALU MFU. 計算されたアドレスは、任意でサーキュラバッファの範囲内で包括され得る。 Calculated address may be inclusive within the circular buffer at any. 計算されたアドレスは、主に、メモリにアクセスする際に使用されるが、アドレスレジスタまたはサーキュラバッファレジスタに割り当てられ、またはその他のMFUの入力として使用され得る。 Calculated address will be primarily used to access the memory, allocated to the address registers or circular buffer registers, or may be used as input for other MFU.

図6は、マクロ機能ユニット、特にブロック402、404、406、および408に転送するレジスタファイルのために用いられる一般構造をさらに詳細に示す。 Figure 6 shows in more detail the general structure used for the register file to be transferred macro function units, in particular blocks 402, 404, 406, and 408. 図6において、複数のレジスタ602、複数のmux604、クロスバー606、レジスタブロック608、複数の中継レジスタ610、複数の機能ユニット612、および複数のmux614が、本発明の実施形態にしたがって示される。 6, a plurality of registers 602, a plurality of MUX 604, crossbar 606, the register block 608, a plurality of relay registers 610, a plurality of functional units 612, and a plurality of Mux614, is depicted in accordance with an embodiment of the present invention. レジスタ602は、mux604に接続されて示され、mux604は、順に、クロスバー606に接続されて示される。 Register 602 is shown coupled to MUX 604, MUX 604, in turn, shown coupled to the crossbar 606. クロスバー606は、レジスタ610に接続されて示され、レジスタ610は、順に、機能ユニット612に接続され、機能ユニット612は、mux614に接続されて示される。 Crossbar 606 is shown coupled to the register 610, the register 610, in turn, is connected to the functional unit 612, functional unit 612 is shown connected to Mux614. 通常、muxの機能は、muxに提供される入力の中から選択することと、選択された入力を生成することである。 Typically, the functionality of the mux comprises selecting from among the inputs provided to mux, it is to produce the selected input. クロスバー606の出力は、図4のその他のブロックに提供もされる。 The output of the crossbar 606 is also provided to the other blocks in Fig. ユニット、mux、および/またはレジスタの特定の数が図6において示されるが、これらの構造のその他の数が用いられてもよい。 Units, but mux, and / or a particular number of registers is shown in FIG. 6 may be used other numbers of these structures.

図6の構造は、図6に示されるように共に接続される。 Structure of FIG. 6 are connected together as shown in FIG. mux604は、図4のその他のブロックからの追加の入力で、少なくとも2つのそのような入力、ならびにmuxes614の出力を受信するように示される。 mux604 is the additional input from other blocks of Figure 4 is shown at least two such inputs, as well as to receive the output of Muxes614.

図6のレジスタおよびフィードバックパス(接続されている)は、面積、エネルギー、および性能のトレードオフを最適化するためにユニークな組織を提供する。 Registers and feedback path in FIG. 6 (connected) provides a unique structure to optimize the area, energy, and the performance tradeoffs. この組織は、以下の3つの主な特性を有する。 This organization has three main characteristics below.

・ アセンブリ言語にビジブルであって数個以上のレジスタを有するレジスタファイルは、次の2つのサブセットに分割される。 Register file in assembly language with several more registers a visible is divided into two subsets. 数個のレジスタは完全なアクセシビリティで実行され、一方、その他のレジスタはより制限されたアクセシビリティで実行される。 Several registers are run with full accessibility, while other registers are performed in a more restricted accessibility. 最初の4つのレジスタ(0から3番)は、ほとんどの場合、完全なアクセシビリティに対応する。 The first four registers (0-3 No.) in most cases, corresponds to the full accessibility. このレジスタファイルを伴う機械動作について、完全にアクセス可能なレジスタのうちのいずれもが、動作のソースおよびディスティネーションとして同時に選択され得る。 The machine operation with the register file, any of the fully accessible registers can be simultaneously selected as the source and destination of the operation. 対照的に、制限されたアクセシビリティを有するレジスタは、その間に少数の読み出しおよび書き込みポートのみを共有する。 In contrast, register with limited accessibility share only a small number of read and write ports in between. 制限されたアクセシビリティを有するレジスタにおいて、レジスタが共有する最大2つの読み出しおよび書き込みポートおよび1つの書き込みポートが存在する。 In register with limited accessibility, up to two read and write ports and one write port register share exists. この配置は、セットにおけるほとんどのレジスタについて、1つまたは2つ以上の読み出し/書き込みポートを必要とすることがないので、多数の読み出し/書き込みポートを有するレジスタファイルの利点のほとんどを提供する。 This arrangement, for most of the registers in the set, there is no the need for one or more read / write port, provides most of the advantages of a register file having a plurality of read / write ports.

・ 各機能ユニットの入力に「中継レジスタ」が存在する。 - "relay register" is present at the input of each functional unit. 機能ユニットがクロックサイクルで使用される前に、その入力の中継レジスタが、前のクロックサイクルの終わりに適切な入力値でセットされなければならない。 Before functional unit is used in a clock cycle, the relay registers of the input must be set at the appropriate input values ​​to the end of the previous clock cycle. 同時に使用できない機能ユニットは、同一の中継レジスタを共有するためにまとめられ、レジスタの総数を減らすことができる。 At the same time the functional units that are not available, summarized in order to share the same relay register, it is possible to reduce the total number of registers. 同一の中継レジスタを共有する機能ユニットがクロックサイクルで必要とされない場合、レジスタの前の値が保持され、これにより、そのサイクルについてのその機能ユニットにおける遷移電力消費を削減する。 If functional units that share the same relay register is not needed in the clock cycle, the previous value of the register is held, thereby reducing the transition power consumption in the functional units for that cycle.

・ 機能ユニット間での転送は、2段階で実施される。 - transfer between functional units is implemented in two stages. 第1段階で、完全にアクセス可能なレジスタの次の値は、制限されたアクセシビリティを有するレジスタに書き込むための値または複数の値があればそれと共に、マルチプレクサを介して選択される。 In the first step, the next value of the fully accessible registers, along with if any value or multiple values ​​to write to register with limited accessibility, is selected via a multiplexer. 第2段階において、完全にアクセス可能なレジスタの次の値、および制限されたアクセシビリティを有するレジスタの読み出しポートからの値は、クロックサイクルの終わりに中継レジスタに書き込まれる値を選択するクロスバーに共に送り込まれる(そして、次のクロックサイクルでの機能ユニットのために)。 In the second stage, the next value of the fully accessible registers, and limited value from register read ports with accessibility, both the crossbar to select a value to be written to the relay register at the end of clock cycle fed (and, for the functional units in the next clock cycle). この組織は、1つでなく多重の段階を経ることから遅れを増加させる恐れがあるが、サイズに大幅に影響を与えるクロスバーへの入力の数を最小化する。 This organization, but may increase the delayed going through multiple stages instead of one, to minimize the number of inputs to the crossbar significantly affect the size.

制限されたアクセシビリティを有するレジスタの書き込みおよび読み出しポートの間で、転送が実施される場合、または実施されない場合がある。 Between the register write and read ports with limited accessibility, if the transfer is carried out, or may not be implemented. 転送がここで実施されない場合、さらに追加のレイテンシのサイクルが、これらのレジスタのうちの1つを書き込む動作とその後のそれを読み込む動作との間で当然発生する。 If the transfer is not performed, yet cycle additional latency, naturally occurs between the operation of reading its operation and then to write one of these registers.

図7は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック408のさらなる詳細を示す。 7, in accordance with embodiments of the present invention, at a high level block schematic, showing further details of block 408. 図7において、ベクトルレジスタブロック702は、N ALUsブロック704、ベクトル要素シフタブロック706,ベクトル要素セレクタブロック708、2NおよびNビットコンバータブロック710、N ALUsブロック712および2N乗算器ブロック714に接続されて示される。 7, the vector register block 702, N ALUs block 704, connected to the vector element shifter block 706, vector element selector block 708,2N and N-bit converter block 710, N ALUs block 712 and 2N multiplier block 714 shown It is. 図7において、ブロック408は、N加算器ブロック718、Nシフタブロック720、ベクトルの和ブロック722、N3入力加算器ブロック724、2NおよびNビットコンバータ726、mux723およびmux732に接続されるベクトルレジスタブロック716を含むようにさらに示される。 7, block 408, N adder block 718, N shifter block 720, vector register block 716 which is connected to a sum block 722, N3 input adder block 724,2N and N-bit converter 726, Mux723 and mux732 Vector further shown to include. 図7のブロックおよびmuxesは、図7に示されように共に接続される。 Blocks and muxes in Figure 7, are connected together as shown in FIG. ブロック702は、図4のその他のブロックに接続され、ブロック704〜714にさらに接続される。 Block 702 is connected to the other blocks of Figure 4, it is further connected to the block 704-714. ブロック716は、ブロック406から、ならびに、mux732、ブロック710およびブロック714の他にブロック724の出力からの入力を受信するように示される。 Block 716 is the block 406, and, Mux732, shown to receive input from the output of another block 724 of block 710 and block 714. ブロック702は、mux704に接続されて示され、mux704は、ブロック712および726にさらに接続される。 Block 702 is shown coupled to mux704, mux704 is further connected to the block 712 and 726. 一般的に、図7の回路またはブロックは、Mは整数のビット数であるNの数のMビット値などの、ベクトルタイプの値で並列的に動作する。 Generally, circuit or block of Figure 7, M is such as the number of M-bit value of the N is the number of bits integers, operates in parallel with the value of the vector type.

mux732は、ブロック718および720によって生成される出力を、入力として受信し、mux730は、ブロック704および706によって生成される入力を受信し、ブロック702によって受信される出力をさらに生成する。 mux732 is the output generated by the block 718 and 720 receive as input, mux 730 receives input generated by block 704 and 706 further generates an output which is received by block 702. ブロック708および722の出力は、ブロック406に提供される。 The output of block 708 and 722 are provided to a block 406. 本明細書で使用されるNは、整数値であり、例えば、N ALUはN個のALU回路である。 N as used herein, is an integer value, for example, N ALU is the N ALU circuits.

ブロック702〜714およびmux730は、一般的に乗累算(MAC)機能を実行し、一方、ブロック716〜726およびmux732はALU機能を実行するが、そのMACおよびALU機能が並列的に実行されるビット数は、一般的に、ブロック406によって処理されるビット数よりもN倍多い。 Block 702-714 and mux730 performs generally multiply-accumulate (MAC) function, whereas, blocks 716-726 and mux732 is to perform the ALU functions, the MAC and ALU functions are executed in parallel number of bits, typically, N times larger than the number of bits that are processed by block 406. ブロック704および712はセグメント可能、すなわち、それらは加算演算を選択的にセグメントすることができる。 Block 704 and 712 can segment, i.e., they can be selectively segmented addition operations. 例えば、N個の32ビットの加算演算を実行可能であることに加え、平行してN個の32ビットが処理される場合、各ALUブロックは、2N個の16ビットの加算演算または4N個の8ビットの加算演算を実行することができる。 For example, in addition to being capable of performing addition operation of N 32-bit, if the N 32-bit parallel are processed, the ALU block, the 2N number of 16-bit addition operation or 4N number of it is possible to perform an 8-bit add operation. ブロック714は、図11のブロック1110と同じように機能し、それについて簡潔に説明する。 Block 714 functions like the block 1110 in FIG. 11, briefly described it. ブロック710および726は、N個の32ビット値をN個の40ビット値、または2N個の16ビット値を2N個の40ビット値に変換する働きをする。 Block 710 and 726 serves to convert the N 32-bit value of N 40-bit value, or the 2N 16-bit value in the 2N 40-bit value. 一例において、32ビット値は40ビット値に変換され、別の例において、16ビット値は40ビット値に変換され、このようにしてビット変換能力を提供する。 In one example, 32-bit value is converted into 40-bit value, and in another example, 16-bit value is converted into 40-bit value provides a bit conversion capability in this manner.

ブロック706はベクトル値、すなわちN個のMビット値を、整数値によって左右にシフトさせる。 Block 706 is a vector value, i.e. the N M-bit values, shifts to the left and right by an integer value. ベクトルシフトの例を以下のベクトルで挙げる。 An example of a vector shift listed in the following vector.
<a0、a1、a2、a3、a4、a5、a6、a7> <A0, a1, a2, a3, a4, a5, a6, a7>
この場合、8つの値であり、 In this case, it is eight values,
<a1、a2、a3、a4、a5、a6、a7、0> <A1, a2, a3, a4, a5, a6, a7,0>
または、 Or,
<0、0、0、a0、a1、a2、a3、a4> <0,0,0, a0, a1, a2, a3, a4>
にベクトルを戻す。 Return the vector.

これらの動作は通常、乗算または除算として解釈されない。 These operations are usually not interpreted as a multiplication or division. ブロック708は、ベクトル値の単一の要素を選択することを可能にし、例えば、特定のバイト(8ビット)は、ベクトル値から選択され得る。 Block 708 allows the selection of a single element of the vector value, for example, specific byte (8 bits) may be selected from the vector value.

ブロック720はブロック706と同じように機能し、ブロック726はブロック710と同じように機能する。 Block 720 functions the same as block 706, block 726 functions the same as block 710. ブロック712および726の出力は、mux704を介して選択的にブロック702に提供され、ブロック706および704の出力は、mux730を介して選択的にブロック702に提供される。 The output of block 712 and 726 are provided to selectively block 702 via the Mux704, the output of block 706 and 704 are provided to selectively block 702 via the mux 730. さらに、ブロック720および718の出力は、mux732を介してブロック716に選択的に提供される。 Further, the output of block 720 and 718 are selectively provided to a block 716 via the Mux732.

ブロック722は、ベクトルベースで加算動作を実行し、一方、ブロック408のその他のブロックは、要素ベースで動作する。 Block 722 performs the addition operation in the vector-based, while the other block of the block 408, operates an element basis. すなわち、ブロック722は、単一のベクトルの全ての要素を加算し、要素ベースで動作するブロックは、異なるベクトルの選択された対応する1つまたは複数の要素に演算を実行する。 That is, the block 722 adds all of the elements of a single vector, blocks operating an element basis, perform operations on one or more elements corresponding selected different vectors.

ブロック710および726は、それぞれ、Nまたは2Nからの変換を選択的に可能にする。 Block 710 and 726, respectively, to selectively allow conversion from N or 2N. 図8にさらに示されるように、ブロック804の出力は、ブロック802の入力へフィードバックされる。 As further shown in FIG. 8, the output of block 804 is fed back to the input of block 802.

図8は、本発明の実施形態にしたがい、ブロック図式において、ブロック404のさらなる詳細を示す。 8, in accordance with embodiments of the present invention, in block schematic, showing further details of block 404. 図8において、ブロック404は、図8に示されるように共に接続される、マスク制御レジスタブロック802、マスクジェネレータブロック804、マスクレジスタブロック806、ベクトルレジスタブロック808、およびベクトルバイトマスク置換ブロック810を含むように示される。 8, block 404 includes are connected together as shown in FIG. 8, the mask control register block 802, mask generator block 804, a mask register block 806, a vector register block 808 and the vector byte mask replacement block 810, It is shown as.

ブロック802は、図4のその他のブロックからの入力を受信し、ブロック806に接続されて示されるブロック804への入力を生成するように示される。 Block 802 receives inputs from other blocks in FIG. 4, is shown to produce an input to block 804 which is shown coupled to the block 806. ブロック806は、ブロック801に接続されて示され、図4のその他のブロックの他に、メモリ312にもさらに接続される。 Block 806 is shown coupled to the block 801, in addition to the other blocks of Figure 4, is also further connected to a memory 312. ブロック808は、メモリ312および図4のその他のブロックに接続されて示される。 Block 808 is shown coupled to the other blocks of the memory 312 and FIG. ブロック810は、ブロック806および808からの入力を受信するように接続されて示される。 Block 810 is shown coupled to receive input from the block 806 and 808.

一例において、ブロック404は、ブロック408と同一のNについて、N 32ビットのベクトルレジスタのレジスタファイルであるブロック808を有する。 In one example, block 404, for the same block 408 N, with a block 808 is a register file of N * 32-bit vector registers. ブロック404のブロック806は、サイズがN 4ビットのマスクレジスタを含む。 Block 806 of the block 404, the size includes N * 4-bit mask register. マスクレジスタの各ビットは、ベクトルレジスタの1バイトに一致する。 Each bit of the mask register corresponds to one byte of the vector register. 32ビットベクトルが外部の共有メモリに保存される場合、N 4ビットマスクは、どのベクトルのバイトが実際にメモリに書き込まれるかを示すために提供される(ゼロメモリバイトに一致するメモリバイトは変わらない。)マスクジェネレータ機能は、マスク制御レジスタの設定に基づいて、4 Nビットマスクを計算する。 If N * 32-bit vectors are stored in the external shared memory, N * 4 bit mask corresponds to the (zero memory bytes are provided to indicate byte which vector is actually written to the memory Memory byte unchanged.) mask generator function, based on the setting of the mask control register, calculates a 4 * N bit masks.

ブロック404は、4 Nバイトを選択するために、2つのベクトルレジスタの8 Nバイトを置換することができる。 Block 404, to select a 4 * N bytes, it is possible to replace the two 8 * N bytes of the vector registers. 一般的な場合において、特定の置換は、第3のベクトルレジスタの値によって制御される。 In the general case, a specific substitution is controlled by the value of the third vector register. 特定の「既にコード化された」置換は、制御ベクトルの使用を必要としない。 Specific "has already been coded" substitutions do not require the use of control vectors. これらは、2つの入力ベクトルレジスタの左右にある全てのファンネルシフト(funnel shift)を備える。 It provides all funnel shift to the left and right of the two input vector register (funnel shift). 2つのベクトルレジスタの8 Nバイトが置換されると同時に、2つのマスクレジスタの8 Nビットが、マスク値とベクトル値の間で同一のビットとバイトの一致を保持するために、同じように置換され得る。 At the same time the two 8 * N bytes of the vector register is replaced, 8 * N-bit two mask registers, in order to hold the match of the same bit and byte between the mask vector values, like It may be substituted in.

図8のブロックは、ベクトル値ベースで動作する。 Block of Figure 8 operates in a vector value basis. ブロック810は、上に説明されたように、ベクトル値の再配置を可能にする。 Block 810, as described above, to allow relocation of the vector values. これは、図9および10を参照してさらに説明される置換を使用して実行される。 This is done using the substitutions be further explained with reference to FIGS. 9 and 10. ブロック810は、どの置換が予測されるかという情報を提供する。 Block 810, which substitutions to provide information as to predicted. 同様に、ブロック804および806からの置換されたマスクは、置換されたマスクのどれが提供されるかを示す。 Similarly, masks substituted from blocks 804 and 806, indicates which masks substituted provided. 一般的に、保存される各バイトに1マスクビットが存在する。 Generally, 1 mask bit in each byte to be stored there.

図8のブロック802、804、806、および810は、実行を行なう特定のアプリケーションに適合させるためにメモリにおけるアドレスを再配置する能力をもたらす。 Block 802, 804, 806, and 810 of FIG. 8 will result in the ability to rearrange the address in memory to adapt to a specific application for performing execution. 従来技術において、再配置は通常、自動的に実行されるが、本発明の実施形態において、プログラマーは、プログラムまたはコードに従って、プログラムで所望の再配置を実行することができる。 In the prior art, rearrangement is usually performed automatically, in the embodiment of the present invention, the programmer according to a program or code, it is possible to perform a desired relocation program. これは、プログラマーの必要に応じて、ほとんど無限に近い再配置の組を可能にし、それは従来技術が全く提供できないことである。 This is necessary for the programmer, to allow a set of almost infinite relocated closer, it is that the prior art can not provide all. つまり、再配置する能力は、既定であり、再配置の可能性の既定の組を含む。 In other words, the ability to reposition is the default, including the default set of possible relocation. したがって、実行されるプログラムに従ってマスクを生成することは、メモリにおけるアドレスの再配置に関して、さらなる柔軟性を提供する。 Therefore, generating a mask in accordance with a program to be executed with respect relocation of addresses in the memory, it provides additional flexibility.

SIMDは、単一命令、多重データ(Single Instruction、Multiple Data)の頭字語であり、MIMDは、多重命令、多重データ(Multiple Instruction、Multiple Data)の頭字語である。 SIMD is Single Instruction, is an acronym for multiple data (Single Instruction, Multiple Data), MIMD is multiple instruction, multiple data (Multiple Instruction, Multiple Data) is an acronym for. これらは、当業者に既知であるコンピュータアーキテクチャおよびプログラミングにおける標準用語である。 These are standard terms in computer architecture and programming are known to those skilled in the art.

図9および図10は、ブロック<数字>の置換回路のさらなる詳細を示し、<数字>は、「ベクトルバイト+マスク置換」ボックスの数である。 9 and 10 show further details of the permutation circuit block <number>, <number> is the number of "Vector Byte + Mask substitution" box. ブロック404は、図9および10に示されるように、置換される結果ベクトルを生成するために、2つのベクトルの置換を実行する機能ユニットを有する。 Block 404, as shown in FIGS. 9 and 10, in order to generate a result vector to be replaced, a function unit for executing the substitution of the two vectors. 置換を実行するために使用される回路は、それぞれがNユニットである入力ベクトルAおよびBを例として挙げ、Nユニットの出力ベクトルZも生成する一般的な方法で説明されることが可能で、ユニットは任意であるが一定のビット数であり、Nは2の累乗である必要がある。 Circuitry used to perform the replacement, can each as an example of the input vector A and B is N units, the output vector Z of N units are also described in the general methods of generating, unit is a certain number of bits is arbitrary, N represents needs to be a power of two. KをNの対数の底2とする。 The K to the base-2 logarithm of N. 置換回路は、図に示されるように、一定の種類のNのスイッチボックスを備えるK+1段階を有する。 Replacement circuit, as shown in FIG, having K + 1 stages with a switch box of a certain type N. 「タイプA」、「タイプB」、および「タイプC」と呼ばれる3種類のスイッチボックスが全体に存在する。 "Type A", three types of switch box called "Type B", and "type C" is present throughout. スイッチボックスタイプAは、第1段階でのみ使用され、スイッチボックスタイプCは、最終段階でのみ使用され、中間における全ての段階は、スイッチボックスのタイプBを用いる。 Switch box type A is used only in the first stage, switch box type C is only at the final stage is used, all stages in the middle, using the type B of the switch box. 各タイプのスイッチボックスによって対応される接続は別々に示される。 Connections accommodated by each type of switch box is shown separately. 隣接する段階の各ペアのスイッチボックスの間に、ディスタンス1の交換から始まり、ディスタンスN/2の交換まで機能するバタフライ交換が存在する。 During the switch box for each pair of adjacent stages, beginning from the exchange of distance 1, the butterfly exchanges exist that function to exchange distance N / 2. スイッチボックスの設定は、置換回路への第3の入力である「制御ベクトル」によって全て決定される。 Setting of the switch boxes are all determined by the "control vector" is a third input to the permutation circuit. タイプAおよびタイプCのスイッチボックスのそれぞれの設定は、単一のビットのみを特定する必要があり、それぞれのタイプBの設定は、2つのビットを正確に特定する必要があり、完全な制御ベクトルは、2 Nビットを必要とする。 Type A and type C of the respective setting of the switch box, it is necessary to identify only a single bit, set of each type B, it is necessary to accurately identify the two-bit, full control vector requires a 2 * K * N bits. 制御ベクトルは、実行される置換命令から全体に示され、またはある方法においては、プログラムによって部分または全体に提供され得る。 Control vector is shown throughout the replacement instructions performed or in some way, can be provided in part or all programmatically.

図11は、本発明の実施形態にしたがい、ブロック図形式において、ブロック406の構成要素のさらなる詳細を示す。 11, in accordance with embodiments of the present invention, in block diagram form, further details of the components of the block 406. 図11において、レジスタブロック1102は、ALUブロック1104、ビットコンバータブロック1106、ALUブロック1108、および乗算器ブロック1110に接続されて示される。 11, the register block 1102, ALU block 1104 is shown connected to bit converter block 1106, ALU block 1108 and multiplier block 1110,. ブロック406は、レジスタブロック1112、シフタブロック1114、加算器ブロック1116、およびビットコンバータブロック1118を含むようにさらに示される。 Block 406 is a register block 1112, shifter block 1114, further shown to include an adder block 1116 and a bit converter block 1118,. Muxes1122、1120、および1124も、図11に示される。 Muxes1122,1120, and 1124 are also shown in Figure 11. muxおよびブロックは、図11に示されるように、共に接続される。 mux and block, as shown in FIG. 11 are connected together.

ブロック1102は、図4のメモリ312およびその他のブロックに接続されて示され、mux1122およびmux1120からの入力を受信する。 Block 1102 is shown coupled to a memory 312 and other blocks of FIG. 4, receive input from mux1122 and Mux1120. シフタブロック1114は、mux1122の入力のうちの1つを提供し、ブロック1104は、その他の入力を提供する。 Shifter block 1114 provides one of the inputs of Mux1122, block 1104 provides for other input. mux1120は、ブロック1118および1108からその入力を受信する。 mux1120 receives its input from block 1118 and 1108. ブロック1114は、ブロック1102に接続されてさらに示され、mux1124は、ブロック1112および1102から入力を受信し、ブロック1114への出力を生成するように示される。 Block 1114 is further shown coupled to the block 1102, Mux1124 receives input from block 1112 and 1102, are shown to produce an output to the block 1114.

ブロック1112は、ブロック1112への入力として提供される出力を生成するブロック1116に接続されて示される。 Block 1112 is shown coupled to the block 1116 to produce an output which is provided as an input to block 1112. ブロック1118は、ブロック1112およびブロック1106に接続されて示され、1110はブロック1112に接続されて示される。 Block 1118 is shown coupled to the block 1112 and block 1106, 1110 is shown connected to the block 1112.

ブロック1102、1104、1106、1108、および1110、ならびにmux1122は、ALU機能を実行し、ブロック1112〜1118およびmux1124は、乗累算(MAC)機能を実行する。 Block 1102,1104,1106,1108, and 1110, as well as mux1122 performs ALU function blocks 1112-1118 and mux1124 performs multiply-accumulate (MAC) functions.

ブロック1104および1108はALUであり、その機能を実行し、それらの出力は、mux1122および1120を介して、ブロック1102への入力(またはフィードバック)として選択的に提供される。 Blocks 1104 and 1108 are ALU, and perform its function, their outputs via mux1122 and 1120 are provided selectively as an input to block 1102 (or feedback). クロックサイクル毎に、2つのALU演算が実行され得る。 For each clock cycle, two ALU operations can be performed. ブロック1110は乗算機能を実行し、ブロック1102より多くのビット数を処理することができるブロック1112に提供される出力を生成する。 Block 1110 performs the multiplication function, and generates an output which is provided to a block 1112 that can process the large number of bits than a block 1102. 例えば、ブロック1102が32ビット能力を有する場合、ブロック1112は40ビット能力を有する。 For example, if the block 1102 has a 32-bit capability, the block 1112 has a 40 bit capacity. ブロック1112はアキュムレータレジスタ、つまり、入力を累積して加算する役割をする。 Block 1112 accumulator register, that serves to accumulatively added input.

ブロック1106は、Nビット値を、Xは整数値であるN+Xに変換する。 Block 1106, the N-bit values, X is converted to N + X is an integer value. 例えば、32ビット値は40ビット値に変換されることができる。 For example, 32-bit value can be converted to 40-bit value. ブロック1114は、値を既定のビット数でシフトし、mux1122を介してその結果をブロック1102へパスする。 Block 1114 shifts the value in the predetermined number of bits, to pass the result to block 1102 via Mux1122.

ブロック1118は、40ビットを32ビットにするなど、より大きいビット数をより小さいビット数に変換する。 Block 1118, such as a 40-bit to 32-bit, and converts the number of larger bit number smaller than the bit. ブロックはブロック408に接続される。 Block is connected to the block 408. ブロック406は、ブロック1102からの値で2つのALUを並行して実行することができる。 Block 406 may be performed in parallel two ALU with values ​​from block 1102. 第1のALU演算の代わりに、Nビットのシフト演算が実行され、またはNビット値からXビット値への変換がブロック1112に保存され得る。 Instead of the first ALU operation is executed shift operation of N bits is or converted from an N-bit value to the X-bit value, it may be stored in block 1112. 第2のALU演算の代わりに、乗算がブロック1110およびブロック1112のレジスタのうちの1つに保存された結果によって実行され得る。 Instead of the second ALU operation, multiplication can be performed by the results stored in one of the registers of block 1110 and block 1112.

ブロック406は、40ビットのシフト、40ビットの加算/減算、および40ビット値から32ビット値への変換を並列的に実行することが可能であり、スカラーALU MMFUの32ビットレジスタのうちの1つに保存される。 Block 406, 40-bit shift, it is possible 40-bit addition / subtraction, and 40 the conversion of the bit values ​​to 32-bit values ​​to perform in parallel, one of 32-bit registers of the scalar ALU MMFU It is stored in the One.

ブロック78などのNタイプのサブプロセッサのうちの1つのさらなる詳細は、後に続く図面を参照して説明される。 One further details of the N-type sub-processor such as block 78, is described with reference to the drawings that follow. Wタイプのサブプロセッサに関する図4のブロック406およびブロック404は、ブロック78などのNタイプのサブプロセッサに共通する。 Block 406 and block 404 of Figure 4 relating to W-type sub-processor is common to the sub-processor of N type, such as block 78.

図12は、本発明の実施形態にしたがい、ブロック78の詳細のハイレベルブロック図を示す。 12, in accordance with an embodiment of the invention, a high-level block diagram of a detail of the block 78. 図12において、ブロック78は、データパスユニット(DPU)ブロック1202、メモリブロックへのパス1204、ならびに制御装置、シーケンサ、およびデータアドレスジェネレータ(DAG)ブロック1206を含むように示される。 12, block 78, the data path unit (DPU) block 1202, path 1204 to memory block, and the control device, is shown to include a sequencer, and the data address generator (DAG) block 1206. ブロック1204および1206は、Wタイプのサブプロセッサのブロックと共通して見られる。 Block 1204 and 1206 are found in common with block W type sub-processors. ブロック1206は一般的に、ブロック402と機能的に同じである。 Block 1206 is generally a function the same as the block 402.

図13は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック78のさらなる詳細を示す。 13, in accordance with embodiments of the present invention, at a high level block schematic, showing further details of block 78. 図78において、ストアユニットブロック1302は、Xユニットブロック1304に接続されて示され、順に、Xユニットブロック1304は、ロードユニットブロック1306に接続されて示される。 In Figure 78, a store unit block 1302 is shown connected to the X unit block 1304, in turn, X unit block 1304 is shown coupled to load unit block 1306. ブロック1304は、一般的に、ブロック404と機能的に同じなので、さらなる詳細は上に説明される。 Block 1304 is generally because the block 404 functionally identical, further details are described above.

ブロック1306は、マクロ機能ブロック1340にさらに接続されて示され、順に、マクロ機能バス1310を介して、ブロック1302に接続されて示される。 Block 1306 is shown is further connected to a macro functional block 1340, in turn, via a macro function bus 1310 is shown connected to the block 1302. ブロック1302は、ストアバッファ1314、ストアバッファ1312、およびバスインターコネクトブロック1308を含むように示される。 Block 1302, the store buffer 1314 is shown to include a store buffer 1312 and bus interconnect block 1308,. ブロック1302は、メモリ312などのメモリに提供される出力を生成するので、ブロック1314を介して適宜接続される。 Block 1302, because it produces an output which is provided in a memory such as memory 312, are connected appropriately via block 1314. ブロック1304は入力を受信するように示され、メモリ312などのメモリに接続される。 Block 1304 is shown to receive input, it is connected to a memory such as memory 312. ブロック1306は、ロードバッファ1320、ロードバッファ1318、およびブロック1340に接続されるバスインターコネクトブロック1316を含むように示される。 Block 1306, a load buffer 1320 is shown to include a bus interconnect block 1316 which is connected to the load buffer 1318, and block 1340.

ブロック1340は、ガロアフィールドMACブロック1322、特別のALUブロック1324、結合器ブロック1326、メモリ1328、パンクチュアリング/デパンクチュアリングブロック1330、インタリーバブロック1332、およびビタビブロック1334を含むように示され、それぞれがバス1310に接続されるように示される。 Block 1340 Galois field MAC block 1322, a special ALU block 1324, combiner block 1326, memory 1328, puncturing / de-puncturing block 1330 is shown to include interleaver block 1332, and the Viterbi block 1334, each is shown connected to a bus 1310. ブロック1322〜1332は、ブロック1316からの入力を受信し、ブロック1316に接続されるようにそれぞれ示される。 Block 1322 to 1332 receives an input from block 1316, shown respectively to be connected to the block 1316. ブロック1334は、ブロック1332からの入力を受信し、そのブロックでデータを受信および生成するために接続される。 Block 1334 receives an input from block 1332 is connected to receive and produce data in that block.

データの流れは上述のとおりで、データまたは情報は、フロック1306からおよびブロック1306を介して、ブロック1340に流れ、次にブロック1302、そしてメモリに流れ出る。 A stream of data as described above, the data or information via the floc 1306 and block 1306 flows to block 1340, then block 1302 and flows to the memory. このようにして、パイプラインの影響が導入され、パイプラインの方法で多数の動作が重複し、同時に処理される。 In this way, the influence of the pipeline is introduced, a number of operations is duplicated by the method of the pipeline, they are processed simultaneously. 例えば、情報は、ブロック1306によってロードされ、一方で、情報はブロック1302によってメモリに保存される。 For example, information is loaded by block 1306, while the information is stored by the block 1302 in the memory. データは、ブロック1304によってメモリから受信された後に、ブロック1306のブロック1320および1328に保存され、その後、ブロック1340に提供され、ブロック1340によって処理されるその詳細は、以下に続く図面を参照して簡潔に説明される。 Data, after being received from the memory by block 1304, are stored in blocks 1320 and 1328 of the block 1306, then provided to block 1340, detailed processed by block 1340, with reference to the drawings which follow It is briefly described.

ブロック1340による処理の完了後、処理されたデータは、バス1310を介してブロック1302に提供され、メモリに受信されるように接続されるまで、データが保存されるブロック1312および1314に保存される。 After completion of the processing by the block 1340, the processed data via the bus 1310 is provided to a block 1302 until it is connected so as to be received in the memory, are stored in blocks 1312 and 1314 data are stored . ブロック1314、1312、1318、および1320のバッファは、既定の幅、またはビット数を並行して有する。 Buffer blocks 1314,1312,1318, and 1320, have default width or the number of bits, in parallel. 一例において、これらのバッファの各々は256ビット幅であるが、その他のビット数が用いられてもよい。 In one example, although each of these buffers is 256 bits wide, other numbers of bits may be used.

ブロック1340によって処理された可能性のある値またはデータは、再利用のために、ブロック1302からブロック1306に移動され得る。 Values ​​or data that may have been processed by the block 1340, for reuse, can be moved from the block 1302 to block 1306. さらに、データは、メモリからブロック1304によって受信され、次に、処理のためにブロック1306に移動され得る。 Further, data is received from memory by block 1304, then, it may be moved to block 1306 for processing. ブロック1340の各々のさらなる詳細が、ここに提示される。 Each block 1340 further details are presented here. ブロック1314および1312は、ダブルバッファリングの効果をもたらし、パイプライン動作に共通して発生する「失速(stalling)」を削減することに役立てられ、ブロック1318および1320も同様のことが言える。 Block 1314 and 1312, have the effect of double buffering, are help to reduce the "stall (stalling)" which occurs in common to pipeline operation, also blocks 1318 and 1320 can be said the same thing. 失速は、ブロック1302および1306のメモリからの同時のアクセスによってもたらされる。 Stall is caused by the simultaneous access from the memory block 1302 and 1306. 別の実施形態において、ブロック1314および1312は、1つのブロックであってもよく、ブロック1318および1320は、1つのブロックであってもよい。 In another embodiment, the block 1314 and 1312 may be a single block, the block 1318 and 1320 may be one block.

レイテンシは動作に関連し得、または、パイプラインの影響が存在し得る。 Latency be associated with the operation or the effect of the pipeline may be present. レイテンシは、ブロック1340に関するブロックの各々によってもたらされ得る。 Latency can be brought about by each of the blocks for block 1340.

図14は、本発明の実施形態にしたがう、ブロック1322のさらなる詳細を示す。 14, according to an embodiment of the present invention, showing further details of block 1322. 図14において、ガロアフィールドブロック1402は、XOR/Clr回路1404に接続されて示され、順に、アキュムレータレジスタブロック1406に接続されて示される。 14, a Galois field block 1402 is shown connected to XOR / Clr circuit 1404 in turn shown coupled to the accumulator register block 1406. ブロック1402は、ガロアフィールド出力信号1408を生成するように示され、ガロアフィールド出力信号1408は、ガロアフィールドmux1410への入力としての役割を果たし、ガロアフィールドmux1410は、ブロック1406の出力によって生成され、アキュムレータレジスタブロック出力信号1412と呼ばれるさらに別の入力を受信する。 Block 1402 is shown to generate a Galois field output signal 1408, Galois field output signal 1408 serves as input to the Galois field Mux1410, Galois field Mux1410 is generated by the output of block 1406, the accumulator further receives another input called register block output signal 1412. 信号1408および1412は、図13の1310のバスに接続されるガロアフィールドMAC出力信号1416を選択的に生成するために、mux1410への入力としての役割を果たす。 Signal 1408 and 1412, in order to selectively produce Galois field MAC output signal 1416 which is connected to the bus 1310 in FIG. 13, serves as input to Mux1410. mux1410への別の入力としての役割を果たす選択信号1414は、信号1416の生成のために、信号1408および1412のうちの1つを選択する働きをする。 Role selection signal 1414 as another input to mux1410, for the generation of the signal 1416, and serves to select one of the signals 1408 and 1412. したがって、事実上ガロアフィールド演算の結果であるブロック1402の出力は、ブロック1322の出力として提供され、またはガロアフィールドMAC演算の結果は、ブロック1322の出力として提供される。 Accordingly, the output of block 1402 is the result of the fact Galois field operation is provided as the output of the block 1322 or the result of the Galois field MAC operation, is provided as the output of the block 1322.

ブロック1406の出力は、その別の入力として回路1404に接続されて示される。 The output of block 1406 is shown coupled to the circuit 1404 as its other input. ブロック1404の出力はブロック1406に提供され、その接続はガロアフィールドMAC演算のMAC部分を達成する。 The output of block 1404 is provided to a block 1406, the connection to achieve the MAC portion of the Galois field MAC operations. ブロック1404は、ガロアフィールドMAC演算で通常使用されるXOR乗算演算を効果的に実行する。 Block 1404 effectively performs an XOR multiplication operations normally used in Galois field MAC operations.

ブロック1402は、Xorツリーブロック1424に接続されて示される、レジスタブロック1420およびレジスタブロック1422を含むように示される。 Block 1402 is shown coupled to the Xor tree block 1424 is shown to include a register block 1420 and a register block 1422. ブロック1420は、レジスタブロック1426、ガロアフィールド乗算反復1の1428、レジスタブロック1430、ガロアフィールド乗算反復1の1432、レジスタブロック1434、およびレジスタブロック1436を含むようにさらに示される。 Block 1420, the register block 1426, a Galois field multiplication iteration 1 of 1428, the register block 1430, a Galois field multiplication iteration 1 1432, further shown to include a register block 1434, and a register block 1436. 図14に図示されないが、ブロック1434および1436などの追加の数のレジスタブロックは、ブロック1434と1436の間に連続して備えられ、接続される。 Although not shown in Figure 14, the register block additional number of such blocks 1434 and 1436, provided in succession between blocks 1434 and 1436 are connected.

ブロック1424は、ブロック1426に接続されて示され、順に、ブロック1426はブロック1428に接続されて示され、順に、ブロック1428はブロック1430に接続されて示され、順に、ブロック1430は、ブロック1432に接続されて示され、順に、ブロック1432は、ブロック1434に接続されて示され、ブロック1434は、ブロック1436またはブロック1434とブロック1436との間に位置する1つまたは複数のレジスタブロックに接続される。 Block 1424 is shown coupled to the block 1426, in turn, block 1426 is shown coupled to the block 1428, in turn, block 1428 is shown coupled to the block 1430, in turn, block 1430, to block 1432 shown connected, in turn, block 1432 is shown coupled to the block 1434, block 1434 is connected to one or more registers block located between the block 1436 or block 1434 and block 1436 .

図14において、ブロック1420および1422は、ブロック1306から入力を受信し、別の実施様態においては、1つのブロックに結合されてもよい。 14, blocks 1420 and 1422, receives input from block 1306, in another implementation aspect may be combined into a single block. ブロック1402は一般的に、当業者にとって既知であるガロアフィールド処理を実行し、図14の残りのブロックはMAC演算の実行をもたらす。 Block 1402 generally executes the Galois field processing is known to those skilled in the art, the remaining blocks in FIG. 14 results in the execution of the MAC operation. ブロック1426、1430、1434、および1436は、ガロアツリーの異なる反復としての役割を果たし、最悪の場合のシナリオにおいて、反復の数は8つのレジスタブロックを必要とする8であることが発見された。 Block 1426,1430,1434, and 1436 serve as different iterations of Galois tree, in the worst case scenario, the number of iterations has been found to be 8 that requires eight registers block. MAC演算の乗算部分は、一般的に、回路1404によって実行されるXOR動作によって実行され、ブロック1406は、アキュムレータ機能としての役割を果たす。 Multiplication portion of the MAC calculation is generally performed by XOR operations performed by the circuit 1404, block 1406 serves as accumulator. 回路1404は、ブロック1402によって実行されるガロアフィールドの演算の最終の反復、図14の場合、ブロック1436からの入力を受信する。 Circuit 1404, the final iteration of operation of the Galois field which is executed by block 1402, in the case of FIG. 14, receives an input from block 1436.

動作において、ブロック1322は、8ビット値などのNビット値またはデータを演算し、別のNビット値に基づいて元々の値の8wayをシフトすることによって、同一のものに基づいてNビット値またはデータを生成する。 In operation, block 1322 calculates the N-bit values ​​or data, such as 8-bit values, by shifting the 8way the original value based on another N-bit values, the N-bit value based on the same or to generate the data. Nビット値は、次に、その結果が減少定数を有するNビットに減らされるまで、ブロック1404によってXORされ、ブロック1406の値などのNビットアキュムレータレジスタの内容に選択的に加えられる。 N-bit value, then until the result is reduced to N bits with a reduced constant, is XOR by block 1404, selectively added to the contents of the N-bit accumulator register, such as the value of the block 1406. 「クリア」動作もブロック1406によって実行され得る。 "Clear" operation may also be performed by the block 1406. ガロアフィールドのMAC演算、つまりブロック1322を用いるアプリケーションの例は、循回冗長コード(CRC)演算、畳み込みエンコーダ演算、スクランブルコードジェネレータ演算、およびその他のものが含まれるが、それだけに限定されない。 Examples of MAC operations Galois field used i.e. block 1322 application, a Cyclic Redundancy Code (CRC) calculation, convolutional encoder operation, scrambling code generator operations, and include the other, but is not so limited.

図15は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック1324に含まれる回路のさらなる詳細を示す。 Figure 15, in accordance with embodiments of the present invention, at a high level block schematic, showing further details of the circuitry included in the block 1324. 図15において、mux1504および1502は、それぞれ、Aレジスタブロック1508およびBレジスタブロック1506に接続されて示される。 In Figure 15, mux 1504 and 1502, respectively, are shown coupled to the A register block 1508 and B registers block 1506. ブロック1508は、Aと呼ばれる値を保存し、ブロック1502は、Bと呼ばれる値を保存し、そこでAおよびBの値は、ブロック1324によって演算されるデータである。 Block 1508 stores the value called A, block 1502 stores a value called B, where the values ​​of A and B is data computed by block 1324. AおよびBの値は、それぞれNビット幅である。 The value of A and B are each N bits wide.

ブロック1508および1506は、条件付きレジスタブロック1512への入力を生成するように示され、加算/減算/Abs/差分/条件付き加算−減算/乗算(AGU)ブロック1510への入力を生成するように接続されてさらに示され、順に、ブロック1510は、出力レジスタブロック1514への入力を生成する。 Block 1508 and 1506 are shown to produce an input to a conditional register block 1512, the add / subtract / Abs / difference / conditional addition - to produce the input to the subtraction / multiplication (AGU) block 1510 further shown connected, in turn, block 1510 generates the input to the output register block 1514. ブロック1514は、mux1516に接続されて示され、順に、mux1516は、加算器1518に接続されて示される。 Block 1514 is shown coupled to Mux1516, sequentially, Mux1516 is shown connected to an adder 1518. 加算器1518は、アキュムレータレジスタブロック1520に接続されて示され、その出力は、加算器1518の別の入力としての役割を果たすように示される。 The adder 1518 is shown coupled to the accumulator register block 1520, the output of which is shown to serve as another input of the adder 1518. ブロック1520の別の出力は、mux1522への入力としての役割を果たすように示され、mux1522は、ブロック1514の出力としての別の入力として受信する。 Another output of block 1520 is shown to serve as an input to mux1522, mux1522 receives as another input of the output of the block 1514. mux1522は、バス1310へ接続される出力1530を生成する。 mux1522 generates an output 1530 which is connected to the bus 1310. mux1504および1502への入力いくつかは、ブロック1316から受信される。 Input some to mux1504 and 1502 are received from the block 1316.

mux1504および1502の各々は、4つの入力を受信するように示される。 Each mux1504 and 1502 is shown receiving four inputs. mux1504の入力のうちの1つ、dpは、ブロック1306からmux1502の入力、dpとして受信される。 One of the inputs of mux 1504, dp is input from block 1306 Mux1502, is received as dp. mux1504の別の入力は、ブロック1514の出力の一連の最下位ビットからもたらされ、mux1502の入力のうちの1つも同様である。 Another input of mux1504 is brought from a series of least significant bits of the output of the block 1514, it is also one of the inputs of Mux1502. mux1504の別の入力は、ブロック1514の同一の出力の最上位ビットからもたらされる。 Another input of mux1504 comes from the most significant bit of the same output of the block 1514. しかし、mux1504の別の入力は、値が「0」である。 However, another input of mux1504, the value is "0". mux1502の入力のうちの1つは値が「1」であり、入力のうちの別のものは値が「−1」である。 One of the inputs of mux1502 has a value of "1", another thing value of the input is "-1". 「0」、「1」、および「−1」の値は、これらの値がさまざまな動作において繰り返し利用されているため、この値の存在がシステム性能を向上させるという点において、ブロック1324によって実行される動作を迅速に処理する目的で提供される。 "0", the value of "1", and "-1", because these values ​​are used repeatedly in various operations, the presence of this value in terms of improving the system performance, executed by block 1324 It is provided for the purpose of rapidly processing the operations. 性能を向上させるために利用される、複数のブロック1510が存在してもよいことが留意されるべきである。 Is utilized to improve the performance, it should plurality of blocks 1510 is noted that may be present. ブロック1324は、実行される多数の動作が、単一のクロックサイクルで実行されることを可能にするために、図15において示されるように組織される。 Block 1324, a number of operations to be performed, in order to allow it to be performed in a single clock cycle, is organized as shown in FIG. 15.

動作において、ブロック1510および1512は、ブロック1508および1506によってそれぞれ提供されるAおよびBの値で動作する。 In operation, the block 1510 and 1512, operating at values ​​of A and B are provided respectively by the blocks 1508 and 1506. mux1516への2つのその他の入力は、後に簡潔に説明されるブロック1520内のリダクション動作ブロック(図15に図示せず)によって生成される。 Two other inputs to mux1516 is generated by briefly described the reduction operation block in the block 1520 (not shown in FIG. 15) after. これら2つの入力は、ここでは「隣接アキュムレータレジスタ」および「リダクションアキュムレータレジスタ」と呼ばれ、各々は2N幅である。 These two inputs is referred to herein as "adjacent accumulator register" and "Reduction accumulator register", each of which is 2N width.

ブロック1512は、デスプレッド動作における使用のために、ブロック1510によって実行される、条件付き加算または条件付き減算演算を可能にする2N幅レジスタである。 Block 1512, for use in despreading operation is performed by block 1510, a 2N width register that allows conditional addition or conditional subtraction operation. ブロック1512は、実質的に、ブロック1510による使用のために、AおよびBの値を改変する。 Block 1512 is substantially for use by block 1510 to modify the values ​​of A and B.

mux1522は、実質的に、信号1530を介してブロック1302に選択的に提供されるように、および、mux1522へのさらに別の入力として提供される選択信号によって決定されるように、ブロック1514によって保存された後、ブロック1510の出力を可能にする。 Mux1522 saved substantially, as through the signal 1530 is provided selectively to block 1302, and, as determined by the selection signal provided as a further input to Mux1522, by block 1514 after being to allow the output of the block 1510. そうでないと、ブロック1510の結果は、蓄積加算動作を行い、その最終結果は、ブロック1302に提供される前に、ブロック1518および1520を介して、ブロック1520に保存される。 Otherwise, the result of block 1510 performs the accumulation-addition operation, the final result is, prior to being provided to a block 1302, via block 1518 and 1520, are stored in block 1520.

ブロック1324は、以下の動作に対応する1つまたは複数のALUsを備えるNレイヤーALUである。 Block 1324 is an N layer ALU comprising one or more ALUs for the following operation.
− 2つのNビット値が、その和分または差分を生成するために動作されるN加算/減算動作− 2つの入力値のNビットのXOR - two N-bit values, the operation is the N add / subtract operations to generate the sum or difference - XOR of N bits of the two input values
− 2つのNビット入力値の最大/最小動作− 2つのNビット入力値の最大動作であって、その結果は、次のように計算される:max(a、b)+定数(メモリまたはあらかじめ組み込まれるルックアップテーブルから) - maximum / minimum operation of the two N-bit input value - a maximum * Operation of the two N-bit input value, the result is calculated as follows: max (a, b) + constant (memory or from the look-up table, which is incorporated in advance)
− 条件付き加算−減算:一般的にブロック1512の使用によりもたらされるこの機能は、条件付きで、入力コードによって決まるNビット値のストリームを加算または減算する。 - Conditional Addition - Subtraction: Commonly this brought about by the use of block 1512, conditionally adding or subtracting a stream of N-bit value determined by the input code. 入力コードは、制御レジスタにあらかじめロードされる。 Input code is pre-loaded to the control register. 入力コードにおける「1」は、減算動作をもたらし、「0」は加算動作をもたらす。 "1" in the input code will result in a subtraction operation, "0" results in the addition operation. 出力は、16ビットのアキュムレータレジスタで使用可能である。 The output is available in 16-bit accumulator register. この機能に対応しているその他の特別ALUからの「収集」動作のためのサポートも存在する。 Support for the "collection" operation from the other special ALU corresponding to this function is also present.
− 条件付きの加算−減算動作と同一のアキュムレータを使用するSAD - adding conditional - SAD using the same accumulator and subtraction operation
− N×N乗算。 - N × N multiplication.

ブロック1510は、各ブロック1510が少なくとも128ビットを読み込むことができる、つまり、2つのブロックは、メモリにコンテンションが存在しない場合、少なくとも256ビットのデータをクロックサイクル毎に読み込むことができる、Wタイプのサブプロセッサに共通している。 Block 1510 may each block 1510 reads at least 128 bits, i.e., two blocks, if the memory does not exist contention, it is possible to read at least 256 bits of data per clock cycle, W type It is common to the sub-processor.

図16は、本発明の実施形態にしたがい、ブロック1520内に含まれるリダクション回路ブロック1602のブロック図を示す。 Figure 16, in accordance with embodiments of the present invention, illustrates a block diagram of a reduction circuit block 1602 included in the block 1520. 図16において、M段階のアキュムレータレジスタ回路、アキュムレータレジスタブロック1610に示されるアキュムレータレジスタ回路の各々の詳細が示される。 16, the accumulator register circuit M stages, in each of the accumulator register circuit shown in accumulator register block 1610 details are set forth. 例えば、アキュムレータレジスタ回路ブロック1602は、図16に示されるように接続されるブロック4つの1610を含む。 For example, an accumulator register circuit block 1602 includes a block of four 1610 coupled as shown in FIG. 16. 同様に、アキュムレータレジスタ回路ブロック1604〜1608の各々は、ブロック1610のような4段階のアキュムレータレジスタ回路を含む。 Similarly, each of the accumulator register circuit blocks 1604-1608 includes four stages of the accumulator register circuit such as block 1610. ブロック1602〜1608のうちの各々内での各段階の出力または結果は、次の段階への入力として使用され、蓄積を達成するために加算される。 Each the output or result of each step in one of the blocks 1602 to 1608 are used as input to the next stage are added to achieve the accumulation. ブロック1602〜1608は、4段階またはブロック1610のような4ブロックを含むように示されるが、その他の数のブロックまたは段階が使用されてもよい。 Block 1602-1608 is 4 but shown is to include a 4 block, such as steps or blocks 1610, other numbers of blocks or steps may be used.

ブロック1602〜1608の各々の結果は、その他のブロックに使用可能になる。 Each of the resulting block 1602-1608 are made available to other blocks. 例えば、ブロック1602の結果は、ブロック1604への入力としての役割を果たし、ブロック1604の結果または出力は、ブロック1608内の最終のアキュムレータレジスタブロックへの入力としての役割を果たし、ブロック1606の結果または出力は、ブロック1608への入力としての役割を果たす。 For example, the result of block 1602 serves as input to block 1604, the result or output of the block 1604 serves as input to the final accumulator register block in the block 1608, the result of block 1606 or the output serves as input to block 1608. ブロックの結果は、前方向および同時に段階の蓄積に提供されるため、4段階のアキュムレータレジスタブロックが用いられる場合、7サイクルのみがリダクション動作を実行するのに必要とされる。 The results of the block, to be provided to the accumulation of forward and at the same time stage, if four levels of the accumulator register block is used, only 7 cycles are required to perform a reduction operation.

ブロック16は、アキュムレータに接続されるmuxから構成される。 Block 16 is comprised of mux connected to the accumulator. muxは、アキュムレータに提供されるために、2つの入力のうちの1つを選択する2:1のmuxである。 mux is to be provided to the accumulator, 2 selects one of two inputs: 1 mux. ブロック1610のmuxの2つの入力のうちの1つは、ブロック1514の出力によって提供され、その他の入力は、前の段階のアキュムレータレジスタブロックの結果である。 One of the two inputs of mux block 1610 is provided by the output of block 1514, other input is the result of the accumulator register block of the previous stage. このように、図16のリダクション機能は、データに対するそのマニピュレーションにおいて、柔軟性がある。 Thus, reduction function of FIG. 16, in its manipulation for data, is flexible. 段階の直前の出力からの入力の各々は、mux1516への隣接アキュムレータシーケンスを生成する「隣接(neighbor)」信号1616と呼ばれる。 Each of the inputs from the output of the preceding stage is referred to as "adjacent (neighbor)" signal 1616 to generate an adjacent accumulator sequence to Mux1516. 段階内のいくつかの出力は、mux1516へのリダクションアキュムレータsegを生成し、「リダクション」信号1618と呼ばれる。 Some of the outputs of the stages produces an reduction accumulator seg to Mux1516, it referred to as "reduction" signal 1618. ブロック1608の最終のアキュムレータブロックの出力は、mux1530に接続される出力1620を生成する。 The output of the last accumulator block of the block 1608 produces an output 1620 which is connected to Mux1530. 図16のリダクション回路は、リダクション動作を実行し、電力消費を節約するために、最小のクロックサイクルをもたらす。 Reduction circuit of Figure 16 performs a reduction operation, in order to save power consumption, resulting in minimal clock cycle.

図17は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック1326に含まれる回路のさらなる詳細を示す。 17, in accordance with embodiments of the present invention, at a high level block schematic, showing further details of the circuitry included in the block 1326. 図17において、ブロック1326は、ブロック1306から受信されるデータ入力をシフトするために、シフタ1702〜1712を含むように示される。 17, block 1326, to shift the data input received from the block 1306 is shown to include a shifter 1702-1712. 一実施形態において、入力1700は128ビットであるが、その他のビット数が用いられてもよい。 In one embodiment, input 1700 is a 128-bit, other numbers of bits may be used. シフタ1702〜1712の各々の出力は、レジスタバンクブロック1714に接続されて示される。 Each output of the shifter 1702 to 1,712 is shown coupled to the register bank block 1714. シフタ1702〜1712は、入力1700のビットの異なる結合を生成する。 Shifter 1702-1712 produces a bit different combinations of the input 1700.

ブロック1714は、シフタ1702〜1712の出力の結合を生成するために使用されるレジスタ1716から1746を含む複数のレジスタを備える。 Block 1714 comprises a plurality of registers including 1746 from the register 1716 used to generate a combined output of the shifter 1702 to 1712. 例えば、シフタ1702〜1712の出力の各々の最低8ビットは、選択的にどの最低8ビットが最終的に生成されるべきかを選択するために、muxを経由するように生成され得る。 For example, the lowest 8 bits of each output of the shifter 1702 to 1712, in order to choose to which at least 8 bits selectively is finally produced can be produced so as to pass through the mux. したがって、ブロック1714のレジスタの各々は、シフトされたビットの「好位置(interesting position)」で、任意に選択されることができる。 Thus, each of the registers of block 1714, the shifted bits with "good position (interesting position)" can be selected arbitrarily. 好位置は、シフタ1702〜1712の各々の出力によって決定される。 Good position is determined by each of the output of the shifter 1702 to 1712. ブロック1714の出力は、バス1310に提供される。 The output of block 1714 is provided to the bus 1310.

したがって、本発明の実施形態において、ブロック1326は、4つの20ビットおよび2つの24ビット入力レジスタを備える。 Thus, in embodiments of the present invention, block 1326 includes four 20-bit and two 24-bit input register. それは、8つの16ビットレジスタを含み、入力レジスタからの32、16、8、および4ビットのビットの組合せがランダムに生成および保存される。 It contains eight 16-bit registers, the combination of bits 32, 16, 8, and 4 bits from the input register is generated and stored in random. ブロック1326は、次の3つのモードで使用され得る。 Block 1326 can be used in three modes. 出力生成のために2つの特定の20ビットレジスタを使用する。 Using two specific 20-bit register for output generation. 2)出力生成のために4つの20ビットレジスタを使用する。 2) Using the four 20-bit registers for output generation. または、3)出力生成のために7つ全てのレジスタを使用する。 Or, 3) use all the registers 7 for output generation. シフタ1702〜1712は、入力レジスタを含むが、当業者には、シフタの構造と機能は既知であるため、図示されない。 Shifter 1702-1712 may include an input register, to those skilled in the art, since the structure and function of the shifter is known, not shown.

ブロック1326の結合機能を実行するために必要なハードウェアあるいはブロックまたは回路の数を減らすために、32ビットの出力レジスタにおける各ビットは、第1モードで、最下位8ビットから2つの20ビットのレジスタに、第2モードで、4つの最下位ビットを4つの20ビットのレジスタに、第3モードで、2つの最下位ビットを4つの20ビットのレジスタに、4つの最下位ビットを24ビットのレジスタに、満たすことができる。 To reduce the number of hardware or block or circuit required to perform the binding function of blocks 1326, each bit in the 32-bit output register, in the first mode, from the least significant 8 bits of two 20-bit to register, in the second mode, four of the four 20-bit least significant bit registers, in the third mode, the two least significant bits to the four 20-bit registers, 24-bit 4 least significant bits the register can be filled. 入力レジスタからのランダム結合は、2ステップの処理である。 Random coupling from the input register is a two-step process. 第1のステップは、「好(interesting)」ビットを最下位位置にシフトすることを伴い、その最下位位置から出力レジスタへの無作為に満たすことが、そのモードで可能であり得る。 The first step involves the shifting of the "good (interesting)" bit in the least significant positions, to meet at random from the lowermost position to the output register, it may be in that mode. 本明細書において図17に関連して使用される例において、ブロック1326は、好ビットを最下位位置にするために、入力レジスタでのシフト動作でパイプラインされる場合に、サイクル毎に16の結合されたビットを生成することができる。 In the example herein are used in connection with FIG. 17, block 1326, to a good bit in the least significant positions, when it is pipelined by a shift operation of the input register, for each cycle 16 of it is possible to generate a combined bit. 出力のいくつかの結合は、多数のクロックサイクルを必要とし得る。 Some combination of the output may require multiple clock cycles.

メモリ1326は、一般的なランダムアクセスメモリであるため、さらなる詳細は説明されない。 Memory 1326, for a general random access memory, further details will not be described. しかし、メモリのサイズが、Nタイプのサブプロセッサが使用されるアプリケーションに基づくということだけを言えば、十分である。 However, the size of the memory, speaking only that based on the application of N-type sub-processors are used, is sufficient.

図18は、本発明の実施形態において、ハイレベルブロック図式において、ブロック1330に含まれる回路のさらなる詳細を示す。 Figure 18 shows, in an embodiment of the invention, at a high level block schematic, showing further details of the circuitry included in the block 1330. 図18において、1ワードレジスタ1802は、8ビット位置を含むように示され、各ビット位置1804は、ビット選択回路1806によって改変されることが可能である。 18, one word register 1802 is shown to include 8 bit positions, each bit position 1804 is capable of being altered by the bit selection circuit 1806. その改変は、「0」の挿入、「1」の挿入、ビットの反転に相当する、またはビットを全く改変しない、「NOP」つまり動作無し(no−operation)に相当する、ビットのNOTing、を含むがそれだけに限定されない。 Modifications thereof, the insertion of "0", the insertion of "1", corresponding to the bit inversion, or not at all alter the bits corresponds to the "NOP" or operation without (no-operation), the bits Noting, the including but not limited to the much. 1ワードレジスタは繰り返される、すなわち、ワードレジスタ1810〜1820は、それぞれ、ワードをレジスタ1802として保存および改変する。 1 word register is repeated, i.e., word register 1810-1820, respectively, to store and modify the word as a register 1802. したがって、16ビットワードおよび8ワードの例において、八つの16ビットワードの改変は、同一のことを実行するためには多数のサイクルを必要とする従来のDSPsと違って、1クロックサイクルにおいて実行される。 Thus, in the example of 16-bit word and 8 words, modification of the 16-bit words of eight in order to perform the same thing unlike conventional DSPs which require multiple cycles, it is executed in one clock cycle that. ワードの各ビットの改変またはパンクチュアリング/デパンクチュアリングは、図18に示されるように、相互およびレジスタ1802に接続されるmux1824およびフリップフロップ1826によって制御される。 Modified or puncturing / de-puncturing of each bit of the word, as shown in FIG. 18, it is controlled by mux1824 and the flip-flop 1826 are connected to each other and register 1802. レジスタ1810〜1822も、その他のmuxおよびフリップフロップ回路に同様に接続される。 Register 1810-1822 are also similarly connected to the other mux and a flip-flop circuit. モード選択ビットは、muxの4つの入力のうちのどれが選択されるかを選択し、それは命令コードから生成される。 Mode select bit selects which of the four inputs of mux is selected, it is generated from the instruction code. mux1824へのインプット1828のうちの2つも命令コードからもたらされるが、mux入力のその他の2つはメモリからもたらされ、図18に示されるように、そのうちの1つは他方の反転版であり得る。 Two of the inputs 1828 to mux1824 also come from the instruction code, the other two of the mux inputs come from memory, as shown in FIG. 18, one of which is the other inversion version obtain.

ブロック1330の回路への入力は、ブロック1332から生成され、ブロック1332は、ここで簡潔に説明すると、完全インタリーブ、部分的インタリーブ、または非インタリーブのNビットワードをブロック1330に生成する。 The input to the circuit block 1330 is generated from the block 1332, block 1332, Referring now Briefly, to produce fully interleaved, partial interleaving, or the N-bit words of non-interleaved block 1330. 一例において、動作は256ビットワードにあり、その場合、ブロック1330は、所定の時間に16ビットで動作する。 In one example, the operation is in the 256-bit word, in which case, block 1330 operates in 16-bit at a given time. プリフェッチされた制御ワードは、16ビットワード内のどのビットが反転されるべきかを決定するために使用される。 Prefetched control word which bits in the 16-bit word is used to determine what should be reversed. 選択的に、「0」または「1」の値が、反転する他に、特定のビット位置に入力される。 Alternatively, the value of "0" or "1", in addition to reversing are inputted to a specific bit position.

図19は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック1332に備えられる回路のさらなる詳細を示す。 19, in accordance with embodiments of the present invention, at a high level block schematic, illustrating further details of a circuit provided in the block 1332. 図19において、メモリアレイ1902は、バス1316を介して入力装置から入力104、およびバス1316を介してリードイネーブル入力1906を受信する、さらにブロック1302に提供される出力装置信号1910を生成するために、制御行−列アドレス生成ブロック1908から入力をさらに受信するように示される。 19, the memory array 1902, an input from the input device via a bus 1316 104, and receives a read enable input 1906 via a bus 1316, to generate the output device signal 1910 is further provided to a block 1302 , the control line - is shown to further receive input from the column address generation block 1908. 一例において、ブロック1902は、128×16ビットから構成されるメモリアレイを含む。 In one example, block 1902 includes a memory array composed of 128 × 16 bits. データは、行ベースまたは列ベースで、ブロック1902から書き出しまたは読み込まれることができる。 Data in row-based or column-based, can be write or read from block 1902. 読み込まれ得るのはブロック1902のメモリアレイの行であり、読み込まれ得るのは、ブロック1902のメモリアレイの列である。 The read can is a row of the memory array block 1902, the that may be loaded, a column of the memory array block 1902. さらに、データは、行ベースで書き込まれることが可能であるが、列ベースで読み込まれることも可能であり、逆も可能である。 Moreover, the data, it is possible to be written in row basis, it is also possible to read in the column base, and vice versa.

図20は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック1334に備えられる回路のさらなる詳細を示す。 Figure 20, in accordance with embodiments of the present invention, at a high level block schematic, illustrating further details of a circuit provided in the block 1334. 図20において、ブランチメトリックユニット2002は、ブロック1332からの入力を受信するように示され、加算/比較/選択ブロックに接続されて示され、加算/比較/選択ブロックは、サバイバ(survivor)メモリブロック2012に接続されて示され、順に、サバイバメモリブロック2012は、mux2020に接続されて示され、mux2020は、バス1310に接続される出力2022を生成する。 In Figure 20, a branch metric unit 2002 is shown to receive input from the block 1332, shown coupled to Add / Compare / Select block, add / compare / select block survivor (survivor) memory blocks connected to 2012 is shown, in turn, survivor memory block 2012 is shown coupled to mux2020, mux2020 generates an output 2022 which is connected to the bus 1310. mux2020は、mux2016から入力を受信するアキュムレータ2018の出力から、別の入力を受信するようにさらに示される。 mux2020 from the output of the accumulator 2018 which receives input from Mux2016, further shown to receive another input. 任意で、mux2016への入力を生成するために、絶対差の和(SAD)ブロック2008およびデスプレッダ(デスプレッドするために)ブロック2010が使用される。 Optionally, in order to generate an input to Mux2016, (in order to de-spread) the sum (SAD) block 2008 and the despreader of absolute difference block 2010 is used. ブロック2008および2010が存在しない場合、mux2016、ブロック2018、およびmux2020が使用され得る。 If the block 2008 and 2010 exists, Mux2016, block 2018, and mux2020 may be used. ローカルメモリ2006は、ブロック2004に接続されて示される。 Local memory 2006 is shown connected to the block 2004. ブロック2002は、ビタビコード/デコードに精通する者には既知であるブランチメトリック計算を実行する。 Block 2002, to those skilled in the Viterbi code / decode executing a branch metric calculation are known. ビタビコード/デコードに精通する者に既知であるサバイバパスも、ブロック2012に保存される。 Viterbi encoding / decoding is known to those skilled Sabaibapasu is also stored in the block 2012.

ブロック1334は、ターボデコーダ、SADおよびデスプレッド機能を実行することができる。 Block 1334 may be performed turbo decoder, the SAD and despreading function. 一例において、32〜256の加算−比較−選択動作は、ローカルメモリ2006によって生成される16ビットブランチおよびパスメトリック値で、ブロック2004によって、平行して実行されることができる。 In one example, the addition of 32 to 256 - Comparison - select operation is a 16-bit branch and path metric values ​​generated by the local memory 2006, the block 2004 can be parallel and executed. 一例において、ローカルメモリ2006のサイズは、1キロビットおよび16キロビットである。 In one example, the size of the local memory 2006 is a 1 kbit and 16 kilobits.

ブロック1334に備えられる複数のブロック2004が存在してもよく、その各々は、8ビット符号付き加算器を備えてもよい。 There may be a plurality of blocks 2004 provided in block 1334, each of which may comprise an 8-bit signed adder. さらに、各々は、ウィニング(winning)パスおよび決定ビットを戻す比較および選択ブロックを備えてもよい。 Further, each of which may comprise a comparison and selection block return winning (winning) path and decision bits. 加算−比較−選択動作は、ウィニングパスおよび決定ビットをもたらす。 Addition - Comparison - select operation results in winning path and decision bits. ウィニングパスは、トレリスを伝えるために、「マルチキャスト」相互接続計画を使用する隣接するブロック2004と共有されることができる。 Winning path to convey the trellis can be shared with block 2004 which is adjacent with "multicast" interconnection scheme. ウィニングブランチおよびパスメトリック値を有する決定ビットは、バックトラックのために保存される。 Decision bits with winning branch and path metric values ​​are stored for backtracking.

ブロック2008は、4つの8ビットのALUsを使用し、一例において、サイクル毎に計算可能な4つの絶対差を使用する。 Block 2008 uses four 8-bit ALUs, in one example, using the four absolute differences can be calculated for each cycle. リダクションツリーは、絶対差を16ビットのアキュムレータに蓄積するために、ブロック2004に組み込まれる。 Reduction tree, in order to accumulate the absolute differences into a 16-bit accumulator is incorporated in the block 2004. マルチキャストネットワークは、これらの値をさらにリダクションするために送信するように使用されることができる。 Multicast network can be used to transmit for further reduction of these values. 総数128の8ビット(64の16ビット)ブロック2008が、クロックサイクル毎に可能である。 Block 2008 (16-bit 64) 8-bit total 128 are possible for each clock cycle. しかしながら、オーバーヘッドの全てを考慮することにより少数にすることが、効率的利用であると考えられる。 However, to a few by considering all overhead is considered to be an efficient use.

ALUは、特別ALUブロックが実行し、上に説明されたような同一の条件付き加算−減算機能を実行する。 The ALU, special ALU block executes, with the same conditions as described above addition - to perform the subtraction function. デスプレッドが必要な制御ビットは、それがレジスタにフェッチおよび保存される場所から、ローカルメモリにロードされなければならない。 Control bits required despreading, it is the fetch and conserved location register must be loaded into the local memory. 結果は、リダクション動作のためにその他のブロック2004に転送可能な場所から、16ビットのアキュムレータに蓄積される。 Results from the transfer where possible to other blocks 2004 for reduction operation is stored in 16-bit accumulator. デスプレッドによって、一例において、単一サイクルで128の条件付き加算−減算を同時に実行することが可能である。 By despreading, in one example, the conditional addition of 128 in a single cycle - it is possible to perform subtraction concurrently. このユニットにおける遷移毎のエネルギーは、デスプレッドおよびSAD以外のいくつかの一般的な機能のために機能する特別ALUに使用されるものよりも高い。 Energy per transition in this unit is higher than that used for special ALU that function for non despreading and SAD of some common features. 指より少ない数、または低い動き検出率のためには、特別ALUはより電力効率の良い選択である。 For a small number or low motion detection rate, than the finger, special ALU is more power-efficient selection.

図21は、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 Figure 21 in accordance with an embodiment of the present invention, an example of programming the flow and tool using the processor 22. 図22は、本発明の実施形態の拡張性の例を示す。 Figure 22 shows an example of a scalable embodiment of the present invention. 例えば、図22において、バス2204を使用して相互接続されるように示される、クラスタ2202またはWタイプおよびNタイプのサブプロセッサが存在する。 For example, in FIG. 22 is shown to be interconnected using a bus 2204, a cluster 2202 or W-type and N-type sub-processor is present. 各クラスタ2202は、2つまたは4つのサブプロセッサを備える。 Each cluster 2202 is provided with two or four sub-processors. バス2204は、一例において、標準のSoCバスである。 Bus 2204, in one example, a standard SoC bus. 階層的設計方法論を保持することによって、相互接続性が対処される。 By retaining the hierarchical design methodology, interconnectivity are addressed.

プロセッサ20をスケーリングすることにより、各クラスタ用の別々のバスを有する4つのサブプロセッサのクラスタをもたらし、あるいは、4つのサブプロセッサは、単一のメモリを共有し得る。 By scaling the processor 20, it results in four sub-processor clusters having a separate bus for each cluster, or four sub-processors may share a single memory. プロセッサに関する拡張性は、一般的に、プロセッサの数を増加、またはプロセッサの周波数または速度を増加させることによってもたらされてきた。 Scalability relates to a processor generally been effected by increasing increased or the frequency or speed of the processor the number of processors. しかしながら、複雑なアプリケーションは、従来行なわれてきたもの以上のスケーリングを必要とする。 However, complex applications require more scaling what has been done conventionally. 本発明において、WタイプおよびNタイプのサブプロセッサは、処理を形成する4つのそのようなサブプロセッサが単一のアプリケーションを処理することができるように修正される。 In the present invention, the sub-processor of W-type and N-type are four such sub-processor to form a process is modified so as to be able to process a single application.

したがって、プロセッサ22は、Cコードからのコンパイルに直接基づいて、RISCおよびスーパースケーラプロセッサよりも効率的な、対象のアプリケーションに見られる制御およびシーケンシャルDSPコードを実行する能力が備えられる。 Accordingly, processor 22 is based directly on compiling from C code, efficient than RISC and superscalar processors, the ability to perform control and sequential DSP code found in target application is provided. 同時に、プロセッサ22は、レガシーおよびライトアプリケーションのために、RISCおよびスーパースケーラプロセッサに使用される自動コード生成技術を利用するように設計される。 At the same time, the processor 22, for legacy and write applications are designed to use the automatic code generation techniques employed RISC and superscalar processors. さらに、プロセッサ22は、アプリケーションマッピングおよび開発のために、Simulinkのような、成熟した業界基準のソフトウェアツールで機能する。 Furthermore, the processor 22, for the application mapping and development, such as Simulink, function in software tools mature industry standard. ムーアの法則が、プロセッサ22の性能を向上させるために利用されることができる。 Moore's Law, can be utilized to improve the performance of the processor 22. プロセッサ22は、非常に平行性のある機械であるだけでなく、異種マルチプロセッサでもある。 The processor 22 is not only a machine of great parallelism is also a heterogeneous multiprocessor. 要求事項の多いマルチメディアおよび通信のアプリケーションに対処するために、平行性のある異種のマルチプロセッサが必要とされていることが、業界と学界の両方において証明された事実である。 To address the requirements of many multimedia and communications applications, multiprocessor heterogeneous with parallelism that is required is the fact that has been demonstrated in both industry and academia. プロセッサ22、電力および面積の非効率的な技術を使用しないで、VLIWに使用される多くの自動コード生成技術の利用を可能にする。 Processor 22, without using inefficient art power and area, enables the use of a number of automatic code generation techniques employed VLIW. プロセッサ22は、Cからの制御コードのコンパイルに基づき、繰り返しパターンを利用するように最適化される。 The processor 22, based on the compilation of control code from C, is optimized to use a repeating pattern. このことは制御電力を大幅に減少させ、コンパイルされたシリアルコードを効率的に実行することを可能にする。 This greatly reduces the control power, makes it possible to execute the compiled serial code efficiently. さらに、プロセッサ22のプログラミングモデルは、Simulinkのようなプログラマーに精通するツールを使用して、DSPプログラマーの大きなコミュニティを適合させるように設計される。 Moreover, the programming model of the processor 22 uses the familiar tool programmers such as Simulink, it is designed to fit a large community of DSP programmers. その開発フローは、制御およびシーケンシャルDSPコードの効率的なCコンパイル手段を提供する。 Its development flow provides an efficient C compilation means of the control and sequential DSP code. また、極めて効率的な通信およびマルチメディアのカーネルのライブラリの広範囲のセットが提供される。 Also, very efficient communication and broad set of libraries in the kernel of the multimedia is provided. 例として、FFT、IDCT、RRC、ビタビ、VLC、2D/3Dグラフィック、ターボコード、およびデスクランブラのパラメータ化されたライブラリが挙げられる。 Examples, FFT, IDCT, RRC, Viterbi, VLC, 2D / 3D graphics, turbo codes, and descrambler parameterized libraries and the like.

プロセッサ22におけるデータパス設計は、注目されかつ非常に有利なアプリケーションの混合を効率的に対処するために、さまざまな粒度の機能ユニットを接続するさまざまな相互接続構造を成功裏に統一する。 Data path design in the processor 22, in order to effectively deal with mixing eyed and highly advantageous application, to unify the various interconnect structure for connecting the functional units of the various particle size successfully.

プロセッサ22の拡張性は、標準のSoCバスに基づいて、ブロック内の最隣接接続を有する単一ブロック(時分割)で、全てのアプリケーションを適合させるように設計される。 Expansion of the processor 22, based on standard SoC bus, a single block (time division) with nearest neighbor connections in a block, are designed to fit all applications. 多数のブロックが、そのブロック間での専用のコミュニケーション無しで、多数のアプリケーションを処理するために使用可能であるため、非効率性が大幅に減少し、システムレベルの非決定論の全てが削減される。 Multiple blocks, without communication only between that block, because it can be used to process a large number of applications, inefficiency is reduced significantly, all non-deterministic system level is reduced .

図23は、本発明の拡張性の利点のいくつかを示すチャートを示す。 Figure 23 shows a chart illustrating some of the scalability benefits of the present invention.

本発明は特定の実施形態に関して説明されたが、その代替および改変が、当業者にとっては明白であることが理解される。 The present invention has been described with respect to specific embodiments, an alternative and modifications, it will be understood by those skilled in the art is evident. したがって、以下の請求の範囲は、本発明の真の精神および範囲内にあるそのような代替および改変の全ての範囲をカバーするように解釈されることが意図される。 Thus, the following claims are to be construed to cover the full range of such alternatives and modifications as fall within the true spirit and scope of the invention are contemplated.

図1は、本発明の実施形態を含むデジタル製品12に関するアプリケーション10が示される。 1, the application 10 is shown a digital product 12 including an embodiment of the present invention. 図2iは、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス(DMA)回路24に接続される、異種の、高性能で、拡張可能なプロセッサ22を備える、典型的な集積回路20を示す。 Figure 2i, in accordance with an embodiment of the present invention are connected to the memory controller and direct memory access (DMA) circuit 24, the heterogeneous, high performance, comprising an expandable processor 22, a typical integrated circuit 20 show. 図2iiは、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス(DMA)回路24に接続される、異種の、高性能で、拡張可能なプロセッサ22を備える、典型的な集積回路20を示す。 Fig 2ii, in accordance with an embodiment of the present invention are connected to the memory controller and direct memory access (DMA) circuit 24, the heterogeneous, high performance, comprising an expandable processor 22, a typical integrated circuit 20 show. 図3は、本発明の実施形態にしたがう、プロセッサ20のさらなる詳細を示す。 3, according to an embodiment of the present invention, showing further details of the processor 20. 図4は、本発明の実施形態にしたがう、ブロック74または76などのWタイプのブロックのうちの1つの中に備えられるブロックまたは構造のハイレベルブロック図を示す。 4, according to an embodiment of the invention, a high-level block diagram of a block or structure provided in one of the W-type block such as block 74 or 76. 図5は、本発明の実施形態にしたがう、ブロック402に備えられる回路ブロックのブロック図を示す。 5, according to an embodiment of the present invention, illustrates a block diagram of a circuit block provided in the block 402. 図6は、マクロ機能ユニット内、特にブロック402、404、406、および408に転送するレジスタファイルのために用いられる一般構造をさらに詳細に示す。 Figure 6 shows in more detail the general structure used for the register file to be transferred within the macro function units, in particular blocks 402, 404, 406, and 408. 図7は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック408のさらなる詳細を示す。 7, according to an embodiment of the present invention, the high-level block diagram form, further details of block 408. 図8は、本発明の実施形態にしたがう、ブロック図形式において、ブロック404のさらなる詳細を示す。 8, according to an embodiment of the present invention, in block diagram form, further details of block 404. 図9iは、特に、置換の実行に関するブロック404のさらなる詳細を示す。 Figure 9i is particularly shows further details of the block 404 for running the substitution. 図9iiは、特に、置換の実行に関するブロック404のさらなる詳細を示す。 Figure 9ii, in particular, shows further details of the block 404 for running the substitution. 図10は、特に、置換の実行に関するブロック404のさらなる詳細を示す。 10, in particular, it shows further details of the block 404 for running the substitution. 図11は、本発明の実施形態にしたがう、ブロック図形式において、ブロック406の構成要素のさらなる詳細を示す。 11, according to an embodiment of the present invention, in block diagram form, further details of the components of the block 406. 図12は、本発明の実施形態にしたがう、ブロック78の詳細のハイレベルブロック図を示す。 12, according to an embodiment of the invention, a high-level block diagram of a detail of the block 78. 図13は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック78のさらなる詳細を示す。 13, according to an embodiment of the present invention, the high-level block diagram form, further details of block 78. 図14は、本発明の実施形態にしたがう、ブロック1322のさらなる詳細を示す。 14, according to an embodiment of the present invention, showing further details of block 1322. 図15は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1324に備えられる回路のさらなる詳細を示す。 15 in accordance with an embodiment of the present invention, the high-level block diagram form, further details of the circuit provided in the block 1324. 図16iは、本発明の実施形態にしたがう、ブロック1520内に備えられるリダクション回路ブロック1602のブロック図を示す。 Figure 16i in accordance with an embodiment of the present invention, illustrates a block diagram of a reduction circuit block 1602 provided in the block 1520. 図16iiは、本発明の実施形態にしたがう、ブロック1520内に備えられるリダクション回路ブロック1602のブロック図を示す。 Figure 16ii in accordance with an embodiment of the present invention, illustrates a block diagram of a reduction circuit block 1602 provided in the block 1520. 図17は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1326に備えられる回路のさらなる詳細を示す。 17, according to an embodiment of the present invention, the high-level block diagram form, further details of the circuit provided in the block 1326. 図18は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1330に備えられる回路のさらなる詳細を示す。 18, according to an embodiment of the present invention, the high-level block diagram form, further details of the circuit provided in the block 1330. 図19は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1332に備えられる回路のさらなる詳細を示す。 19, according to an embodiment of the present invention, the high-level block diagram form, further details of the circuit provided in the block 1332. 図20は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1334に備えられる回路のさらなる詳細を示す。 Figure 20 in accordance with an embodiment of the present invention, the high-level block diagram form, further details of the circuit provided in the block 1334. 図21iは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 Figure 21i in accordance with an embodiment of the present invention, an example of programming the flow and tool using the processor 22. 図21iiは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 Figure 21ii ​​in accordance with an embodiment of the present invention, an example of programming the flow and tool using the processor 22. 図21iiiは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 FIG 21iii in accordance with an embodiment of the present invention, an example of programming the flow and tool using the processor 22. 図21ivは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 FIG 21iv in accordance with an embodiment of the present invention, an example of programming the flow and tool using the processor 22. 図21vは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 Figure 21v in accordance with an embodiment of the present invention, an example of programming the flow and tool using the processor 22. 図21viは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 FIG 21vi in ​​accordance with an embodiment of the present invention, an example of programming the flow and tool using the processor 22. 図22は、本発明の実施形態の拡張性の例を示す。 Figure 22 shows an example of a scalable embodiment of the present invention. 図23iは、本発明の拡張性の利点のいくつかを示すチャートを示す。 Figure 23i shows a chart illustrating some of the scalability benefits of the present invention. 図23iiは、本発明の拡張性の利点のいくつかを示すチャートを示す。 Figure 23ii shows a chart illustrating some of the scalability benefits of the present invention.

Claims (20)

  1. 異種の、高性能で、拡張可能なプロセッサであって、 Heterogeneous, high performance, a scalable processor,
    Wビット以上を並列的に処理することが可能な少なくとも1つのWタイプのサブプロセッサであって、Wは整数値である、サブプロセッサと、 The above W-bit and at least one W-type sub-processor capable of processing in parallel, W is an integer value, and a sub-processor,
    Nビットを並列的に処理することが可能な少なくとも1つのNタイプのサブプロセッサであって、Nは整数値でありWより小さい、サブプロセッサと、 And at least one N-type sub-processor capable of processing the N-bit parallel, N is W smaller than an integer value, and a sub-processor,
    該少なくとも1つのWタイプのサブプロセッサと少なくとも1つのNタイプのサブプロセッサとを接続する共有バスと、 The at least one of W type sub-processors and shared bus connecting the at least one N-type sub-processor,
    該少なくとも1つのWタイプのサブプロセッサと該少なくとも1つのNタイプのサブプロセッサとに接続されて共有されるメモリと を備え、該Wタイプのサブプロセッサは、メモリを出入りするバイトを再配置し、アプリケーションの実行に対応することにより、高速動作を可能にする、プロセッサ。 And a memory that is shared is connected said at least a sub-processor of one W type the at least on the sub-processors one N type, the sub-processor of the W type, reposition bytes in and out of memory, by corresponding to the application execution, to enable high speed operation, the processor.
  2. 前記プロセッサは、拡張可能である、請求項1に記載の異種の、高性能で、拡張可能なプロセッサ。 Wherein the processor is extendable, heterogeneous claim 1, a high performance, scalable processors.
  3. 少なくとも1つのWタイプのサブプロセッサのうちの2つと、前記少なくとも1つのNタイプのサブプロセッサのうちの2つである、請求項1に記載の異種の、高性能で、拡張可能なプロセッサ。 Two and of the at least one W-type sub-processor, the two of the at least one N-type sub-processors, heterogeneous claim 1, a high performance, scalable processors.
  4. 前記少なくとも1つのWタイプのサブプロセッサと前記少なくともNタイプのサブプロセッサは、マルチメディアアプリケーションに対するプログラムを実行する、請求項2に記載の異種の、高性能で、拡張可能なプロセッサ。 Wherein the at least one W-type sub-processor and sub-processor of the at least N-type, and executes the program for multimedia applications, disparate according to claim 2, high performance, scalable processors.
  5. 前記少なくとも1つのWタイプのサブプロセッサのうちの各々は、複数のマクロ機能ユニットを含む、請求項4に記載の異種の、高性能で、拡張可能なプロセッサ。 Wherein each of the at least one W-type sub-processor includes a plurality of macro function units, heterogeneous claim 4, high performance, scalable processors.
  6. 前記複数のマクロ機能ユニットは、該複数のマクロ機能ユニットのその他による使用のためのメモリアドレスを生成するために、ロードストアブロックを含む、請求項5に記載の異種の、高性能で、拡張可能なプロセッサ。 Wherein the plurality of macro-functional units, in order to generate the memory addresses for other through the use of macro function units of said plurality of comprises a load store block, disparate according to claim 5, high performance, scalable processor such.
  7. 前記複数のマクロ機能ユニットは、前記ロードストアブロックに接続されたスカラー算術論理ユニット(ALU)および乗加算ブロックを含み、該スカラー算術論理ユニットおよび該乗加算ブロックは、該ロードストアブロックから受信されるデータに対し、スカラー算術論理演算および乗算演算を実行する、請求項6に記載の異種で、高性能で、拡張可能なプロセッサ。 Wherein the plurality of macro function unit includes the scalar arithmetic logic unit connected to the load store block (ALU) and multiply-add block, said scalar arithmetic logic unit and occupant summing block is received from the load store block to the data, it executes the scalar arithmetic logic and multiplication operations, heterologous according to claim 6, high performance, scalable processors.
  8. 前記複数のマクロ機能ユニットは、ベクトルXブロックを含み、該ベクトルXブロックは、前記ロードストアブロック、前記スカラーALU、および、複数の乗加算ブロックに接続され、該ロードストアブロックからのデータに対してベクトル演算を実行し、該ベクトルXブロックは、ベクトルデータを生成する、請求項7に記載の異種の、高性能で、拡張可能なプロセッサ。 Wherein the plurality of macro function unit includes a vector X block, the vector X block, the load store block, the scalar ALU, and is connected to a plurality of multiplication and addition block, on the data from the load store block run the vector operation, the vector X block generates vector data, the heterogeneous claim 7, high performance, scalable processors.
  9. 前記複数のマクロ機能ユニットは、ベクトルALUおよび乗加算ブロックを含み、該ベクトルALUおよび該乗加算ブロックは、前記スカラーALUおよび乗加算ブロックおよび前記ベクトルXブロックに接続され、該ベクトルXブロックから受信されるベクトルデータに対し、ベクトルALU演算および乗加算演算を実行する、請求項8に記載の異種の、高性能で、拡張可能なプロセッサ。 Wherein the plurality of macro function unit includes a vector ALU and multiply-add block, the vector ALU and multiplication adder block is connected to said scalar ALU and multiply-add block and the vector X blocks are received from the vector X block that to vector data, executes the vector ALU operation and multiply-add operation, the heterologous of claim 8, a high performance, scalable processors.
  10. 前記少なくとも1つのNタイプのサブプロセッサは、ストアユニットブロックと、マクロ機能ブロックと、ロードユニットブロックとを含み、該マクロ機能ブロックは、ロードユニットブロックに接続され、該マクロ機能ブロックを該ストアブロックに接続するためのマクロ機能バスにさらに接続される、請求項2に記載の異種の、高性能で、拡張可能なプロセッサ。 Wherein at least one N-type sub-processor includes a store unit block, and macro function blocks, and a load unit block, the macro function block is connected to the load unit block, the macro function blocks in the store block It is further connected to the macro function bus for connecting the, heterologous according to claim 2, high performance, scalable processors.
  11. 前記少なくとも1つのNタイプのサブプロセッサは、複数のWタイプのサブプロセッサのうちの少なくとも1つによって共有される、データパスユニット(DPU)ブロックと、制御装置と、シーケンサと、データアドレスジェネレータ(DAG)ブロックとを含む、請求項10に記載の異種の、高性能で、拡張可能なプロセッサ。 Sub-processor of the at least one N type is shared by at least one of the plurality of W-type sub-processor, and a data path unit (DPU) block, a control device, a sequencer, data address generator (DAG ) and a block of heterologous of claim 10, a high performance, scalable processors.
  12. 前記マクロ機能ブロックは、ガロアフィールドの乗加算(MAC)ブロックを含み、該ガロアフィールドの乗加算ブロックは、前記マクロ機能バスと前記ロードユニットブロック1306とに接続され、ガロアフィールドの演算を実行する、請求項10に記載の異種の、高性能で、拡張可能なプロセッサ。 The macro function block includes a multiply-add (MAC) block Galois field multiply-add block of the Galois field, the said macro function bus is connected to the load unit block 1306, to perform the calculation of the Galois field, heterogeneous claim 10, a high performance, scalable processors.
  13. 前記マクロ機能ブロックは、特別ALUを含み、該特別ALUは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、特別なALU演算を実行する、請求項12に記載の異種の、高性能で、拡張可能なプロセッサ。 The macro function block includes a special ALU, 該特 by the ALU, which is connected with the load unit block and the load unit blocks, to perform a special ALU operations, heterologous of claim 12, high-performance , extensible processor.
  14. 前記マクロ機能ブロックは、パンクチュアリング/デパンクチュアリングブロックを含み、該パンクチュアリ/デパンクチュアリブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、パンクチュアリング/デパンクチュアリング演算を実行する、請求項13に記載の異種の、高性能で、拡張可能なプロセッサ。 The macro function block includes a puncturing / de-puncturing block, the Pankuchuari / de punk Ju Ali block is connected to the load unit block and the load unit block, puncturing / de-puncturing performs operations, heterologous of claim 13, a high performance, scalable processors.
  15. 前記マクロ機能ブロックは、インタリーバブロックを含み、該インタリーバブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、インタリーバ演算を実行する、請求項14に記載の異種の、高性能で、拡張可能なプロセッサ。 The macro function block includes a interleaver block, the interleaver block is connected to said the load unit block and the load unit block, executes the interleaver operation, heterologous of claim 14, a high-performance, extended possible processor.
  16. 前記マクロ機能ブロックは、ビタビブロックを含み、該ビタビブロックは、前記ストアユニットブロックと前記インタリーバブロックとに接続され、ビタビ演算を実行する、請求項15に記載の異種の、高性能で、拡張可能なプロセッサ。 The macro function block includes a Viterbi block, the Viterbi block, which is connected store unit block and the said interleaver block, executes Viterbi computation, heterologous of claim 15, a high performance, scalable processor such.
  17. 前記マクロ機能ブロックは、結合器ブロックを含み、該結合器ブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、結合演算を実行する、請求項16に記載の異種の、高性能で、拡張可能なプロセッサ。 The macro function block includes a coupler block, the combiner block, wherein the load unit block is connected to the load unit block, performing a join operation, a heterologous of claim 16, high-performance , extensible processor.
  18. 前記少なくとも1つのNタイプのサブプロセッサは、前記ストアユニットブロックと前記ロードユニットブロックとの間に接続されたXユニットブロックを含む、請求項16に記載の異種の、高性能で、拡張可能なプロセッサ。 The sub-processor of the at least one N type, including the connected X BU between the store unit block and the load block units, different kinds of claim 16, a high performance, scalable processors .
  19. 前記少なくとも1つのWタイプのサブプロセッサと前記少なくとも1つのNタイプのサブプロセッサとの間の直接通信のために、該少なくとも1つのWタイプのサブプロセッサと該少なくとも1つのNタイプのサブプロセッサとの間に接続された、共有レジスタを含む、請求項16に記載の異種の、高性能で、拡張可能なプロセッサ。 Wherein for direct communication between at least one of W type sub-processor and said at least one N-type sub-processor, and one N-type sub-processor the at least a sub-processor of one W type the at least connected between, including shared register, the heterologous of claim 16, a high performance, scalable processors.
  20. 異種の、高性能で、拡張可能なプロセッサを備える、情報を処理する方法であって、 Heterogeneous, high performance, comprising an expandable processor, a method for processing information,
    Wビットを並列的に処理することが可能な少なくとも1つのWタイプのサブプロセッサを使用して、データを処理することであって、Wは整数値である、ことと、 Using at least one W-type sub-processor capable of processing the W bits in parallel, the method comprising: processing the data, W is an integer value, and that,
    Nビットを並列的に処理することが可能な少なくとも1つのNタイプのサブプロセッサを使用して、データを同時に処理することであって、NはWより1/2倍小さい整数値である、ことと、 Using at least one N-type sub-processor capable of processing the N-bit parallel, the method comprising: processing data at the same time, N is 1/2 times smaller integer value than W, it When,
    低電力消費とプログラマビリティの容易さとを維持する一方で、マルチメディアアプリケーションの高速実行をもたらすことと を含む、方法。 While maintaining the ease of low power consumption and programmability, and a bringing fast execution of multimedia applications, methods.
JP2007521614A 2004-07-13 2005-07-12 Programmable processor architecture Pending JP2008507039A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US58769104P true 2004-07-13 2004-07-13
US59841704P true 2004-08-02 2004-08-02
PCT/US2005/024867 WO2006017339A2 (en) 2004-07-13 2005-07-12 Programmable processor system with two types of sub-processors to execute multimedia applications

Publications (1)

Publication Number Publication Date
JP2008507039A true JP2008507039A (en) 2008-03-06

Family

ID=35839807

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007521614A Pending JP2008507039A (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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011096254A (en) * 2009-10-30 2011-05-12 Arm Ltd Apparatus and method for performing multiplication accumulation operation
JP2016526220A (en) * 2013-05-24 2016-09-01 コーヒレント・ロジックス・インコーポレーテッド Memory network processor having a programmable optimization

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7856246B2 (en) 2007-03-21 2010-12-21 Nokia Corporation Multi-cell data processor
JP6102528B2 (en) 2013-06-03 2017-03-29 富士通株式会社 Signal processing device and signal processing method

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328849A (en) * 1995-05-17 1996-12-13 Sgs Thomson Microelectron Ltd Computer and its operation
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
JP2000004265A (en) * 1998-06-12 2000-01-07 Nippon Hoso Kyokai <Nhk> Digital transmission equipment and reception equipment
JP2001060979A (en) * 1999-07-09 2001-03-06 Lsi Logic Corp Method and device for multilevel encoding of digital signal
US20040078411A1 (en) * 2002-10-22 2004-04-22 Joshua Porten Galois field arithmetic unit for use within a processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328849A (en) * 1995-05-17 1996-12-13 Sgs Thomson Microelectron Ltd Computer and its operation
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
JP2000004265A (en) * 1998-06-12 2000-01-07 Nippon Hoso Kyokai <Nhk> Digital transmission equipment and reception equipment
JP2001060979A (en) * 1999-07-09 2001-03-06 Lsi Logic Corp Method and device for multilevel encoding of digital signal
US20040078411A1 (en) * 2002-10-22 2004-04-22 Joshua Porten Galois field arithmetic unit for use within a processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011096254A (en) * 2009-10-30 2011-05-12 Arm Ltd Apparatus and method for performing multiplication accumulation operation
JP2016526220A (en) * 2013-05-24 2016-09-01 コーヒレント・ロジックス・インコーポレーテッド Memory network processor having a programmable optimization

Also Published As

Publication number Publication date
EP1779256A2 (en) 2007-05-02
EP1779256A4 (en) 2007-11-28
KR20070055487A (en) 2007-05-30
CA2572954A1 (en) 2006-02-16
WO2006017339A2 (en) 2006-02-16
WO2006017339A3 (en) 2006-04-06

Similar Documents

Publication Publication Date Title
CA2573292C (en) Programmable processor and method with wide operations
US6922716B2 (en) Method and apparatus for vector processing
Lodi et al. A VLIW processor with reconfigurable instruction set for embedded applications
JP2932963B2 (en) Data processor and method with an efficient bit move capability
US7340562B2 (en) Cache for instruction set architecture
EP1692613B1 (en) A data processing apparatus and method for moving data between registers and memory
JP4927841B2 (en) Programmable digital signal processor having a clustered simd micro-architecture including a complex short multiplier and independent vector load unit
Hauck et al. The Chimaera reconfigurable functional unit
US7689811B2 (en) Method and apparatus for constant generation in SIMD processing
US8443170B2 (en) Apparatus and method for performing SIMD multiply-accumulate operations
US20020002573A1 (en) Processor with reconfigurable arithmetic data path
JP5080469B2 (en) Programmable digital signal processor including a clustered simd microarchitecture configured to execute complex vector instructions
Hameed et al. Understanding sources of inefficiency in general-purpose chips
US6826674B1 (en) Program product and data processor
US8918445B2 (en) Circuit which performs split precision, signed/unsigned, fixed and floating point, real and complex multiplication
Renaudin et al. ASPRO-216: a standard-cell QDI 16-bit RISC asynchronous microprocessor
Tillich et al. Instruction set extensions for efficient AES implementation on 32-bit processors
Su et al. Saving power in the control path of embedded processors
JP5866128B2 (en) Arithmetic processor
JP3711422B2 (en) Information processing circuit
CN100512075C (en) Digital signal processor, device and system using the digital signal processor
JP4727207B2 (en) Data processing apparatus and method for performing data processing operations on data elements in parallel
US9557994B2 (en) Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
EP0994413A2 (en) Data processing system with conditional execution of extended compound instructions
US6745319B1 (en) Microprocessor with instructions for shuffling and dealing data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080704

A977 Report on retrieval

Effective date: 20110621

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Effective date: 20110725

Free format text: JAPANESE INTERMEDIATE CODE: A131

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111220