Difference between revisions of "Instruction Set/pick"

From Mill Computing Wiki
Jump to: navigation, search
m (Protected "Instruction Set/pick": generated ([Edit=<protect-level-bot>] (indefinite) [Move=<protect-level-bot>] (indefinite)))
 
(One intermediate revision by the same user not shown)
Line 1:Line 1:
 
{{DISPLAYTITLE:pick}}
 
{{DISPLAYTITLE:pick}}
<div style="font-size:80%;line-height:90%;margin-bottom:2em">[[Speculation|realizing]]&nbsp;&nbsp;[[Encoding|exu stream]]&nbsp;&nbsp;[[Decode|pick block]]&nbsp;&nbsp;[[Phasing|pick phase]]&nbsp;&nbsp; operation&nbsp;&nbsp; [[Domains|in the logical value domain]]&nbsp;&nbsp;<br />
+
<div style="font-size:80%;line-height:90%;margin-bottom:2em">[[Speculation|speculable]]&nbsp;&nbsp;[[Encoding|exu stream]]&nbsp;&nbsp;[[Decode|pick block]]&nbsp;&nbsp;[[Phasing|picked phase]]&nbsp;&nbsp; operation&nbsp;&nbsp; [[Domains|in the logical value domain]]&nbsp;&nbsp;<br />
 
'''native on:''' [[Cores|all]]<br />
 
'''native on:''' [[Cores|all]]<br />
 
</div>
 
</div>
Line 25:Line 25:
 
! [[Cores|Core]] || [[Slot|In Slots]]|| [[Latency|Latencies]]
 
! [[Cores|Core]] || [[Slot|In Slots]]|| [[Latency|Latencies]]
 
|-
 
|-
| [[Cores/Tin/Encoding#pick|Tin]] || P0 || 0
+
| [[Cores/Tin/Encoding#pick|Tin]] || P0 || 1
 
|-
 
|-
| [[Cores/Copper/Encoding#pick|Copper]] || P0 || 0
+
| [[Cores/Copper/Encoding#pick|Copper]] || P0 || 1
 
|-
 
|-
| [[Cores/Silver/Encoding#pick|Silver]] || P0 P1 || 0
+
| [[Cores/Silver/Encoding#pick|Silver]] || P0 P1 || 1
 
|-
 
|-
| [[Cores/Gold/Encoding#pick|Gold]] || P0 P1 P2 P3 || 0
+
| [[Cores/Gold/Encoding#pick|Gold]] || P0 || 1
|-
+
| [[Cores/Decimal8/Encoding#pick|Decimal8]] || P0 P1 || 0
+
|-
+
| [[Cores/Decimal16/Encoding#pick|Decimal16]] || P0 P1 || 0
+
 
|}
 
|}
  
Line 48:Line 44:
 
! [[Cores|Core]] || [[Slot|In Slots]]|| [[Latency|Latencies]]
 
! [[Cores|Core]] || [[Slot|In Slots]]|| [[Latency|Latencies]]
 
|-
 
|-
| [[Cores/Tin/Encoding#pick|Tin]] || P0 || 0
+
| [[Cores/Tin/Encoding#pick|Tin]] || P0 || 1
|-
+
| [[Cores/Copper/Encoding#pick|Copper]] || P0 || 0
+
|-
+
| [[Cores/Silver/Encoding#pick|Silver]] || P0 P1 || 0
+
 
|-
 
|-
| [[Cores/Gold/Encoding#pick|Gold]] || P0 P1 P2 P3 || 0
+
| [[Cores/Copper/Encoding#pick|Copper]] || P0 || 1
 
|-
 
|-
| [[Cores/Decimal8/Encoding#pick|Decimal8]] || P0 P1 || 0
+
| [[Cores/Silver/Encoding#pick|Silver]] || P0 P1 || 1
 
|-
 
|-
| [[Cores/Decimal16/Encoding#pick|Decimal16]] || P0 P1 || 0
+
| [[Cores/Gold/Encoding#pick|Gold]] || P0 || 1
 
|}
 
|}
  
  
 
[[Instruction_Set|Instruction Set, alphabetical]], [[Instruction Set by Category]], [http://millcomputing.com/instructions.html?collapse=7#ops Instruction Set, sortable, filterable]
 
[[Instruction_Set|Instruction Set, alphabetical]], [[Instruction Set by Category]], [http://millcomputing.com/instructions.html?collapse=7#ops Instruction Set, sortable, filterable]

Latest revision as of 14:06, 23 February 2021

speculable  exu stream  pick block  picked phase   operation   in the logical value domain  

native on: all

Pick between two values based on a condition.

The pick operation takes 3 arguments and has its own dedicated encoding Block. The selector argument q only looks at the lowest bit, and when it is set, the first value v1 is moved to the front of the belt, else v2.
When the selector and the two other operands are vectors of the same size, the pick takes place on a per element basis.

The pick operation has zero latency, because there isn't actually any processing taking place. It merely renames the belt positions in different ways in the same process that advances the belt positions between cycles as new values are dropped.

How many pick operations can be executed in parallel depends on the number of pick Slots of the Core. It finds extensive use in if-conversion to transform control flow into data flow and avoid conditional branches which are a major source of stalls.

related operations: recur


pick(sel q, op v1)

operands: like Inv :

A pick operation where the second pick value would be a None of the same width as the first.

Core In Slots Latencies
Tin P0 1
Copper P0 1
Silver P0 P1 1
Gold P0 1

pick(sel q, op v1, op v2)

operands: like Inv :


Core In Slots Latencies
Tin P0 1
Copper P0 1
Silver P0 P1 1
Gold P0 1


Instruction Set, alphabetical, Instruction Set by Category, Instruction Set, sortable, filterable