From WikiChip
Editing ambric/am2000

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

This page supports semantic in-text annotations (e.g. "[[Is specified as::World Heritage Site]]") to build structured and queryable content provided by Semantic MediaWiki. For a comprehensive description on how to use annotations or the #ask parser function, please have a look at the getting started, in-text annotation, or inline queries help pages.

Latest revision Your text
Line 9: Line 9:
 
| first announced  = October 10, 2006
 
| first announced  = October 10, 2006
 
| first launched    = December, 2006
 
| first launched    = December, 2006
| production start  = 2007
+
| production start  =  
| production end    = 2013
+
| production end    =  
 
| arch              = Many-core 32-bit microprocessor
 
| arch              = Many-core 32-bit microprocessor
 
| isa              =  
 
| isa              =  
Line 18: Line 18:
 
| tech              = CMOS
 
| tech              = CMOS
 
| clock min        = 1 MHz
 
| clock min        = 1 MHz
| clock max        = 350 Mhz
+
| clock max        = 333 Mhz
 
| package          = FCBGA-868
 
| package          = FCBGA-868
 
| package 2        = FCBGA-896
 
| package 2        = FCBGA-896
Line 32: Line 32:
  
 
== Members ==
 
== Members ==
 +
 
<!-- NOTE:  
 
<!-- NOTE:  
 
           This table is generated automatically from the data in the actual articles.
 
           This table is generated automatically from the data in the actual articles.
Line 57: Line 58:
 
{{table count|col=5|ask=[[Category:microprocessor models by ambric]][[instance of::microprocessor]][[microprocessor family::Am2000]]}}
 
{{table count|col=5|ask=[[Category:microprocessor models by ambric]][[instance of::microprocessor]][[microprocessor family::Am2000]]}}
 
</table>
 
</table>
 
== Die Shot ==
 
 
=== {{\|Am2045}} ===
 
{|
 
| [[File:Am2045 die shot.png]]  || [[File:Am2045 die shot (annotated).png]]
 
|}
 
  
 
== Architecture ==
 
== Architecture ==
 
Ambric's Am2000 models are all made of small homogeneous units called '''Brics'''. The exact number of brics depends on the model.
 
Ambric's Am2000 models are all made of small homogeneous units called '''Brics'''. The exact number of brics depends on the model.
  
=== Communication ===
+
=== communication ===
 
[[File:ambric neighbor channels.png|thumb|right|350px|'''Neighbor Channels''']]
 
[[File:ambric neighbor channels.png|thumb|right|350px|'''Neighbor Channels''']]
Ambric's architecture makes heavy use of '''Ambric Channels''' - self-synchronized and asynchronous interconnects that carry both data and instructions across the chip. Channels are a strong point of this architecture as all data goes through channels including [[memory]] and the pipeline itself. Channel interconnects can be loosely divided into three categories:  
+
Ambric's architecture makes heavy use of channels - synchronized interconnects that carry both data and instructions in a [[FIFO]]. Channels are a strong point of this architecture as all data goes through channels including [[memory]] and [[registers]]. Channel interconnects can be loosely divided into three categories:  
 
 
 
 
* '''Intra-Bric Channels''': internal channels that span no loner than a single bric. All basic communication utilizes these channels. They are dynamically configured by the instructions themselves. The datapath itself is also an Ambric channel.
 
  
 +
* '''Intra-Bric Channels''': internal channels that span no loner than a single bric. All basic communication utilizes these channels. They are dynamically configured by the instructions themselves. Typical ALU [[register]]/[[memory]] utilizes these channels.
  
 
* '''Neighbor Channels''': channels spanning between two CU units. These channels only go to an adjacent control unit (i.e. directly North, South, East, or West). Only one channel is aviable in each direction. Channels are {{arch|32}} wide operating at up to 9.6 GT/s.
 
* '''Neighbor Channels''': channels spanning between two CU units. These channels only go to an adjacent control unit (i.e. directly North, South, East, or West). Only one channel is aviable in each direction. Channels are {{arch|32}} wide operating at up to 9.6 GT/s.
  
 
+
* '''Inter-Bric Channels''': also known as distanced bric channels, are communication channels that operate globally between any two brics.
* '''Inter-Bric Channels''': also known as distanced bric channels, are communication channels that operate globally between any two brics. Switches are located at each of the control units (CUs). Routes are configured statically.
 
 
 
 
 
An '''Ambric Channels''' can be more concisely define as a chain of '''Ambric registers'''. Ambric registers are simple {{arch|32}} storage units with both data in port and data out port as well two control signals - ''valid'' and ''accept''. The two control signals allow registers to be self-synchronized and operate asynchronously. The accept signal is asserted when input can be written. The valid signal is asserted, when it has output available. Assertion of both signals would indicate transfer. This setup allows input and output to also operate at different clock rates to accommodate different workloads.
 
 
 
[[File:ambric channel.png|650px]]
 
{{clear}}
 
 
 
=== Brics ===
 
[[File:ambric bric.png|left]]
 
'''Bric''' is the fundamental building block. Each block contains:
 
 
 
* 2x '''Compute Units''' (CU)
 
::Each Compute Unit contains 2x '''SRD''' {{arch|32}} CPUs and 2x '''SR''' {{arch|32}} CPUs. Channel interconnects are also handled in this area.
 
 
 
 
 
* 2x '''RAM Units''' (RU)
 
::Each RAM Unit contains 4 2 kB RAM banks, each independently accessed via a dynamically programmed channel operating in FIFO and random access modes via the RU engines. RUs are used for temporary data and buffering largely used for local operations. On-die storage is kept simple, fast, and efficient.
 
 
 
{{clear}}
 
 
 
==== SR Processor ====
 
[[File:ambric sr core instruction.png|right]]
 
The '''SR''' ('''Streaming [[RISC]]''') Processor is a {{arch|32}} processor for fast simple operations. The datapath itself is a self-synchronizing Ambric Channel with 3-stages. This processor can handle complex [[addressing]], [[serialization]] and [[deserialization]].  Each processor has 2 input channels and 1 output channel - all of which are controlled by the instructions themselves. Additionally, the processor includes:
 
 
 
* 1x ALU - 1x {{arch|32}} OR 2x {{arch|16}} operations
 
* 8x [[general-purpose registers|General Purpose]] [[register|Registers]]
 
* {{arch|16}} instruction word size
 
* 64 word local code/data RAM
 
 
 
[[File:ambric sr core.png]]
 
{{clear}}
 
==== SRD Processor ====
 
[[File:ambric srd core instruction.png|right]]
 
The '''SRD''' ('''Streaming [[RISC]] with [[DSP]] extensions''') Processor is a {{arch|32}} processor for more complex operations that may benefit from [[instruction-level parallelism]] and iterative algorithms. The datapath itself is a self-synchronizing Ambric Channel with 3-stages. Each processor has 2 input channels and 1 output channel - all of which are controlled by the instructions themselves. Additionally, the processor includes:
 
 
 
* 3x ALU
 
** 2x ALU in serial
 
*** 1x {{arch|32}} OR 2x {{arch|16}} OR 4x {{arch|8}} operations
 
** 1x ALU in parallel
 
*** 1x {{arch|32}} * {{arch|8}} OR 2x {{arch|16}} * {{arch|8}}, 1x {{arch|64}} [[accumulator]], etc..
 
 
 
[[File:ambric srd core.png]]
 
{{clear}}
 
  
 
== Programming ==  
 
== Programming ==  
[[File:Am2045 Software Development Board.png|thumb|right|Software Development Board]]
+
{{empty section}}
Programming may be done in [[assembly]] or in {{\\|aJava}}. {{\\|aJava}} is a [[strict subset]] of [[Java]]. While it excludes the Java standard library, Ambric did offer various libraries for performing various video and imaging processing (e.g. [[AVC-Intra]], [[MPEG-2]]. [[H.264]], [[JPEG 2000]], [[DVCPRO HD]]).
 
 
 
Ambric employed a Structural Object Programming Model. Every object is strictly encapsulated. Because the large number of cores each chip offers, objects are treated as independent programs running concurrently. Objects exchange data and control only through structures called '''Ambric channels''' which are both self-synchronizing and operate asynchronously.
 
 
 
=== Tools ===
 
[[File:Am2045 Integrated Development Board.png|thumb|right|Integrated Development Board]]
 
* Am2045 Software Development Board
 
** 1x production {{\|Am2045}} + [[SDRAM]]
 
** [[PCI Express]] interface to host
 
** For rapid software development
 
 
 
 
 
* Am2045 Integrated Development Board
 
** 1x production {{\|Am2045}} + [[SDRAM]]
 
** 4x {{arch|32}} [[GPIO]] connectors, [[USB]]
 
** Stand-alone capable  / PCIe slot
 
** Serial Flash
 
** For embedded development
 
  
 
== Applications ==
 
== Applications ==
 
The Am2000 has been used for high-definition video processing, medical imaging devices, high performance network processing, image recognition, and various military applications such as drones.
 
The Am2000 has been used for high-definition video processing, medical imaging devices, high performance network processing, image recognition, and various military applications such as drones.
 
== Documents ==
 
* [[:File:The Ambric Processor Array.pdf|The Ambric Processor Array]], 2006
 
* [[:File:TeraOPS Hardware A New Massively-Parallel MIMD Computing Fabric IC.pdf|TeraOPS Hardware A New Massively-Parallel MIMD Computing Fabric IC]], 2006
 
* [[:File:A Structural Object Programming Model, Architecture, Chip and Tools for Reconfigurable Computing.pdf|A Structural Object Programming Model, Architecture, Chip and Tools for Reconfigurable Computing]], 2007
 
* [[:File:Ambric University Intro.pdf|Ambric University Intro]], 2008
 
 
=== Papers ===
 
* Butts, Michael, Anthony Mark Jones, and Paul Wasson. "[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4297243&isnumber=4297232 A structural object programming model, architecture, chip and tools for reconfigurable computing.]" Proceedings of IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM). 2007.
 
* Qasim, Muhammad, and Chaudhry Majid Ali. "[http://hh.diva-portal.org/smash/get/diva2:238878/FULLTEXT01.pdf Signal Processing on Ambric Processor Array: Baseband processing in radio base stations.]" (2008). Halmstad University.
 
* Biedermann, Alexander. "[http://www.vlsi.informatik.tu-darmstadt.de/staff/biedermann/Diplomarbeit-Ausarbeitung.pdf Theoretische und algorithmische Evaluation eines massiv-parallelen Multiprozessorarrays der Ambric Am2000-Familie unter Verwendung von Videoalgorithmen]. Diss. 2008.
 
  
 
== See also ==
 
== See also ==
 
* [[massively parallel processor array]]
 
* [[massively parallel processor array]]
 
* {{rapport|Kilocore}}
 
* {{rapport|Kilocore}}

Please note that all contributions to WikiChip may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see WikiChip:Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)
Facts about "Am2000 - Ambric"
designerAmbric +
first announcedOctober 10, 2006 +
first launchedDecember 2006 +
full page nameambric/am2000 +
instance ofmicroprocessor family +
main designerAmbric +
manufacturerTSMC +
nameAmbric Am2000 +
packageFCBGA-868 + and FCBGA-896 +
process130 nm (0.13 μm, 1.3e-4 mm) +
technologyCMOS +
word size32 bit (4 octets, 8 nibbles) +