From WikiChip
Editing intel/microarchitectures/bonnell

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

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

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

Latest revision Your text
Line 303: Line 303:
  
 
===== FP/SIMD execution Cluster =====
 
===== FP/SIMD execution Cluster =====
{| class="wikitable" style="text-align: center; float: right;"
 
! colspan="2" | SIMD/FP Execution Cluster Ports
 
|-
 
! Port 0 !! Port 1
 
|-
 
| SIMD ALU<br>(128-bit / 64-bit int) || SIMD ALU<br>(128-bit)
 
|-
 
| Shuffle unit<br>(128-bit / 64-bit int) || FP Adder
 
|-
 
| SIMD/FP multiply unit<br>(128-bit / 64-bit int)
 
|-
 
| Divide unit (support IMUL, IDIV)
 
|}
 
 
In the further pursuit of power saving specialized execution units were minimized as much as possible. Bonnell's [[floating point]] & SIMD execution cluster does most of the heavy lifting. It features a 128 bit [[SIMD]] [[integer]] path containing 2 SIMD [[ALU]]s and 1 [[shuffle unit]]. Bonnell's [[SIMD]] [[integer]] [[multiplier]] and [[floating point]] [[divider]] are also responsible for the scalar integer multiply and integer divider operations. Additionally the cluster includes a 64 bit FP & SIMD integer multipliers and a 128 bit FP adder.
 
In the further pursuit of power saving specialized execution units were minimized as much as possible. Bonnell's [[floating point]] & SIMD execution cluster does most of the heavy lifting. It features a 128 bit [[SIMD]] [[integer]] path containing 2 SIMD [[ALU]]s and 1 [[shuffle unit]]. Bonnell's [[SIMD]] [[integer]] [[multiplier]] and [[floating point]] [[divider]] are also responsible for the scalar integer multiply and integer divider operations. Additionally the cluster includes a 64 bit FP & SIMD integer multipliers and a 128 bit FP adder.
  
Additionally, this cluster contains a '''Safe Instruction Recognition''' ('''SIR''') unit responsible for supporing out-of-order commits. The idea behind the SIR unit is fairly simple, when conditions are met (i.e, when there are no inter-dependency between varying latency instructions) the two instructions will execute simultaneously allowing the shorter latency instruction to execute and finish before a possibly longer latency floating point operation ends. This algorithm reduces needless stalls that plagues traditional in-order pipelines.
+
Additionally, this cluster contains a '''Safe Instruction Recognition''' ('''SIR''') unit responsible for supporing out-of-order commits. The idea behind the SIR unit is fairly simple, when conditions are met (i.e, when there are no inter-dependency between varying latency instructions) the two instructions will execute simultaneously allowing it to execute and finish before a possibly longer latency floating point operation ends. This algorithm reduces needless stalls that plagues traditional in-order pipelines.
  
{{clear}}
 
 
===== Integer Execution Cluster =====
 
===== Integer Execution Cluster =====
{| class="wikitable" style="text-align: center; float: left;"
+
The integer execution cluster contains two [[ALU]]s, a [[shifter]], and a [[jump]] execution unit capable of performing single-cycle 64 bit [[integer]] operations.
! colspan="2" | SIMD/FP Execution Cluster Ports
 
|-
 
! Port 0 !! Port 1
 
|-
 
| Load/Store || Jump unite and LEA
 
|-
 
| ALU0 || ALU1
 
|-
 
| Shift/Rotate unit || Bit processing unit
 
|}
 
The integer execution cluster contains two [[ALU]]s, a [[shifter]], and a [[jump]] execution unit capable of performing single-cycle 64 bit [[integer]] operations. The Integer cluster has store-forwarding support allowing for a 0-cycle latency effective load-to-use.
 
  
{{clear}}
 
 
===== Memory Subsystem =====
 
===== Memory Subsystem =====
 
Bonnell has two [[address generation units]] (AGUs). For data, there is 24 [[KiB]] [[write-back]] L1 cache with a 2-level DTLB hierarchy, hardware page walker, and an integer store-to-load forwarding support. Additionally, there is a rather large 512 KiB [[L2 cache]] with inline ECC and [[hardware pre-fetchers]]. The tag, [[Least Recently Used|LRU]], and the state bits are all stored in a single array to minimize area. The tag and data consist of 8 4.5 KiB tag sub arrays and 32 17.5 KiB data sub-arrays made of 256 cells on the bit line and 136 cells on the write line.
 
Bonnell has two [[address generation units]] (AGUs). For data, there is 24 [[KiB]] [[write-back]] L1 cache with a 2-level DTLB hierarchy, hardware page walker, and an integer store-to-load forwarding support. Additionally, there is a rather large 512 KiB [[L2 cache]] with inline ECC and [[hardware pre-fetchers]]. The tag, [[Least Recently Used|LRU]], and the state bits are all stored in a single array to minimize area. The tag and data consist of 8 4.5 KiB tag sub arrays and 32 17.5 KiB data sub-arrays made of 256 cells on the bit line and 136 cells on the write line.

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

Cancel | Editing help (opens in new window)