Efficient Data Structures for High Speed Packet Processing

Total Page:16

File Type:pdf, Size:1020Kb

Efficient Data Structures for High Speed Packet Processing Efficient data structures for high speed packet processing Paolo Giaccone Notes for the class on \Computer aided simulations and performance evaluation " Politecnico di Torino November 2020 Outline 1 Applications 2 Theoretical background 3 Tables Direct access arrays Hash tables Multiple-choice hash tables Cuckoo hash 4 Set Membership Problem definition Application Fingerprinting Bit String Hashing Bloom filters Cuckoo filters 5 Longest prefix matching Patricia trie Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 2 / 93 Applications Section 1 Applications Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 3 / 93 Applications Big Data and probabilistic data structures 3 V's of Big Data Volume (amount of data) Velocity (speed at which data is arriving and is processed) Variety (types of data) Main efficiency metrics for data structures space time to write, to update, to read, to delete Probabilistic data structures based on different hashing techniques approximated answers, but reliable estimation of the error typically, low memory, constant query time, high scaling Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 4 / 93 Applications Probabilistic data structures Membership answer approximate membership queries e.g., Bloom filter, counting Bloom filter, quotient filter, Cuckoo filter Cardinality estimate the number of unique elements in a dataset. e.g., linear counting, probabilistic counting, LogLog and HyperLogLog Frequency in streaming applications, find the frequency of some element, filter the most frequent elements in the stream, detect the trending elements, etc. e.g., majority algorithm, frequent algorithm, count sketch, count{min sketch Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 5 / 93 Applications Probabilistic data structures Rank estimate quantiles and percentiles in a data stream using only one pass through the data e.g., random sampling, q-digest, t-digest Similarity find the nearest neighbor for large datasets using sub-linear in time solutions. e.g., locality-sensitive hashing, MinHash, SimHash Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 6 / 93 Applications Application to computer networks Packet processing examples Address lookup Where to send an incoming packet? Exact matching: Ethernet forwarding tables MAC address Port 56:d4:ae:eb:f8:b6 2 06:b3:01:8b:24:1e 1 Longest prefix matching: IP routing tables Network prefix Gateway Interface 130.192.9.0/24 * eth0 130.192.0.0/16 130.192.9.250 eth0 default/0 130.192.9.252 eth0 Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 7 / 93 Applications Application to computer networks Packet processing examples Firewall, ACL Which packet to accept or deny? \Drop all packets from evil source network 66.66/16 on ports 6-666" Usually needs 5 fields: IP source-address, IP dest-address, L4 protocol, source-port, dest-port Intrusion Detection Schemes Deep Packet inspection (DPI) \Drop all packets that contains the string EvilWorm anywhere within the packet" Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 8 / 93 Applications Challenges at high speed high speed processing allows a limited number of clock cycles to process a packet Data rate Transmission time (64B) 100 Mbps 5.12 µs 1 Gbps 512 ns 10 Gbps 51 ns 40 Gbps 12.8 ns 100 Gbps 5.12 ns the time required to elaborate a packet depends on the specific data structure adopted to store all the packet processing rules each kind of packet processing problem requires an optimized data structure to minimize memory accesses memory access time is typically the main performance bottleneck e.g., use hash tables for exact matching, use Patricia tries for longest prefix matching Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 9 / 93 Applications Exact matching problem Solution #1 sorted table: array of (MAC address, port) pairs sorted based on the MAC address perform binary search to lookup for an address each iteration corresponds to a memory access at most log N iterations/memory accesses for a lookup, where N is the number of stored MAC addresses deterministic lookup time Solution #2 hash tables: search is much faster than solution #1 on average, even if the worst case can be O(log N= log log N) it is possible to adopt more sophisticated data structure/hashing techniques (e.g., to reduce memory) Bloom Filters, fingerprinting, etc. Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 10 / 93 Theoretical background Section 2 Theoretical background Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 11 / 93 Theoretical background \Bins and Balls" model for load balancing n balls, n bins for any dropping policy, average occupancy 1 ball/bin a deterministic algorithm, by comparing the occupancy of all n bins, is able to achieve a maximum occupancy 1 ball/bin not always feasible to track the size of O(n) bins, when n is very large Main question Is it possible to achieve similar performance to the optimal load balancing (i.e., 1 ball/bin) with an algorithm that track O(1) bins? Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 12 / 93 Theoretical background Randomized load balancing Random Dropping policy 1 choose uniformly at random 1 bin log n Maximum occupancy sharply concentrated on (1 + O(1)) and log log n 3 log n upper bounded by log log n Random Load Balancing policy 1 choose uniformly at random d bins 2 place the ball in the least occupied one log log n Maximum occupancy sharply concentrated on + O(1) log d Very famous result: \the power of 2 or d random choices" Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 13 / 93 Theoretical background Theoretical results for randomized dropping policies 8 Random Dropping Random Load Balancing d=2 7 Random Load Balancing d=3 Random Load Balancing d=4 6 5 4 Maximum occupancy 3 2 1 100 1000 10000 100000 1e+06 1e+07 1e+08 1e+09 1e+10 n Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 14 / 93 Theoretical background Simulation results for randomized dropping policies 10 Random dropping Random load balancing d=2 Random load balancing d=4 8 95% confidence intervals 6 occupancy bin 4 Max 2 0 100 1000 10000 100000 1x106 Bins/Balls Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 15 / 93 Theoretical background The birthday problem Exact question What is the minimum number of students in a class to be sure that at least 2 of them have the same birthday? 366 students (we neglect leap years for simplicity) Approximated question What is the minimum number of students in a class such that at least 2 of them have the same birthday with some given probability? 23 students to get probability > 0:5 41 students to get probability > 0:9 Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 16 / 93 Theoretical background Exact analysis of birthday problem Assume a class of m students, with m < 366. Letp ¯ be the probability that all m students have distinct birthdays: m−1 m−1 364 363 365 − m + 1 Y 365 − i Y i p¯ = × × ::: × = = 1 − 365 365 365 365 365 i=0 i=0 Now the probability p at least two students have the same birthday (i.e., birthday collision event) is m−1 Y i 365! p = 1 − p¯ = 1 − 1 − = 1 − 365 (365 − m)! × 365m i=0 If m = 23 then p = 0:507. If m = 41, then p = 0:903. Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 17 / 93 Theoretical background Approximated analysis of birthday problem Now observe that e−ax ≈ 1 − ax if x is small m−1 Pm−1 i m(m−1) 2 Y − i − i=0 − − m p ≈ 1 − e 365 = 1 − e 365 = 1 − e 2×365 ≈ 1 − e 2×365 i=0 1 Exact 0.9 Approx 0.8 0.7 0.6 0.5 0.4 0.3 Prob(birthday collision) 0.2 0.1 0 0 10 20 30 40 50 60 70 80 Number of people Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 18 / 93 Theoretical background Generalized version of birthday problem Probability of collision Consider m elements chosen uniformly at random, with repetition, from a set of cardinality n, with m < n. The probability p(n) that at least one pair of equal elements has been chosen (i.e., a \collision" has occurred) is 2 − m p(n) ≈ 1 − e 2n (1) Proof: this is just a generalization of birthday problem with a generic number n of days in a year. Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 19 / 93 Theoretical background Generalized version of birthday problem Number of elements for a collision Consider m elements chosen uniformly at random, with repetition, from a set of cardinality n, with m < n. To observe at least one collision with probability p, it must hold: s 1 m ≈ 2n log 1 − p Proof: From (1), we can write: m2 s − m2 1 1 − p = e 2n ) log(1 − p) = − ) m = 2n log 2n 1 − p Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov. 2020 20 / 93 Theoretical background Generalized version of birthday problem Typical number of elements for a collision Assume p = 0:5. Then, p m ≈ 1:17 n It can be shown that the typical number of elements is sharply concentrated around its average, when n ! 1: rπ p E[m] = × n ≈ 1:25 n 2 For example, for n = 365, m ≈ 22:3 and E[m] = 23:9. Giaccone (Politecnico di Torino) Hash, Cuckoo, Bloom and Patricia Nov.
Recommended publications
  • Podcast Ch23a
    Podcast Ch23a • Title: Bit Arrays • Description: Overview; bit operations in Java; BitArray class • Participants: Barry Kurtz (instructor); John Helfert and Tobie Williams (students) • Textbook: Data Structures for Java; William H. Ford and William R. Topp Bit Arrays • Applications such as compiler code generation and compression algorithms create data that includes specific sequences of bits. – Many applications, such as compilers, generate specific sequences of bits. Bit Arrays (continued) • Java binary bit handling operators |, &, and ^ act on pairs of bits and return the new value. The unary operator ~ inverts the bits of its operand. BitBit OperationsOperations x y ~x x | y x & y x ^ y 0 0 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 Bit Arrays (continued) Bit Arrays (continued) • Operator << shifts integer or char values to the left. Operators >> and >>> shift values to the right using signed or unsigned arithmetic, respectively. Assume x and y are 32-bit integers. x = 0...10110110 x << 2 = 0...1011011000 x = 101...11011100 x >> 3 = 111101...11011 x = 101...11011100 x >>> 3 = 000101...11011 Bit Arrays (continued) Before performing the bitwise operator |, &, or ^, Java performs binary numeric promotion on the operands. The type of the bitwise operator expression is the promoted type of the operands. The rules of promotion are as follows: • If either operand is of type long, the other is converted to long. • Otherwise, both operands are converted to type int. In the case of the unary operator ~, Java converts a byte, char, short to int before applying the operator, and the resulting value is an int.
    [Show full text]
  • A General-Purpose High Accuracy and Space Efficient
    countBF: A General-purpose High Accuracy and Space Efficient Counting Bloom Filter 1st Sabuzima Nayak 2nd Ripon Patgiri, Senior Member, IEEE Dept. Computer Science & Engineering Dept. Computer Science & Engineering National Institute of Technology Silchar National Institute of Technology Silchar Cachar-788010, Assam, India Cachar-788010, Assam, India sabuzima [email protected] [email protected] Abstract—Bloom Filter is a probabilistic data structure for Delete operation is crucial for Bloom Filter. Suppose a the membership query, and it has been intensely experimented database management system integrates Bloom Filter to avoid in various fields to reduce memory consumption and enhance unnecessary disk accesses and enhance its performance sig- a system’s performance. Bloom Filter is classified into two key categories: counting Bloom Filter (CBF), and non-counting nificantly with a tiny amount of memory [18]. Thus, the Bloom Filter. CBF has a higher false positive probability than database management system requires to insert, query, and standard Bloom Filter (SBF), i.e., CBF uses a higher memory delete operation for which conventional Bloom Filter is not footprint than SBF. But CBF can address the issue of the false suitable. Therefore, counting Bloom Filter is used in such negative probability. Notably, SBF is also false negative free, but kind of requirements. Another example is a network router. it cannot support delete operations like CBF. To address these issues, we present a novel counting Bloom Filter based on SBF Older packets are removed from the router databases. There- and 2D Bloom Filter, called countBF. countBF uses a modified fore, the router requires counting Bloom Filter.
    [Show full text]
  • Binary Index Trees a Cumulative Frequency Array Allows Us To
    Binary Index Trees A cumulative frequency array allows us to calculate the sum of the range of values in O(1), as long as there are no changes to the data once the queries start. But consider situations where we might change the value at an index in an array, then query for the sum of a range of values in the array, followed by some more changes and more queries. In this sort of situation, a cumulative frequency array would still give us O(1) query times, but it would take O(n) time to update after each change!!! (Basically, if we change one index in a cumulative frequency array, all other indexes above it would have to have this value added to it as well.) Here is a quick illustration: Current cumulative frequency array: Index 0 1 2 3 4 5 6 7 8 Value 2 4 4 4 6 8 11 13 17 Now, consider adding the value 2 to the data, recalling that index i stores the number of values less than or equal to i. The adjusted array is: Index 0 1 2 3 4 5 6 7 8 Value 2 4 5 5 7 9 12 14 18 We had to edit each index 2 or greater, which would take O(n) for a cumulative frequency array of size n. Thus, we want a new arrangement where both the query AND the update are relatively fast. The creative insight here is that perhaps if we store data in a different way, perhaps we can reduce the update time by quite a bit while incurring only a modest increase in query time.
    [Show full text]
  • B-Bit Sketch Trie: Scalable Similarity Search on Integer Sketches
    b-Bit Sketch Trie: Scalable Similarity Search on Integer Sketches Shunsuke Kanda Yasuo Tabei RIKEN Center for Advanced Intelligence Project RIKEN Center for Advanced Intelligence Project Tokyo, Japan Tokyo, Japan [email protected] [email protected] Abstract—Recently, randomly mapping vectorial data to algorithms intending to build sketches of non-negative inte- strings of discrete symbols (i.e., sketches) for fast and space- gers (i.e., b-bit sketches) have been proposed for efficiently efficient similarity searches has become popular. Such random approximating various similarity measures. Examples are b-bit mapping is called similarity-preserving hashing and approximates a similarity metric by using the Hamming distance. Although minwise hashing (minhash) [12]–[14] for Jaccard similarity, many efficient similarity searches have been proposed, most of 0-bit consistent weighted sampling (CWS) for min-max ker- them are designed for binary sketches. Similarity searches on nel [15], and 0-bit CWS for generalized min-max kernel [16]. integer sketches are in their infancy. In this paper, we present Thus, developing scalable similarity search methods for b-bit a novel space-efficient trie named b-bit sketch trie on integer sketches is a key issue in large-scale applications of similarity sketches for scalable similarity searches by leveraging the idea behind succinct data structures (i.e., space-efficient data structures search. while supporting various data operations in the compressed Similarity searches on binary sketches are classified
    [Show full text]
  • Compact Fenwick Trees for Dynamic Ranking and Selection
    Compact Fenwick trees for dynamic ranking and selection Stefano Marchini Sebastiano Vigna Dipartimento di Informatica, Universit`adegli Studi di Milano, Italy October 15, 2019 Abstract The Fenwick tree [3] is a classical implicit data structure that stores an array in such a way that modifying an element, accessing an element, computing a prefix sum and performing a predecessor search on prefix sums all take logarithmic time. We introduce a number of variants which improve the classical implementation of the tree: in particular, we can reduce its size when an upper bound on the array element is known, and we can perform much faster predecessor searches. Our aim is to use our variants to implement an efficient dynamic bit vector: our structure is able to perform updates, ranking and selection in logarithmic time, with a space overhead in the order of a few percents, outperforming existing data structures with the same purpose. Along the way, we highlight the pernicious interplay between the arithmetic behind the Fenwick tree and the structure of current CPU caches, suggesting simple solutions that improve performance significantly. 1 Introduction The problem of building static data structures which perform rank and select operations on vectors of n bits in constant time using additional o(n) bits has received a great deal of attention in the last two decades starting form Jacobson's seminal work on succinct data structures. [7] The rank operator takes a position in the bit vector and returns the number of preceding ones. The select operation returns the position of the k-th one in the vector, given k.
    [Show full text]
  • K-Mer Data Structures Rayan Chikhi CNRS, Univ
    k-mer data structures Rayan Chikhi CNRS, Univ. Lille, France CGSI - July 24, 2018 Baseline problem In-memory representation of a large set of short k-mers: e.g. ACTGAT GTATGC ATTAAA GAATTG ... (Indirect) applications ● Assembly ● Error-correction of reads ● Detection of similarity between sequences ● Detection of distances between datasets ● Alignment ● Pseudoalignment / quasi-mapping ● Detection of taxonomy ● Indexing large collections of sequencing datasets ● Quality control ● Detection of events (e.g. SNPs, indels, CNVs, alt. transcription) ● ... Goals of this lecture ● Broad sweep of state of the art, with applications ● Refresher of basic CS elements Au programme: ● Basic structures (Bloom Filters, CQF, Hashing, Perfect Hashing) ● k-mer data structures (SBT, BFT, dBG ds) ● Some reference-free applications k-mers Sequences of k consecutive letters, e.g. ACAG or TAGG for k=4 Problem statement: Framing the problem Representation of a set of k-mers: ACTGAT 6 11 Large set of k-mers : 10 - 10 elements GTATGC k in [11; 103] .. Problem statement: Operations to support Representation of a set of k-mers: - Construction (from a disk stream) ACTGAT - Membership (“is X in the set?”) GTATGC - Iteration (enumerate all elements in the set) - ... .. 106 - 1011 elements Extensions: k: 11 - 500 - Associate value(s) to k-mers (e.g. abundance) - - Navigate the de Bruijn graph Problem statement: Data structures Representation of a set of k-mers: ACTGAT “In computer science, a data structure is a GTATGC particular way of organizing and storing data in a
    [Show full text]
  • CMU SCS 15-721 (Spring 2020) :: OLTP Indexes (Trie Data Structures)
    ADVANCED DATABASE SYSTEMS OLTP Indexes (Trie Data Structures) @Andy_Pavlo // 15-721 // Spring 2020 Lecture #07 2 Latches B+Trees Judy Array ART Masstree 15-721 (Spring 2020) 3 LATCH IMPLEMENTATION GOALS Small memory footprint. Fast execution path when no contention. Deschedule thread when it has been waiting for too long to avoid burning cycles. Each latch should not have to implement their own queue to track waiting threads. Source: Filip Pizlo 15-721 (Spring 2020) 3 LATCH IMPLEMENTATION GOALS Small memory footprint. Fast execution path when no contention. Deschedule thread when it has been waiting for too long to avoid burning cycles. Each latch should not have to implement their own queue to track waiting threads. Source: Filip Pizlo 15-721 (Spring 2020) 4 LATCH IMPLEMENTATIONS Test-and-Set Spinlock Blocking OS Mutex Adaptive Spinlock Queue-based Spinlock Reader-Writer Locks 15-721 (Spring 2020) 5 LATCH IMPLEMENTATIONS Choice #1: Test-and-Set Spinlock (TaS) → Very efficient (single instruction to lock/unlock) → Non-scalable, not cache friendly, not OS friendly. → Example: std::atomic<T> std::atomic_flag latch; ⋮ while (latch.test_and_set(…)) { // Yield? Abort? Retry? } 15-721 (Spring 2020) 5 LATCH IMPLEMENTATIONS Choice #1: Test-and-Set Spinlock (TaS) → Very efficient (single instruction to lock/unlock) → Non-scalable, not cache friendly, not OS friendly. → Example: std::atomic<T> std::atomic_flag latch; ⋮ while (latch.test_and_set(…)) { // Yield? Abort? Retry? } 15-721 (Spring 2020) 6 LATCH IMPLEMENTATIONS Choice #2: Blocking OS Mutex → Simple to use → Non-scalable (about 25ns per lock/unlock invocation) → Example: std::mutex std::mutex m; ⋮ m.lock(); // Do something special... m.unlock(); 15-721 (Spring 2020) 6 LATCH IMPLEMENTATIONS Choice #2: Blocking OS Mutex → Simple to use → Non-scalable (about 25ns per lock/unlock invocation) → Example: std::mutex std::mutex m; pthread_mutex_t ⋮ m.lock(); futex // Do something special..
    [Show full text]
  • Space- and Time-Efficient String Dictionaries
    Tokushima University Ph.D. Thesis Space- and Time-Efficient String Dictionaries z間¹率hB間¹率noD文W列辞ø Author: Supervisor: Shunsuke Kanda Prof. Masao Fuketa A thesis submitted in fulfillment of the requirements for the degree of Doctor of Philosophy in the Graduate School of Advanced Technology and Science Department of Information Science and Intelligent Systems March 2018 iii Abstract In modern computer science, the management of massive data is a fundamental problem because the amount of data is growing faster than we can easily handle them. Such data are often represented as strings such as documents, Web contents and genomics data; therefore, data structures and algorithms for space-efficient string processing have been developed by many researchers. In this thesis, we focus on a string dictionary that is an in-memory data structure for storing a set of strings. It has been traditionally used to manage vocabulary in natural language processing and information retrieval. The size of the dictionaries is not problematic because of Heaps’ Law. However, string dictionaries in recent applications, such as Web search engines, RDF stores, geographic information systems and bioinformatics, need to handle very large datasets. As the space usage of string dictionaries is a significant issue in those applications, it is necessary to develop space-efficient data structures. If limited to static applications, existing data structures have already achieved very high space efficiency by exploiting succinct data structures and text compression techniques. For example, state-of-the-art string dictionaries can be implemented in space up to 5% of the original dataset size. However, there remain trade-off problems among space efficiency, lookup-time performance and construction costs.
    [Show full text]
  • Quotient Hash Tables-Efficiently Detecting Duplicates in Streaming
    Quotient Hash Tables - Efficiently Detecting Duplicates in Streaming Data Rémi Gérauda,c, Marius Lombard-Platet∗a,b, and David Naccachea,c aDépartement d’informatique de l’ENS, École normale supérieure, CNRS, PSL Research University, Paris, France bBe-Studys, Geneva, Switzerland cIngenico Labs Advanced Research, Paris, France Abstract This article presents the Quotient Hash Table (QHT) a new data structure for duplicate detection in unbounded streams. QHTs stem from a corrected analysis of streaming quotient filters (SQFs), resulting in a 33% reduction in memory usage for equal performance. We provide a new and thorough analysis of both algorithms, with results of interest to other existing constructions. We also introduce an optimised version of our new data structure dubbed Queued QHT with Duplicates (QQHTD). Finally we discuss the effect of adversarial inputs for hash-based duplicate filters similar to QHT. 1 Introduction and Motivation bits. We consider in this paper the following problem: given a pos- Proof. A perfect duplicate filter must be able to store all sibly infinite stream of symbols, detect whether a given sym- streams Ei = (e1,...,en), i.e. must be able to store any bol appeared somewhere in the stream. It turns out that in- subset of Γ, which we denote by (Γ). Given that there are P stances of this duplicate detection problem arise naturally in (Γ) = 2 Γ = 2U of them, according to information theory |P | | | many applications: backup systems [11] or Web caches [10], any such filter requires at least log ( (Γ) ) = log (2U )= U 2 |P | 2 search engine databases or click counting in web advertise- bits of storage.
    [Show full text]
  • Reconfigurable Architecture for Minimal Perfect Sequencing Using the Convey Hybrid Core Computer Chad Michael Nelson Iowa State University
    Iowa State University Capstones, Theses and Graduate Theses and Dissertations Dissertations 2012 RAMPS: reconfigurable architecture for minimal perfect sequencing using the Convey hybrid core computer Chad Michael Nelson Iowa State University Follow this and additional works at: https://lib.dr.iastate.edu/etd Part of the Bioinformatics Commons, and the Computer Engineering Commons Recommended Citation Nelson, Chad Michael, "RAMPS: reconfigurable architecture for minimal perfect sequencing using the Convey hybrid core computer" (2012). Graduate Theses and Dissertations. 12846. https://lib.dr.iastate.edu/etd/12846 This Thesis is brought to you for free and open access by the Iowa State University Capstones, Theses and Dissertations at Iowa State University Digital Repository. It has been accepted for inclusion in Graduate Theses and Dissertations by an authorized administrator of Iowa State University Digital Repository. For more information, please contact [email protected]. RAMPS: reconfigurable architecture for minimal perfect sequencing using the Convey hybrid core computer by Chad Michael Nelson A thesis submitted to the graduate faculty in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE Major: Computer Engineering Program of Study Committee: Joseph Zambreno, Major Professor Phillip Jones Heike Hofmann Iowa State University Ames, Iowa 2012 Copyright ⃝c Chad Michael Nelson, 2012. All rights reserved. ii DEDICATION For Erin, family, and friends... thank you. Life would not be so sweet without you all. iii TABLE OF CONTENTS LIST OF TABLES . v LIST OF FIGURES . vi ACKNOWLEDGEMENTS . vii ABSTRACT . viii CHAPTER 1. OVERVIEW . 1 CHAPTER 2. REVIEW OF LITERATURE . 3 CHAPTER 3. PRELIMINARIES . 6 3.1 Background on DNA Sequencing .
    [Show full text]
  • The Guide to Xillybus Lite
    The guide to Xillybus Lite Xillybus Ltd. www.xillybus.com Version 2.1 1 Introduction3 1.1 General....................................3 1.2 Obtaining Xillybus Lite............................4 2 Usage5 2.1 Sample design................................5 2.2 Host application interface..........................6 2.3 Logic design interface............................7 2.3.1 Register related signals.......................7 2.3.2 Module hierarchy...........................8 2.3.3 32-bit aligned register access....................9 2.3.4 Unaligned register access...................... 12 2.4 Interrupts................................... 16 3 Xillybus Lite on non-Xillinux projects 17 3.1 Applying the IP core............................. 17 3.2 Modifying the device tree.......................... 21 3.3 Compiling the Linux driver.......................... 23 3.4 Installing the driver.............................. 24 Xillybus Ltd. www.xillybus.com 3.5 Loading and unloading the driver...................... 24 The guide to Xillybus Lite 2 Xillybus Ltd. www.xillybus.com 1 Introduction 1.1 General Xillybus Lite is a simple kit for easy access of registers in the logic fabric (PL) by a user space program running under Linux. It presents an illusion of a bare-metal environment to the software, and a trivial interface of address, data and read/write- enable signals to the logic design. Using this kit frees the development team from dealing with the AXI bus interface as well as Linux kernel programming, and allows a straightforward memory-like control of the peripheral without the operating system or the bus protocol coming in the way. The kit consists of an IP core and a Linux driver. These are included in the Xillinux distribution for the Zedboard (versions 1.1 and up), and are also available for download separately for inclusion in projects.
    [Show full text]
  • Hashing and Amortization
    Lecture 10 Hashing and Amortization Supplemental reading in CLRS: Chapter 11; Chapter 17 intro; Section 17.1 10.1 Arrays and Hashing Arrays are very useful. The items in an array are statically addressed, so that inserting, deleting, and looking up an element each take O(1) time. Thus, arrays are a terrific way to encode functions ©1,..., nª T, ! where T is some range of values and n is known ahead of time. For example, taking T {0,1}, we Æ find that an array A of n bits is a great way to store a subset of {1,..., n}: we set A[i] 1 if and only Æ if i is in the set (see Figure 10.1). Or, interpreting the bits as binary digits, we can use an n-bit array to store an integer between 0 and 2n 1. In this way, we will often identify the set {0,1}n with the set ¡ {0,...,2n 1}. ¡ What if we wanted to encode subsets of an arbitrary domain U, rather than just {1,..., n}? Or to put things differently, what if we wanted a keyed (or associative) array, where the keys could be arbitrary strings? While the workings of such data structures (such as dictionaries in Python) are abstracted away in many programming languages, there is usually an array-based solution working behind the scenes. Implementing associative arrays amounts to finding a way to turn a key into an array index. Thus, we are looking for a suitable function U {1,..., n}, called a hash function.
    [Show full text]