From 0d93f705b09d122d69e4e2bfa018c5ef013342ab Mon Sep 17 00:00:00 2001 From: Jacob Lifshay Date: Mon, 19 Oct 2020 17:30:44 -0700 Subject: [PATCH] add int_regs_as_masks.dia* --- 3d_gpu/int_regs_as_masks.dia | 2336 ++++++++++++++++++++++++++++++ 3d_gpu/int_regs_as_masks.dia.png | Bin 0 -> 50799 bytes 3d_gpu/int_regs_as_masks.dia.svg | 141 ++ 3 files changed, 2477 insertions(+) create mode 100644 3d_gpu/int_regs_as_masks.dia create mode 100644 3d_gpu/int_regs_as_masks.dia.png create mode 100644 3d_gpu/int_regs_as_masks.dia.svg diff --git a/3d_gpu/int_regs_as_masks.dia b/3d_gpu/int_regs_as_masks.dia new file mode 100644 index 000000000..be7a4fb01 --- /dev/null +++ b/3d_gpu/int_regs_as_masks.dia @@ -0,0 +1,2336 @@ + + + + + + + + + + + + + #Letter# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Mask Buses +8 separate 1-bit buses# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Mask Registers +2x64-bits# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Int Registers +126x64-bits# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R and W ports +reg[a[4:]][16*b+a[0:4]]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ## + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R and W ports +reg[addr][0:64]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Integer ALU/FUs# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Expand to +byte-level masks# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Data Buses# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Data Buses# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Mask# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #A# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #B# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Vector Compare ALU/FUs# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Expand to +byte-level masks# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Mask# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #A# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #B# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Mask ALU/FUs +(scalar and/or/andc/etc. +on mask regs)# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #A# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #B# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Result# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Result# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Result# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Mask registers are tracked by the dependency +matrix at the level of different `a` values, +different `b` values are treated as +belonging to the same register.# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/3d_gpu/int_regs_as_masks.dia.png b/3d_gpu/int_regs_as_masks.dia.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5447e4992a6f3f14f07fcba58be76693b405c4 GIT binary patch literal 50799 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 Q?A!B~R78!a&fdVHjq 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 literal 0 HcmV?d00001 diff --git a/3d_gpu/int_regs_as_masks.dia.svg b/3d_gpu/int_regs_as_masks.dia.svg new file mode 100644 index 000000000..b4792b0f2 --- /dev/null +++ b/3d_gpu/int_regs_as_masks.dia.svg @@ -0,0 +1,141 @@ + + + + + + + Mask Buses + 8 separate 1-bit buses + + + + + Mask Registers + 2x64-bits + + + + Int Registers + 126x64-bits + + + R and W ports + reg[a[4:]][16*b+a[0:4]] + + + + + + + + + + + R and W ports + reg[addr][0:64] + + + + Integer ALU/FUs + + + + + Expand to + byte-level masks + + + + + + + Data Buses + + + Data Buses + + + + + + + Mask + + + A + + + B + + + + + + Vector Compare ALU/FUs + + + + + Expand to + byte-level masks + + + + + + + + + + Mask + + + A + + + B + + + + + + Mask ALU/FUs + (scalar and/or/andc/etc. + on mask regs) + + + A + + + B + + + Result + + + Result + + + Result + + + + + + + + + + + + + + + + Mask registers are tracked by the dependency + matrix at the level of different `a` values, + different `b` values are treated as + belonging to the same register. + + + -- 2.30.2