<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/62509d696caf5961920d964e/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62509d696caf5961920d964e/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">110<span class="_ _0"> </span>IEEE<span class="_ _1"> </span>TRANSA<span class="_ _2"></span>CTIONS<span class="_ _1"> </span>ON<span class="_ _1"> </span>CONSUMER<span class="_ _1"> </span>ELECTR<span class="_ _2"></span>ONICS,<span class="_ _1"> </span>V<span class="_ _2"></span>OL.<span class="_ _1"> </span>64,<span class="_ _1"> </span>NO.<span class="_ _1"> </span>1,<span class="_ _1"> </span>FEBR<span class="_ _2"></span>U<span class="_ _2"></span>AR<span class="_ _2"></span>Y<span class="_ _1"> </span>2018</div><div class="t m0 x2 h3 y2 ff1 fs1 fc0 sc0 ls1 ws0">Data<span class="_ _3"> </span>Compression<span class="_ _3"> </span>De<span class="_ _4"></span>vice<span class="_ _3"> </span>Based<span class="_ _3"> </span>on</div><div class="t m0 x3 h3 y3 ff1 fs1 fc0 sc0 ls1 ws0">Modified<span class="_ _3"> </span>LZ4<span class="_ _3"> </span>Algorithm</div><div class="t m0 x4 h4 y4 ff1 fs2 fc0 sc0 ls1 ws0">W<span class="_ _5"></span>eiqiang<span class="_ _6"> </span>Liu,<span class="_ _6"> </span><span class="ff2 ls2">Senior<span class="_ _6"> </span>Member<span class="_ _7"></span>,<span class="_ _6"> </span>IEEE<span class="ff1 ls3">,<span class="_ _6"> </span>Faqiang<span class="_ _6"> </span>Mei,<span class="_ _6"> </span>Chenghua<span class="_ _6"> </span>W<span class="_ _5"></span>ang,<span class="_ _6"> </span>Maire<span class="_ _6"> </span>O’Neill,<span class="_ _6"> </span><span class="ff2 ls2">Senior<span class="_ _6"> </span>Member<span class="_ _7"></span>,<span class="_ _6"> </span>IEEE<span class="_ _8"></span><span class="ff1 ls1">,</span></span></span></span></div><div class="t m0 x5 h4 y5 ff1 fs2 fc0 sc0 ls1 ws0">and<span class="_ _6"> </span>Earl<span class="_ _6"> </span>E.<span class="_ _6"> </span>Swartzlander<span class="_ _4"></span>,<span class="_ _6"> </span>Jr<span class="_ _4"></span>.,<span class="_ _6"> </span><span class="ff2 ls4">Life<span class="_ _6"> </span>F<span class="_ _5"></span>ellow<span class="_ _5"></span>,<span class="_ _6"> </span>IEEE</span></div><div class="t m0 x6 h5 y6 ff3 fs3 fc0 sc0 ls5 ws0">Abstract<span class="ff4 ls1">—Data<span class="_ _9"> </span>compression<span class="_ _9"> </span>is<span class="_ _9"> </span>commonly<span class="_ _9"> </span>used<span class="_ _a"> </span>in<span class="_ _9"> </span><span class="fs4 ls6">NAND<span class="_ _a"> </span></span><span class="ls7">flash-</span></span></div><div class="t m0 x1 h5 y7 ff4 fs3 fc0 sc0 ls1 ws0">based<span class="_ _6"> </span>solid<span class="_ _b"> </span>state<span class="_ _b"> </span>drives<span class="_ _6"> </span>(SSDs)<span class="_ _b"> </span>to<span class="_ _6"> </span>incr<span class="_ _4"></span>ease<span class="_ _6"> </span>their<span class="_ _b"> </span>storage<span class="_ _6"> </span>perfor<span class="_ _4"></span>-</div><div class="t m0 x1 h5 y8 ff4 fs3 fc0 sc0 ls1 ws0">mance<span class="_"> </span>and<span class="_ _1"> </span>lifetime<span class="_ _1"> </span>as<span class="_ _1"> </span>it<span class="_ _1"> </span>can<span class="_"> </span>reduce<span class="_ _1"> </span>the<span class="_"> </span>amount<span class="_ _1"> </span>of<span class="_ _1"> </span>data<span class="_ _1"> </span>written<span class="_ _1"> </span>to</div><div class="t m0 x1 h5 y9 ff4 fs3 fc0 sc0 ls8 ws0">and<span class="_ _6"> </span>read<span class="_ _6"> </span>from</div><div class="t m0 x7 h5 ya ff4 fs4 fc0 sc0 ls6 ws0">NAND<span class="_ _6"> </span><span class="fs3 ls1">flash<span class="_ _6"> </span>memory<span class="_ _5"></span>.<span class="_ _c"> </span>Software-based<span class="_ _6"> </span>data<span class="_ _6"> </span>com-</span></div><div class="t m0 x1 h5 yb ff4 fs3 fc0 sc0 ls1 ws0">pression<span class="_ _d"> </span>reduces<span class="_ _d"> </span>SSD<span class="_ _d"> </span>performance<span class="_ _d"> </span>significantly<span class="_ _e"> </span>and,<span class="_ _d"> </span>as<span class="_ _e"> </span>such,</div><div class="t m0 x1 h5 yc ff4 fs3 fc0 sc0 ls1 ws0">hardwar<span class="_ _2"></span>e-based<span class="_ _f"> </span>data<span class="_ _f"> </span>compression<span class="_ _e"> </span>designs<span class="_ _f"> </span>are<span class="_ _f"> </span>requir<span class="_ _2"></span>ed.<span class="_ _f"> </span>This</div><div class="t m0 x1 h5 yd ff4 fs3 fc0 sc0 ls5 ws0">paper<span class="_ _f"> </span>studies<span class="_ _f"> </span>the<span class="_ _f"> </span>latest<span class="_ _f"> </span>lossless<span class="_ _10"> </span>data<span class="_ _f"> </span>compression<span class="_ _f"> </span>algorithm,</div><div class="t m0 x1 h5 ye ff4 fs3 fc0 sc0 ls5 ws0">i.e.,<span class="_ _b"> </span>the<span class="_ _6"> </span>Lempel-Zi<span class="_ _2"></span>v<span class="_ _b"> </span>(LZ)4<span class="_ _b"> </span>algorithm<span class="_ _6"> </span>which<span class="_ _b"> </span>is<span class="_ _b"> </span>one<span class="_ _b"> </span>of<span class="_ _6"> </span>the<span class="_ _b"> </span>fastest</div><div class="t m0 x1 h5 yf ff4 fs3 fc0 sc0 ls1 ws0">compression<span class="_ _c"> </span>algorithms<span class="_ _d"> </span>reported<span class="_ _d"> </span>to<span class="_ _c"> </span>date.<span class="_ _d"> </span>A<span class="_ _d"> </span>data<span class="_ _c"> </span>compression</div><div class="t m0 x1 h5 y10 ff4 fs3 fc0 sc0 ls5 ws0">FPGA<span class="_"> </span>pr<span class="_ _2"></span>ototype<span class="_"> </span>based<span class="_ _11"> </span>on<span class="_"> </span>the<span class="_ _11"> </span>LZ4<span class="_"> </span>lossless<span class="_ _11"> </span>compression<span class="_"> </span>algorithm</div><div class="t m0 x1 h5 y11 ff4 fs3 fc0 sc0 ls1 ws0">is<span class="_ _6"> </span>studied.<span class="_ _b"> </span>The<span class="_ _6"> </span>original<span class="_ _b"> </span>LZ4<span class="_ _6"> </span>compr<span class="_ _4"></span>ession<span class="_ _6"> </span>algorithm<span class="_ _b"> </span>is<span class="_ _6"> </span>modified</div><div class="t m0 x1 h5 y12 ff4 fs3 fc0 sc0 ls8 ws0">for<span class="_ _a"> </span>real-time<span class="_ _9"> </span>hardwar<span class="_ _2"></span>e<span class="_ _9"> </span>implementation.<span class="_ _9"> </span>T<span class="_ _4"></span>wo<span class="_ _9"> </span>hardwar<span class="_ _2"></span>e<span class="_ _9"> </span>architec-</div><div class="t m0 x1 h5 y13 ff4 fs3 fc0 sc0 ls5 ws0">tures<span class="_ _9"> </span>of<span class="_ _b"> </span>the<span class="_ _9"> </span>modified<span class="_ _b"> </span>LZ4<span class="_ _b"> </span>algorithm<span class="_ _b"> </span>(MLZ4)<span class="_ _9"> </span>are<span class="_ _9"> </span>proposed<span class="_ _b"> </span>with</div><div class="t m0 x1 h5 y14 ff4 fs3 fc0 sc0 ls1 ws0">both<span class="_ _d"> </span>compressors<span class="_ _c"> </span>and<span class="_ _d"> </span>decompressors,<span class="_ _d"> </span>which<span class="_ _d"> </span>ar<span class="_ _2"></span>e<span class="_ _d"> </span>implemented</div><div class="t m0 x1 h5 y15 ff4 fs3 fc0 sc0 ls5 ws0">on<span class="_ _d"> </span>an<span class="_ _c"> </span>FPGA<span class="_ _d"> </span>e<span class="_ _2"></span>valuation<span class="_ _c"> </span>kit.<span class="_ _d"> </span>The<span class="_ _12"> </span>implementation<span class="_ _12"> </span>results<span class="_ _c"> </span>show</div><div class="t m0 x1 h5 y16 ff4 fs3 fc0 sc0 ls1 ws0">that<span class="_ _c"> </span>the<span class="_ _12"> </span>proposed<span class="_ _c"> </span>compressor<span class="_ _c"> </span>architecture<span class="_ _c"> </span>can<span class="_ _12"> </span>achieve<span class="_ _c"> </span>a<span class="_ _c"> </span>high</div><div class="t m0 x1 h5 y17 ff4 fs3 fc0 sc0 ls1 ws0">throughput<span class="_ _6"> </span>of<span class="_ _6"> </span>up<span class="_ _c"> </span>to<span class="_ _6"> </span>1.92<span class="_ _c"> </span>Gb/s<span class="_ _6"> </span>with<span class="_ _c"> </span>a<span class="_ _6"> </span>compression<span class="_ _6"> </span>ratio<span class="_ _c"> </span>of<span class="_ _6"> </span>up</div><div class="t m0 x1 h5 y18 ff4 fs3 fc0 sc0 ls1 ws0">to<span class="_ _b"> </span>2.05,<span class="_ _b"> </span>which<span class="_ _6"> </span>is<span class="_ _b"> </span>higher<span class="_ _b"> </span>than<span class="_ _6"> </span>all<span class="_ _9"> </span>previous<span class="_ _b"> </span>LZ<span class="_ _b"> </span>algorithm<span class="_ _b"> </span>designs</div><div class="t m0 x1 h5 y19 ff4 fs3 fc0 sc0 ls1 ws0">implemented<span class="_ _9"> </span>on<span class="_ _9"> </span>FPGAs.<span class="_ _9"> </span>The<span class="_ _9"> </span>compression<span class="_ _9"> </span>device<span class="_ _9"> </span>can<span class="_ _9"> </span>be<span class="_ _9"> </span>used<span class="_ _b"> </span>in</div><div class="t m0 x1 h5 y1a ff4 fs3 fc0 sc0 ls1 ws0">high-end<span class="_ _1"> </span>SSDs<span class="_ _a"> </span>to<span class="_ _1"> </span>further<span class="_ _a"> </span>increase<span class="_"> </span>their<span class="_ _a"> </span>storage<span class="_ _1"> </span>performance<span class="_ _1"> </span>and</div><div class="t m0 x1 h5 y1b ff4 fs3 fc0 sc0 ls1 ws0">lifetime.</div><div class="t m0 x6 h5 y1c ff3 fs3 fc0 sc0 ls1 ws0">Index<span class="_ _c"> </span>T<span class="_ _5"></span>erms<span class="ff4 ls5">—FPGA,<span class="_ _12"> </span>lossless<span class="_ _12"> </span>compression,<span class="_ _c"> </span>Lempel-Ziv<span class="_ _c"> </span>(LZ)</span></div><div class="t m0 x1 h5 y1d ff4 fs3 fc0 sc0 ls5 ws0">algorithms,<span class="_ _b"> </span>LZ4,<span class="_ _b"> </span>solid-state<span class="_ _b"> </span>drives<span class="_ _9"> </span>(SSDs).</div><div class="t m0 x8 h6 y1e ff1 fs5 fc0 sc0 ls9 ws0">I.<span class="_ _e"> </span>I<span class="fs6 lsa">NTR<span class="_ _4"></span>ODUCTION</span></div><div class="t m0 x1 h7 y1f ff4 fs7 fc0 sc0 ls1 ws0">S</div><div class="t m0 x9 h6 y20 ff1 fs5 fc0 sc0 lsb ws0">OLID-ST<span class="_ _5"></span>A<span class="_ _7"></span>TE<span class="_ _6"> </span>dri<span class="_ _4"></span>ves<span class="_ _6"> </span>(SSDs)<span class="_ _b"> </span>based<span class="_ _6"> </span>on<span class="_ _6"> </span><span class="fs6 lsc">NA<span class="_ _8"></span>N<span class="_ _8"></span>D<span class="_ _6"> </span></span>flash<span class="_ _b"> </span>mem-</div><div class="t m0 x9 h6 y21 ff1 fs5 fc0 sc0 lsb ws0">ory<span class="_ _6"> </span>ha<span class="_ _4"></span>ve<span class="_ _6"> </span>become<span class="_ _b"> </span>popular<span class="_ _6"> </span>in<span class="_ _b"> </span>consumer<span class="_ _6"> </span>electronic<span class="_ _b"> </span>devices</div><div class="t m0 x1 h6 y22 ff1 fs5 fc0 sc0 lsb ws0">such<span class="_ _e"> </span>as<span class="_ _e"> </span>smart<span class="_ _e"> </span>phones,<span class="_ _e"> </span>tablet,<span class="_ _e"> </span>and<span class="_ _e"> </span>desktop<span class="_ _e"> </span>systems<span class="_ _6"> </span>[<span class="fc1 ls1">1</span><span class="lsd">],<span class="_ _b"> </span>[<span class="fc1 ls1">2</span><span class="lse">].</span></span></div><div class="t m0 x1 h6 y23 ff1 fs5 fc0 sc0 lsb ws0">It<span class="_ _c"> </span>is<span class="_ _c"> </span>highly<span class="_ _c"> </span>desirable<span class="_ _c"> </span>to<span class="_ _c"> </span>reduce<span class="_ _c"> </span>the<span class="_ _c"> </span>amount<span class="_ _12"> </span>of<span class="_ _c"> </span>data<span class="_ _c"> </span>in<span class="_ _c"> </span>SSDs</div><div class="t m0 x1 h6 y24 ff1 fs5 fc0 sc0 lsf ws0">and<span class="_ _d"> </span>the<span class="_ _e"> </span>read/write<span class="_ _e"> </span>data<span class="_ _e"> </span>transmission<span class="_ _d"> </span>time<span class="_ _e"> </span>to/from<span class="_ _e"> </span>SSDs<span class="_ _d"> </span>as</div><div class="t m0 x1 h6 y25 ff1 fs5 fc0 sc0 lsb ws0">flash<span class="_ _f"> </span>memory<span class="_ _f"> </span>has<span class="_ _10"> </span>a<span class="_ _f"> </span>finite<span class="_ _10"> </span>number<span class="_ _f"> </span>of<span class="_ _f"> </span>program-erase<span class="_ _10"> </span>(P/E)</div><div class="t m0 x1 h6 y26 ff1 fs5 fc0 sc0 lsf ws0">cycles<span class="_ _e"> </span>thus<span class="_ _e"> </span>limited<span class="_ _e"> </span>lifetime<span class="_ _6"> </span>[<span class="fc1 ls1">3</span><span class="lsb">].<span class="_ _d"> </span>For<span class="_ _e"> </span>example,<span class="_ _e"> </span>older<span class="_ _e"> </span>single-</span></div><div class="t m0 x1 h6 y27 ff1 fs5 fc0 sc0 lsb ws0">le<span class="_ _2"></span>vel<span class="_ _c"> </span>cell<span class="_ _c"> </span>(SLC)</div><div class="t m0 xa h6 y28 ff1 fs6 fc0 sc0 ls10 ws0">N<span class="_ _2"></span>AND<span class="fs5 lsf">-flash<span class="_ _6"> </span>memory<span class="_ _12"> </span>was<span class="_ _c"> </span>able<span class="_ _c"> </span>to<span class="_ _12"> </span>withstand</span></div><div class="t m0 x1 h6 y29 ff1 fs5 fc0 sc0 lsf ws0">150<span class="_ _b"> </span>000<span class="_ _6"> </span>P/E<span class="_ _b"> </span>cycles,<span class="_ _b"> </span>while<span class="_ _b"> </span>multilev<span class="_ _2"></span>el<span class="_ _b"> </span>cell<span class="_ _6"> </span>(MLC)<span class="_ _b"> </span><span class="fs6 lsc">NA<span class="_ _8"></span>N<span class="_ _8"></span>D</span><span class="ls1">-flash</span></div><div class="t m0 x1 h6 y2a ff1 fs5 fc0 sc0 lsb ws0">memory<span class="_ _a"> </span>using<span class="_ _9"> </span>15–19<span class="_ _6"> </span>nm<span class="_ _a"> </span>process<span class="_ _a"> </span>technologies<span class="_ _9"> </span>wears<span class="_ _9"> </span>out<span class="_ _a"> </span>after</div><div class="t m0 x1 h6 y2b ff1 fs5 fc0 sc0 ls11 ws0">only<span class="_ _6"> </span>3000<span class="_ _c"> </span>P/E<span class="_ _c"> </span>cycles<span class="_ _b"> </span>[<span class="fc1 ls1">2</span><span class="lse">],<span class="_ _b"> </span>[<span class="fc1 ls1">4</span><span class="lsf">].<span class="_ _c"> </span>Furthermore,<span class="_ _c"> </span>the<span class="_ _c"> </span>performance</span></span></div><div class="t m0 xb h8 y2c ff1 fs6 fc0 sc0 ls12 ws0">Manuscript<span class="_ _f"> </span>received<span class="_ _f"> </span>December<span class="_ _f"> </span>4,<span class="_ _f"> </span>2017;<span class="_ _f"> </span>revised<span class="_ _f"> </span>February<span class="_ _f"> </span>10,<span class="_ _10"> </span>2018;</div><div class="t m0 x1 h8 y2d ff1 fs6 fc0 sc0 ls1 ws0">accepted<span class="_ _1"> </span>February<span class="_ _a"> </span>15,<span class="_ _1"> </span>2018.<span class="_ _a"> </span>Date<span class="_ _1"> </span>of<span class="_ _a"> </span>publication<span class="_ _1"> </span>March<span class="_ _a"> </span>2,<span class="_ _1"> </span>2018;<span class="_ _a"> </span>date<span class="_ _1"> </span>of<span class="_ _a"> </span>cur-</div><div class="t m0 x1 h8 y2e ff1 fs6 fc0 sc0 ls12 ws0">rent<span class="_ _a"> </span>version<span class="_ _9"> </span>March<span class="_ _9"> </span>29,<span class="_ _9"> </span>2018.<span class="_ _a"> </span>This<span class="_ _9"> </span>work<span class="_ _9"> </span>was<span class="_ _a"> </span>supported<span class="_ _9"> </span>by<span class="_ _9"> </span>the<span class="_ _9"> </span>Fundamental</div><div class="t m0 x1 h8 y2f ff1 fs6 fc0 sc0 ls12 ws0">Research<span class="_ _a"> </span>Funds<span class="_ _9"> </span>for<span class="_ _a"> </span>the<span class="_ _9"> </span>Central<span class="_ _a"> </span>Universities<span class="_ _a"> </span>China<span class="_ _a"> </span>under<span class="_ _9"> </span>Grant<span class="_ _a"> </span>NS2017024.</div><div class="t m0 x1 h9 y30 ff2 fs6 fc0 sc0 ls12 ws0">(Corr<span class="_ _2"></span>esponding<span class="_ _a"> </span>author:<span class="_ _a"> </span>W<span class="_ _5"></span>eiqiang<span class="_ _a"> </span>Liu.)</div><div class="t m0 xb h8 y31 ff1 fs6 fc0 sc0 ls1 ws0">W<span class="_ _5"></span>.<span class="_ _10"> </span>Liu,<span class="_ _f"> </span>F<span class="_ _4"></span>.<span class="_ _f"> </span>Mei,<span class="_ _10"> </span>and<span class="_ _f"> </span>C.<span class="_ _10"> </span>W<span class="_ _4"></span>ang<span class="_ _f"> </span>are<span class="_ _10"> </span>with<span class="_ _f"> </span>the<span class="_ _10"> </span>College<span class="_ _f"> </span>of<span class="_ _f"> </span>Electronic</div><div class="t m0 x1 h8 y32 ff1 fs6 fc0 sc0 ls1 ws0">and<span class="_ _13"> </span>Information<span class="_ _13"> </span>Engineering,<span class="_ _13"> </span>Nanjing<span class="_ _13"> </span>Univ<span class="_ _2"></span>ersity<span class="_ _13"> </span>of<span class="_ _13"> </span>Aeronautics<span class="_ _13"> </span>and</div><div class="t m0 x1 h8 y33 ff1 fs6 fc0 sc0 ls1 ws0">Astronautics,<span class="_ _f"> </span>Nanjing<span class="_ _10"> </span>211106,<span class="_ _10"> </span>China<span class="_ _f"> </span>(e-mail:<span class="_ _10"> </span>liuweiqiang@nuaa.edu.cn;</div><div class="t m0 x1 h8 y34 ff1 fs6 fc0 sc0 ls1 ws0">meifaqiang@nuaa.edu.cn;<span class="_ _a"> </span>chwang@nuaa.edu.cn).</div><div class="t m0 xb h8 y35 ff1 fs6 fc0 sc0 ls1 ws0">M.<span class="_"> </span>O’Neill<span class="_"> </span>is<span class="_"> </span>with<span class="_"> </span>the<span class="_"> </span>Center<span class="_"> </span>for<span class="_"> </span>Secure<span class="_"> </span>Information<span class="_"> </span>T<span class="_ _5"></span>echnologies,<span class="_"> </span>Queen’<span class="_ _4"></span>s</div><div class="t m0 x1 h8 y36 ff1 fs6 fc0 sc0 ls13 ws0">Univ<span class="_ _2"></span>ersity<span class="_ _1"> </span>Belfast,<span class="_ _1"> </span>Belfast<span class="_ _1"> </span>BT3<span class="_ _1"> </span>9DT<span class="_ _5"></span>,<span class="_ _1"> </span>U.K.<span class="_ _1"> </span>(e-mail:<span class="_ _a"> </span>m.oneill@ecit.qub<span class="_ _4"></span>.ac.uk).</div><div class="t m0 xb h8 y37 ff1 fs6 fc0 sc0 ls13 ws0">E.<span class="_ _6"> </span>E.<span class="_ _c"> </span>Swartzlander<span class="_ _6"> </span>is<span class="_ _c"> </span>with<span class="_ _6"> </span>the<span class="_ _c"> </span>Department<span class="_ _6"> </span>of<span class="_ _c"> </span>Electrical<span class="_ _6"> </span>and<span class="_ _c"> </span>Computer</div><div class="t m0 x1 h8 y38 ff1 fs6 fc0 sc0 ls1 ws0">Engineering,<span class="_ _a"> </span>Univ<span class="_ _2"></span>ersity<span class="_ _a"> </span>of<span class="_ _a"> </span>T<span class="_ _4"></span>exas<span class="_ _1"> </span>at<span class="_ _a"> </span>Austin,<span class="_ _a"> </span>Austin,<span class="_ _9"> </span>TX<span class="_ _a"> </span>78712<span class="_ _a"> </span>USA<span class="_ _a"> </span>(e-mail:</div><div class="t m0 x1 h8 y39 ff1 fs6 fc0 sc0 ls13 ws0">eswartzla@aol.com).</div><div class="t m0 xb h8 y3a ff1 fs6 fc0 sc0 ls1 ws0">Digital<span class="_ _a"> </span>Object<span class="_ _a"> </span>Identifier<span class="_ _a"> </span>10.1109/TCE.2018.2810480</div><div class="t m0 xc h8 y3b ff1 fs6 fc0 sc0 ls13 ws0">Fig.<span class="_ _a"> </span>1.<span class="_ _3"> </span>T<span class="_ _4"></span>ypical<span class="_ _a"> </span>SSD<span class="_ _a"> </span>architecture<span class="_ _a"> </span>with<span class="_ _a"> </span>data<span class="_ _a"> </span>compression<span class="_ _a"> </span>acceleration.</div><div class="t m0 xc h6 y3c ff1 fs5 fc0 sc0 lsb ws0">of<span class="_ _12"> </span>MLC<span class="_ _c"> </span>flash<span class="_ _12"> </span>memory<span class="_ _12"> </span>is<span class="_ _12"> </span>also<span class="_ _12"> </span>much<span class="_ _12"> </span>slower<span class="_ _c"> </span>than<span class="_ _12"> </span>that<span class="_ _12"> </span>of<span class="_ _c"> </span>its</div><div class="t m0 xc h6 y3d ff1 fs5 fc0 sc0 lsb ws0">SLC<span class="_ _b"> </span>counterpart.<span class="_ _b"> </span>Also,<span class="_ _b"> </span>more<span class="_ _b"> </span>advanced<span class="_ _9"> </span>triple-lev<span class="_ _2"></span>el<span class="_ _b"> </span>cell</div><div class="t m0 xd h8 y3e ff1 fs6 fc0 sc0 lsc ws0">NA<span class="_ _8"></span>ND</div><div class="t m0 xc h6 y3f ff1 fs5 fc0 sc0 ls11 ws0">flash<span class="_ _12"> </span>memory<span class="_ _12"> </span>has<span class="_ _12"> </span>an<span class="_ _12"> </span>ev<span class="_ _2"></span>en<span class="_ _12"> </span>lower<span class="_ _c"> </span>number<span class="_ _12"> </span>of<span class="_ _12"> </span>P/E<span class="_ _d"> </span>cycles<span class="_ _b"> </span>[<span class="fc1 ls1">5</span><span class="ls14">].</span></div><div class="t m0 xc h6 y40 ff1 fs5 fc0 sc0 lsf ws0">This<span class="_ _12"> </span>problem<span class="_ _12"> </span>is<span class="_ _12"> </span>expected<span class="_ _12"> </span>to<span class="_ _d"> </span>worsen<span class="_ _12"> </span>with<span class="_ _12"> </span>further<span class="_ _12"> </span>scaling<span class="_ _12"> </span>of</div><div class="t m0 xc h6 y41 ff1 fs5 fc0 sc0 lsf ws0">the<span class="_ _9"> </span>semiconductor<span class="_ _b"> </span>process.<span class="_ _b"> </span>Therefore,<span class="_ _9"> </span>to<span class="_ _b"> </span>increase<span class="_ _9"> </span>the<span class="_ _b"> </span>lifetime</div><div class="t m0 xc h6 y42 ff1 fs5 fc0 sc0 lsb ws0">and<span class="_ _b"> </span>also<span class="_ _b"> </span>the<span class="_ _b"> </span>performance<span class="_ _b"> </span>of<span class="_ _b"> </span>flash-based<span class="_ _b"> </span>SSDs,<span class="_ _b"> </span>the<span class="_ _b"> </span>amount<span class="_ _b"> </span>of</div><div class="t m0 xc h6 y43 ff1 fs5 fc0 sc0 lsb ws0">data<span class="_ _c"> </span>written<span class="_ _12"> </span>to<span class="_ _12"> </span>and<span class="_ _c"> </span>read<span class="_ _12"> </span>from<span class="_ _12"> </span>the<span class="_ _c"> </span>SSDs<span class="_ _12"> </span>should<span class="_ _12"> </span>be<span class="_ _12"> </span>reduced,</div><div class="t m0 xc h6 y44 ff1 fs5 fc0 sc0 lsb ws0">which<span class="_ _b"> </span>can<span class="_ _b"> </span>be<span class="_ _b"> </span>achiev<span class="_ _2"></span>ed<span class="_ _b"> </span>using<span class="_ _b"> </span>data<span class="_ _b"> </span>compression.<span class="_ _6"> </span>Another<span class="_ _9"> </span>ben-</div><div class="t m0 xc h6 y45 ff1 fs5 fc0 sc0 lsb ws0">efit<span class="_ _6"> </span>of<span class="_ _c"> </span>using<span class="_ _c"> </span>lossless<span class="_ _6"> </span>data<span class="_ _c"> </span>compression<span class="_ _6"> </span>in<span class="_ _c"> </span>SSDs<span class="_ _c"> </span>is<span class="_ _6"> </span>to<span class="_ _c"> </span>reduce</div><div class="t m0 xc h6 y46 ff1 fs5 fc0 sc0 lsf ws0">the<span class="_ _b"> </span>I/O<span class="_ _6"> </span>latenc<span class="_ _4"></span>y<span class="_ _4"></span>.</div><div class="t m0 xe h6 y47 ff1 fs5 fc0 sc0 lsb ws0">Data<span class="_ _13"> </span>compression<span class="_ _13"> </span>for<span class="_ _13"> </span>SSDs<span class="_ _13"> </span>has<span class="_ _13"> </span>been<span class="_ _13"> </span>widely<span class="_ _13"> </span>adopted.</div><div class="t m0 xc h6 y48 ff1 fs5 fc0 sc0 lsf ws0">Data<span class="_ _b"> </span>compression<span class="_ _6"> </span>can<span class="_ _b"> </span>be<span class="_ _6"> </span>implemented<span class="_ _b"> </span>in<span class="_ _6"> </span>three<span class="_ _b"> </span>layers:<span class="_ _b"> </span>1)<span class="_ _6"> </span>the</div><div class="t m0 xc h6 y49 ff1 fs5 fc0 sc0 lsf ws0">application;<span class="_ _b"> </span>2)<span class="_ _b"> </span>the<span class="_ _b"> </span>file<span class="_ _b"> </span>system;<span class="_ _b"> </span>or<span class="_ _6"> </span>3)<span class="_ _9"> </span>the<span class="_ _b"> </span>firmware<span class="_ _b"> </span>of<span class="_ _b"> </span>the<span class="_ _b"> </span>stor-</div><div class="t m0 xc h6 y4a ff1 fs5 fc0 sc0 lsb ws0">age<span class="_ _b"> </span>device.<span class="_ _b"> </span>Most<span class="_ _b"> </span>data<span class="_ _b"> </span>compression<span class="_ _6"> </span>algorithms<span class="_ _9"> </span>are<span class="_ _6"> </span>adopted<span class="_ _9"> </span>in</div><div class="t m0 xc h6 y4b ff1 fs5 fc0 sc0 lsf ws0">the<span class="_ _a"> </span>application<span class="_ _a"> </span>layer<span class="_ _9"> </span>and<span class="_ _a"> </span>the<span class="_ _9"> </span>file<span class="_ _a"> </span>system<span class="_ _9"> </span>using<span class="_ _a"> </span>software<span class="_ _a"> </span>imple-</div><div class="t m0 xc h6 y4c ff1 fs5 fc0 sc0 lsf ws0">mentation.<span class="_ _b"> </span>Software-based<span class="_ _6"> </span>data<span class="_ _9"> </span>compression<span class="_ _6"> </span>can<span class="_ _b"> </span>be<span class="_ _6"> </span>useful<span class="_ _b"> </span>in</div><div class="t m0 xc h6 y4d ff1 fs5 fc0 sc0 lsf ws0">improving<span class="_ _b"> </span>the<span class="_ _6"> </span>lifetime<span class="_ _b"> </span>of<span class="_ _6"> </span>SSDs.<span class="_ _b"> </span>Howe<span class="_ _4"></span>ver<span class="_ _4"></span>,<span class="_ _6"> </span>the<span class="_ _b"> </span>overall<span class="_ _b"> </span>perfor-</div><div class="t m0 xc h6 y4e ff1 fs5 fc0 sc0 lsb ws0">mance<span class="_ _b"> </span>of<span class="_ _b"> </span>SSDs<span class="_ _b"> </span>is<span class="_ _b"> </span>reduced<span class="_ _6"> </span>significantly<span class="_ _9"> </span>due<span class="_ _b"> </span>to<span class="_ _b"> </span>the<span class="_ _6"> </span>slo<span class="_ _4"></span>w<span class="_ _b"> </span>com-</div><div class="t m0 xc h6 y4f ff1 fs5 fc0 sc0 lsb ws0">pression<span class="_ _6"> </span>and<span class="_ _6"> </span>decompression<span class="_ _c"> </span>speed.<span class="_ _6"> </span>A<span class="_ _c"> </span>recent<span class="_ _6"> </span>study<span class="_ _6"> </span>[<span class="fc1 ls1">6</span>]<span class="_ _6"> </span>based</div><div class="t m0 xc h6 y50 ff1 fs5 fc0 sc0 lsb ws0">on<span class="_ _c"> </span>realistic<span class="_ _12"> </span>data<span class="_ _12"> </span>and<span class="_ _12"> </span>systems<span class="_ _12"> </span>show<span class="_ _c"> </span>that<span class="_ _12"> </span>applying<span class="_ _12"> </span>data<span class="_ _c"> </span>com-</div><div class="t m0 xc h6 y51 ff1 fs5 fc0 sc0 lsf ws0">pression<span class="_"> </span>in<span class="_ _a"> </span>the<span class="_"> </span>firmware<span class="_ _a"> </span>of<span class="_"> </span>the<span class="_ _a"> </span>SSDs<span class="_"> </span>using<span class="_ _a"> </span>a<span class="_"> </span>data<span class="_ _a"> </span>compression</div><div class="t m0 xc h6 y52 ff1 fs5 fc0 sc0 lsb ws0">hardware<span class="_ _1"> </span>accelerator<span class="_ _11"> </span>is<span class="_"> </span>the<span class="_"> </span>best<span class="_ _11"> </span>approach.<span class="_"> </span>A<span class="_"> </span>typical<span class="_ _14"> </span>SSD<span class="_"> </span>archi-</div><div class="t m0 xc h6 y53 ff1 fs5 fc0 sc0 lsf ws0">tecture<span class="_ _9"> </span>with<span class="_ _9"> </span>data<span class="_ _9"> </span>compression<span class="_ _9"> </span>acceleration<span class="_ _9"> </span>is<span class="_ _b"> </span>sho<span class="_ _2"></span>wn<span class="_ _9"> </span>in<span class="_ _9"> </span>Fig.<span class="_ _9"> </span><span class="fc1 ls1">1<span class="fc0">.</span></span></div><div class="t m0 xe h6 y54 ff1 fs5 fc0 sc0 lsb ws0">Although<span class="_"> </span>hardware-based<span class="_ _11"> </span>compression<span class="_"> </span>is<span class="_"> </span>required<span class="_ _14"> </span>for</div><div class="t m0 xd h8 y55 ff1 fs6 fc0 sc0 lsa ws0">N<span class="_ _2"></span>AND</div><div class="t m0 xc h6 y56 ff1 fs5 fc0 sc0 lsb ws0">flash<span class="_ _12"> </span>memory<span class="_ _12"> </span>and<span class="_ _12"> </span>SSDs,<span class="_ _12"> </span>little<span class="_ _12"> </span>research<span class="_ _12"> </span>has<span class="_ _12"> </span>been<span class="_ _12"> </span>conducted</div><div class="t m0 xc h6 y57 ff1 fs5 fc0 sc0 lsb ws0">on<span class="_ _f"> </span>how<span class="_ _f"> </span>to<span class="_ _f"> </span>design<span class="_ _10"> </span>a<span class="_ _10"> </span>high<span class="_ _f"> </span>performance<span class="_ _10"> </span>hardware<span class="_ _f"> </span>compres-</div><div class="t m0 xc h6 y58 ff1 fs5 fc0 sc0 lsb ws0">sion<span class="_ _c"> </span>accelerator<span class="_ _6"> </span>[<span class="fc1 ls1">7</span><span class="lsf">]–[<span class="fc1 ls15">13</span><span class="lsd">].<span class="_ _6"> </span>In<span class="_ _6"> </span>[<span class="fc1 ls1">6</span></span></span>],<span class="_ _6"> </span>it<span class="_ _12"> </span>was<span class="_ _c"> </span>found<span class="_ _c"> </span>that<span class="_ _12"> </span>for<span class="_ _c"> </span>high-</div><div class="t m0 xc h6 y59 ff1 fs5 fc0 sc0 lsb ws0">end<span class="_ _f"> </span>SSDs<span class="_ _f"> </span>with<span class="_ _f"> </span>transaction<span class="_ _f"> </span>rates<span class="_ _f"> </span>of<span class="_ _f"> </span>up<span class="_ _f"> </span>to<span class="_ _f"> </span>3K<span class="_ _f"> </span>per<span class="_ _f"> </span>second,</div><div class="t m0 xc h6 y5a ff1 fs5 fc0 sc0 lsf ws0">compression/decompression<span class="_ _10"> </span>rates<span class="_ _10"> </span>of<span class="_ _10"> </span>above<span class="_ _10"> </span>200<span class="_ _10"> </span>Mb/s<span class="_ _10"> </span>(i.e.,</div><div class="t m0 xc h6 y5b ff1 fs5 fc0 sc0 lsf ws0">1.6<span class="_ _e"> </span>Gb/s)<span class="_ _e"> </span>are<span class="_ _f"> </span>required.<span class="_ _e"> </span>Howe<span class="_ _4"></span>ver<span class="_ _4"></span>,<span class="_ _f"> </span>existing<span class="_ _d"> </span>designs<span class="_ _f"> </span>are<span class="_ _e"> </span>lim-</div><div class="t m0 xc h6 y5c ff1 fs5 fc0 sc0 lsf ws0">ited<span class="_ _6"> </span>in<span class="_ _b"> </span>performance<span class="_ _6"> </span>with<span class="_ _6"> </span>compression<span class="_ _b"> </span>speeds<span class="_ _6"> </span>in<span class="_ _6"> </span>the<span class="_ _b"> </span>range<span class="_ _6"> </span>of</div><div class="t m0 xc h6 y5d ff1 fs5 fc0 sc0 lsb ws0">0.567–1.6<span class="_ _6"> </span>Gb/s<span class="_ _b"> </span>[<span class="fc1 ls1">7<span class="fc0">]–[</span><span class="ls15">13<span class="fc0">],<span class="_ _6"> </span>which<span class="_ _6"> </span>cannot<span class="_ _6"> </span>meet<span class="_ _6"> </span>the<span class="_ _6"> </span>requirement</span></span></span></div><div class="t m0 xc h6 y5e ff1 fs5 fc0 sc0 lsb ws0">of<span class="_ _b"> </span>high-end<span class="_ _6"> </span>SSDs.</div><div class="t m0 xe h6 y5f ff1 fs5 fc0 sc0 lsb ws0">In<span class="_ _a"> </span>this<span class="_ _9"> </span>paper,<span class="_ _a"> </span>the<span class="_ _9"> </span>design<span class="_ _a"> </span>of<span class="_ _9"> </span>a<span class="_ _9"> </span>hardware<span class="_ _9"> </span>accelerator<span class="_ _9"> </span>based<span class="_ _a"> </span>on</div><div class="t m0 xc h6 y60 ff1 fs5 fc0 sc0 lsf ws0">the<span class="_"> </span>latest<span class="_"> </span>lossless<span class="_"> </span>data<span class="_"> </span>compression<span class="_"> </span>algorithm,<span class="_"> </span>i.e.,<span class="_"> </span>Lempel-Zi<span class="_ _4"></span>v</div><div class="t m0 xf h8 y61 ff1 fs6 fc0 sc0 ls16 ws0">1558-4127</div><div class="t m0 x10 h8 y62 ff1 fs6 fc0 sc0 ls1 ws0">c</div><div class="t m0 x11 h8 y61 ff5 fs6 fc0 sc0 ls1 ws0"><span class="_"> </span><span class="ff1">2018<span class="_ _a"> </span>IEEE.<span class="_ _a"> </span>Personal<span class="_ _a"> </span>use<span class="_ _a"> </span>is<span class="_ _a"> </span>permitted,<span class="_ _9"> </span>but<span class="_ _1"> </span>republication/redistribution<span class="_ _a"> </span>requires<span class="_ _a"> </span>IEEE<span class="_ _a"> </span>permission.</span></div><div class="t m0 x12 h8 y63 ff1 fs6 fc0 sc0 ls1 ws0">See<span class="_ _a"> </span>http://www<span class="_ _4"></span>.ieee.org/publications_standards/publications/rights/index.html<span class="_ _1"> </span>for<span class="_ _a"> </span>more<span class="_ _a"> </span>information.</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62509d696caf5961920d964e/bg2.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">LIU<span class="_ _1"> </span><span class="ff2">et<span class="_ _14"> </span>al.</span><span class="ls17">:<span class="_ _9"> </span>DA<span class="_ _7"></span>T<span class="_ _4"></span>A<span class="_ _1"> </span>COMPRESSION<span class="_ _1"> </span>DEVICE<span class="_ _1"> </span>BASED<span class="_ _14"> </span>ON<span class="_ _1"> </span>MLZ4<span class="_ _15"> </span><span class="ls18">111</span></span></div><div class="t m0 x1 h6 y64 ff1 fs5 fc0 sc0 ls1 ws0">(LZ)4<span class="_ _b"> </span>[<span class="fc1 ls15">14</span><span class="lsb">]<span class="_ _6"> </span>for<span class="_ _b"> </span>data<span class="_ _b"> </span>compression<span class="_ _6"> </span>in<span class="_ _9"> </span>high-end<span class="_ _6"> </span>SSDs<span class="_ _b"> </span>is<span class="_ _b"> </span>studied</span></div><div class="t m0 x1 h6 y65 ff1 fs5 fc0 sc0 lsb ws0">and<span class="_ _a"> </span>demonstrated<span class="_ _a"> </span>on<span class="_ _9"> </span>an<span class="_ _a"> </span>FPGA<span class="_ _9"> </span>de<span class="_ _2"></span>vice.<span class="_ _a"> </span>The<span class="_ _a"> </span>original<span class="_ _9"> </span>LZ4<span class="_ _a"> </span>algo-</div><div class="t m0 x1 h6 y66 ff1 fs5 fc0 sc0 lsb ws0">rithm<span class="_ _d"> </span>is<span class="_ _d"> </span>somewhat<span class="_ _12"> </span>difficult<span class="_ _12"> </span>to<span class="_ _e"> </span>implement<span class="_ _d"> </span>in<span class="_ _d"> </span>hardware<span class="_ _d"> </span>as<span class="_ _d"> </span>it</div><div class="t m0 x1 h6 y67 ff1 fs5 fc0 sc0 lsf ws0">was<span class="_ _6"> </span>proposed<span class="_ _6"> </span>for<span class="_ _b"> </span>software<span class="_ _6"> </span>implementation.<span class="_ _6"> </span>It<span class="_ _6"> </span>is<span class="_ _6"> </span>not<span class="_ _6"> </span>possible</div><div class="t m0 x1 h6 y68 ff1 fs5 fc0 sc0 lsf ws0">to<span class="_ _9"> </span>store<span class="_ _b"> </span>all<span class="_ _b"> </span>the<span class="_ _9"> </span>text<span class="_ _b"> </span>in<span class="_ _9"> </span>calculating<span class="_ _b"> </span>the<span class="_ _b"> </span>hash.<span class="_ _9"> </span>Its<span class="_ _b"> </span>output<span class="_ _b"> </span>delay<span class="_ _b"> </span>is</div><div class="t m0 x1 h6 y69 ff1 fs5 fc0 sc0 lsb ws0">uncertain<span class="_ _a"> </span>and<span class="_ _9"> </span>the<span class="_ _9"> </span>input<span class="_ _a"> </span>data<span class="_ _9"> </span>is<span class="_ _9"> </span>limited<span class="_ _a"> </span>by<span class="_ _9"> </span>the<span class="_ _9"> </span>address<span class="_ _9"> </span>width<span class="_ _a"> </span>of</div><div class="t m0 x1 h6 y6a ff1 fs5 fc0 sc0 lsb ws0">the<span class="_ _b"> </span>hash<span class="_ _b"> </span>table.<span class="_ _b"> </span>As<span class="_ _6"> </span>a<span class="_ _9"> </span>result,<span class="_ _b"> </span>the<span class="_ _6"> </span>LZ4<span class="_ _9"> </span>algorithm<span class="_ _b"> </span>has<span class="_ _6"> </span>been<span class="_ _9"> </span>mod-</div><div class="t m0 x1 h6 y6b ff1 fs5 fc0 sc0 lsb ws0">ified<span class="_ _9"> </span>for<span class="_ _b"> </span>hardware<span class="_ _9"> </span>implementation<span class="_ _b"> </span>in<span class="_ _9"> </span>this<span class="_ _b"> </span>paper<span class="_ _9"> </span>to<span class="_ _b"> </span>solve<span class="_ _9"> </span>these</div><div class="t m0 x1 h6 y6c ff1 fs5 fc0 sc0 lsf ws0">problems.<span class="_ _b"> </span>By<span class="_ _b"> </span>using<span class="_ _6"> </span>the<span class="_ _9"> </span>modified<span class="_ _6"> </span>LZ4<span class="_ _9"> </span>algorithm<span class="_ _6"> </span>(MLZ4),<span class="_ _9"> </span>the</div><div class="t m0 x1 h6 y6d ff1 fs5 fc0 sc0 lsf ws0">hash<span class="_ _6"> </span>computation<span class="_ _c"> </span>is<span class="_ _6"> </span>improved<span class="_ _6"> </span>for<span class="_ _6"> </span>the<span class="_ _6"> </span>compression<span class="_ _c"> </span>ratio<span class="_ _6"> </span>and</div><div class="t m0 x1 h6 y6e ff1 fs5 fc0 sc0 lsb ws0">lo<span class="_ _2"></span>w<span class="_ _d"> </span>output<span class="_ _e"> </span>latency<span class="_ _d"> </span>is<span class="_ _e"> </span>achiev<span class="_ _2"></span>ed.<span class="_ _d"> </span>The<span class="_ _e"> </span>implementation<span class="_ _e"> </span>results</div><div class="t m0 x1 h6 y6f ff1 fs5 fc0 sc0 lsb ws0">on<span class="_ _6"> </span>an<span class="_ _b"> </span>FPGA<span class="_ _6"> </span>platform<span class="_ _6"> </span>sho<span class="_ _4"></span>w<span class="_ _6"> </span>the<span class="_ _6"> </span>proposed<span class="_ _b"> </span>MLZ4<span class="_ _6"> </span>architecture</div><div class="t m0 x1 h6 y70 ff1 fs5 fc0 sc0 lsb ws0">and<span class="_ _d"> </span>provides<span class="_ _12"> </span>the<span class="_ _d"> </span>highest<span class="_ _d"> </span>throughput<span class="_ _e"> </span>performance<span class="_ _d"> </span>compared</div><div class="t m0 x1 h6 y71 ff1 fs5 fc0 sc0 lsb ws0">with<span class="_"> </span>pre<span class="_ _2"></span>vious<span class="_"> </span>FPGA<span class="_"> </span>implementations<span class="_"> </span>of<span class="_"> </span>LZ<span class="_"> </span>algorithms,<span class="_"> </span>which</div><div class="t m0 x1 h6 y72 ff1 fs5 fc0 sc0 lsb ws0">makes<span class="_ _b"> </span>it<span class="_ _b"> </span>suitable<span class="_ _6"> </span>for<span class="_ _b"> </span>high-end<span class="_ _b"> </span>SSDs.</div><div class="t m0 x6 h6 y73 ff1 fs5 fc0 sc0 lsf ws0">This<span class="_ _9"> </span>paper<span class="_ _b"> </span>is<span class="_ _b"> </span>organized<span class="_ _9"> </span>as<span class="_ _b"> </span>follo<span class="_ _2"></span>ws.<span class="_ _9"> </span>Section<span class="_ _b"> </span>II<span class="_ _b"> </span>revie<span class="_ _4"></span>ws<span class="_ _b"> </span>loss-</div><div class="t m0 x1 h6 y74 ff1 fs5 fc0 sc0 lsf ws0">less<span class="_ _12"> </span>data<span class="_ _12"> </span>compression<span class="_ _12"> </span>algorithms<span class="_ _12"> </span>and<span class="_ _12"> </span>their<span class="_ _12"> </span>hardware<span class="_ _c"> </span>imple-</div><div class="t m0 x1 h6 y75 ff1 fs5 fc0 sc0 lsf ws0">mentations.<span class="_ _12"> </span>The<span class="_ _12"> </span>original<span class="_ _d"> </span>LZ4<span class="_ _12"> </span>algorithm<span class="_ _12"> </span>is<span class="_ _d"> </span>also<span class="_ _12"> </span>revie<span class="_ _4"></span>wed<span class="_ _12"> </span>in</div><div class="t m0 x1 h6 y76 ff1 fs5 fc0 sc0 lsf ws0">this<span class="_ _b"> </span>section.<span class="_ _b"> </span>Section<span class="_ _6"> </span>III<span class="_ _9"> </span>presents<span class="_ _6"> </span>the<span class="_ _9"> </span>modified<span class="_ _6"> </span>LZ4<span class="_ _9"> </span>algorithm.</div><div class="t m0 x1 h6 y77 ff1 fs5 fc0 sc0 lsb ws0">T<span class="_ _5"></span>wo<span class="_ _12"> </span>hardware<span class="_ _12"> </span>architectures<span class="_ _d"> </span>of<span class="_ _12"> </span>both<span class="_ _d"> </span>the<span class="_ _12"> </span>MLZ4<span class="_ _d"> </span>compressors</div><div class="t m0 x1 h6 y78 ff1 fs5 fc0 sc0 lsf ws0">and<span class="_ _12"> </span>decompressors<span class="_ _12"> </span>are<span class="_ _d"> </span>proposed<span class="_ _12"> </span>in<span class="_ _d"> </span>Section<span class="_ _12"> </span>IV<span class="_ _7"></span>.<span class="_ _d"> </span>A<span class="_ _12"> </span>compari-</div><div class="t m0 x1 h6 y79 ff1 fs5 fc0 sc0 lsb ws0">son<span class="_ _c"> </span>with<span class="_ _6"> </span>other<span class="_ _c"> </span>FPGA<span class="_ _c"> </span>hardware<span class="_ _c"> </span>designs<span class="_ _c"> </span>of<span class="_ _c"> </span>LZ<span class="_ _c"> </span>algorithms<span class="_ _c"> </span>is</div><div class="t m0 x1 h6 y7a ff1 fs5 fc0 sc0 lsb ws0">provided<span class="_ _b"> </span>in<span class="_ _b"> </span>Section<span class="_ _6"> </span>V<span class="_ _7"></span>.<span class="_ _9"> </span>Section<span class="_ _6"> </span>VI<span class="_ _b"> </span>concludes<span class="_ _b"> </span>this<span class="_ _6"> </span>paper<span class="_ _5"></span>.</div><div class="t m0 x13 h6 y7b ff1 fs5 fc0 sc0 ls9 ws0">II.<span class="_ _e"> </span>R</div><div class="t m0 x14 h8 y7c ff1 fs6 fc0 sc0 ls19 ws0">EVIEW</div><div class="t m0 x1 ha y7d ff2 fs5 fc0 sc0 lsb ws0">A.<span class="_ _e"> </span>Data<span class="_ _b"> </span>Compression<span class="_ _b"> </span>Algorithms<span class="_ _b"> </span>and<span class="_ _6"> </span>Implementations</div><div class="t m0 x6 h6 y7e ff1 fs5 fc0 sc0 lsf ws0">There<span class="_"> </span>are<span class="_ _a"> </span>two<span class="_ _a"> </span>main<span class="_ _a"> </span>categories<span class="_"> </span>of<span class="_ _a"> </span>data<span class="_ _a"> </span>compression,<span class="_ _a"> </span>namely<span class="_ _5"></span>,</div><div class="t m0 x1 h6 y7f ff1 fs5 fc0 sc0 ls1 ws0">lossy<span class="_ _e"> </span>and<span class="_ _f"> </span>lossless<span class="_ _e"> </span>compression<span class="_ _6"> </span>[<span class="fc1 ls15">15</span>].<span class="_ _e"> </span>As<span class="_ _e"> </span>lossy<span class="_ _f"> </span>compression</div><div class="t m0 x1 h6 y80 ff1 fs5 fc0 sc0 lsf ws0">allo<span class="_ _2"></span>ws<span class="_"> </span>loss<span class="_"> </span>of<span class="_"> </span>accurac<span class="_ _4"></span>y<span class="_"> </span>to<span class="_"> </span>an<span class="_"> </span>acceptable<span class="_"> </span>le<span class="_ _4"></span>vel,<span class="_"> </span>it<span class="_"> </span>is<span class="_"> </span>usually<span class="_ _14"> </span>used</div><div class="t m0 x1 h6 y81 ff1 fs5 fc0 sc0 lsf ws0">for<span class="_"> </span>multimedia<span class="_"> </span>applications<span class="_"> </span>where<span class="_"> </span>errors<span class="_"> </span>can<span class="_"> </span>be<span class="_ _a"> </span>tolerated<span class="_ _b"> </span>[<span class="fc1 ls15">16</span><span class="lse">].</span></div><div class="t m0 x1 h6 y82 ff1 fs5 fc0 sc0 lsb ws0">Lossless<span class="_ _16"> </span>compression<span class="_ _16"> </span>can<span class="_ _16"> </span>compress<span class="_ _16"> </span>and<span class="_ _16"> </span>then<span class="_ _16"> </span>recov<span class="_ _2"></span>er<span class="_ _16"> </span>the</div><div class="t m0 x1 h6 y83 ff1 fs5 fc0 sc0 lsf ws0">data<span class="_ _c"> </span>from<span class="_ _c"> </span>compressed<span class="_ _c"> </span>data<span class="_ _c"> </span>without<span class="_ _c"> </span>loss<span class="_ _c"> </span>of<span class="_ _c"> </span>information;<span class="_ _c"> </span>and</div><div class="t m0 x1 h6 y84 ff1 fs5 fc0 sc0 lsf ws0">it<span class="_ _12"> </span>is<span class="_ _12"> </span>used<span class="_ _12"> </span>for<span class="_ _12"> </span>applications<span class="_ _12"> </span>where<span class="_ _12"> </span>ev<span class="_ _2"></span>en<span class="_ _12"> </span>one<span class="_ _12"> </span>single<span class="_ _12"> </span>bit<span class="_ _12"> </span>differ<span class="_ _2"></span>-</div><div class="t m0 x1 h6 y85 ff1 fs5 fc0 sc0 lsb ws0">ence<span class="_ _12"> </span>between<span class="_ _12"> </span>the<span class="_ _12"> </span>original<span class="_ _d"> </span>and<span class="_ _12"> </span>reconstructed<span class="_ _12"> </span>data<span class="_ _12"> </span>cannot<span class="_ _d"> </span>be</div><div class="t m0 x1 h6 y86 ff1 fs5 fc0 sc0 lsf ws0">tolerated.</div><div class="t m0 x6 h6 y87 ff1 fs5 fc0 sc0 lsb ws0">The<span class="_ _e"> </span>applications<span class="_ _d"> </span>of<span class="_ _e"> </span>lossless<span class="_ _e"> </span>data<span class="_ _e"> </span>compression<span class="_ _e"> </span>hav<span class="_ _2"></span>e<span class="_ _d"> </span>been</div><div class="t m0 x1 h6 y88 ff1 fs5 fc0 sc0 lsb ws0">increasing<span class="_ _b"> </span>significantly<span class="_ _6"> </span>due<span class="_ _b"> </span>to<span class="_ _b"> </span>both<span class="_ _6"> </span>the<span class="_ _b"> </span>demand<span class="_ _b"> </span>for<span class="_ _6"> </span>increased</div><div class="t m0 x1 h6 y89 ff1 fs5 fc0 sc0 lsb ws0">bandwidth<span class="_ _b"> </span>[<span class="fc1 ls15">17</span><span class="lse">],<span class="_ _6"> </span>[<span class="fc1 ls15">18</span></span>]<span class="_ _3"> </span>and<span class="_ _17"> </span>the<span class="_ _3"> </span>need<span class="_ _17"> </span>to<span class="_ _17"> </span>improve<span class="_ _3"> </span>storage</div><div class="t m0 x1 h6 y8a ff1 fs5 fc0 sc0 lsb ws0">capacity<span class="_ _b"> </span>[<span class="fc1 ls1">3</span><span class="lsf">].<span class="_ _b"> </span>Lossless<span class="_ _9"> </span>data<span class="_ _9"> </span>compression<span class="_ _9"> </span>has<span class="_ _b"> </span>been<span class="_ _9"> </span>successfully</span></div><div class="t m0 x1 h6 y8b ff1 fs5 fc0 sc0 lsf ws0">deployed<span class="_ _9"> </span>in<span class="_ _9"> </span>storage<span class="_ _9"> </span>systems<span class="_ _b"> </span>including<span class="_ _9"> </span>tapes,<span class="_ _b"> </span>hard<span class="_ _9"> </span>disk<span class="_ _9"> </span>drives,</div><div class="t m0 x1 h6 y8c ff1 fs5 fc0 sc0 lsf ws0">SSDs,<span class="_ _b"> </span>file<span class="_ _6"> </span>serv<span class="_ _4"></span>ers,<span class="_ _6"> </span>and<span class="_ _b"> </span>storage<span class="_ _b"> </span>area<span class="_ _6"> </span>netw<span class="_ _2"></span>orks.</div><div class="t m0 x6 h6 y8d ff1 fs5 fc0 sc0 lsf ws0">Lossless<span class="_ _6"> </span>data<span class="_ _6"> </span>compression<span class="_ _6"> </span>can<span class="_ _c"> </span>be<span class="_ _6"> </span>achiev<span class="_ _2"></span>ed<span class="_ _6"> </span>using<span class="_ _6"> </span>two<span class="_ _6"> </span>dif-</div><div class="t m0 x1 h6 y8e ff1 fs5 fc0 sc0 lsf ws0">ferent<span class="_"> </span>approaches:<span class="_"> </span>1)<span class="_"> </span>statistical<span class="_"> </span>model-based<span class="_"> </span>compression<span class="_"> </span>such</div><div class="t m0 x1 h6 y8f ff1 fs5 fc0 sc0 ls11 ws0">as<span class="_ _b"> </span>Huffman<span class="_ _9"> </span>coding<span class="_ _6"> </span>[<span class="fc1">19</span><span class="lsb">]<span class="_ _9"> </span>and<span class="_ _6"> </span>2)<span class="_ _9"> </span>dictionary-based<span class="_ _b"> </span>compression</span></div><div class="t m0 x1 h6 y90 ff1 fs5 fc0 sc0 lsf ws0">including<span class="_ _e"> </span>the<span class="_ _f"> </span>LZ<span class="_ _e"> </span>algorithms<span class="_ _6"> </span>[<span class="fc1 ls15">20</span><span class="lse">],<span class="_ _b"> </span>[<span class="fc1 ls15">21</span></span>].<span class="_ _e"> </span>The<span class="_ _f"> </span>LZ<span class="_ _f"> </span>algorithms</div><div class="t m0 x1 h6 y91 ff1 fs5 fc0 sc0 lsb ws0">belong<span class="_ _10"> </span>to<span class="_ _16"> </span>adapti<span class="_ _2"></span>ve<span class="_ _10"> </span>dictionary-based<span class="_ _10"> </span>techniques,<span class="_ _16"> </span>which<span class="_ _10"> </span>are</div><div class="t m0 x1 h6 y92 ff1 fs5 fc0 sc0 lsf ws0">the<span class="_ _b"> </span>most<span class="_ _6"> </span>popular<span class="_ _b"> </span>lossless<span class="_ _6"> </span>compression<span class="_ _b"> </span>algorithms<span class="_ _b"> </span>when<span class="_ _6"> </span>prior</div><div class="t m0 x1 h6 y93 ff1 fs5 fc0 sc0 lsf ws0">statistical<span class="_ _e"> </span>characteristics<span class="_ _e"> </span>of<span class="_ _e"> </span>the<span class="_ _e"> </span>data<span class="_ _f"> </span>are<span class="_ _e"> </span>unkno<span class="_ _2"></span>wn.<span class="_ _e"> </span>The<span class="_ _e"> </span>LZ</div><div class="t m0 x1 h6 y94 ff1 fs5 fc0 sc0 lsb ws0">algorithms<span class="_ _12"> </span>hav<span class="_ _4"></span>e<span class="_ _12"> </span>been<span class="_ _12"> </span>adopted<span class="_ _12"> </span>by<span class="_ _12"> </span>many<span class="_ _12"> </span>compression<span class="_ _12"> </span>format</div><div class="t m0 x1 h6 y95 ff1 fs5 fc0 sc0 lsb ws0">standards<span class="_ _b"> </span>such<span class="_ _6"> </span>as<span class="_ _b"> </span>Zip,<span class="_ _b"> </span>GNU<span class="_ _6"> </span>zip,<span class="_ _9"> </span>and<span class="_ _6"> </span>Zlib<span class="_ _b"> </span>[<span class="fc1 ls15">22</span><span class="lse">].</span></div><div class="t m0 x6 h6 y96 ff1 fs5 fc0 sc0 lsb ws0">LZ<span class="_ _18"> </span>algorithms<span class="_ _18"> </span>were<span class="_ _18"> </span>proposed<span class="_ _18"> </span>by<span class="_ _18"> </span>Ziv<span class="_ _13"> </span>and<span class="_ _18"> </span>Lempel<span class="_ _18"> </span>in</div><div class="t m0 x1 h6 y97 ff1 fs5 fc0 sc0 ls15 ws0">1977<span class="_ _b"> </span>[<span class="fc1">20</span>]<span class="_ _9"> </span>and<span class="_ _b"> </span>1978<span class="_ _b"> </span>[<span class="fc1">21</span><span class="lsf">]<span class="_ _b"> </span>in<span class="_ _b"> </span>their<span class="_ _b"> </span>two<span class="_ _9"> </span>landmark<span class="_ _b"> </span>papers.<span class="_ _b"> </span>These</span></div><div class="t m0 x1 h6 y98 ff1 fs5 fc0 sc0 lsb ws0">papers<span class="_ _13"> </span>presented<span class="_ _13"> </span>two<span class="_ _13"> </span>different<span class="_ _16"> </span>approaches.<span class="_ _18"> </span>The<span class="_ _13"> </span>approach</div><div class="t m0 x1 h6 y99 ff1 fs5 fc0 sc0 lsb ws0">based<span class="_ _10"> </span>on<span class="_ _16"> </span>the<span class="_ _10"> </span>1977<span class="_ _16"> </span>paper<span class="_ _10"> </span>is<span class="_ _16"> </span>referred<span class="_ _10"> </span>to<span class="_ _16"> </span>as<span class="_ _10"> </span>the<span class="_ _16"> </span>LZ77<span class="_ _10"> </span>(or</div><div class="t m0 x1 h6 y9a ff1 fs5 fc0 sc0 lsb ws0">LZ1)<span class="_ _12"> </span>family<span class="_ _c"> </span>which<span class="_ _12"> </span>includes<span class="_ _12"> </span>LZ77,<span class="_ _12"> </span>LZR<span class="_ _4"></span>W<span class="_ _6"> </span>[<span class="fc1 ls15">23<span class="fc0">],<span class="_ _c"> </span>LZSS<span class="_ _6"> </span>[</span>24</span><span class="lse">],</span></div><div class="t m0 x1 h6 y9b ff1 fs5 fc0 sc0 lsf ws0">LZ-Marko<span class="_ _2"></span>v<span class="_ _d"> </span>chain<span class="_ _d"> </span>algorithm<span class="_ _e"> </span>(LZMA)<span class="_ _d"> </span>[<span class="fc1 ls15">11</span><span class="lsb">],<span class="_ _d"> </span>etc.<span class="_ _d"> </span>LZ77<span class="_ _e"> </span>algo-</span></div><div class="t m0 x1 h6 y9c ff1 fs5 fc0 sc0 lsb ws0">rithms<span class="_ _6"> </span>use<span class="_ _c"> </span>a<span class="_ _6"> </span>sliding<span class="_ _c"> </span>window<span class="_ _6"> </span>to<span class="_ _6"> </span>examine<span class="_ _6"> </span>the<span class="_ _c"> </span>input<span class="_ _6"> </span>sequence.</div><div class="t m0 xc h8 y9d ff1 fs6 fc0 sc0 ls1 ws0">Fig.<span class="_ _a"> </span>2.<span class="_ _3"> </span>Data<span class="_ _a"> </span>format<span class="_ _a"> </span>of<span class="_ _a"> </span>an<span class="_ _a"> </span>LZ4<span class="_ _a"> </span>sequence.</div><div class="t m0 xc h6 y9e ff1 fs5 fc0 sc0 lsb ws0">Its<span class="_ _a"> </span>principle<span class="_ _a"> </span>is<span class="_ _9"> </span>to<span class="_ _a"> </span>find<span class="_ _a"> </span>whether<span class="_ _9"> </span>the<span class="_ _a"> </span>sequence<span class="_ _9"> </span>being<span class="_ _a"> </span>compressed</div><div class="t m0 xc h6 y9f ff1 fs5 fc0 sc0 lsf ws0">appears<span class="_ _a"> </span>i<span class="_ _8"></span>n<span class="_ _a"> </span>the<span class="_ _9"> </span>previously<span class="_ _a"> </span>input<span class="_ _9"> </span>data.<span class="_ _9"> </span>If<span class="_ _9"> </span>so,<span class="_ _9"> </span>a<span class="_ _a"> </span>pointer<span class="_ _9"> </span>is<span class="_ _9"> </span>used<span class="_ _9"> </span>to</div><div class="t m0 xc h6 ya0 ff1 fs5 fc0 sc0 lsf ws0">point<span class="_ _a"> </span>to<span class="_ _a"> </span>the<span class="_ _a"> </span>repeated<span class="_ _9"> </span>strings.<span class="_ _a"> </span>The<span class="_ _a"> </span>dictionary<span class="_ _a"> </span>refers<span class="_ _9"> </span>to<span class="_ _a"> </span>a<span class="_ _a"> </span>portion</div><div class="t m0 xc h6 ya1 ff1 fs5 fc0 sc0 ls11 ws0">of<span class="_ _a"> </span>the<span class="_ _9"> </span>previously<span class="_ _a"> </span>encoded<span class="_ _9"> </span>sequence.<span class="_ _a"> </span>The<span class="_ _9"> </span>approaches<span class="_ _9"> </span>based<span class="_ _9"> </span>on</div><div class="t m0 xc h6 ya2 ff1 fs5 fc0 sc0 ls11 ws0">the<span class="_ _a"> </span>1978<span class="_ _9"> </span>paper<span class="_ _9"> </span>are<span class="_ _9"> </span>known<span class="_ _a"> </span>as<span class="_ _9"> </span>the<span class="_ _a"> </span>LZ78<span class="_ _9"> </span>(or<span class="_ _9"> </span>LZ2)<span class="_ _9"> </span>family<span class="_ _a"> </span>which</div><div class="t m0 xc h6 ya3 ff1 fs5 fc0 sc0 ls11 ws0">includes<span class="_ _b"> </span>LZ78,<span class="_ _b"> </span>LZW<span class="_ _b"> </span>[<span class="fc1">25</span><span class="lsb">],<span class="_ _b"> </span>etc.<span class="_ _b"> </span>LZ78<span class="_ _b"> </span>algorithms<span class="_ _b"> </span>create<span class="_ _b"> </span>a<span class="_ _b"> </span>dic-</span></div><div class="t m0 xc h6 ya4 ff1 fs5 fc0 sc0 lsb ws0">tionary<span class="_ _c"> </span>of<span class="_ _12"> </span>phrases<span class="_ _12"> </span>from<span class="_ _c"> </span>the<span class="_ _12"> </span>input<span class="_ _12"> </span>data.<span class="_ _12"> </span>When<span class="_ _c"> </span>a<span class="_ _12"> </span>match<span class="_ _12"> </span>with</div><div class="t m0 xc h6 ya5 ff1 fs5 fc0 sc0 lsb ws0">the<span class="_ _c"> </span>phrases<span class="_ _12"> </span>that<span class="_ _c"> </span>have<span class="_ _c"> </span>appeared<span class="_ _c"> </span>in<span class="_ _12"> </span>the<span class="_ _12"> </span>dictionary<span class="_ _c"> </span>occurs,<span class="_ _12"> </span>the</div><div class="t m0 xc h6 ya6 ff1 fs5 fc0 sc0 lsb ws0">encoder<span class="_ _9"> </span>will<span class="_ _9"> </span>output<span class="_ _b"> </span>the<span class="_ _9"> </span>phrase’<span class="_ _4"></span>s<span class="_ _9"> </span>index<span class="_ _9"> </span>in<span class="_ _b"> </span>the<span class="_ _9"> </span>dictionary<span class="_ _9"> </span>rather</div><div class="t m0 xc h6 ya7 ff1 fs5 fc0 sc0 ls1 ws0">than<span class="_ _b"> </span>the<span class="_ _6"> </span>phrase<span class="_ _b"> </span>itself.</div><div class="t m0 xe h6 ya8 ff1 fs5 fc0 sc0 lsf ws0">Collet<span class="_"> </span>[<span class="fc1 ls15">14</span><span class="lsb">]<span class="_ _a"> </span>proposed<span class="_ _a"> </span>the<span class="_ _a"> </span>LZ4<span class="_ _a"> </span>algorithm<span class="_ _a"> </span>in<span class="_"> </span>2011<span class="_ _a"> </span>[<span class="fc1 ls15">13</span><span class="ls1">],<span class="_ _a"> </span>which</span></span></div><div class="t m0 xc h6 ya9 ff1 fs5 fc0 sc0 lsb ws0">is<span class="_ _6"> </span>a<span class="_ _6"> </span>variant<span class="_ _6"> </span>of<span class="_ _6"> </span>LZ77.<span class="_ _6"> </span>The<span class="_ _6"> </span>compression<span class="_ _c"> </span>speed<span class="_ _6"> </span>of<span class="_ _6"> </span>a<span class="_ _6"> </span>LZ4<span class="_ _c"> </span>soft-</div><div class="t m0 xc h6 yaa ff1 fs5 fc0 sc0 lsf ws0">ware<span class="_ _12"> </span>implementation<span class="_ _e"> </span>is<span class="_ _d"> </span>shown<span class="_ _12"> </span>to<span class="_ _e"> </span>be<span class="_ _d"> </span>fastest<span class="_ _d"> </span>among<span class="_ _d"> </span>the<span class="_ _e"> </span>LZ</div><div class="t m0 xc h6 yab ff1 fs5 fc0 sc0 lsf ws0">algorithms.<span class="_ _b"> </span>Howe<span class="_ _4"></span>ver<span class="_ _4"></span>,<span class="_ _b"> </span>there<span class="_ _b"> </span>is<span class="_ _b"> </span>little<span class="_ _b"> </span>research<span class="_ _6"> </span>conducted<span class="_ _9"> </span>on<span class="_ _b"> </span>the</div><div class="t m0 xc h6 yac ff1 fs5 fc0 sc0 lsb ws0">hardware<span class="_ _6"> </span>implementation<span class="_ _b"> </span>of<span class="_ _6"> </span>LZ4<span class="_ _6"> </span>as<span class="_ _6"> </span>it<span class="_ _6"> </span>is<span class="_ _6"> </span>much<span class="_ _b"> </span>younger<span class="_ _6"> </span>than</div><div class="t m0 xc h6 yad ff1 fs5 fc0 sc0 lsf ws0">other<span class="_ _b"> </span>LZ<span class="_ _6"> </span>algorithms.<span class="_ _b"> </span>Hardware<span class="_ _6"> </span>designs<span class="_ _b"> </span>of<span class="_ _b"> </span>lossless<span class="_ _6"> </span>data<span class="_ _b"> </span>com-</div><div class="t m0 xc h6 yae ff1 fs5 fc0 sc0 lsf ws0">pression<span class="_ _f"> </span>algorithms<span class="_ _e"> </span>are<span class="_ _f"> </span>receiving<span class="_ _e"> </span>increase<span class="_ _f"> </span>attention<span class="_ _e"> </span>due<span class="_ _f"> </span>to</div><div class="t m0 xc h6 yaf ff1 fs5 fc0 sc0 lsb ws0">the<span class="_ _16"> </span>exponential<span class="_ _10"> </span>expansion<span class="_ _16"> </span>in<span class="_ _10"> </span>network<span class="_ _16"> </span>communication<span class="_ _16"> </span>and</div><div class="t m0 xc h6 yb0 ff1 fs5 fc0 sc0 lsb ws0">data<span class="_"> </span>storage.<span class="_ _a"> </span>FPGA<span class="_ _a"> </span>implementations<span class="_ _a"> </span>of<span class="_ _a"> </span>LZ<span class="_ _a"> </span>algorithms<span class="_"> </span>such<span class="_ _a"> </span>as</div><div class="t m0 xc h6 yb1 ff1 fs5 fc0 sc0 lsb ws0">LZR<span class="_ _4"></span>W3<span class="_ _6"> </span>[<span class="fc1 ls15">12</span><span class="ls1">],<span class="_ _6"> </span>LZW<span class="_ _b"> </span>[<span class="fc1">8</span><span class="lse">],<span class="_ _b"> </span>[<span class="fc1 ls15">10<span class="fc0">],<span class="_ _6"> </span>the<span class="_ _6"> </span>LZMA<span class="_ _6"> </span>[</span>11</span></span></span>],<span class="_ _b"> </span>and<span class="_ _6"> </span>LZ4<span class="_ _6"> </span>[<span class="fc1 ls15">13</span><span class="ls1">]</span></div><div class="t m0 xc h6 yb2 ff1 fs5 fc0 sc0 lsf ws0">hav<span class="_ _4"></span>e<span class="_ _a"> </span>been<span class="_ _9"> </span>proposed<span class="_ _a"> </span>to<span class="_ _a"> </span>meet<span class="_ _a"> </span>real-time<span class="_ _a"> </span>requirements.<span class="_ _a"> </span>Thus,<span class="_ _a"> </span>it<span class="_ _a"> </span>is</div><div class="t m0 xc h6 yb3 ff1 fs5 fc0 sc0 lsf ws0">necessary<span class="_ _6"> </span>to<span class="_ _b"> </span>study<span class="_ _6"> </span>hardware<span class="_ _6"> </span>architectures<span class="_ _b"> </span>of<span class="_ _6"> </span>LZ4<span class="_ _6"> </span>in<span class="_ _b"> </span>order<span class="_ _6"> </span>to</div><div class="t m0 xc h6 yb4 ff1 fs5 fc0 sc0 lsb ws0">explore<span class="_ _6"> </span>its<span class="_ _6"> </span>performance<span class="_ _c"> </span>for<span class="_ _6"> </span>consumer<span class="_ _6"> </span>electronic<span class="_ _c"> </span>applications</div><div class="t m0 xc h6 yb5 ff1 fs5 fc0 sc0 lsb ws0">such<span class="_ _b"> </span>as<span class="_ _6"> </span>SSDs.</div><div class="t m0 xc ha yb6 ff2 fs5 fc0 sc0 lsb ws0">B.<span class="_ _e"> </span>Revie<span class="_ _2"></span>w<span class="_ _b"> </span>of<span class="_ _6"> </span>the<span class="_ _b"> </span>LZ4<span class="_ _b"> </span>Algorithm</div><div class="t m0 xe h6 yb7 ff1 fs5 fc0 sc0 lsf ws0">This<span class="_ _a"> </span>section<span class="_ _9"> </span>revie<span class="_ _4"></span>ws<span class="_ _9"> </span>the<span class="_ _9"> </span>LZ4<span class="_ _a"> </span>algorithm.<span class="_ _9"> </span>Its<span class="_ _9"> </span>data<span class="_ _a"> </span>format<span class="_ _9"> </span>and</div><div class="t m0 xc h6 yb8 ff1 fs5 fc0 sc0 lsb ws0">data<span class="_ _d"> </span>flow<span class="_ _d"> </span>are<span class="_ _e"> </span>introduced.<span class="_ _e"> </span>The<span class="_ _e"> </span>shortcomings<span class="_ _d"> </span>of<span class="_ _e"> </span>the<span class="_ _e"> </span>original</div><div class="t m0 xc h6 yb9 ff1 fs5 fc0 sc0 lsf ws0">LZ4<span class="_ _b"> </span>algorithm<span class="_ _6"> </span>and<span class="_ _b"> </span>data<span class="_ _b"> </span>format<span class="_ _6"> </span>are<span class="_ _9"> </span>also<span class="_ _6"> </span>discussed.</div><div class="t m0 xe h6 yba ff1 fs5 fc0 sc0 lsb ws0">LZ4<span class="_ _a"> </span>was<span class="_ _9"> </span>initially<span class="_ _a"> </span>defined<span class="_ _9"> </span>as<span class="_ _9"> </span>a<span class="_ _a"> </span>form<span class="_ _9"> </span>of<span class="_ _9"> </span>compressed<span class="_ _a"> </span>data<span class="_ _9"> </span>for-</div><div class="t m0 xc h6 ybb ff1 fs5 fc0 sc0 lsb ws0">mat.<span class="_ _c"> </span>Compressed<span class="_ _6"> </span>data<span class="_ _c"> </span>files<span class="_ _c"> </span>are<span class="_ _c"> </span>composed<span class="_ _c"> </span>of<span class="_ _c"> </span>LZ4<span class="_ _c"> </span>sequences</div><div class="t m0 xc h6 ybc ff1 fs5 fc0 sc0 lsb ws0">that<span class="_ _c"> </span>include<span class="_ _12"> </span>a<span class="_ _c"> </span>token,<span class="_ _12"> </span>literal<span class="_ _c"> </span>length,<span class="_ _12"> </span>offset,<span class="_ _c"> </span>and<span class="_ _c"> </span>match<span class="_ _12"> </span>length</div><div class="t m0 xc h6 ybd ff1 fs5 fc0 sc0 lsb ws0">as<span class="_ _6"> </span>shown<span class="_ _6"> </span>in<span class="_ _6"> </span>Fig.<span class="_ _6"> </span><span class="fc1 ls1">2</span>.<span class="_ _6"> </span>The<span class="_ _c"> </span>token<span class="_ _6"> </span>is<span class="_ _6"> </span>used<span class="_ _6"> </span>t<span class="_ _8"></span>o<span class="_ _6"> </span>indicate<span class="_ _6"> </span>the<span class="_ _6"> </span>length</div><div class="t m0 xc h6 ybe ff1 fs5 fc0 sc0 lsb ws0">of<span class="_ _9"> </span>unmatched<span class="_ _b"> </span>and<span class="_ _9"> </span>matched<span class="_ _b"> </span>characters.<span class="_ _b"> </span>The<span class="_ _9"> </span>literal<span class="_ _b"> </span>length<span class="_ _9"> </span>indi-</div><div class="t m0 xc h6 ybf ff1 fs5 fc0 sc0 lsb ws0">cates<span class="_ _a"> </span>the<span class="_ _a"> </span>length<span class="_ _a"> </span>of<span class="_ _a"> </span>uncompressed<span class="_ _9"> </span>data<span class="_ _a"> </span>and<span class="_ _a"> </span>its<span class="_ _a"> </span>value<span class="_ _a"> </span>is<span class="_ _a"> </span>equal<span class="_ _a"> </span>to</div><div class="t m0 xc h6 yc0 ff1 fs5 fc0 sc0 lsb ws0">the<span class="_ _6"> </span>v<span class="_ _2"></span>alue<span class="_ _6"> </span>of<span class="_ _6"> </span>the<span class="_ _6"> </span>length<span class="_ _6"> </span>of<span class="_ _6"> </span>uncompressed<span class="_ _6"> </span>data<span class="_ _6"> </span>minus<span class="_ _b"> </span>15.<span class="_ _6"> </span>The</div><div class="t m0 xc h6 yc1 ff1 fs5 fc0 sc0 lsf ws0">uncompressed<span class="_"> </span>data<span class="_ _14"> </span>is<span class="_"> </span>stored<span class="_ _11"> </span>as<span class="_"> </span>literals<span class="_"> </span>in<span class="_ _11"> </span>the<span class="_"> </span>LZ4<span class="_"> </span>sequence<span class="_ _14"> </span>and</div><div class="t m0 xc h6 yc2 ff1 fs5 fc0 sc0 lsb ws0">it<span class="_ _b"> </span>is<span class="_ _6"> </span>copied<span class="_ _9"> </span>from<span class="_ _6"> </span>the<span class="_ _b"> </span>original<span class="_ _b"> </span>data.<span class="_ _6"> </span>When<span class="_ _b"> </span>the<span class="_ _b"> </span>input<span class="_ _6"> </span>data<span class="_ _9"> </span>finds</div><div class="t m0 xc h6 yc3 ff1 fs5 fc0 sc0 lsb ws0">data<span class="_ _a"> </span>that<span class="_ _9"> </span>appeared<span class="_ _a"> </span>before<span class="_ _9"> </span>via<span class="_ _a"> </span>searching,<span class="_ _a"> </span>this<span class="_ _9"> </span>data<span class="_ _a"> </span>will<span class="_ _9"> </span>be<span class="_ _a"> </span>com-</div><div class="t m0 xc h6 yc4 ff1 fs5 fc0 sc0 lsb ws0">pressed.<span class="_ _c"> </span>The<span class="_ _6"> </span>value<span class="_ _c"> </span>of<span class="_ _6"> </span>the<span class="_ _c"> </span>offset<span class="_ _6"> </span>indicates<span class="_ _c"> </span>the<span class="_ _c"> </span>address<span class="_ _c"> </span>of<span class="_ _c"> </span>the</div><div class="t m0 xc h6 yc5 ff1 fs5 fc0 sc0 lsb ws0">current<span class="_ _9"> </span>data<span class="_ _9"> </span>minus<span class="_ _9"> </span>the<span class="_ _9"> </span>address<span class="_ _9"> </span>of<span class="_ _9"> </span>the<span class="_ _9"> </span>prior<span class="_ _9"> </span>data.<span class="_ _9"> </span>Match<span class="_ _9"> </span>length</div><div class="t m0 xc h6 yc6 ff1 fs5 fc0 sc0 ls11 ws0">means<span class="_ _b"> </span>the<span class="_ _6"> </span>length<span class="_ _b"> </span>of<span class="_ _b"> </span>the<span class="_ _6"> </span>matching<span class="_ _9"> </span>data.</div><div class="t m0 xe h6 yc7 ff1 fs5 fc0 sc0 lsb ws0">The<span class="_ _b"> </span>operation<span class="_ _6"> </span>of<span class="_ _b"> </span>the<span class="_ _6"> </span>LZ4<span class="_ _b"> </span>algorithm<span class="_ _6"> </span>is<span class="_ _b"> </span>mainly<span class="_ _6"> </span>di<span class="_ _4"></span>vided<span class="_ _6"> </span>into</div><div class="t m0 xc h6 yc8 ff1 fs5 fc0 sc0 lsf ws0">the<span class="_ _b"> </span>following<span class="_ _b"> </span>fiv<span class="_ _4"></span>e<span class="_ _6"> </span>steps<span class="_ _b"> </span>[<span class="fc1 ls15">14<span class="fc0">]:<span class="_ _b"> </span>1)<span class="_ _6"> </span>hash<span class="_ _b"> </span>computation;<span class="_ _b"> </span>2)<span class="_ _6"> </span>match-</span></span></div><div class="t m0 xc h6 yc9 ff1 fs5 fc0 sc0 ls15 ws0">ing;<span class="_ _10"> </span>3)<span class="_ _10"> </span>backward<span class="_ _10"> </span>matching;<span class="_ _10"> </span>4)<span class="_ _10"> </span>parameter<span class="_ _16"> </span>calculation;<span class="_ _10"> </span>and</div><div class="t m0 xc h6 yca ff1 fs5 fc0 sc0 lsb ws0">5)<span class="_ _b"> </span>data<span class="_ _6"> </span>output,<span class="_ _b"> </span>which<span class="_ _b"> </span>is<span class="_ _6"> </span>sho<span class="_ _4"></span>wn<span class="_ _6"> </span>in<span class="_ _9"> </span>Fig.<span class="_ _6"> </span><span class="fc1 ls1">3<span class="fc0">.</span></span></div><div class="t m0 x15 h6 ycb ff1 fs5 fc0 sc0 ls9 ws0">III.<span class="_ _e"> </span>M</div><div class="t m0 x16 h6 ycc ff1 fs6 fc0 sc0 ls10 ws0">ODIF<span class="_ _4"></span>IED<span class="_"> </span><span class="fs5 ls1a">LZ4<span class="_ _1"> </span>A</span>LGORITHM</div><div class="t m0 xe h6 ycd ff1 fs5 fc0 sc0 lsf ws0">An<span class="_ _b"> </span>improved<span class="_ _b"> </span>data<span class="_ _6"> </span>format<span class="_ _b"> </span>is<span class="_ _6"> </span>proposed<span class="_ _b"> </span>in<span class="_ _6"> </span>this<span class="_ _b"> </span>section<span class="_ _6"> </span>along</div><div class="t m0 xc h6 yce ff1 fs5 fc0 sc0 lsf ws0">with<span class="_"> </span>an<span class="_ _a"> </span>improved<span class="_"> </span>algorithm<span class="_ _a"> </span>to<span class="_ _a"> </span>solve<span class="_"> </span>the<span class="_ _a"> </span>defects<span class="_ _a"> </span>in<span class="_ _a"> </span>the<span class="_ _a"> </span>original</div><div class="t m0 xc h6 ycf ff1 fs5 fc0 sc0 lsb ws0">LZ4<span class="_ _b"> </span>algorithm.</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>