throbber
El-Ghazawi
`
`Reference 1005
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 1
`
`

`

`INFORMATION TO USERS
`
`This manuscript has been reproduced from the microfilm master. UMI
`films the text directly from the original or copy submitted. Thus, some
`thesis and dissertation copies are in typewriter face, while others may
`be from any type of computer printer.
`
`The quality of this reproduction is dependent upon the quality of the
`copy submitted. Broken or indistinct print, colored or poor quality
`illustrations and photographs, print bleedthrough, substandard margins,
`and improper alignment can adversely affect reproduction.
`
`In the unlikely event that the author did not send UMI a complete
`manusc1ipt and there are missing pages, these will be noted. Also, if
`unauthmized copyright material had to be removed, a note will indicate
`the deletion.
`
`Oversize materials (e.g., maps, drawings, charts) are reproduced by
`sectioning the original, beginning at the upper left-hand comer and
`continuing from left to right in equal sections with small overlaps. Each
`original is also photographed in one exposure and is included in
`reduced form at the back of the book.
`
`Photographs included in the original manuscript have been reproduced
`xerographically in this copy. Higher quality 6" x 9" black and white
`photographic p1ints are available for any photographs or illustrations
`appearing in this copy for an additional charge. Contact UMI directly
`to order.
`
`A Bell &Howell Information Company
`300 North Zeeb Road. Ann Arbor. Ml 48106-13 46 USA
`313 /7 61-4700 800 /521-0600
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 2
`
`

`

`Reproduced with permission of the copyright owner. Further reproduction prohibited without permissiom1..
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 3
`
`

`

`Order Number 9519447'
`
`The functional memory approach to the design of custom
`computing machines
`
`Halverson, Richard Peyton, Jr., Ph.D.
`
`University of Hawaii, 1994
`
`U·M·I
`
`300 N. Zeeb Rd.
`Ann Arbor, MI 48106
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 4
`
`

`

`Reproduced with permission of the copyright owner. Further reproduction prohibited without permissiorn ..
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 5
`
`

`

`THE FUNCTIONAL MEMORY APPROACH TO THE DESIGN
`OF CUSTOM COMPUTING MACHINES
`
`A DISSERTATION SUBMITTED TO THE GRADUATE DIVISION OF THE
`UNIVERSITY OF HAW All IN PARTIAL FULFILLMENT OF THE
`REQUIREMENTS FOR THE DEGREE OF
`
`DOCTOR OF PHILOSOPHY
`
`IN
`
`COMMUNICATION AND INFORMATION SCIENCES
`
`AUGUST 1994
`
`By
`
`Richard Peyton Halverson, Jr.
`
`Dissertation Committee:
`
`Art Lew, Chairperson
`W. Wesley Peterson
`William E. Remus
`Dan J. Wedemeyer
`Edward J. Weldon, Jr.
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 6
`
`

`

`

`

`© Copyright 1994
`by
`Richard Peyton Halverson, Jr.
`All Rights Reserved
`
`iii
`
`·-·-~-----~--------------
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 8
`
`

`

`ACKNOWLEDGEMENTS
`
`I would like to thank the members of my committee for their service. I would also
`
`like to thank the others who made this dissertation possible. Ray Panko provided my
`
`primary financial support throughout my years as a Ph.D. student. Dan Watanabe
`
`provided the initial funding for the hardware. Dominic McCarthy gave me the ideas for
`
`Chapter 7. On a personal level, I would like to thank my father Richard Sr., my late
`
`mother Sau Hung Young Halverson, and my wife Christine David.
`
`I would also like to thank my chair Art Lew for helping me out as much as he did,
`
`especially with this final document. The detail, comprehensiveness, sense and time he
`
`spent was much appreciated.
`
`iv
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 9
`
`

`

`ABSTRACT
`
`This dissertation describes a software system and related hardware architecture in
`
`which high level language programs are compiled into gate level logic circuitry that is
`
`configured specifically to execute the compiled program. A system whose processor can
`
`be dynamically reconfigured to suit different applications is known as a custom
`
`computing machine (CCM). We have designed a new class of CCMs based on the
`
`concept of functional memory (FM), which we construct by connecting field
`
`programmable gate arrays (FPGAs) in parallel with conventional random access memory
`
`(RAM). FM is used by the processor for computing the (possibly multi-operand)
`
`expressions of the high level language program in the combinational logic provided by the
`
`F.PGAs. When all program expressions are computed in FM, the necessary processor
`
`instruction set reduces to a minimal number of moves and jumps.
`
`Our functional memory computer (FMC) is a four F.PGA FM prototype with a fifth
`
`FPGA programmed as the minimal processor. The language we adopted as the high level
`
`source language for programming the FMC is a decision-table (DT) variation of standard
`
`Pascal. DT programs for a shortest path and two sorting algorithms were translated,
`
`executed, and analyzed on the FMC. The second sorting program demonstrated a
`
`nondeterministic array selection function. An analysis for the shortest path program
`
`showed that memory load/store counts remained comparable for FMC and von Neumann
`
`implementations. However, with the FMC, a 35% reduction in total execution steps
`
`occurred because all computation steps are performed in parallel on the FMC.
`
`The problem of compiling high level DTs to low level FMC object code is more
`
`complex than for conventional machines because each single expression in the source
`
`program can translate into several tens of lines of FPGA circuit definition code. The
`
`V
`
`- - - - - - - - - - -
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 10
`
`

`

`Windows based system developed for this purpose includes a compiler that translates
`
`source programs into intermediate assembly language modules, and an operating system
`
`that invokes system routines for assembling, linking, placing and routing, and loading the
`
`FPGA machine level object code into the minimal processor and functional memory.
`
`vi
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 11
`
`

`

`TABLE OF CONTENTS
`
`Acknowledgements ........................................................................ iv
`
`Abstract ...................................................................................... v
`
`List of Tables ............................................................................... xiii
`
`List of Figures .............................................................................. xiv
`
`Preface ....................................................................................... xviii
`
`Chapter 1.
`
`Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
`
`1.1 Decision Table Programming Model ..................................... 2
`
`1.2 Hardware Background ..................................................... 4
`
`1.2.1 HPC Cache-Only Multiprocessor ............................. 5
`
`1. 3 Levels of Programmability ................................................ 7
`
`1.3.1 Von Neumann Machines ....................................... 7
`
`1.3.2 Microprogrammable Machines ................................. 8
`
`1.3.3 Custom Computing Machines ................................. 11
`
`1.4 Survey of Custom Computing Machines ................................ 12
`
`1.4.1 DEC's Perle-0 ................................................... 13
`
`1.4.2 PRISM-II. ........................................................ 13
`
`1.4. 3 Reconfigurable Processor Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
`
`1.4.4 MoM-4 Xputer ................................................... 14
`
`1.4.5 Splash 2 .......................................................... 14
`
`1.4.6 Any Board ........................................................ 15
`
`1.4.7 Chameleon ....................................................... 15
`
`1.5 The Functional Memory Approach ....................................... 16
`
`1.5.1 Functional Memory ............................................. 16
`
`vii
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 12
`
`

`

`1.5.2 A Functional Memory Computer (FMC) ..................... 17
`
`1. 5 .3 High Level Language FMC Programming . . . . . . . . . . . . . . . . . . . 18
`
`1. 6 Other Related Literature .................................................... 20
`
`1.6.1 Hybrid Data Flow Computers ................................. 20
`
`1. 6.2 Functional Programming ....................................... 23
`
`1. 7 Overview of This Dissertation ............................................ 23
`
`Chapter 2. The Design and Implementation of a Functional Memory Computer. 26
`
`2.1 Constructing a Functional Memory ....................................... 26
`
`2.1.1 Programming the FPGA ........................................ 28
`
`2.2 Interface ...................................................................... 31
`
`2.2.1 Address Select ................................................... 31
`
`2.2.2 Input Registers ................................................... 32
`
`2.2.3 Output Multiplexers ............................................. 34
`
`2.3
`
`Implementation of Expression Operators ................................ 35
`
`2.3.1 A
`
`'# B Test ........................................................ 35
`
`2.3.2 Magnitude Comparison Tests .................................. 37
`
`2.3.3 Adding and Subtracting ......................................... 39
`
`2.4 Computing the Rule Address .............................................. 40
`
`2.5 Auto-Clocking Registers ................................................... 43
`
`2.5.1 Automatic Bit Summing ........................................ 43
`
`2.5.2 Auto-Shifting .................................................... 43
`
`2.6 Minimal Processor .......................................................... 45
`
`2.6.1 The Architecture of the Minimal Processor ................... 47
`
`2.6.2 Minimal Processor Instruction Set ............................ 49
`
`2.6.3 Microinstruction Set Implementation .......................... 53
`
`viii
`
`--··----------
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 13
`
`

`

`2.6.4 Minimal Processor Implementation ........................... 55
`
`2.6.5 System Processor Interface .................................... 58
`
`Chapter 3. Decision Table Programming on a Functional Memory Computer ... 61
`
`3.1 Bubble Sort Program Example ............................................ 62
`
`3.1.1 Bubble Sort Functional Memory Map ........................ 64
`
`3.1.2 Bubble Sort Execution Table ................................... 65
`
`3.1.3 Bubble Sort Expression Graphs ............................... 67
`
`3.1.4 Bubble Sort FPGA Ccxle Generation ......................... 69
`
`3.1.5 Bubble Sort Compilation Statistics ............................ 72
`
`3.2 Shortest Path Program Example .......................................... 74
`
`3.2.1 Shortest Path Functional Memory Map ....................... 76
`
`3.2.2 Shortest Path Execution Table ................................. 77
`
`3.2.3 Shortest Path Expression Graphs ............................. 80
`
`3.2.4 Shortest Path FPGA Code Generation ........................ 82
`
`3.2.5 Shortest Path FPGA Compilation Statistics .................. 83
`
`3.3 Conclusions ................................................................. 84
`
`Chapter 4.
`
`Implementing Nondeterministic Programs on a Functional Memory
`
`Computer .................................................................... 86
`
`4.1 Nondetenninistic Constructs .............................................. 87
`
`4.1.1 Nondeterministic Set Operators ................................ 87
`
`4.1.2 Minimum Selection .............................................. 90
`
`4.2 Nondetenninistic Bubble Sort (NBS) .................................... 91
`
`4.2.1 NBS Functional Memory Map ................................. 94
`
`4.2.2 NBS Execution Table ........................................... 95
`
`4.2.3 NBS FPGA Compilation Statistics ............................ 97
`
`ix
`
`--··------ - - - - - -
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 14
`
`

`

`4.3 Conclusions ................................................................. 97
`
`Chapter 5. Analyses of Execution ..................................................... 99
`
`5 .1 Time Comparisons ......................................................... 99
`
`5 .1.1 Shortest Path Execution Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
`
`5.1.2 Deterministic Bubble Sort Times .............................. 101
`
`5.1.3 Nondeterministic Bubble Sort Times ......................... 103
`
`5.2 Cycle Count Comparisons ................................................. 104
`
`5.2.1 Shortest Path Cycle Counts .................................... 105
`
`5.2.2 Deterministic Bubble Sort Cycle Counts ..................... 107
`
`5.2.3 Nondeterministic Bubble Sort Cycle Counts ................. 108
`
`5.3 Load-Store Comparisons .................................................. 110
`
`5.3.1 Shortest Path Load-Store Analysis ........................... 111
`
`5.4 Conclusion .................................................................. 114
`
`Chapter 6. The Design and Implementation of a Compiler for a Functional
`
`Memory Computer ......................................................... 116
`
`6.1 The Compiling Process .................................................... 116
`
`6.1.1 Generate Intermediate Text (1.0) .............................. 121
`
`6.1.2 Generate Memory Map (2.0) ................................... 123
`
`6.1.3 Generate Microcode Source Module (3.0) ................... 125
`
`6.1.4 Generate FPGA Source Modules (4.0) ....................... 125
`
`6.1.4.1 Expand Function Macros (4.2.2) .................. 128
`
`6.1.4.2 Generate Condition Stub Logic (4.2.3) ........... 129
`
`6.1.4.3 Parsing Expressions (4.2.3.1) ..................... 130
`
`6.1.4.4 Generate Rule Address Logic ( 4.2.4) ............. 133
`
`6.1.4.5 Generate Action Stub Logic (4.2.5) ............... 134
`
`X
`
`- - - ~ - - - - - - - - -
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 15
`
`

`

`6.1.4.6 Generate Input Register Logic (4.2.6) ............. 135
`
`6.1.4. 7 Generate Output Multiplexer Logic (4.2.7) ....... 136
`
`6.1.4.8 Generate Address Select Logic (4.2.8) ............ 137
`
`6.2. The User Interface .......................................................... 138
`
`6.2.1 File Menu ......................................................... 139
`
`6.2.2 View Menu ....................................................... 140
`
`6.2.3 Generate Menu ................................................... 142
`
`6.2.4 Compile Menu ................................................... 145
`
`Chapter 7. Application: Examples in Image Processing ............................. 147
`
`7 .1 Convolution ................................................................. 148
`
`7 .1.1
`
`Image Magnification ............................................ 150
`
`7 .1.2 Pyramid Special Function Implementation ................... 151
`
`7 .1.3 Magnification Program Example .............................. 154
`
`7 .1.4 Magnification Execution Comparison ......................... 156
`
`7 .2 Histograms .................................................................. 157
`
`7 .2.1 Character Classification ......................................... 157
`
`7.2.2 Row-Column Sum Special Function .......................... 158
`
`7.2.3 Histogram Program Example .................................. 160
`
`7.2.4 Row Column Histogram Computation Comparison ........ 161
`
`Chapter 8. Conclusions ................................................................. 162
`
`8.1 Decision Table Computers ................................................. 163
`
`8.2 Custom Computing Machines ............................................. 163
`
`Appendixes. Program Listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
`
`Appendix 1. Bubble Sort Compiler Listing (BUBBLE.LIS) .............. 165
`
`Appendix 2. Bubble Sort Minimal Processor Code (BUBBLE.ASM) ... 167
`
`xi
`
`. - - · - - - - - - - - - - · - - - -
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 16
`
`

`

`

`

`LIST OF TABLES
`
`Table 2.1.
`
`Minimal Processor Instruction Set.. ......................................... 52
`
`Table 2.2.
`
`Microinstructions for Implementing mP Operations ...................... .56
`
`Table 3.1.
`
`Bubble Sort Functional Memory Map ....................................... 65
`
`Table 3.2.
`
`Bubble Sort Execution Table ................................................. 66
`
`Table 3.3.
`
`Bubble Sort Rule Selection Logic ........................................... 67
`
`Table 3.4.
`
`FPGA Compilation Statistics - Deterministic Bubble Sort ................ 74
`
`Table 3.5.
`
`Shortest Path Functional Memory Map ..................................... 77
`
`Table 3.6.
`
`Shortest Path Execution Table ............................................... 78
`
`Table 3.7.
`
`Shortest Path Rule Address Map ............................................ 79
`
`Table 3.8.
`
`Shortest Path FPGA Compilation Statistics ................................ 84
`
`Table 4.1.
`
`Nondeterministic Bubble Sort Functional Memory Map .................. 95
`
`Table 4.2.
`
`Nondeterministic Bubble Sort Execution Table ............................ 95
`
`Table 4.3.
`
`Nondeterministic Bubble Sort FPGA Compilation Statistics ............. 97
`
`Table 5.1.
`
`Shortest Path Execution Times .............................................. .100
`
`Table 5.2.
`
`Bubble Sort i486 Execution Times .......................................... 102
`
`Table 5.3.
`
`Deterministic Bubble Sort FMC Execution Times ......................... 103
`
`Table 5.4.
`
`Nondeterministic Bubble Sort FMC Execution Times .................... 104
`
`Table 5.5.
`
`Shortest Path Cycle Counts .................................................. 106
`
`Table 5.6.
`
`Bubble Sort Cycles Comparison (Random Array) ........................ 110
`
`Table 5.7.
`
`Shortest Path Load/Store Count Comparison .............................. 115
`
`xiii
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 18
`
`

`

`LIST OF FIGURES
`
`Figure 1..1. Decision Table Representation of a Program ............................ .1
`
`Figure 1.2. Decision Table Execution .................................................. .3
`
`Figure 1.3. Decision Table Execution Model ......................................... .4
`
`Figure 1.4. Hawaii Parallel Computer Block Diagram ................................ 6
`
`Figure 1.5.
`
`Compiler for a von Neumann Computer ................................. 8
`
`Figure 1.6.
`
`Compiler for a Microprogrammable Processor .......................... 9
`
`Figure 1.7.
`
`Burroughs Small Reconfigurable Processor ............................. 10
`
`Figure 1.8.
`
`FPGA Based Reconfigurable Processor .................................. 12
`
`Figure 1. 9.
`
`Functional Memory Concept ............................................... 17
`
`Figure 1.10. Functional Memory Computer and Instruction Set ...................... 18
`
`Figure 1.11. Compiling for a FMC ....................................................... 20
`
`Figure 1.12. Categorizing Hybrid Data Flow Computers .............................. 21
`
`Figure 1.13. System for Demonstrating the Functional Memory Approach ......... 24
`
`Figure 2.1.
`
`Implementing Functional Memory - Multiplexer Method .............. 27
`
`Figure 2.2.
`
`Implementing Functional Memory - Logical OR Method .............. 28
`
`Figure 2.3.
`
`Functional Memory FPGA Interface Circuit Shell ...................... 30
`
`Figure 2.4. Address Select PALASM ................................................... 33
`
`Figure 2.5.
`
`Input Register PALASM ................................................... 33
`
`Figure 2.6. Output Multiplexer PALASM .............................................. 34
`
`Figure 2.7. A'#-BTestPALASM ....................................................... 36
`
`Figure 2.8. A = 5 Test FPGA Equations .............................................. .37
`
`Figure 2.9. A< B PALASM ............................................................. 38
`Figure 2.10. D = A + B Equations ........................................................ 39
`
`xiv
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 19
`
`

`

`Figure 2.10 (continued). D =A+ B Equations .......................................... .40
`
`Figure 2.11. Condition Entries Selecting Rule and Rule Starting Addresses ....... .41
`
`Figure 2.12. Rule Jump Address Calculation Example ............................... .42
`
`Figure 2.13. Eight Bit A = A + BO + B 1 Accumulator P ALASM .................... 44
`
`Figure 2.14. 16 Bit Auto Shift Register- Shift Left Eight Bits ...................... .45
`
`Figure 2.15. Functional Memory Computer Board Block Diagram ................. .46
`
`Figure 2.16. Architecture of the Minimal Processor ................................... .48
`
`Figure 2.17. Microinstruction Control Register ......................................... 54
`
`Figure 2.18. Minimal Processor - Detailed Block Diagram ............................ 57
`
`Figure 2.19. System Processor - Minimal Processor Interface ........................ 58
`
`Figure 2.20. System Monitor - User Interface .......................................... 59
`
`Figure 3.1. Bubble Sort Program ....................................................... 62
`
`Figure 3.2. Bubble Sort Flow Chart .................................................... 63
`
`Figure 3.3.
`
`Bubble Sort Program for FM .............................................. 64
`
`Figure 3.4. Deterministic Bubble Sort Expression Graphs ........................... 68
`
`Figure 3.5.
`
`FPGA Operator Macros Used for Deterministic Bubble Sort .......... 70
`
`Figure 3.6.
`
`FPGA Code Generation for j+l ........................................... 71
`
`Figure 3. 7.
`
`Completion of the Compilation Process .................................. 73
`
`Figure 3.8.
`
`Shortest Path Program ...................................................... 75
`
`Figure 3.9.
`
`Shortest Path Rule Address Computation ................................ 81
`
`Figure 3.10. Shortest Path Expression Computation ................................... 82
`
`Figure 4.1.
`
`0(1) Set Operators .......................................................... 88
`
`Figure 4.2.
`
`0(1) Minimum Array Element Selection .................................. 90
`
`Figure 4.3. Nondeterministic Bubble Sort Program .................................. 92
`
`Figure 4.4. Nondeterministic Bubble Sort Flow Chart ............................... 92
`
`Figure 4.5. NBS Exchange Address and Rule Selection ............................. 93
`
`xv
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 20
`
`

`

`Figure 5.1.
`
`Shortest Path Execution Times ............................................ 100
`
`Figure 5.2.
`
`Bubble Sort i486 Execution Times ........................................ 102
`
`Figure 5.3.
`
`Deterministic Bubble Sort FMC Execution Times ....................... 103
`
`Figure 5.4.
`
`Nondeterministic Bubble Sort FMC Execution Times .................. 104
`
`Figure 5.5.
`
`Shortest Path Cycle Counts ................................................ 106
`
`Figure 5.6.
`
`Bubble Sort Cycles Comparison (Random Array) ...................... 110
`
`Figure 5.7.
`
`Shortest Path Load-Store Analysis ........................................ 112
`
`Figure 5.8.
`
`Shortest Path Load/Store Count Comparison ............................ 115
`
`Figure 6.1.
`
`The FMC Compiler Function .............................................. 117
`
`Figure 6.2.
`
`Completion of the Compilation Process Using Off-The-Shelf
`
`Tools .......................................................................... 118
`
`Figure 6.3.
`
`Decision Table Compilation Stages ....................................... 120
`
`Figure 6.4.
`
`1.0 Generate Intermediate Text Hierarchy Chart ...................... 121
`
`Figure 6.5.
`
`Symbol Table Identifier Syntax Diagram ................................. 122
`
`Figure 6.6.
`
`2.0 Generate Memory Map Hierarchy Chart ........................... 123
`
`Figure 6.7.
`
`Syntax Diagrams for Function and Variable Declarations .............. 124
`
`Figure 6.8.
`
`3.0 Generate Microcode Hierarchy Chart .............................. 126
`
`Figure 6.9.
`
`4.0 Generate FPGA PALASM Files Hierarchy Chart ................ 127
`
`Figure 6.10. 4.2.2 FPGA Special Function Expansion Hierarchy Chart .......... .129
`
`Figure 6.11. 4.2.3 Generate FPGA Condition Stub Logic Hierarchy Chart... .... .130
`
`Figure 6.12. Expression Syntax Diagrams .............................................. 131
`
`Figure 6.13. 4.2.3.1 FPGA Expression Hierarchy Chart. ........................... .132
`
`Figure 6.14. 4.2.4 Generate FPGA Rule Address Logic Hierarchy Chart ......... .133
`
`Figure 6.15. 4.2.5 GenerateFPGA Action Stub Expressions Hierarchy Chart .... 135
`
`Figure 6.16. 4.2.6 GenerateFPGA Input Register Logic Hierarchy Chart ......... 136
`
`Figure 6.17. 4.2.7 Generate FPGA Output Multiplexer Logic Hierarchy Chart ... 137
`
`xvi
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 21
`
`

`

`Figure 6.18. 4.2.8 Generate FPGA Address Select Logic Hierarchy Chart ........ 138
`
`Figure 6.19. FMC Compiler -- Opening Screen ........................................ 139
`
`Figure 6.20. File Menu ..................................................................... 140
`
`Figure 6.21. ViewMenu ................................................................... 141
`
`Figure 6.22. Decision Table Full View ................................................... 142
`
`Figure 6.23. Generate Menu ............................................................... 143
`
`Figure 6.24. Memory Map and Execution Table ........................................ 144
`
`Figure 6.25. Assemble Microcode ........................................................ 145
`
`Figure 6.26. Assemble PALASM .PDS to .XNF ...................................... 146
`
`Figure 7 .1.
`
`Steps for 2 to 1 Image Magnification ..................................... 150
`
`Figure 7 .2.
`
`Interpolation Kernels for 2 to 1 Magnification ........................... 151
`
`Figure 7.3. New Pixel Computation .................................................... 152
`
`Figure 7.4.
`
`Parallel Pyramid Convolution Function .................................. 153
`
`Figure 7.5. Decision Table for 2 to 1 Magnification .................................. 155
`
`Figure 7.6.
`
`16 Input I-Bit Adder for Computing Histograms ....................... 158
`
`Figure 7. 7. Bit Counters for Computing Vertical Histograms ....................... 1."9
`
`Figure 7.8. Decision Table for Character Histogram Computation .................. 160
`
`xvii
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 22
`
`

`

`PREFACE
`
`In 1986 an engineer friend of mine named Richard Shaffer and I stopped at a local
`
`vendor in Minneapolis to pick up some PALs, when the representative asked us into the
`
`back room to show us something. XILINX had just introduced the first RAM-based
`
`field programmable gate array (FPGA), which was the first very large scale integrated
`
`(VLSI) circuit chip where the circuit is "written into it" not at the factory but after the
`
`power is turned on. In the back room the rep showed us a XILINX 2018 FPGA
`
`development system. He asked, "Can you think of a good application for these things?"
`
`My reply was, "Only if you had a reason to change the circuit as often as you change
`
`RAM, like if the chip could somehow be reprogrammed from a high-level language
`
`compiler." As my friend and I were driving back, I discussed with him how interesting it
`
`would be to write a compiler which would specify the logic circuitry of the machine that
`
`the program would execute on. In 1991 this became my dissertation topic.
`
`xviii
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 23
`
`

`

`CHAPTER 1. INTRODUCTION
`
`This dissertation began as a challenge to build a machine designed expressly for
`
`decision table (DT) execution. One advantage of representing a program as a DT
`
`[CODASYL, 1982] is that all the program's conditional statements are consolidated as
`
`"condition stubs" in upper left quadrant of the table with the idea that they can all be
`
`evaluated simultaneously. (See Figure 1.1.) Based on the evaluation of all these
`
`condition stubs, a "rule" corresponding to one of the columns is chosen. The rule
`
`contains a list of statements to execute, which are made up of "action stubs" in the lower
`
`left quadrant of the table.
`
`-Condition Stubs
`
`-Action Stubs
`
`Rules
`
`T
`
`F
`Entry Ta ble
`
`X
`
`X
`
`Figure 1.1. Decision Table Representation of a Program
`
`A machine designed for DT execution would be one where the amount of time it takes
`
`to select a rule is independent of the number of condition stubs and rules. Such a
`
`machine would also be able to compute arithmetic expressions in constant time (within
`
`practical limits). This means that theoretically, the right sides of assignment statements
`
`would also evaluate in unit time, independent of the number of variables or operands. In
`
`the end, theoretical execution time for a program on such a machine would depend only
`
`Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.
`
`PATENT OWNER DIRECTSTREAM, LLC
`EX. 2169, p. 24
`
`

`

`on (a) the number of iterations of the rules it must execute, pl us (b) the number of
`
`variable changes (i.e., assignment statements) each rule contains.
`
`If "constant time" is on the order of tens or hundreds of microseconds, then such a
`
`machine would only have theoretical value. If this time is on the order of tens or
`
`hundreds of nanoseconds, then the machine would have practical value today. Also, the
`
`machine would have only theoretical value if the sizes of implementable programs are too
`
`small to be of any significance, although "practical limits" of today are much different
`
`than what they will be five years from now.
`
`For this dissertation, we have built a machine whose "constant times" are in the tens
`
`to hundreds of nanoseconds, and whose "practical limits" do not impair it from
`
`potentially impacting important applications (e.g., image processing) over the next five
`
`years. This machine utilizes a relatively new technology, that of field programmable gate
`
`array (FPGA [Brown, et al., 1992]) chips, to extend RAM (memory) to what we call
`
`"functional memory" (FM), which has attached expression computation (function
`
`processing) elements.
`
`1.1 DECISION TABLE PROGRAMMING MODEL
`
`The decision table is used as the high-level programming language to compile because
`
`its structure conveniently separates and consolidates the conditional expressions for
`
`program control into a single expression calculation. Since it has been shown previously
`
`that any comp

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket