<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ajdavis7</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ajdavis7"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ajdavis7"/>
	<updated>2026-07-13T23:04:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62712</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62712"/>
		<updated>2012-04-25T04:30:41Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc.) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intricacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less constraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overall increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifically, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multiple terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# IBM&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 4)''' What is meant by &amp;quot;SoCs?&amp;quot;&lt;br /&gt;
# Scalability of Connections&lt;br /&gt;
# System on a Chip&lt;br /&gt;
# Speeds over Capacities&lt;br /&gt;
# Shared (memory) on a Cable&lt;br /&gt;
&lt;br /&gt;
'''Question 5)''' What is meant by &amp;quot;NoCs?&amp;quot;&lt;br /&gt;
# No Capacitance Effects&lt;br /&gt;
# Network on a Chip&lt;br /&gt;
# Network Obligation of Channel&lt;br /&gt;
# Notification of Cache Sharing&lt;br /&gt;
&lt;br /&gt;
'''Question 6)''' What is the name of a discrete processing unit used in the construction of certain topologies?&lt;br /&gt;
# Channel&lt;br /&gt;
# Router&lt;br /&gt;
# Sentry&lt;br /&gt;
# Tile&lt;br /&gt;
&lt;br /&gt;
'''Question 7)''' Which choice best characterizes the number of cores in a &amp;quot;medium scale&amp;quot; system?&lt;br /&gt;
# Around 2-8 cores&lt;br /&gt;
# Around 8-16 cores&lt;br /&gt;
# Around 32-64 cores&lt;br /&gt;
# Around 64-128 cores&lt;br /&gt;
&lt;br /&gt;
'''Question 8)''' What is a major prohibitive factor of using butterfly topologies in commercial SoC products for a large number of cores?&lt;br /&gt;
# High number of channels&lt;br /&gt;
# High link bandwidth&lt;br /&gt;
# High latency on cache misses&lt;br /&gt;
# Low return on investment&lt;br /&gt;
&lt;br /&gt;
'''Question 9)''' Which of these is the most major factor in limiting physical size in a SoC design?&lt;br /&gt;
# Electrical characteristics (capacitance, noise, clock skew, current, voltage)&lt;br /&gt;
# Process limitations (required equipment, equipment calibration, material purity)&lt;br /&gt;
# Power density (process size, material thermal characteristics, number of substrate layers)&lt;br /&gt;
# All of the above have similar magnitude in limitation considerations&lt;br /&gt;
&lt;br /&gt;
'''Question 10)''' Which is the best reason CMPs require special programming libraries for best performance?&lt;br /&gt;
# Proprietary code paths for vendor lock-out&lt;br /&gt;
# Allow NoC to more effectively coordinate all cores&lt;br /&gt;
# Implementation is incompatible with operating system&lt;br /&gt;
# Attempt to create new de facto programming standards&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
'''Answers:''' In numerical question order: 3-4-1-2-2-4-2-1-4-2&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
''[http://www.cesr.ncsu.edu/solihin/Main.html Fundamentals of Parallel Computer Architecture]'' by Yan Solihin.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62711</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62711"/>
		<updated>2012-04-25T04:27:59Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc.) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intricacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less constraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overall increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifically, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multiple terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# IBM&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 4)''' What is meant by &amp;quot;SoCs?&amp;quot;&lt;br /&gt;
# Scalability of Connections&lt;br /&gt;
# System on a Chip&lt;br /&gt;
# Speeds over Capacities&lt;br /&gt;
# Shared (memory) on a Cable&lt;br /&gt;
&lt;br /&gt;
'''Question 5)''' What is meant by &amp;quot;NoCs?&amp;quot;&lt;br /&gt;
# No Capacitance Effects&lt;br /&gt;
# Network on a Chip&lt;br /&gt;
# Network Obligation of Channel&lt;br /&gt;
# Notification of Cache Sharing&lt;br /&gt;
&lt;br /&gt;
'''Question 6)''' What is the name of a discrete processing unit used in the construction of certain topologies?&lt;br /&gt;
# Channel&lt;br /&gt;
# Router&lt;br /&gt;
# Sentry&lt;br /&gt;
# Tile&lt;br /&gt;
&lt;br /&gt;
'''Question 7)''' Which choice best characterizes the number of cores in a &amp;quot;medium scale&amp;quot; system?&lt;br /&gt;
# Around 2-8 cores&lt;br /&gt;
# Around 8-16 cores&lt;br /&gt;
# Around 32-64 cores&lt;br /&gt;
# Around 64-128 cores&lt;br /&gt;
&lt;br /&gt;
'''Question 8)''' What is a major prohibitive factor of using butterfly topologies in commercial SoC products for a large number of cores?&lt;br /&gt;
# High number of channels&lt;br /&gt;
# High link bandwidth&lt;br /&gt;
# High latency on cache misses&lt;br /&gt;
# Low return on investment&lt;br /&gt;
&lt;br /&gt;
'''Question 9)''' Which of these is the most major factor in limiting physical size in a SoC design?&lt;br /&gt;
# Electrical characteristics (capacitance, noise, clock skew, current, voltage)&lt;br /&gt;
# Process limitations (required equipment, equipment calibration, material purity)&lt;br /&gt;
# Power density (process size, material thermal characteristics, number of substrate layers)&lt;br /&gt;
# All of the above have similar magnitude in limitation considerations&lt;br /&gt;
&lt;br /&gt;
'''Question 10)''' Which is the best reason CMPs require special programming libraries for best performance?&lt;br /&gt;
# Proprietary code paths for vendor lock-out&lt;br /&gt;
# Allow NoC to more effectively coordinate all cores&lt;br /&gt;
# Implementation is incompatible with operating system&lt;br /&gt;
# Attempt to create new de facto programming standards&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
'''Answers:''' In numerical question order: 3-4-1-2-2-4-2-1-4-2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62710</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62710"/>
		<updated>2012-04-25T04:14:46Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Quiz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# IBM&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 4)''' What is meant by &amp;quot;SoCs?&amp;quot;&lt;br /&gt;
# Scalability of Connections&lt;br /&gt;
# System on a Chip&lt;br /&gt;
# Speeds over Capacities&lt;br /&gt;
# Shared (memory) on a Cable&lt;br /&gt;
&lt;br /&gt;
'''Question 5)''' What is meant by &amp;quot;NoCs?&amp;quot;&lt;br /&gt;
# No Capacitance Effects&lt;br /&gt;
# Network on a Chip&lt;br /&gt;
# Network Obligation of Channel&lt;br /&gt;
# Notification of Cache Sharing&lt;br /&gt;
&lt;br /&gt;
'''Question 6)''' What is the name of a discrete processing unit used in the construction of certain topologies?&lt;br /&gt;
# Channel&lt;br /&gt;
# Router&lt;br /&gt;
# Sentry&lt;br /&gt;
# Tile&lt;br /&gt;
&lt;br /&gt;
'''Question 7)''' Which choice best characterizes the number of cores in a &amp;quot;medium scale&amp;quot; system?&lt;br /&gt;
# Around 2-8 cores&lt;br /&gt;
# Around 8-16 cores&lt;br /&gt;
# Around 32-64 cores&lt;br /&gt;
# Around 64-128 cores&lt;br /&gt;
&lt;br /&gt;
'''Question 8)''' What is a major prohibitive factor of using butterfly topologies in commercial SoC products for a large number of cores?&lt;br /&gt;
# High number of channels&lt;br /&gt;
# High link bandwidth&lt;br /&gt;
# High latency on cache misses&lt;br /&gt;
# Low return on investment&lt;br /&gt;
&lt;br /&gt;
'''Question 9)''' Which of these is the most major factor in limiting physical size in a SoC design?&lt;br /&gt;
# Electrical characteristics (capacitance, noise, clock skew, current, voltage)&lt;br /&gt;
# Process limitations (required equipment, equipment calibration, material purity)&lt;br /&gt;
# Power density (process size, material thermal characteristics, number of substrate layers)&lt;br /&gt;
# All of the above have similar magnitude in limitation considerations&lt;br /&gt;
&lt;br /&gt;
'''Question 10)''' Which is the best reason CMPs require special programming libraries for best performance?&lt;br /&gt;
# Proprietary code paths for vendor lock-out&lt;br /&gt;
# Allow NoC to more effectively coordinate all cores&lt;br /&gt;
# Implementation is incompatible with operating system&lt;br /&gt;
# Attempt to create new de facto programming standards&lt;br /&gt;
&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
'''Answers:''' In numerical question order: 3-4-1-2-2-4-2-1-4-2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62709</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62709"/>
		<updated>2012-04-25T04:13:43Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Quiz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# IBM&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 4)''' What is meant by &amp;quot;SoCs?&amp;quot;&lt;br /&gt;
# Scalability of Connections&lt;br /&gt;
# System on a Chip&lt;br /&gt;
# Speeds over Capacities&lt;br /&gt;
# Shared (memory) on a Cable&lt;br /&gt;
&lt;br /&gt;
'''Question 5)''' What is meant by &amp;quot;NoCs?&amp;quot;&lt;br /&gt;
# No Capacitance Effects&lt;br /&gt;
# Network on a Chip&lt;br /&gt;
# Network Obligation of Channel&lt;br /&gt;
# Notification of Cache Sharing&lt;br /&gt;
&lt;br /&gt;
'''Question 6)''' What is the name of a discrete processing unit used in the construction of certain topologies?&lt;br /&gt;
# Channel&lt;br /&gt;
# Router&lt;br /&gt;
# Sentry&lt;br /&gt;
# Tile&lt;br /&gt;
&lt;br /&gt;
'''Question 7)''' Which choice best characterizes the number of cores in a &amp;quot;medium scale&amp;quot; system?&lt;br /&gt;
# Around 2-8 cores&lt;br /&gt;
# Around 8-16 cores&lt;br /&gt;
# Around 32-64 cores&lt;br /&gt;
# Around 64-128 cores&lt;br /&gt;
&lt;br /&gt;
'''Question 8)''' What is a major prohibitive factor of using butterfly topologies in commercial SoC products for a large number of cores?&lt;br /&gt;
# High number of channels&lt;br /&gt;
# High link bandwidth&lt;br /&gt;
# High latency on cache misses&lt;br /&gt;
# Low return on investment&lt;br /&gt;
&lt;br /&gt;
'''Question 9)''' Which of these is the most major factor in limiting physical size in a SoC design?&lt;br /&gt;
# Electrical characteristics (capacitance, noise, clock skew, current, voltage)&lt;br /&gt;
# Process limitations (required equipment, equipment calibration, material purity)&lt;br /&gt;
# Power density (process size, material thermal characteristics, number of substrate layers)&lt;br /&gt;
# All of the above have similar magnitude in limitation considerations&lt;br /&gt;
&lt;br /&gt;
'''Question 10)''' Which is the best reason CMPs require special programming libraries for best performance?&lt;br /&gt;
# Proprietary code paths for vendor lock-out&lt;br /&gt;
# Allow NoC to more effectively coordinate all cores&lt;br /&gt;
# Implementation is incompatible with operating system&lt;br /&gt;
# Attempt to create new de facto programming standards&lt;br /&gt;
&lt;br /&gt;
'''Answers:''' In numerical question order: 3-4-1-2-2-4-2-1-4-2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62708</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62708"/>
		<updated>2012-04-25T04:11:43Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Quiz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# IBM&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 4)''' What is meant by &amp;quot;SoCs?&amp;quot;&lt;br /&gt;
# Scalability of Connections&lt;br /&gt;
# System on a Chip&lt;br /&gt;
# Speeds over Capacities&lt;br /&gt;
# Shared (memory) on a Cable&lt;br /&gt;
&lt;br /&gt;
'''Question 5)''' What is meant by &amp;quot;NoCs?&amp;quot;&lt;br /&gt;
# No Capacitance Effects&lt;br /&gt;
# Network on a Chip&lt;br /&gt;
# Network Obligation of Channel&lt;br /&gt;
# Notification of Cache Sharing&lt;br /&gt;
&lt;br /&gt;
'''Question 6)''' What is the name of a discrete processing unit used in the construction of certain topologies?&lt;br /&gt;
# Channel&lt;br /&gt;
# Router&lt;br /&gt;
# Sentry&lt;br /&gt;
# Tile&lt;br /&gt;
&lt;br /&gt;
'''Question 7)''' Which choice best characterizes the number of cores in a &amp;quot;medium scale&amp;quot; system?&lt;br /&gt;
# Around 2-8 cores&lt;br /&gt;
# Around 8-16 cores&lt;br /&gt;
# Around 32-64 cores&lt;br /&gt;
# Around 64-128 cores&lt;br /&gt;
&lt;br /&gt;
'''Question 8)''' What is a major prohibitive factor of using butterfly topologies in commercial SoC products for a large number of cores?&lt;br /&gt;
# High number of channels&lt;br /&gt;
# High link bandwidth&lt;br /&gt;
# High latency on cache misses&lt;br /&gt;
# Low return on investment&lt;br /&gt;
&lt;br /&gt;
'''Question 9)''' Which of these is the most major factor in limiting physical size in a SoC design?&lt;br /&gt;
# Electrical characteristics (capacitance, noise, clock skew, current, voltage)&lt;br /&gt;
# Process limitations (required equipment, equipment calibration, material purity)&lt;br /&gt;
# Power density (process size, material thermal characteristics, number of substrate layers)&lt;br /&gt;
# All of the above have similar magnitude in limitation considerations&lt;br /&gt;
&lt;br /&gt;
'''Question 10)''' Which is the best reason CMPs require special programming libraries for best performance?&lt;br /&gt;
# Proprietary code paths for vendor lock-out&lt;br /&gt;
# Allow NoC to more effectively coordinate all cores&lt;br /&gt;
# Implementation is incompatible with operating system&lt;br /&gt;
# Attempt to create new de facto programming standards&lt;br /&gt;
&lt;br /&gt;
'''Answers:'''&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62706</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62706"/>
		<updated>2012-04-25T04:03:55Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Quiz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# IBM&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 4)''' What is meant by &amp;quot;SoCs?&amp;quot;&lt;br /&gt;
# Scalability of Connections&lt;br /&gt;
# System on a Chip&lt;br /&gt;
# Speeds over Capacities&lt;br /&gt;
# Shared (memory) on a Cable&lt;br /&gt;
&lt;br /&gt;
'''Question 5)''' What is meant by &amp;quot;NoCs?&amp;quot;&lt;br /&gt;
# No Capacitance Effects&lt;br /&gt;
# Network on a Chip&lt;br /&gt;
# Network Obligation of Channel&lt;br /&gt;
# Notification of Cache Sharing&lt;br /&gt;
&lt;br /&gt;
'''Question 6)''' What is the name of a discrete processing unit used in the construction of certain topologies?&lt;br /&gt;
# Channel&lt;br /&gt;
# Router&lt;br /&gt;
# Sentry&lt;br /&gt;
# Tile&lt;br /&gt;
&lt;br /&gt;
'''Question 7)''' Which choice best characterizes the number of cores in a &amp;quot;medium scale&amp;quot; system?&lt;br /&gt;
# Around 2-8 cores&lt;br /&gt;
# Around 8-16 cores&lt;br /&gt;
# Around 32-64 cores&lt;br /&gt;
# Around 64-128 cores&lt;br /&gt;
&lt;br /&gt;
'''Question 8)''' What is a major prohibitive factor of using butterfly topologies in commercial SoC products for a large number of cores?&lt;br /&gt;
# High number of channels&lt;br /&gt;
# High link bandwidth&lt;br /&gt;
# High latency on cache misses&lt;br /&gt;
# Low return on investment&lt;br /&gt;
&lt;br /&gt;
'''Question 9)''' Which of these is the most major factor in limiting physical size in a SoC design?&lt;br /&gt;
# Electrical characteristics (capacitance, noise, clock skew, current, voltage)&lt;br /&gt;
# Process limitations (required equipment, equipment calibration, material purity)&lt;br /&gt;
# Power density (process size, material thermal characteristics, number of substrate layers)&lt;br /&gt;
# All of the above have similar magnitude in limitation considerations&lt;br /&gt;
&lt;br /&gt;
'''Question 10)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Answers:''' 3-4-1&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62705</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62705"/>
		<updated>2012-04-25T03:55:09Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Quiz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# IBM&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 4)''' What is meant by &amp;quot;SoCs?&amp;quot;&lt;br /&gt;
# Scalability of Connections&lt;br /&gt;
# System on a Chip&lt;br /&gt;
# Speeds over Capacities&lt;br /&gt;
# Shared (memory) on a Cable&lt;br /&gt;
&lt;br /&gt;
'''Question 5)''' What is meant by &amp;quot;NoCs?&amp;quot;&lt;br /&gt;
# No Capacitance Effects&lt;br /&gt;
# Network on a Chip&lt;br /&gt;
# Network Obligation of Channel&lt;br /&gt;
# Notification of Cache Sharing&lt;br /&gt;
&lt;br /&gt;
'''Question 6)''' What is the name of a discrete processing unit used in the construction of certain topologies?&lt;br /&gt;
# Channel&lt;br /&gt;
# Router&lt;br /&gt;
# Sentry&lt;br /&gt;
# Tile&lt;br /&gt;
&lt;br /&gt;
'''Question 7)''' Which choice best characterizes the number of cores in a &amp;quot;medium scale&amp;quot; system?&lt;br /&gt;
# Around 2-8 cores&lt;br /&gt;
# Around 8-16 cores&lt;br /&gt;
# Around 32-64 cores&lt;br /&gt;
# Around 64-128 cores&lt;br /&gt;
&lt;br /&gt;
'''Question 8)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 9)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 10)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Answers:''' 3-4-1&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62704</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62704"/>
		<updated>2012-04-25T03:49:43Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Quiz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
===Questions===&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# IBM&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 4)''' What is meant by &amp;quot;SoCs?&amp;quot;&lt;br /&gt;
# Scalability of Connections&lt;br /&gt;
# System on a Chip&lt;br /&gt;
# Speeds over Capacities&lt;br /&gt;
# Shared (memory) on a Cable&lt;br /&gt;
&lt;br /&gt;
'''Question 5)''' What is meant by &amp;quot;NoCs?&amp;quot;&lt;br /&gt;
# No Capacitance Effects&lt;br /&gt;
# Network on a Chip&lt;br /&gt;
# Network Obligation of Channel&lt;br /&gt;
# Notification of Cache Sharing&lt;br /&gt;
&lt;br /&gt;
'''Question 6)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 7)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 8)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 9)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Question 10)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
'''Answers:''' 3-4-1&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62703</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62703"/>
		<updated>2012-04-25T03:42:04Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Quiz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
'''Question 1)''' What is another name for the physical substrate of an integrated circuit?&lt;br /&gt;
# Fabric&lt;br /&gt;
# Canvas&lt;br /&gt;
# Die&lt;br /&gt;
# Matrix&lt;br /&gt;
&lt;br /&gt;
'''Question 2)''' Which of the below companies are ''not'' actively involved in SoC design?&lt;br /&gt;
# Altera&lt;br /&gt;
# ARM&lt;br /&gt;
# Die&lt;br /&gt;
# Cray&lt;br /&gt;
&lt;br /&gt;
'''Question 3)''' Why are mesh topologies generally preferred over ring topologies?&lt;br /&gt;
# Lower latency&lt;br /&gt;
# Cheaper to implement&lt;br /&gt;
# Lower power consumption&lt;br /&gt;
# Better reliability&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62702</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62702"/>
		<updated>2012-04-25T03:38:04Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Topologies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt; (circularly-connected mesh).&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62695</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62695"/>
		<updated>2012-04-25T03:24:10Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
Considering that the AMBA protocol was first published in 1996, it is obvious that the movement toward SoCs is technologically mature. The several competing topologies and technologies, coupled with on-going research and the search for the ultimate in performance and power reduction have led to an exciting amount of innovation in recent years. Meshes and crossbars seem to the scalability option of choice, especially as process sizes shrink which allow for more flexible scaling options.&lt;br /&gt;
&lt;br /&gt;
==Quiz==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62692</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62692"/>
		<updated>2012-04-25T03:10:14Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* ARM CoreLink Interconnect */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
The ARM CoreLink Interconnect is a highly flexible and configurable interconnection network specification that implements the [http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AMBA] (Advanced Microcontroller Bus Architecture) protocol. The AMBA protocol is &amp;quot;an open standard, on-chip interconnect specification for the connection and management of functional blocks in a System-on-Chip (SoC). It enables development of multi-processor designs with large numbers of controllers and peripherals.&amp;quot;&amp;lt;ref name=&amp;quot;ambadoc&amp;quot;&amp;gt;[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.amba/index.html AMBA] on the ARM Info Center.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The above are examples of modern actual realizations of SoC topologies. Some more examples&amp;lt;ref name=&amp;quot;wikicompetitors&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture#Competitors AMBA Competitors] on Wikipedia.&amp;lt;/ref&amp;gt; of realizations of SoCs include the Opencores [http://en.wikipedia.org/wiki/Wishbone_(computer_bus) Wishbone], [http://www.altera.com/literature/manual/mnl_avalon_spec.pdf Altera Avalon], and [http://en.wikipedia.org/wiki/CoreConnect IBM CoreConnect].&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62684</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62684"/>
		<updated>2012-04-25T02:13:01Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Modern Implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
===ARM CoreLink Interconnect===&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62683</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62683"/>
		<updated>2012-04-25T01:46:32Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Crossbar Switch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems. The IBM Cyclops64 architecture is an example of the implementation of this architecture&amp;lt;ref name=&amp;quot;cyclops64&amp;quot;&amp;gt;Zhang, Ying Ping. &amp;quot;[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1639301 A study of the on-chip interconnection network for the IBM Cyclops64 multi-core architecture]. April 2006. IEEE Xplore.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62682</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62682"/>
		<updated>2012-04-25T01:43:25Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Topologies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating [http://en.wikipedia.org/wiki/Network_topology networking topologies] on [http://en.wikipedia.org/wiki/System-on-a-Chip SoCs]. Specifically, designs need to be amenable to creation on a two-dimension [http://en.wikipedia.org/wiki/Die_(integrated_circuit) substrate], and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ring_network Ring topologies] can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mesh_networking 2D mesh networks] are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;[http://en.wikipedia.org/wiki/CPU_power_dissipation power problem]&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased [http://en.wikipedia.org/wiki/Crossbar_switch crossbar] complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of [http://en.wikipedia.org/wiki/Multi-core_(computing) CMPs], this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62681</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62681"/>
		<updated>2012-04-25T01:38:16Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors [http://en.wikipedia.org/wiki/Shared_memory shared-memory] arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where [http://en.wikipedia.org/wiki/Multiprocessing many cores] are part of the same die while allowing for the performance gains possible with [http://en.wikipedia.org/wiki/Computer_network interconnections]. Recently there has been more research into these [http://en.wikipedia.org/wiki/Network_On_Chip on-chip interconnects], and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of CMPs, this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62680</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62680"/>
		<updated>2012-04-25T01:35:16Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Topologies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
===Crossbar Switch===&lt;br /&gt;
A crossbar switch topology uses a bus arrangement with the bus lines physically perpendicular to each other and whose intersections are connected or disconnected with a switch. In the case of CMPs, this switch is a transistor or, depending on the desired characteristics of the system, a programmable fuse. Due to their ability to be [http://en.wikipedia.org/wiki/Multistage_interconnection_networks multi-staged]&amp;lt;ref name=&amp;quot;wikicrossbarsemi&amp;quot;&amp;gt;&amp;quot;[http://en.wikipedia.org/wiki/Crossbar_switch#Semiconductor Crossbar switch].&amp;quot; Wikipedia. Last accessed April 24, 2012.&amp;lt;/ref&amp;gt;, these topologies lend themselves to being used for memory in large-scale systems.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62675</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62675"/>
		<updated>2012-04-25T00:48:45Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Intel MIC and IOSF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
[[File:Intelpic.png|frame|Intel's concept for SoC integration]]&lt;br /&gt;
&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt; These cores would communicate using a Message Parsing Interface. Further, to connect these cores, there is the Intel On-Chip System Fabric, which is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62674</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62674"/>
		<updated>2012-04-25T00:44:57Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Intel MIC and IOSF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Intelpic.png]]&lt;br /&gt;
&lt;br /&gt;
The Intel On-Chip System Fabric is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Intelpic.png&amp;diff=62673</id>
		<title>File:Intelpic.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Intelpic.png&amp;diff=62673"/>
		<updated>2012-04-25T00:44:08Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: ''from'' Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''from'' Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62672</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62672"/>
		<updated>2012-04-25T00:43:06Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Intel MIC and IOSF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
One part of Intel's efforts in the multiprocessor research realm revolves its Many Integrated Cores project&amp;lt;ref name=&amp;quot;intelmic&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://chipdesignmag.com/sld/blog/2011/09/22/proprietary-on-chip-connections-yield-to-noc-designs/ Proprietary On-Chip Connections Yield To NoC Designs]&amp;quot; System-Level Design Community Blog. September 22, 2011.&amp;lt;ref/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Intel On-Chip System Fabric is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, John. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62671</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62671"/>
		<updated>2012-04-25T00:37:19Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Intel MIC and IOSF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Intel On-Chip System Fabric is a proprietary chassis for its popular Atom computing platform&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, J. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;. The architecture of the IOSF lends itself to communication with traditional PCI buses, making it a viable technology for use in backwards-compatible general purpose computers. Additionally, through numerous licensing agreements, Intel has acquired the use of a wide variety of devices from graphics to modems and Wi-Fi Ethernet adapters. Coupled with the IOSF, conceivably entire computing platforms (SoCs) could be made at low cost and small footprint.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62670</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62670"/>
		<updated>2012-04-25T00:31:43Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Intel MIC and IOSF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;Blyler, J. &amp;quot;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;quot; Semiconductor IP Blog. August 26, 2011.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62669</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62669"/>
		<updated>2012-04-25T00:31:10Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Intel MIC and ISOF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and IOSF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;inteliosf&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Blyler, J. &amp;quot;Intel Challenges ARM with IP and Interconnect Strategy&amp;quot; Semiconductor IP Blog. August 26, 2011.]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62664</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62664"/>
		<updated>2012-04-24T04:29:29Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Tilera Tile Processor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes. These are physically organized (as opposed to logically organized) due to design considerations when scaling and laying out new designs.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62663</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62663"/>
		<updated>2012-04-24T04:27:11Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Tilera Tile Processor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries (both POSIX threads and iLib), which fully leverage the processing capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62662</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62662"/>
		<updated>2012-04-24T04:26:30Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Tilera Tile Processor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. The Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes.&lt;br /&gt;
&lt;br /&gt;
Each tile of the Tile Processor is its own self-contained processor and can effectively function by itself; multiple processors can be combined to form an SMP system. The Tile Processor can be further enhanced by using its custom C language-based programming libraries, which fully leverage the processoring capabilities of the CMP.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62661</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62661"/>
		<updated>2012-04-24T04:23:11Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Tilera */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera Tile Processor===&lt;br /&gt;
Tilera is a fabless semiconductor company that has developed a &amp;quot;tile processor&amp;quot; whereby the fabrication of the multi-processor device is greatly simplified by the placement of processor &amp;quot;tiles&amp;quot; on the die. The technology behind this innovation is iMesh, which is the name of the on-chip interconnection technology used in the Tile Processor's architecture&amp;lt;ref name=&amp;quot;Tilera&amp;quot;&amp;gt;&amp;quot;On-Chip Interconnection Architecture of the Tile Processor,&amp;quot; Wentzlaff, et al. 2007. IEEE Xplore.&amp;lt;/ref&amp;gt;. THe Tile Processor is innovative due to its highly scalable implementation of an on-chip network that utilizes 2D meshes.&lt;br /&gt;
&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62660</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62660"/>
		<updated>2012-04-24T03:30:51Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera===&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62659</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62659"/>
		<updated>2012-04-24T02:32:25Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Flattened Butterfly */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
The flattened butterfly offers the benefits of a tree (less contraints on root-level bandwidth [Solihin 367]) as well as the ability to actually be mapped to a substrate, but because of node concentration&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt; the number of channels required for high scalability is cost- and validation-prohibitive.&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera===&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62658</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62658"/>
		<updated>2012-04-24T02:28:18Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Meshes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required. A potential solution to this &amp;quot;power problem&amp;quot; is to group cores together in what is called a concentrated mesh, but even that requires increased crossbar complexity&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera===&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62657</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62657"/>
		<updated>2012-04-24T02:20:43Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Meshes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
2D mesh networks are used when the scale of the network topology breaks into “larger-than-medium” scale. This is especially true when the dimensions are divisible by a factor two, as the benefit in the number of hops versus a traditional ring network can be tremendous.&lt;br /&gt;
&lt;br /&gt;
For example, in a worst-case scenario a sixteen-core multiprocessor would require eight hops to get to the farthest node. In a 2D mesh, however, creating a 4x4 grid guarantees that the maximum number of hops is six. Assuming random data distributed evenly among the cores, the expectation value (1/16 chance for each node) of the number of hops in a ring would be 3.6 (1/16*[0+1+2+3+... hops]), whereas the expectation value for the 2D mesh in minimal path would be 2.8. This benefit, though, comes at the necessary cost of increased power for the extra processing required.&lt;br /&gt;
&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera===&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62654</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62654"/>
		<updated>2012-04-24T02:06:34Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Rings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
Ring topologies can be effective when the “number of cores is still relatively small but is larger than what can be supported using a bus” [Solihin 409]. Such cases are considered to use “medium-scale” interconnection networks.&lt;br /&gt;
&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera===&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62451</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62451"/>
		<updated>2012-04-17T05:01:19Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Modern Implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
===Tilera===&lt;br /&gt;
===Intel MIC and ISOF===&lt;br /&gt;
&amp;lt;ref name=&amp;quot;intelisof&amp;quot;&amp;gt;[http://www.chipestimate.com/blogs/IPInsider/?p=295 Intel Challenges ARM with IP and Interconnect Strategy]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62449</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62449"/>
		<updated>2012-04-17T04:55:04Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Modern Implementations==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62447</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62447"/>
		<updated>2012-04-17T04:47:04Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Topologies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf Scalable On-Chip Interconnect Topologies]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62446</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62446"/>
		<updated>2012-04-17T04:46:30Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Topologies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler, [[http://www.cs.utexas.edu/~bgrot/docs/CMP-MSI_08.pdf]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62445</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62445"/>
		<updated>2012-04-17T04:46:07Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62442</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62442"/>
		<updated>2012-04-17T04:30:35Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The content of this article is under active development will be updated regularly until the resubmission deadline; please check again later.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62441</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62441"/>
		<updated>2012-04-17T04:27:44Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Scalability */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The full content of this article will be posted later today; please check again later.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
Scalability ties back to both energy and cost, but also to engineering constraints as well. Specifcally, the architecture needs to be sensitive to the power and heat requirements of the design, as well as the physical die size. Further, the design requires the ability to be fabricated predictably and within reasonable costs. To mitigate some of these factors, concentration of network interfaces can be employed, where a network interface is shared by multipe terminals. Efforts to scale more complicated topologies like the butterfly (into a &amp;quot;flattened&amp;quot; butterfly) have yielded promising results, but at the expense of too much energy expenditure&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62438</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62438"/>
		<updated>2012-04-17T04:19:36Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Energy Consumption */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The full content of this article will be posted later today; please check again later.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Considerations==&lt;br /&gt;
===Energy Consumption===&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement. Indeed, &amp;quot;on-chip network power has been estimated to consume up to 28% of total chip power&amp;quot; due to &amp;quot;channels, router fifos and router crossbar fabrics&amp;quot;&amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot; /&amp;gt;. Simple topologies use less power due to simpler routers, but the increased number of hops can lead to overal increased power consumption.&lt;br /&gt;
&lt;br /&gt;
===Scalability===&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62370</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62370"/>
		<updated>2012-04-17T02:49:52Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Energy Consumption */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The full content of this article will be posted later today; please check again later.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Energy Consumption==&lt;br /&gt;
Multi-processor SoCs require additional energy in order to operate the on-chip interconnection hardware like routers. Too, the links between components can introduce increased losses in regards to required voltages and physical arrangement.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62368</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62368"/>
		<updated>2012-04-17T02:46:05Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Topologies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The full content of this article will be posted later today; please check again later.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Rings===&lt;br /&gt;
===Meshes===&lt;br /&gt;
===Flattened Butterfly===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Energy Consumption==&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62367</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62367"/>
		<updated>2012-04-17T02:44:34Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The full content of this article will be posted later today; please check again later.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these on-chip interconnects, and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Topologies==&lt;br /&gt;
The intracacies of semiconductor design and layout afford many different kinds of possible layouts when creating networking topologies on SoCs. Specifically, designs need to be amenable to creation on a two-dimension substrate, and as such practically limits the use of some more advanced topologies like hypercubes &amp;lt;ref name=&amp;quot;GrotKeckler&amp;quot;&amp;gt;Grot and Keckler&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62358</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62358"/>
		<updated>2012-04-17T02:10:41Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
''The full content of this article will be posted later today; please check again later.''&lt;br /&gt;
&lt;br /&gt;
As the number of processors in multiple-processor systems increases, increasing consideration needs to be given to how those processors communicate. With current technology, for a small number of processors shared-memory arrangements are quite effective. However, as the number of processors increases contention for available resources (memory, bus time, etc) increases, negatively impacting performance of the system. However, keeping these processors all on the same physical piece of hardware is convenient and helps performance due to physical proximity. As such, it is desirable to design hardware where many cores are part of the same die while allowing for the performance gains possible with interconnections. Recently there has been more research into these “on-chip interconnects,” and this article will explore the state of those efforts.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62357</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62357"/>
		<updated>2012-04-17T02:03:10Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The full content of this article will be posted later today; please check again later.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62176</id>
		<title>CSC/ECE 506 Spring 2012/12b ad</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/12b_ad&amp;diff=62176"/>
		<updated>2012-04-16T00:38:42Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: Created page with &amp;quot;On-chip Interconnects  ==Introduction==   ==Summary==   ==See Also==   ==References== &amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On-chip Interconnects&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/3a_df&amp;diff=58986</id>
		<title>CSC/ECE 506 Spring 2012/3a df</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/3a_df&amp;diff=58986"/>
		<updated>2012-02-20T22:50:57Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Complex Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Patterns of Parallel Programming&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Computer programming has gone through several paradigm shifts in regards to how software is design and constructed. In more recent years with the advent of object-oriented programming, an effort was made by the &amp;quot;[http://en.wikipedia.org/wiki/Design_Patterns Gang of Four]&amp;quot; to categorize different arrangements and relationships between programming objects in terms of commonly used [http://en.wikipedia.org/wiki/Design_patterns design patterns]. In a similar vein, with recent advances in parallel programming and availability of hardware, there are several common designs that can be drawn from the vast amount of literature available. Although there exists no canonical text for parallel programing as there exists for object oriented programming, there is substantial overlap, which is presented here.&lt;br /&gt;
&lt;br /&gt;
Overall, programming patterns can be split into three categories of similar [http://en.wikipedia.org/wiki/Abstraction_(computer_science) abstraction]: intuitive, common, and complex, with each having involvement with architecture, design, and idioms.&amp;lt;ref name=&amp;quot;ortega&amp;quot;&amp;gt;Ortega-Arjona, Jorge Luis. Patterns for Parallel Software Design. Hoboken, NJ: John Wiley, 2010&amp;lt;/ref&amp;gt; An architectural pattern defines software organization, a design pattern is a refinement of an architectural pattern in regards to solving a particular pattern, and an idiom is a particular implementation of a design pattern in a programming language or framework. This chapter will focus on architectural and design patterns.&lt;br /&gt;
&lt;br /&gt;
==Intuitive Patterns==&lt;br /&gt;
Intuitive patterns are termed as such because even those with basic knowledge of parallel processes could create their design. They are obvious, straight-forward applications of parallel computing tasks, and their implementation and use are easily implemented even without specialized software packages or advanced [http://en.wikipedia.org/wiki/Algorithm algorithm] development.&lt;br /&gt;
===&amp;quot;Embarrassingly&amp;quot; Parallel===&lt;br /&gt;
Embarrassingly parallel patterns&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/patterns.ppt Parallel Programming Patterns] by Eun-Gyu Kim&amp;lt;/ref&amp;gt; are those in which the tasks to be performed are completely disparate. Specifically, these operations occur when the datasets of concern are able to be abstracted to a point where the resources are not in contention. Examples abound of this behavior in productivity programs like [http://en.wikipedia.org/wiki/Microsoft_Office Microsoft Word or Outlook], when a spell-check or auto-archive operation is in progress.&lt;br /&gt;
&lt;br /&gt;
===Replicable===&lt;br /&gt;
====Description====&lt;br /&gt;
The Replicable pattern comes from the fact that data available to all processes needs to be duplicated for use in other processes&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. This necessitates a reduction step where the results from all of the tasks is analyzed for the total final result. An application of this pattern could be in certain kinds of encryption algorithms where a set of data can be broken into &amp;quot;chunks&amp;quot; of a particular size, decrypted seperately, and joined back together at the end.&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-repl.png|center|thumb|400px|Replicable pattern, shown enlarged due to its centrality to other patterns]]&lt;br /&gt;
====Example====&lt;br /&gt;
Because the Replicable pattern is so important to subsequent patterns, a fully developed example using C and OpenMP (mentioned later in this chapter) is provided [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/3a_df#Frameworks below].&lt;br /&gt;
=====Code Listing=====&lt;br /&gt;
&amp;lt;pre&amp;gt;// This code example for the Replicable pattern spawns four threads which copy&lt;br /&gt;
// the data and proceed to reverse it and place it back into a global results&lt;br /&gt;
// array. Tested in Microsoft Visual Studio 2010 with /openmp and /TC compile options&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;memory.h&amp;gt;&lt;br /&gt;
#include &amp;lt;omp.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define CHUNK_SIZE 4&lt;br /&gt;
&lt;br /&gt;
void OutputData(char *pArray, int size);&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	int i, j;&lt;br /&gt;
	char temp;&lt;br /&gt;
	char *localData;&lt;br /&gt;
	const char globalData[] = &lt;br /&gt;
		{ 3,  2,  1,  0,&lt;br /&gt;
		  7,  6,  5,  4,&lt;br /&gt;
		 11, 10,  9,  8,&lt;br /&gt;
		 15, 14, 13, 12 };&lt;br /&gt;
	char globalResult[CHUNK_SIZE*CHUNK_SIZE];&lt;br /&gt;
&lt;br /&gt;
	// Setup and report&lt;br /&gt;
	omp_set_nested(1);&lt;br /&gt;
	omp_set_num_threads(4);&lt;br /&gt;
	printf(&amp;quot;Data set: &amp;quot;); OutputData(globalData, CHUNK_SIZE*CHUNK_SIZE); printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;Running Replicable parallel section...\n&amp;quot;);&lt;br /&gt;
	#pragma omp parallel for private(i,j,localData) schedule(static)&lt;br /&gt;
	for(i = 0; i &amp;lt; CHUNK_SIZE; i++)&lt;br /&gt;
	{&lt;br /&gt;
		// Replicate data for local use&lt;br /&gt;
		localData = (char *)malloc(sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
		memcpy(localData, (char *)(globalData+i*CHUNK_SIZE), sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
&lt;br /&gt;
		// Reverse the chunk&lt;br /&gt;
		for(j = 0; j &amp;lt; CHUNK_SIZE/2; j++)&lt;br /&gt;
		{&lt;br /&gt;
			temp = localData[CHUNK_SIZE - j - 1];&lt;br /&gt;
			localData[CHUNK_SIZE - j - 1] = localData[j];&lt;br /&gt;
			localData[j] = temp;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Merge the results back into the global result and clean up&lt;br /&gt;
		memcpy((char *)(globalResult+i*CHUNK_SIZE), localData, sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
		free(localData);&lt;br /&gt;
		printf(&amp;quot;-&amp;gt; Merged result in thread %d/%d\n&amp;quot;, omp_get_thread_num()+1, omp_get_num_threads());&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Output the results of the parallel section&lt;br /&gt;
	printf(&amp;quot;Results: &amp;quot;); OutputData(globalResult, CHUNK_SIZE*CHUNK_SIZE); printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Convenience method for reporting the results&lt;br /&gt;
void OutputData(const char *pArray, int size)&lt;br /&gt;
{&lt;br /&gt;
	int i;&lt;br /&gt;
	for(i = 0; i &amp;lt; size; i++) printf(&amp;quot;%d,&amp;quot;, pArray[i]);&lt;br /&gt;
	printf(&amp;quot;\b &amp;quot;);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Results=====&lt;br /&gt;
Execution of this compiled program in the Microsoft Windows 7 operating system yielded the following output. Notice how the threads actually executed out of order, and that the final output is still correct as the ordered list of numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Data set: 3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12&lt;br /&gt;
Running Replicable parallel section...&lt;br /&gt;
-&amp;gt; Merged result in thread 1/4&lt;br /&gt;
-&amp;gt; Merged result in thread 2/4&lt;br /&gt;
-&amp;gt; Merged result in thread 4/4&lt;br /&gt;
-&amp;gt; Merged result in thread 3/4&lt;br /&gt;
Results: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15&lt;br /&gt;
Press any key to continue . . .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Repository===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-repo.png|right|thumb|200px|Repository pattern]]&lt;br /&gt;
The Repository pattern is related to the Replicable pattern in that they both act on a set of data and rely on the result&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. However, in the Repository pattern all data remains centralized while the computations themselves are performed remotely. In essence, the Repository pattern could be thought of as a continuous Replicable pattern where the global data set is much larger than can be simultaneously replicated. An excellent (simplified) example of this pattern would be distributed computing applications like [http://en.wikipedia.org/wiki/Folding@home Folding@Home] or [http://en.wikipedia.org/wiki/Seti@home SETI@Home], where a central server coordinates the calculations between all available processing units.&lt;br /&gt;
&lt;br /&gt;
===Divide and Conquer===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-dnc.png|right|thumb|none|200px|Divide &amp;amp; Conquer pattern]]The Divide and Conquer pattern is very similar to the Replicable pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. It involves taking a problem or task and splitting it into subproblems whereupon the required calculations are performed in parallel. A merging action still needs to occur to arrive at the solution, but the advantage of Divide and Conquer over Replicable is that the entire data set does not have to be communicated between the processing units -- only the required data for the computation does. Also, due to the degree of separation of computation and data, there is a non-negligible amount of overhead associated with determining the proper points at which the problems should be split and the overall allocation of resources.&lt;br /&gt;
&lt;br /&gt;
==Common Patterns==&lt;br /&gt;
Common patterns solve parallel design tasks that are readily understood and frequently encountered, but whose implementation could benefit from a more formalized and structured approach. Generally, common parallel patterns can be implemented manually or with a framework with a moderate degree of difficulty depending on the programmer's skill level.&lt;br /&gt;
===Pipeline===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-pipeline.png|right|thumb|200px|Pipeline pattern]]&lt;br /&gt;
The Pipeline pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a hybrid of the “Embarrassingly” Parallel pattern as well as the Replicable pattern. The best way to think of the Pipeline pattern is as an assembly line &amp;lt;ref name=”pipeline_wiki”&amp;gt;[http://en.wikipedia.org/wiki/Pipeline_(computing) Pipeline (computing)] on Wikipedia&amp;lt;/ref&amp;gt;. Suppose there are three steps in assembling a computer: un-packaging the internals, installing the internals, and performing a first-boot diagnostic, all of which take 15 minutes each. In a serial pattern, the entire process takes 45 minutes for one assembled computer, and it takes 45 more minutes for another computer to be assembled. In a Pipeline pattern, however, that same process would still have the same [http://en.wikipedia.org/wiki/Latency_(engineering)#Computer_hardware_and_operating_system_latency latency] (since it takes 45 minutes for a particular computer to be built), but the overall [http://en.wikipedia.org/wiki/Throughput throughput] is increased because a computer in general is completed every 15 minutes after the first one.&lt;br /&gt;
&lt;br /&gt;
Pipelining differs from the Replicable pattern because in Pipeline only one copy of the resources is available. Referring back to the assembly line example, there is only one station for un-packaging, one station for installation, and one station for diagnostics. In a Replicable pattern, however, each work stream would have its own copy of the resources, so that the same steps could occur simultaneously. To be sure, this does nothing for latency, but has the capability to increase throughput dramatically.&lt;br /&gt;
&lt;br /&gt;
===Recursive Data===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-recursive.png|right|thumb|200px|Recursive Data pattern]]&lt;br /&gt;
The Recursive Data pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; presents an interesting problem for parallel algorithms; while the need is common, its solution can be very complex depending on the data structure. In general, when working with recursive data structures, it is desired for any and all commonalities and reductions to be established in order to minimize the operations required to traverse the structure. Once the structure is mapped (or its behavior analyzed), other parallel patterns can be employed. One possible example is that of an electric utility’s mesh network of [http://en.wikipedia.org/wiki/Smart_meter smart meters]. Hub (head-end) units where data is aggregated need to employ parallel processing in order to efficiently collect usage data. For smaller hubs, it might be beneficial to communicate directly with the meters, whereas for larger hubs it may be more prudent to communicate with smaller hubs. In such a case, Recursive Data can be paired with Divide &amp;amp; Conquer to come to a solution much faster than its serial or naively parallel alternatives.&lt;br /&gt;
&lt;br /&gt;
===Geometric===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-geometric.png|right|thumb|200px|Geometric pattern]]&lt;br /&gt;
The Geometric pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a specialized implementation of the Divide &amp;amp; Conquer pattern. It differs in that there is sharing of data on boundaries of the problem, be that the first and last elements of different sets (1D), perimeters (2D), or faces (3D). The significant difference between the Geometric and Divide &amp;amp; Conquer patterns is that in the Geometric pattern, there is ideally no sub-problem step, as the inter-process communication that might occur is used in the current process’ calculation and does not have to subsequently be calculated. A great example of the Geometric pattern is a fluid simulation, where a matrix (or higher dimension such as cubic or quartic) data set must be analyzed for changes in motion.&lt;br /&gt;
&lt;br /&gt;
===Irregular Mesh===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-irregular.png|right|thumb|200px|Irregular Mesh pattern]]&lt;br /&gt;
The Irregular Mesh pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a hybrid of the Geometric and Recursive Data patterns (and sub-patterns implied); Geometric because of the boundaries involved with splitting up the shape, and Recursive Data due to the varying hierarchies that might be involved. An example of this kind of operation would be a skeletal/bone structure system for three-dimensional computer models. A difficult task for even serial computation, the Irregular Mesh pattern is difficult to implement in an optimal manner without careful consideration to the algorithm and having insight as to what kind of structure is being analyzed.&lt;br /&gt;
&lt;br /&gt;
===Inseparable===&lt;br /&gt;
The Inseparable pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is more of an anti-pattern in that it is a problem which needs a parallel solution, but whose solution does not seem to fit any of the aforementioned patterns. Frequently, but not always, the Inseparable pattern will utilize the parallel primitives in complex and non-deterministic ways, and may actually be representative of programming errors or a lack of organization. There does not always have to be a negative connotation, however, as a problem may be so complex as to not fit into any of the above patterns.&lt;br /&gt;
&lt;br /&gt;
==Complex Patterns==&lt;br /&gt;
Complex patterns involve the interplay between two or more parallel patterns, or are a single pattern that greatly deviates from a common implementation itself. Such algorithms require moderate to advanced programmer skill, and are almost always accompanied by a framework or involve a significant amount of custom &amp;quot;infrastructural&amp;quot; code to accomodate the needs of the architecture.&lt;br /&gt;
* '''Multi-grid'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/multigrid.pdf Multigrid Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Multiple geometric grids are employed with an iterative solver in order to determine efficient grid granularity&lt;br /&gt;
* '''Multi-domain'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/multidomain.pdf Multi-domain Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Leverage different mathematical domains (spatial, frequency; Fourier, Laplace) to come to a solution more quickly&lt;br /&gt;
* '''Odd-Even Communication Group'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/oddeven.pdf Odd-Even Communication Group] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Recursive data structure that allows for more efficient operations on nodes&lt;br /&gt;
* '''Loosely Synchronous'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/loosely_synchronous.doc Loosely Synchronous Model As Parallel Structure] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Use of phases to simplify the assumptions on parallel processes&lt;br /&gt;
* '''Event Driven'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/event_driven.doc Event-Driven Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Allow implicated processes to alert each other to re-commence calculation&lt;br /&gt;
&lt;br /&gt;
==Formalization==&lt;br /&gt;
Formalization describes the efforts of the programming community to devise tools which can aid programmers in designing software which follows standardized (whether international/documented or by practice) procedures, methods, and templates for performing parallel operations. These tools may be purely documentation pieces, frameworks, examples, academic papers, etc.&lt;br /&gt;
===Design Languages===&lt;br /&gt;
Design languages allow programmers to define problems in terms of a common vocabulary so that solutions to problems can be readily identified and efficiently shared.&amp;lt;ref name=&amp;quot;ortega&amp;quot;/&amp;gt; A brief survey of some current pattern language efforts follows.&lt;br /&gt;
====ParLab====&lt;br /&gt;
The Pattern Language for Parallel Programming at Berkeley’s ParLab&amp;lt;ref name=”parlab”&amp;gt;[ http://parlab.eecs.berkeley.edu/wiki/patterns/patterns A Pattern Language for Parallel Programming] at Berkely ParLab&amp;lt;/ref&amp;gt; describes five major categories of patterns. These patterns are described through a somewhat disparate documentation set and articles:&lt;br /&gt;
&lt;br /&gt;
* '''Structural Patterns''' - Concerned with the arrangement of different processes that can run in parallel&lt;br /&gt;
* '''Computation Patterns''' - Concerned with the way parallel processes handle data&lt;br /&gt;
* '''Parallel Algorithm Strategy Patterns''' - Descriptions on how different end results can be achieved by using parallel algorithms&lt;br /&gt;
* '''Implementation Strategy Patterns''' - Descriptions on the mechanisms that can be used to implement parallel algorithms&lt;br /&gt;
* '''Concurrent Execution Patterns''' - Concerned with how parallel processes should be managed&lt;br /&gt;
&lt;br /&gt;
====University of Florida PLPP====&lt;br /&gt;
The development efforts of a pattern language for parallel patterns undertaken at the University of Florida resulted in the development of a published text&amp;lt;ref name=”ufl”&amp;gt;Mattson, Timothy G., Beverly A. Sanders, and Berna Massingill. Patterns for Parallel Programming. Boston: Addison-Wesley, 2005. [http://www.cise.ufl.edu/research/ParallelPatterns/index.htm Homepage]&amp;lt;/ref&amp;gt;. This book catalogs the major “design spaces,” or “solution to a problem in context,” which are&amp;lt;ref name=”ufl_toc”&amp;gt;Mattson, Timothy G., Beverly A. Sanders, and Berna Massingill. Patterns for Parallel Programming. Boston: Addison-Wesley, 2005. [http://www.cise.ufl.edu/research/ParallelPatterns/contents.htm Table of Contents]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''Finding Concurrency''' - How a problem can be parallelized in the first place&lt;br /&gt;
* '''Algorithm Structure''' - How the processes can be arranged (see Intuitive and Common patterns earlier in this chapter)&lt;br /&gt;
* '''Supporting Structures''' - Primitives and data structures useful in managing parallel tasks&lt;br /&gt;
* '''Implementation Mechanisms''' - Architecture and resource-specific details on creating parallel solutions&lt;br /&gt;
&lt;br /&gt;
===Frameworks===&lt;br /&gt;
Frameworks are any piece of code for a particular programming language which can help a programmer in creating a program which takes advantage of parallel algorithms. A discussion of the frameworks is outside the scope of this chapter, but the interested reader is suggested to investigate the following resources:&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/dd492418.aspx Parallel Patterns Library] - Programming library for parallel processes in Microsoft's .NET Framework&lt;br /&gt;
* [http://openmp.org/wp/ OpenMP] - Application programminf interface for parallel processes in the C/C++ and Fortran programming languages&lt;br /&gt;
* [http://www.cc.gatech.edu/~bader/papers/SWARM.html SWARM] - Application programming interface based on [http://en.wikipedia.org/wiki/POSIX_Threads POSIX Threads] that implements several parallel primitives&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
In conclusion, there are currently many initiatives to standardize the programmer’s experience when designing and maintaining parallel software systems. Through the survey above, it can be noted that there are four key factors in determining which parallel pattern to use:&lt;br /&gt;
&lt;br /&gt;
* '''Physical resources available''' - The amount of processing units, memory, communication bandwidth, etc.&lt;br /&gt;
* '''Algorithm data parallelism''' - How well the algorithm’s data can be split up to be used in independent calculations&lt;br /&gt;
* '''Algorithm computation parallelism''' - How much each processor must rely on another for its intermediate calculations&lt;br /&gt;
* '''Framework/programming language''' - What limiting factors might exist for implementing the desired pattern in the programming language or framework of choice.&lt;br /&gt;
&lt;br /&gt;
Indeed, there is a pattern for nearly every occasion, and the patterns presented above are just the &amp;quot;key&amp;quot; patterns. However, without careful consideration of the above points, the programmer will find difficulty in optimally implementing his or her software.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [http://www.cs.uiuc.edu/homes/snir/PPP/ Resources on Parallel Patterns] at the UIUC Computer Science Department&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/3a_df&amp;diff=58985</id>
		<title>CSC/ECE 506 Spring 2012/3a df</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/3a_df&amp;diff=58985"/>
		<updated>2012-02-20T22:49:52Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Geometric */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Patterns of Parallel Programming&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Computer programming has gone through several paradigm shifts in regards to how software is design and constructed. In more recent years with the advent of object-oriented programming, an effort was made by the &amp;quot;[http://en.wikipedia.org/wiki/Design_Patterns Gang of Four]&amp;quot; to categorize different arrangements and relationships between programming objects in terms of commonly used [http://en.wikipedia.org/wiki/Design_patterns design patterns]. In a similar vein, with recent advances in parallel programming and availability of hardware, there are several common designs that can be drawn from the vast amount of literature available. Although there exists no canonical text for parallel programing as there exists for object oriented programming, there is substantial overlap, which is presented here.&lt;br /&gt;
&lt;br /&gt;
Overall, programming patterns can be split into three categories of similar [http://en.wikipedia.org/wiki/Abstraction_(computer_science) abstraction]: intuitive, common, and complex, with each having involvement with architecture, design, and idioms.&amp;lt;ref name=&amp;quot;ortega&amp;quot;&amp;gt;Ortega-Arjona, Jorge Luis. Patterns for Parallel Software Design. Hoboken, NJ: John Wiley, 2010&amp;lt;/ref&amp;gt; An architectural pattern defines software organization, a design pattern is a refinement of an architectural pattern in regards to solving a particular pattern, and an idiom is a particular implementation of a design pattern in a programming language or framework. This chapter will focus on architectural and design patterns.&lt;br /&gt;
&lt;br /&gt;
==Intuitive Patterns==&lt;br /&gt;
Intuitive patterns are termed as such because even those with basic knowledge of parallel processes could create their design. They are obvious, straight-forward applications of parallel computing tasks, and their implementation and use are easily implemented even without specialized software packages or advanced [http://en.wikipedia.org/wiki/Algorithm algorithm] development.&lt;br /&gt;
===&amp;quot;Embarrassingly&amp;quot; Parallel===&lt;br /&gt;
Embarrassingly parallel patterns&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/patterns.ppt Parallel Programming Patterns] by Eun-Gyu Kim&amp;lt;/ref&amp;gt; are those in which the tasks to be performed are completely disparate. Specifically, these operations occur when the datasets of concern are able to be abstracted to a point where the resources are not in contention. Examples abound of this behavior in productivity programs like [http://en.wikipedia.org/wiki/Microsoft_Office Microsoft Word or Outlook], when a spell-check or auto-archive operation is in progress.&lt;br /&gt;
&lt;br /&gt;
===Replicable===&lt;br /&gt;
====Description====&lt;br /&gt;
The Replicable pattern comes from the fact that data available to all processes needs to be duplicated for use in other processes&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. This necessitates a reduction step where the results from all of the tasks is analyzed for the total final result. An application of this pattern could be in certain kinds of encryption algorithms where a set of data can be broken into &amp;quot;chunks&amp;quot; of a particular size, decrypted seperately, and joined back together at the end.&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-repl.png|center|thumb|400px|Replicable pattern, shown enlarged due to its centrality to other patterns]]&lt;br /&gt;
====Example====&lt;br /&gt;
Because the Replicable pattern is so important to subsequent patterns, a fully developed example using C and OpenMP (mentioned later in this chapter) is provided [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/3a_df#Frameworks below].&lt;br /&gt;
=====Code Listing=====&lt;br /&gt;
&amp;lt;pre&amp;gt;// This code example for the Replicable pattern spawns four threads which copy&lt;br /&gt;
// the data and proceed to reverse it and place it back into a global results&lt;br /&gt;
// array. Tested in Microsoft Visual Studio 2010 with /openmp and /TC compile options&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;memory.h&amp;gt;&lt;br /&gt;
#include &amp;lt;omp.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define CHUNK_SIZE 4&lt;br /&gt;
&lt;br /&gt;
void OutputData(char *pArray, int size);&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	int i, j;&lt;br /&gt;
	char temp;&lt;br /&gt;
	char *localData;&lt;br /&gt;
	const char globalData[] = &lt;br /&gt;
		{ 3,  2,  1,  0,&lt;br /&gt;
		  7,  6,  5,  4,&lt;br /&gt;
		 11, 10,  9,  8,&lt;br /&gt;
		 15, 14, 13, 12 };&lt;br /&gt;
	char globalResult[CHUNK_SIZE*CHUNK_SIZE];&lt;br /&gt;
&lt;br /&gt;
	// Setup and report&lt;br /&gt;
	omp_set_nested(1);&lt;br /&gt;
	omp_set_num_threads(4);&lt;br /&gt;
	printf(&amp;quot;Data set: &amp;quot;); OutputData(globalData, CHUNK_SIZE*CHUNK_SIZE); printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;Running Replicable parallel section...\n&amp;quot;);&lt;br /&gt;
	#pragma omp parallel for private(i,j,localData) schedule(static)&lt;br /&gt;
	for(i = 0; i &amp;lt; CHUNK_SIZE; i++)&lt;br /&gt;
	{&lt;br /&gt;
		// Replicate data for local use&lt;br /&gt;
		localData = (char *)malloc(sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
		memcpy(localData, (char *)(globalData+i*CHUNK_SIZE), sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
&lt;br /&gt;
		// Reverse the chunk&lt;br /&gt;
		for(j = 0; j &amp;lt; CHUNK_SIZE/2; j++)&lt;br /&gt;
		{&lt;br /&gt;
			temp = localData[CHUNK_SIZE - j - 1];&lt;br /&gt;
			localData[CHUNK_SIZE - j - 1] = localData[j];&lt;br /&gt;
			localData[j] = temp;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Merge the results back into the global result and clean up&lt;br /&gt;
		memcpy((char *)(globalResult+i*CHUNK_SIZE), localData, sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
		free(localData);&lt;br /&gt;
		printf(&amp;quot;-&amp;gt; Merged result in thread %d/%d\n&amp;quot;, omp_get_thread_num()+1, omp_get_num_threads());&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Output the results of the parallel section&lt;br /&gt;
	printf(&amp;quot;Results: &amp;quot;); OutputData(globalResult, CHUNK_SIZE*CHUNK_SIZE); printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Convenience method for reporting the results&lt;br /&gt;
void OutputData(const char *pArray, int size)&lt;br /&gt;
{&lt;br /&gt;
	int i;&lt;br /&gt;
	for(i = 0; i &amp;lt; size; i++) printf(&amp;quot;%d,&amp;quot;, pArray[i]);&lt;br /&gt;
	printf(&amp;quot;\b &amp;quot;);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Results=====&lt;br /&gt;
Execution of this compiled program in the Microsoft Windows 7 operating system yielded the following output. Notice how the threads actually executed out of order, and that the final output is still correct as the ordered list of numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Data set: 3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12&lt;br /&gt;
Running Replicable parallel section...&lt;br /&gt;
-&amp;gt; Merged result in thread 1/4&lt;br /&gt;
-&amp;gt; Merged result in thread 2/4&lt;br /&gt;
-&amp;gt; Merged result in thread 4/4&lt;br /&gt;
-&amp;gt; Merged result in thread 3/4&lt;br /&gt;
Results: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15&lt;br /&gt;
Press any key to continue . . .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Repository===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-repo.png|right|thumb|200px|Repository pattern]]&lt;br /&gt;
The Repository pattern is related to the Replicable pattern in that they both act on a set of data and rely on the result&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. However, in the Repository pattern all data remains centralized while the computations themselves are performed remotely. In essence, the Repository pattern could be thought of as a continuous Replicable pattern where the global data set is much larger than can be simultaneously replicated. An excellent (simplified) example of this pattern would be distributed computing applications like [http://en.wikipedia.org/wiki/Folding@home Folding@Home] or [http://en.wikipedia.org/wiki/Seti@home SETI@Home], where a central server coordinates the calculations between all available processing units.&lt;br /&gt;
&lt;br /&gt;
===Divide and Conquer===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-dnc.png|right|thumb|none|200px|Divide &amp;amp; Conquer pattern]]The Divide and Conquer pattern is very similar to the Replicable pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. It involves taking a problem or task and splitting it into subproblems whereupon the required calculations are performed in parallel. A merging action still needs to occur to arrive at the solution, but the advantage of Divide and Conquer over Replicable is that the entire data set does not have to be communicated between the processing units -- only the required data for the computation does. Also, due to the degree of separation of computation and data, there is a non-negligible amount of overhead associated with determining the proper points at which the problems should be split and the overall allocation of resources.&lt;br /&gt;
&lt;br /&gt;
==Common Patterns==&lt;br /&gt;
Common patterns solve parallel design tasks that are readily understood and frequently encountered, but whose implementation could benefit from a more formalized and structured approach. Generally, common parallel patterns can be implemented manually or with a framework with a moderate degree of difficulty depending on the programmer's skill level.&lt;br /&gt;
===Pipeline===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-pipeline.png|right|thumb|200px|Pipeline pattern]]&lt;br /&gt;
The Pipeline pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a hybrid of the “Embarrassingly” Parallel pattern as well as the Replicable pattern. The best way to think of the Pipeline pattern is as an assembly line &amp;lt;ref name=”pipeline_wiki”&amp;gt;[http://en.wikipedia.org/wiki/Pipeline_(computing) Pipeline (computing)] on Wikipedia&amp;lt;/ref&amp;gt;. Suppose there are three steps in assembling a computer: un-packaging the internals, installing the internals, and performing a first-boot diagnostic, all of which take 15 minutes each. In a serial pattern, the entire process takes 45 minutes for one assembled computer, and it takes 45 more minutes for another computer to be assembled. In a Pipeline pattern, however, that same process would still have the same [http://en.wikipedia.org/wiki/Latency_(engineering)#Computer_hardware_and_operating_system_latency latency] (since it takes 45 minutes for a particular computer to be built), but the overall [http://en.wikipedia.org/wiki/Throughput throughput] is increased because a computer in general is completed every 15 minutes after the first one.&lt;br /&gt;
&lt;br /&gt;
Pipelining differs from the Replicable pattern because in Pipeline only one copy of the resources is available. Referring back to the assembly line example, there is only one station for un-packaging, one station for installation, and one station for diagnostics. In a Replicable pattern, however, each work stream would have its own copy of the resources, so that the same steps could occur simultaneously. To be sure, this does nothing for latency, but has the capability to increase throughput dramatically.&lt;br /&gt;
&lt;br /&gt;
===Recursive Data===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-recursive.png|right|thumb|200px|Recursive Data pattern]]&lt;br /&gt;
The Recursive Data pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; presents an interesting problem for parallel algorithms; while the need is common, its solution can be very complex depending on the data structure. In general, when working with recursive data structures, it is desired for any and all commonalities and reductions to be established in order to minimize the operations required to traverse the structure. Once the structure is mapped (or its behavior analyzed), other parallel patterns can be employed. One possible example is that of an electric utility’s mesh network of [http://en.wikipedia.org/wiki/Smart_meter smart meters]. Hub (head-end) units where data is aggregated need to employ parallel processing in order to efficiently collect usage data. For smaller hubs, it might be beneficial to communicate directly with the meters, whereas for larger hubs it may be more prudent to communicate with smaller hubs. In such a case, Recursive Data can be paired with Divide &amp;amp; Conquer to come to a solution much faster than its serial or naively parallel alternatives.&lt;br /&gt;
&lt;br /&gt;
===Geometric===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-geometric.png|right|thumb|200px|Geometric pattern]]&lt;br /&gt;
The Geometric pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a specialized implementation of the Divide &amp;amp; Conquer pattern. It differs in that there is sharing of data on boundaries of the problem, be that the first and last elements of different sets (1D), perimeters (2D), or faces (3D). The significant difference between the Geometric and Divide &amp;amp; Conquer patterns is that in the Geometric pattern, there is ideally no sub-problem step, as the inter-process communication that might occur is used in the current process’ calculation and does not have to subsequently be calculated. A great example of the Geometric pattern is a fluid simulation, where a matrix (or higher dimension such as cubic or quartic) data set must be analyzed for changes in motion.&lt;br /&gt;
&lt;br /&gt;
===Irregular Mesh===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-irregular.png|right|thumb|200px|Irregular Mesh pattern]]&lt;br /&gt;
The Irregular Mesh pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a hybrid of the Geometric and Recursive Data patterns (and sub-patterns implied); Geometric because of the boundaries involved with splitting up the shape, and Recursive Data due to the varying hierarchies that might be involved. An example of this kind of operation would be a skeletal/bone structure system for three-dimensional computer models. A difficult task for even serial computation, the Irregular Mesh pattern is difficult to implement in an optimal manner without careful consideration to the algorithm and having insight as to what kind of structure is being analyzed.&lt;br /&gt;
&lt;br /&gt;
===Inseparable===&lt;br /&gt;
The Inseparable pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is more of an anti-pattern in that it is a problem which needs a parallel solution, but whose solution does not seem to fit any of the aforementioned patterns. Frequently, but not always, the Inseparable pattern will utilize the parallel primitives in complex and non-deterministic ways, and may actually be representative of programming errors or a lack of organization. There does not always have to be a negative connotation, however, as a problem may be so complex as to not fit into any of the above patterns.&lt;br /&gt;
&lt;br /&gt;
==Complex Patterns==&lt;br /&gt;
Complex patterns involve the interplay between two or more parallel patterns, or are a single pattern that greatly deviates from a common implementation itself. Such algorithms require moderate to advanced programmer skill, and are almost always accompanied by a framework or involve a significant amount of custom &amp;quot;infrastructural&amp;quot; code to accomodate the needs of the architecture.&lt;br /&gt;
* '''Multi-grid'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/multigrid.pdf Multigrid Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Multiple geometric grids are employed with an iterative solver in order to determine efficient grid granularity&lt;br /&gt;
* '''Multi-domain'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/multidomain.pdf Multi-domain Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Leverage different domains (spatial, frequency) to come to a solution more quickly&lt;br /&gt;
* '''Odd-Even Communication Group'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/oddeven.pdf Odd-Even Communication Group] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Recursive data structure that allows for more efficient operations on nodes&lt;br /&gt;
* '''Loosely Synchronous'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/loosely_synchronous.doc Loosely Synchronous Model As Parallel Structure] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Use of phases to simplify the assumptions on parallel processes&lt;br /&gt;
* '''Event Driven'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/event_driven.doc Event-Driven Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Allow implicated processes to alert each other to re-commence calculation&lt;br /&gt;
&lt;br /&gt;
==Formalization==&lt;br /&gt;
Formalization describes the efforts of the programming community to devise tools which can aid programmers in designing software which follows standardized (whether international/documented or by practice) procedures, methods, and templates for performing parallel operations. These tools may be purely documentation pieces, frameworks, examples, academic papers, etc.&lt;br /&gt;
===Design Languages===&lt;br /&gt;
Design languages allow programmers to define problems in terms of a common vocabulary so that solutions to problems can be readily identified and efficiently shared.&amp;lt;ref name=&amp;quot;ortega&amp;quot;/&amp;gt; A brief survey of some current pattern language efforts follows.&lt;br /&gt;
====ParLab====&lt;br /&gt;
The Pattern Language for Parallel Programming at Berkeley’s ParLab&amp;lt;ref name=”parlab”&amp;gt;[ http://parlab.eecs.berkeley.edu/wiki/patterns/patterns A Pattern Language for Parallel Programming] at Berkely ParLab&amp;lt;/ref&amp;gt; describes five major categories of patterns. These patterns are described through a somewhat disparate documentation set and articles:&lt;br /&gt;
&lt;br /&gt;
* '''Structural Patterns''' - Concerned with the arrangement of different processes that can run in parallel&lt;br /&gt;
* '''Computation Patterns''' - Concerned with the way parallel processes handle data&lt;br /&gt;
* '''Parallel Algorithm Strategy Patterns''' - Descriptions on how different end results can be achieved by using parallel algorithms&lt;br /&gt;
* '''Implementation Strategy Patterns''' - Descriptions on the mechanisms that can be used to implement parallel algorithms&lt;br /&gt;
* '''Concurrent Execution Patterns''' - Concerned with how parallel processes should be managed&lt;br /&gt;
&lt;br /&gt;
====University of Florida PLPP====&lt;br /&gt;
The development efforts of a pattern language for parallel patterns undertaken at the University of Florida resulted in the development of a published text&amp;lt;ref name=”ufl”&amp;gt;Mattson, Timothy G., Beverly A. Sanders, and Berna Massingill. Patterns for Parallel Programming. Boston: Addison-Wesley, 2005. [http://www.cise.ufl.edu/research/ParallelPatterns/index.htm Homepage]&amp;lt;/ref&amp;gt;. This book catalogs the major “design spaces,” or “solution to a problem in context,” which are&amp;lt;ref name=”ufl_toc”&amp;gt;Mattson, Timothy G., Beverly A. Sanders, and Berna Massingill. Patterns for Parallel Programming. Boston: Addison-Wesley, 2005. [http://www.cise.ufl.edu/research/ParallelPatterns/contents.htm Table of Contents]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''Finding Concurrency''' - How a problem can be parallelized in the first place&lt;br /&gt;
* '''Algorithm Structure''' - How the processes can be arranged (see Intuitive and Common patterns earlier in this chapter)&lt;br /&gt;
* '''Supporting Structures''' - Primitives and data structures useful in managing parallel tasks&lt;br /&gt;
* '''Implementation Mechanisms''' - Architecture and resource-specific details on creating parallel solutions&lt;br /&gt;
&lt;br /&gt;
===Frameworks===&lt;br /&gt;
Frameworks are any piece of code for a particular programming language which can help a programmer in creating a program which takes advantage of parallel algorithms. A discussion of the frameworks is outside the scope of this chapter, but the interested reader is suggested to investigate the following resources:&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/dd492418.aspx Parallel Patterns Library] - Programming library for parallel processes in Microsoft's .NET Framework&lt;br /&gt;
* [http://openmp.org/wp/ OpenMP] - Application programminf interface for parallel processes in the C/C++ and Fortran programming languages&lt;br /&gt;
* [http://www.cc.gatech.edu/~bader/papers/SWARM.html SWARM] - Application programming interface based on [http://en.wikipedia.org/wiki/POSIX_Threads POSIX Threads] that implements several parallel primitives&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
In conclusion, there are currently many initiatives to standardize the programmer’s experience when designing and maintaining parallel software systems. Through the survey above, it can be noted that there are four key factors in determining which parallel pattern to use:&lt;br /&gt;
&lt;br /&gt;
* '''Physical resources available''' - The amount of processing units, memory, communication bandwidth, etc.&lt;br /&gt;
* '''Algorithm data parallelism''' - How well the algorithm’s data can be split up to be used in independent calculations&lt;br /&gt;
* '''Algorithm computation parallelism''' - How much each processor must rely on another for its intermediate calculations&lt;br /&gt;
* '''Framework/programming language''' - What limiting factors might exist for implementing the desired pattern in the programming language or framework of choice.&lt;br /&gt;
&lt;br /&gt;
Indeed, there is a pattern for nearly every occasion, and the patterns presented above are just the &amp;quot;key&amp;quot; patterns. However, without careful consideration of the above points, the programmer will find difficulty in optimally implementing his or her software.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [http://www.cs.uiuc.edu/homes/snir/PPP/ Resources on Parallel Patterns] at the UIUC Computer Science Department&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/3a_df&amp;diff=58984</id>
		<title>CSC/ECE 506 Spring 2012/3a df</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2012/3a_df&amp;diff=58984"/>
		<updated>2012-02-20T22:49:13Z</updated>

		<summary type="html">&lt;p&gt;Ajdavis7: /* Recursive Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Patterns of Parallel Programming&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Computer programming has gone through several paradigm shifts in regards to how software is design and constructed. In more recent years with the advent of object-oriented programming, an effort was made by the &amp;quot;[http://en.wikipedia.org/wiki/Design_Patterns Gang of Four]&amp;quot; to categorize different arrangements and relationships between programming objects in terms of commonly used [http://en.wikipedia.org/wiki/Design_patterns design patterns]. In a similar vein, with recent advances in parallel programming and availability of hardware, there are several common designs that can be drawn from the vast amount of literature available. Although there exists no canonical text for parallel programing as there exists for object oriented programming, there is substantial overlap, which is presented here.&lt;br /&gt;
&lt;br /&gt;
Overall, programming patterns can be split into three categories of similar [http://en.wikipedia.org/wiki/Abstraction_(computer_science) abstraction]: intuitive, common, and complex, with each having involvement with architecture, design, and idioms.&amp;lt;ref name=&amp;quot;ortega&amp;quot;&amp;gt;Ortega-Arjona, Jorge Luis. Patterns for Parallel Software Design. Hoboken, NJ: John Wiley, 2010&amp;lt;/ref&amp;gt; An architectural pattern defines software organization, a design pattern is a refinement of an architectural pattern in regards to solving a particular pattern, and an idiom is a particular implementation of a design pattern in a programming language or framework. This chapter will focus on architectural and design patterns.&lt;br /&gt;
&lt;br /&gt;
==Intuitive Patterns==&lt;br /&gt;
Intuitive patterns are termed as such because even those with basic knowledge of parallel processes could create their design. They are obvious, straight-forward applications of parallel computing tasks, and their implementation and use are easily implemented even without specialized software packages or advanced [http://en.wikipedia.org/wiki/Algorithm algorithm] development.&lt;br /&gt;
===&amp;quot;Embarrassingly&amp;quot; Parallel===&lt;br /&gt;
Embarrassingly parallel patterns&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/patterns.ppt Parallel Programming Patterns] by Eun-Gyu Kim&amp;lt;/ref&amp;gt; are those in which the tasks to be performed are completely disparate. Specifically, these operations occur when the datasets of concern are able to be abstracted to a point where the resources are not in contention. Examples abound of this behavior in productivity programs like [http://en.wikipedia.org/wiki/Microsoft_Office Microsoft Word or Outlook], when a spell-check or auto-archive operation is in progress.&lt;br /&gt;
&lt;br /&gt;
===Replicable===&lt;br /&gt;
====Description====&lt;br /&gt;
The Replicable pattern comes from the fact that data available to all processes needs to be duplicated for use in other processes&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. This necessitates a reduction step where the results from all of the tasks is analyzed for the total final result. An application of this pattern could be in certain kinds of encryption algorithms where a set of data can be broken into &amp;quot;chunks&amp;quot; of a particular size, decrypted seperately, and joined back together at the end.&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-repl.png|center|thumb|400px|Replicable pattern, shown enlarged due to its centrality to other patterns]]&lt;br /&gt;
====Example====&lt;br /&gt;
Because the Replicable pattern is so important to subsequent patterns, a fully developed example using C and OpenMP (mentioned later in this chapter) is provided [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/3a_df#Frameworks below].&lt;br /&gt;
=====Code Listing=====&lt;br /&gt;
&amp;lt;pre&amp;gt;// This code example for the Replicable pattern spawns four threads which copy&lt;br /&gt;
// the data and proceed to reverse it and place it back into a global results&lt;br /&gt;
// array. Tested in Microsoft Visual Studio 2010 with /openmp and /TC compile options&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;memory.h&amp;gt;&lt;br /&gt;
#include &amp;lt;omp.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define CHUNK_SIZE 4&lt;br /&gt;
&lt;br /&gt;
void OutputData(char *pArray, int size);&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	int i, j;&lt;br /&gt;
	char temp;&lt;br /&gt;
	char *localData;&lt;br /&gt;
	const char globalData[] = &lt;br /&gt;
		{ 3,  2,  1,  0,&lt;br /&gt;
		  7,  6,  5,  4,&lt;br /&gt;
		 11, 10,  9,  8,&lt;br /&gt;
		 15, 14, 13, 12 };&lt;br /&gt;
	char globalResult[CHUNK_SIZE*CHUNK_SIZE];&lt;br /&gt;
&lt;br /&gt;
	// Setup and report&lt;br /&gt;
	omp_set_nested(1);&lt;br /&gt;
	omp_set_num_threads(4);&lt;br /&gt;
	printf(&amp;quot;Data set: &amp;quot;); OutputData(globalData, CHUNK_SIZE*CHUNK_SIZE); printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;Running Replicable parallel section...\n&amp;quot;);&lt;br /&gt;
	#pragma omp parallel for private(i,j,localData) schedule(static)&lt;br /&gt;
	for(i = 0; i &amp;lt; CHUNK_SIZE; i++)&lt;br /&gt;
	{&lt;br /&gt;
		// Replicate data for local use&lt;br /&gt;
		localData = (char *)malloc(sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
		memcpy(localData, (char *)(globalData+i*CHUNK_SIZE), sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
&lt;br /&gt;
		// Reverse the chunk&lt;br /&gt;
		for(j = 0; j &amp;lt; CHUNK_SIZE/2; j++)&lt;br /&gt;
		{&lt;br /&gt;
			temp = localData[CHUNK_SIZE - j - 1];&lt;br /&gt;
			localData[CHUNK_SIZE - j - 1] = localData[j];&lt;br /&gt;
			localData[j] = temp;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Merge the results back into the global result and clean up&lt;br /&gt;
		memcpy((char *)(globalResult+i*CHUNK_SIZE), localData, sizeof(char)*CHUNK_SIZE);&lt;br /&gt;
		free(localData);&lt;br /&gt;
		printf(&amp;quot;-&amp;gt; Merged result in thread %d/%d\n&amp;quot;, omp_get_thread_num()+1, omp_get_num_threads());&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Output the results of the parallel section&lt;br /&gt;
	printf(&amp;quot;Results: &amp;quot;); OutputData(globalResult, CHUNK_SIZE*CHUNK_SIZE); printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Convenience method for reporting the results&lt;br /&gt;
void OutputData(const char *pArray, int size)&lt;br /&gt;
{&lt;br /&gt;
	int i;&lt;br /&gt;
	for(i = 0; i &amp;lt; size; i++) printf(&amp;quot;%d,&amp;quot;, pArray[i]);&lt;br /&gt;
	printf(&amp;quot;\b &amp;quot;);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Results=====&lt;br /&gt;
Execution of this compiled program in the Microsoft Windows 7 operating system yielded the following output. Notice how the threads actually executed out of order, and that the final output is still correct as the ordered list of numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Data set: 3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12&lt;br /&gt;
Running Replicable parallel section...&lt;br /&gt;
-&amp;gt; Merged result in thread 1/4&lt;br /&gt;
-&amp;gt; Merged result in thread 2/4&lt;br /&gt;
-&amp;gt; Merged result in thread 4/4&lt;br /&gt;
-&amp;gt; Merged result in thread 3/4&lt;br /&gt;
Results: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15&lt;br /&gt;
Press any key to continue . . .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Repository===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-repo.png|right|thumb|200px|Repository pattern]]&lt;br /&gt;
The Repository pattern is related to the Replicable pattern in that they both act on a set of data and rely on the result&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. However, in the Repository pattern all data remains centralized while the computations themselves are performed remotely. In essence, the Repository pattern could be thought of as a continuous Replicable pattern where the global data set is much larger than can be simultaneously replicated. An excellent (simplified) example of this pattern would be distributed computing applications like [http://en.wikipedia.org/wiki/Folding@home Folding@Home] or [http://en.wikipedia.org/wiki/Seti@home SETI@Home], where a central server coordinates the calculations between all available processing units.&lt;br /&gt;
&lt;br /&gt;
===Divide and Conquer===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-dnc.png|right|thumb|none|200px|Divide &amp;amp; Conquer pattern]]The Divide and Conquer pattern is very similar to the Replicable pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt;. It involves taking a problem or task and splitting it into subproblems whereupon the required calculations are performed in parallel. A merging action still needs to occur to arrive at the solution, but the advantage of Divide and Conquer over Replicable is that the entire data set does not have to be communicated between the processing units -- only the required data for the computation does. Also, due to the degree of separation of computation and data, there is a non-negligible amount of overhead associated with determining the proper points at which the problems should be split and the overall allocation of resources.&lt;br /&gt;
&lt;br /&gt;
==Common Patterns==&lt;br /&gt;
Common patterns solve parallel design tasks that are readily understood and frequently encountered, but whose implementation could benefit from a more formalized and structured approach. Generally, common parallel patterns can be implemented manually or with a framework with a moderate degree of difficulty depending on the programmer's skill level.&lt;br /&gt;
===Pipeline===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-pipeline.png|right|thumb|200px|Pipeline pattern]]&lt;br /&gt;
The Pipeline pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a hybrid of the “Embarrassingly” Parallel pattern as well as the Replicable pattern. The best way to think of the Pipeline pattern is as an assembly line &amp;lt;ref name=”pipeline_wiki”&amp;gt;[http://en.wikipedia.org/wiki/Pipeline_(computing) Pipeline (computing)] on Wikipedia&amp;lt;/ref&amp;gt;. Suppose there are three steps in assembling a computer: un-packaging the internals, installing the internals, and performing a first-boot diagnostic, all of which take 15 minutes each. In a serial pattern, the entire process takes 45 minutes for one assembled computer, and it takes 45 more minutes for another computer to be assembled. In a Pipeline pattern, however, that same process would still have the same [http://en.wikipedia.org/wiki/Latency_(engineering)#Computer_hardware_and_operating_system_latency latency] (since it takes 45 minutes for a particular computer to be built), but the overall [http://en.wikipedia.org/wiki/Throughput throughput] is increased because a computer in general is completed every 15 minutes after the first one.&lt;br /&gt;
&lt;br /&gt;
Pipelining differs from the Replicable pattern because in Pipeline only one copy of the resources is available. Referring back to the assembly line example, there is only one station for un-packaging, one station for installation, and one station for diagnostics. In a Replicable pattern, however, each work stream would have its own copy of the resources, so that the same steps could occur simultaneously. To be sure, this does nothing for latency, but has the capability to increase throughput dramatically.&lt;br /&gt;
&lt;br /&gt;
===Recursive Data===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-recursive.png|right|thumb|200px|Recursive Data pattern]]&lt;br /&gt;
The Recursive Data pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; presents an interesting problem for parallel algorithms; while the need is common, its solution can be very complex depending on the data structure. In general, when working with recursive data structures, it is desired for any and all commonalities and reductions to be established in order to minimize the operations required to traverse the structure. Once the structure is mapped (or its behavior analyzed), other parallel patterns can be employed. One possible example is that of an electric utility’s mesh network of [http://en.wikipedia.org/wiki/Smart_meter smart meters]. Hub (head-end) units where data is aggregated need to employ parallel processing in order to efficiently collect usage data. For smaller hubs, it might be beneficial to communicate directly with the meters, whereas for larger hubs it may be more prudent to communicate with smaller hubs. In such a case, Recursive Data can be paired with Divide &amp;amp; Conquer to come to a solution much faster than its serial or naively parallel alternatives.&lt;br /&gt;
&lt;br /&gt;
===Geometric===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-geometric.png|right|thumb|200px|Geometric pattern]]&lt;br /&gt;
The Geometric pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a specialized implementation of the Divide &amp;amp; Conquer pattern. It differs in that there is sharing of data on boundaries of the problem, be that the first and last elements of different sets (1D), perimeters (2D), or faces (3D). The significant difference between the Geometric and Divide &amp;amp; Conquer patterns is that in the Geometric pattern, there is ideally no sub-problem step, as the inter-process communication that might occur is used in the current process’ calculation and does not have to subsequently be calculated. A great example of the Geometric pattern is a fluid simulation, where a matrix (or higher dimension) data set must be analyzed for changes in motion.&lt;br /&gt;
&lt;br /&gt;
===Irregular Mesh===&lt;br /&gt;
[[Image:506-2012-Spring-3a-df-irregular.png|right|thumb|200px|Irregular Mesh pattern]]&lt;br /&gt;
The Irregular Mesh pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is a hybrid of the Geometric and Recursive Data patterns (and sub-patterns implied); Geometric because of the boundaries involved with splitting up the shape, and Recursive Data due to the varying hierarchies that might be involved. An example of this kind of operation would be a skeletal/bone structure system for three-dimensional computer models. A difficult task for even serial computation, the Irregular Mesh pattern is difficult to implement in an optimal manner without careful consideration to the algorithm and having insight as to what kind of structure is being analyzed.&lt;br /&gt;
&lt;br /&gt;
===Inseparable===&lt;br /&gt;
The Inseparable pattern&amp;lt;ref name=&amp;quot;kim_ppp_ppt&amp;quot;/&amp;gt; is more of an anti-pattern in that it is a problem which needs a parallel solution, but whose solution does not seem to fit any of the aforementioned patterns. Frequently, but not always, the Inseparable pattern will utilize the parallel primitives in complex and non-deterministic ways, and may actually be representative of programming errors or a lack of organization. There does not always have to be a negative connotation, however, as a problem may be so complex as to not fit into any of the above patterns.&lt;br /&gt;
&lt;br /&gt;
==Complex Patterns==&lt;br /&gt;
Complex patterns involve the interplay between two or more parallel patterns, or are a single pattern that greatly deviates from a common implementation itself. Such algorithms require moderate to advanced programmer skill, and are almost always accompanied by a framework or involve a significant amount of custom &amp;quot;infrastructural&amp;quot; code to accomodate the needs of the architecture.&lt;br /&gt;
* '''Multi-grid'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/multigrid.pdf Multigrid Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Multiple geometric grids are employed with an iterative solver in order to determine efficient grid granularity&lt;br /&gt;
* '''Multi-domain'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/multidomain.pdf Multi-domain Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Leverage different domains (spatial, frequency) to come to a solution more quickly&lt;br /&gt;
* '''Odd-Even Communication Group'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/oddeven.pdf Odd-Even Communication Group] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Recursive data structure that allows for more efficient operations on nodes&lt;br /&gt;
* '''Loosely Synchronous'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/loosely_synchronous.doc Loosely Synchronous Model As Parallel Structure] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Use of phases to simplify the assumptions on parallel processes&lt;br /&gt;
* '''Event Driven'''&amp;lt;ref&amp;gt;[http://www.cs.uiuc.edu/homes/snir/PPP/patterns/event_driven.doc Event-Driven Pattern] at UIUC Computer Science Department&amp;lt;/ref&amp;gt; - Allow implicated processes to alert each other to re-commence calculation&lt;br /&gt;
&lt;br /&gt;
==Formalization==&lt;br /&gt;
Formalization describes the efforts of the programming community to devise tools which can aid programmers in designing software which follows standardized (whether international/documented or by practice) procedures, methods, and templates for performing parallel operations. These tools may be purely documentation pieces, frameworks, examples, academic papers, etc.&lt;br /&gt;
===Design Languages===&lt;br /&gt;
Design languages allow programmers to define problems in terms of a common vocabulary so that solutions to problems can be readily identified and efficiently shared.&amp;lt;ref name=&amp;quot;ortega&amp;quot;/&amp;gt; A brief survey of some current pattern language efforts follows.&lt;br /&gt;
====ParLab====&lt;br /&gt;
The Pattern Language for Parallel Programming at Berkeley’s ParLab&amp;lt;ref name=”parlab”&amp;gt;[ http://parlab.eecs.berkeley.edu/wiki/patterns/patterns A Pattern Language for Parallel Programming] at Berkely ParLab&amp;lt;/ref&amp;gt; describes five major categories of patterns. These patterns are described through a somewhat disparate documentation set and articles:&lt;br /&gt;
&lt;br /&gt;
* '''Structural Patterns''' - Concerned with the arrangement of different processes that can run in parallel&lt;br /&gt;
* '''Computation Patterns''' - Concerned with the way parallel processes handle data&lt;br /&gt;
* '''Parallel Algorithm Strategy Patterns''' - Descriptions on how different end results can be achieved by using parallel algorithms&lt;br /&gt;
* '''Implementation Strategy Patterns''' - Descriptions on the mechanisms that can be used to implement parallel algorithms&lt;br /&gt;
* '''Concurrent Execution Patterns''' - Concerned with how parallel processes should be managed&lt;br /&gt;
&lt;br /&gt;
====University of Florida PLPP====&lt;br /&gt;
The development efforts of a pattern language for parallel patterns undertaken at the University of Florida resulted in the development of a published text&amp;lt;ref name=”ufl”&amp;gt;Mattson, Timothy G., Beverly A. Sanders, and Berna Massingill. Patterns for Parallel Programming. Boston: Addison-Wesley, 2005. [http://www.cise.ufl.edu/research/ParallelPatterns/index.htm Homepage]&amp;lt;/ref&amp;gt;. This book catalogs the major “design spaces,” or “solution to a problem in context,” which are&amp;lt;ref name=”ufl_toc”&amp;gt;Mattson, Timothy G., Beverly A. Sanders, and Berna Massingill. Patterns for Parallel Programming. Boston: Addison-Wesley, 2005. [http://www.cise.ufl.edu/research/ParallelPatterns/contents.htm Table of Contents]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''Finding Concurrency''' - How a problem can be parallelized in the first place&lt;br /&gt;
* '''Algorithm Structure''' - How the processes can be arranged (see Intuitive and Common patterns earlier in this chapter)&lt;br /&gt;
* '''Supporting Structures''' - Primitives and data structures useful in managing parallel tasks&lt;br /&gt;
* '''Implementation Mechanisms''' - Architecture and resource-specific details on creating parallel solutions&lt;br /&gt;
&lt;br /&gt;
===Frameworks===&lt;br /&gt;
Frameworks are any piece of code for a particular programming language which can help a programmer in creating a program which takes advantage of parallel algorithms. A discussion of the frameworks is outside the scope of this chapter, but the interested reader is suggested to investigate the following resources:&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/dd492418.aspx Parallel Patterns Library] - Programming library for parallel processes in Microsoft's .NET Framework&lt;br /&gt;
* [http://openmp.org/wp/ OpenMP] - Application programminf interface for parallel processes in the C/C++ and Fortran programming languages&lt;br /&gt;
* [http://www.cc.gatech.edu/~bader/papers/SWARM.html SWARM] - Application programming interface based on [http://en.wikipedia.org/wiki/POSIX_Threads POSIX Threads] that implements several parallel primitives&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
In conclusion, there are currently many initiatives to standardize the programmer’s experience when designing and maintaining parallel software systems. Through the survey above, it can be noted that there are four key factors in determining which parallel pattern to use:&lt;br /&gt;
&lt;br /&gt;
* '''Physical resources available''' - The amount of processing units, memory, communication bandwidth, etc.&lt;br /&gt;
* '''Algorithm data parallelism''' - How well the algorithm’s data can be split up to be used in independent calculations&lt;br /&gt;
* '''Algorithm computation parallelism''' - How much each processor must rely on another for its intermediate calculations&lt;br /&gt;
* '''Framework/programming language''' - What limiting factors might exist for implementing the desired pattern in the programming language or framework of choice.&lt;br /&gt;
&lt;br /&gt;
Indeed, there is a pattern for nearly every occasion, and the patterns presented above are just the &amp;quot;key&amp;quot; patterns. However, without careful consideration of the above points, the programmer will find difficulty in optimally implementing his or her software.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [http://www.cs.uiuc.edu/homes/snir/PPP/ Resources on Parallel Patterns] at the UIUC Computer Science Department&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajdavis7</name></author>
	</entry>
</feed>