Methodical Approximate Hardware Design and Reuse Amir - - PowerPoint PPT Presentation

methodical approximate hardware design and reuse
SMART_READER_LITE
LIVE PREVIEW

Methodical Approximate Hardware Design and Reuse Amir - - PowerPoint PPT Presentation

Methodical Approximate Hardware Design and Reuse Amir Yazdanbakhsh Bradley Thwaites Jongse Park Hadi Esmaeilzadeh Georgia InsBtute of Technology


slide-1
SLIDE 1

Methodical ¡Approximate ¡ Hardware ¡Design ¡and ¡Reuse ¡

Amir ¡Yazdanbakhsh ¡Bradley ¡Thwaites ¡ ¡ Jongse ¡Park ¡ ¡ ¡ ¡Hadi ¡Esmaeilzadeh ¡ ¡

¡Georgia ¡InsBtute ¡of ¡Technology ¡

slide-2
SLIDE 2

Outline ¡

Design ¡of ¡approximate ¡modules ¡ IntegraBon ¡and ¡reuse ¡of ¡approximate ¡modules ¡ Safety ¡analysis ¡ Output ¡quality ¡analysis ¡ QuesBons ¡

slide-3
SLIDE 3

Design ¡Phase ¡

  • How ¡does ¡the ¡designer ¡specify ¡what ¡can ¡be ¡

approximate? ¡

– Marking ¡individual ¡gates ¡is ¡burdensome. ¡ – Mark ¡only ¡output ¡wires ¡as ¡approximate ¡signals. ¡

  • Maintain ¡SeparaBon ¡
  • ApproximaBon ¡Plan ¡and ¡Interfacing ¡
slide-4
SLIDE 4

ApproximaBon ¡Plan ¡

a b c_in (* A *) s c_out w0 w1 w2 w3 x0 x1

module fa(a, b, c_in, c_out, s); input a, b, c_in;

  • utput c_out;

(∗A∗) output s; wire w0, w1, w2, w3; xor x0(w0, a, b); xor x1(s, w0, c_in); and u2(w1, a, b); and u2(w2, a, c_in); and u2(w3, b, c_in);

  • r

u4(c_out, w1, w2, w3);

endmodule

slide-5
SLIDE 5

Module ¡Interfacing ¡

(*A*) data_out approx_out (*C*) addr data_in (*C*) approx_in (*C*) wrt_en (*C*) clk DualState Memory

module DualStateMemory(

clk, wrt_en, address, data_in, approx_in, data_out, approx_out);

(∗C∗) input clk; (∗C∗) input wrt_en; (∗C∗) input[N-1:0] address;

input[M-1:0] data_in;

(∗C∗) input approx_in; (∗A∗) output[N-1:0] data_out;

  • utput approx_out;

...

endmodule

slide-6
SLIDE 6

Reuse ¡Phase ¡

  • Avoid ¡rewriBng ¡modules ¡from ¡scratch ¡

– Ease ¡of ¡development ¡

  • Reuse ¡of ¡IP ¡cores ¡

– MoBvaBon ¡for ¡innovaBon ¡and ¡entrepreneurship ¡

  • Scalability ¡for ¡very ¡large ¡designs ¡
slide-7
SLIDE 7

Overriding ¡

Full Adder a[0] b[0] c_in z[0] c[0] Full Adder a[1] b[1] z[1] c[1] Full Adder a[2] b[2] (*C*) z[2] c[2] Full Adder a[7] b[7] (*C*) z[7] c_out

Precise Modules Approximate Modules

slide-8
SLIDE 8

Overriding ¡within ¡a ¡Module ¡

b1 b2 b3

* * * * + + +

x (*C*) clk b0 (*A*) w1 (*A*) w3 (*A*) y (*C*) y (*A*) w0 (*A*) w2 w4 w5 d0 d1 d2 d3

*

m0 m1 m2 m3 a1 a2 a3

(*C*) rst

slide-9
SLIDE 9

Bridging ¡

(*C*) clk DualState Memory (*C*) wrt_en (*A*) data_out approx_out data_in (*C*) approx_in addr

slide-10
SLIDE 10

ApproximaBon ¡Safety ¡Analysis ¡

  • ApproximaBon ¡bridge ¡
  • vs. ¡criBcal ¡wire? ¡
  • Deciding ¡final ¡precision ¡
  • f ¡all ¡gates. ¡
  • Backward ¡Slicing ¡

Algorithm ¡ ¡ ¡

Algorithm 1 Backward slicing to find precise wires. Inputs: K: Circuit Θ: Set of precise outputs Ψ: Set of critical wire overrides Y: Set of approximate wires overrides Output: ℜ: Set of precise wires Initialize ℜ / Initialize Q / for each wi 2 (Θ [ Ψ) do enqueue(Q, wi) end for while (Q 6= / 0) do wi dequeue(Q) Φ In K, find input wires of the gate that drives wi for each w j 2 Φ do if (w j / 2 Y and wj / 2 ℜ) then ℜ ℜ [ w j enqueue(Q, wj) end if end for end while

slide-11
SLIDE 11

Cone ¡Analysis ¡

(*A*) y (*C*) y (*A*) w0 (*A*) w1 (*C*) w2 (*A*) y z

slide-12
SLIDE 12

Quality ¡Analysis ¡

  • Constraining ¡approximaBon ¡
  • Safety ¡vs. ¡Quality ¡
  • (*A: ¡f() ¡< ¡ε*) ¡
  • Profiling ¡with ¡test ¡inputs ¡
  • Global ¡confidence ¡metric ¡
slide-13
SLIDE 13

QuesBons? ¡