A Coprocessor for Fast Searching in Large Databases: Associative Computing Engine

Total Page:16

File Type:pdf, Size:1020Kb

A Coprocessor for Fast Searching in Large Databases: Associative Computing Engine A Coprocessor for Fast Searching in Large Databases: Associative Computing Engine DISSERTATION submitted in partial fulfillment of the requirements for the degree of Doktor-Ingenieur (Dr.-Ing.) to the Faculty of Engineering Science and Informatics of the University of Ulm by Christophe Layer from Dijon First Examiner: Prof. Dr.-Ing. H.-J. Pfleiderer Second Examiner: Prof. Dr.-Ing. T. G. Noll Acting Dean: Prof. Dr. rer. nat. H. Partsch Examination Date: June 12, 2007 c Copyright 2002-2007 by Christophe Layer — All Rights Reserved — Abstract As a matter of fact, information retrieval has changed considerably in recent years with the expansion of the Internet and the advent of always more modern and inexpensive mass storage devices. Due to the enormous increase in stored digital contents, multi- media devices must provide effective and intelligent search functionalities. However, in order to retrieve a few relevant kilobytes from a large digital store, one moves up to hundreds of gigabytes of data between memory and processor over a bandwidth- restricted bus. The only long-term solution is to delegate this task to the storage medium itself. For that purpose, this thesis describes the development and prototyping of an as- sociative search coprocessor called ACE: an Associative Computing Engine dedicated to the retrieval of digital information by means of approximate matching procedures. In this work, the two most important features are the overall scalability of the design allowing the support of different bit widths and module depths along the data path, as well as the obtainment of the minimum hardware area while ensuring the maximum throughput of the global architecture. After simulation, the correctness of the results delivered by the FPGA prototyping board could be verified using a text encoding scheme based on hashing theory. The performance of the hardware platform has been compared with the same application running in software on a general purpose processor. Accordingly, a speed-up of three to four orders of magnitude is achieved for the FPGA system versus many recent personal computers with different internal hardware configurations. Acknowledgments First and foremost, I express my gratitude to Prof. H.-J. Pfleiderer for his constant support, motivation and encouragements. Thank you for welcoming me in the Institute of Microelectronics at the University of Ulm and giving me the opportunity to pursue my research interests. Furthermore, I am very grateful to Prof. T. G. Noll of the RWTH Aachen for his interest in my work and his agreement to report about it. Thank you for the extremely helpful feedback, for the suggestions about the completion of the manuscript and for advising on this dissertation. I would also like to thank Prof. P. Ruj´an for his continuous encouragements and for pursuing my work over further international projects. Dr. G. Lapir is gratefully acknowledged for the discussions at an earlier stage of this project and for providing information and materials about the associative search method. I would like to thank my colleagues from the Institute of Microelectronics, especially M. Bschorr, C. G¨unter, O. Pf¨ander, J. Rauscher, W. Schlecker, K. Schmidt, R. Schreier and E. Schubert for all the constructive discussions and comments, as well as for the very comfortable atmosphere at work. Nonetheless, I am indebted to G. Kirilov for his expertise and contribution to the synthesis of the memory controller. Finally, special thanks go to Mrs. H¨ofer for her kindness, help and support. Ulm, October 18, 2007 Christophe Layer Table of Contents Chapter I ⋄ Introduction ......................................... 1 1 Information Retrieval Systems ....................... ................ 1 2 The Problem with Storage Devices ...................... ............. 3 2.1 Running into the Memory Wall ........................ .......... 3 2.2 Need for Hardware Support.......................... ............ 5 3 Organization of the Thesis ........................... ............... 6 Chapter II ⋄ Background ........................................ 9 1 Designing Digital Systems........................... ................ 9 1.1 Integrated Circuits Implementation Strategies . ................ 10 1.2 Microprocessor Design Techniques . .............. 14 1.3 Field Programmable Gate Arrays..................... ............ 16 1.4 Semiconductor Memory Devices . ............ 18 2 Pattern Matching in Strings .......................... ............... 20 2.1 Classical Algorithms............................. ............... 20 2.2 Flexible Pattern Matching......................... .............. 21 2.3 Dynamic Programming .............................. ........... 22 2.4 Hash Functions and Text Signatures . ............ 23 3 Sorting Techniques and Algorithms . ............... 25 3.1 Sequential Sorting............................... ............... 25 3.2 Bit-Level Structures ............................. ............... 28 3.3 Sorting Networks................................. .............. 30 3.4 Summarization ................................... ............. 31 Chapter III ⋄ Related Work ..................................... 33 1 Stateofthe Art in Software ........................... .............. 33 1.1 Web Search Engines ................................ ............ 33 1.2 Software Functionalities for Computers . ............... 34 2 Hardware Accelerators.............................. ................ 35 2.1 Associative and Parallel Processors Systems . .............. 35 2.2 Merging Logic and Memory ........................... .......... 36 2.3 Special Purpose Coprocessors ...................... .............. 38 2.4 Summarization ................................... ............. 39 3 Associative Access Method ........................... ............... 40 3.1 Building the Signature File ........................ .............. 40 3.2 The Retrieval Process............................. .............. 43 Chapter IV ⋄ System Level Analysis ........................... 49 1 Motivation and Expectations ......................... ............... 49 1.1 Problem Statement................................ ............. 49 1.2 Proposed Research ................................ ............. 50 2 Profiling andAnalysis ............................... ............... 52 2.1 Exploration of the Software Model................... ............. 53 VIII Table of Contents 2.2 Sequential Algorithm Analysis . .............. 54 3 Hardware Accelerator Design ......................... ............... 58 3.1 Parallelization of the Algorithm ................... ............... 58 3.2 Modular System Architecture ....................... ............. 62 Chapter V ⋄ Architectural Hardware Design ................. 65 1 System Management and Peripherals . ............. 65 1.1 Operation Scheduling ............................. .............. 65 1.2 Designing the Memory Interface..................... ............. 66 2 Building the Computational Data Path .................. ............. 71 2.1 Penalty Calculating Unit.......................... .............. 71 2.2 Score Calculating Unit............................ .............. 74 3 Hardware Sorting and Merging......................... .............. 80 3.1 Parallel Sorting with Bitonic Networks . .............. 80 3.2 Optimization Methodologies ....................... .............. 83 3.3 Hardware Merging Solutions ........................ ............. 85 Chapter VI ⋄ Results and Evaluation .......................... 91 1 Hardware Implementation............................ ............... 91 1.1 Adaptation to the Development Platform.............. ............ 91 1.2 Synchronizing the Processing Units . .............. 94 1.3 Synthesis Results................................ ............... 98 2 Evaluation of the Hardware Model ...................... ............. 100 2.1 Benchmarking Environment . ............ 100 2.2 Scaling the Design................................ .............. 103 2.3 Performance Appraisal............................ .............. 104 Chapter VII ⋄ Conclusion and Outlook ........................ 109 1 On the Associative Computing Engine . ............. 109 2 FutureWork ........................................ .............. 111 Appendix A ⋄ On the Realization of Logarithms ............. 113 1 ErrorAnalysis..................................... ................ 113 2 ErrorCorrection ................................... ................ 116 3 Exponential Function............................... ................ 118 Appendix B ⋄ High Throughput Memory Controller ........ 119 1 FiniteStateMachine ................................ ............... 119 2 SDRAMTimings ...................................... ............ 120 List of Abbreviations ............................................. 123 Bibliography and References .................................... 125 List of Figures 1.1 The process of retrieving information . ................... 2 1.2 Storage system trends ............................. .................. 4 1.3 Hardware performance trends and memory wall . ............... 4 1.4 Hierarchical organization of the thesis . .................... 6 2.1 Flexibility, performance and power consumption trade-off ................ 10 2.2 Increasing the throughput using pipelining . ................... 11 2.3 Accumulator design using the cut-set technique . .................. 12 2.4 Retiming an architecture with feedback . .................. 13 2.5 Representation of an island-style FPGA . ................. 16 2.6
Recommended publications
  • Algorithms for Approximate String Matching Petro Protsyk (28 October 2016) Agenda
    Algorithms for approximate string matching Petro Protsyk (28 October 2016) Agenda • About ZyLAB • Overview • Algorithms • Brute-force recursive Algorithm • Wagner and Fischer Algorithm • Algorithms based on Automaton • Bitap • Q&A About ZyLAB ZyLAB is a software company headquartered in Amsterdam. In 1983 ZyLAB was the first company providing a full-text search program for MS-DOS called ZyINDEX In 1991 ZyLAB released ZyIMAGE software bundle that included a fuzzy string search algorithm to overcome scanning and OCR errors. Currently ZyLAB develops eDiscovery and Information Governance solutions for On Premises, SaaS and Cloud installations. ZyLAB continues to develop new versions of its proprietary full-text search engine. 3 About ZyLAB • We develop for Windows environments only, including Azure • Software developed in C++, .Net, SQL • Typical clients are from law enforcement, intelligence, fraud investigators, law firms, regulators etc. • FTC (Federal Trade Commission), est. >50 TB (peak 2TB per day) • US White House (all email of presidential administration), est. >20 TB • Dutch National Police, est. >20 TB 4 ZyLAB Search Engine Full-text search engine • Boolean and Proximity search operators • Support for Wildcards, Regular Expressions and Fuzzy search • Support for numeric and date searches • Search in document fields • Near duplicate search 5 ZyLAB Search Engine • Highly parallel indexing and searching • Can index Terabytes of data and millions of documents • Can be distributed • Supports 100+ languages, Unicode characters 6 Overview Approximate string matching or fuzzy search is the technique of finding strings in text or dictionary that match given pattern approximately with respect to chosen edit distance. The edit distance is the number of primitive operations necessary to convert the string into an exact match.
    [Show full text]
  • System Design for a Computational-RAM Logic-In-Memory Parailel-Processing Machine
    System Design for a Computational-RAM Logic-In-Memory ParaIlel-Processing Machine Peter M. Nyasulu, B .Sc., M.Eng. A thesis submitted to the Faculty of Graduate Studies and Research in partial fulfillment of the requirements for the degree of Doctor of Philosophy Ottaw a-Carleton Ins titute for Eleceical and Computer Engineering, Department of Electronics, Faculty of Engineering, Carleton University, Ottawa, Ontario, Canada May, 1999 O Peter M. Nyasulu, 1999 National Library Biôiiothkque nationale du Canada Acquisitions and Acquisitions et Bibliographie Services services bibliographiques 39S Weiiington Street 395. nie WeUingtm OnawaON KlAW Ottawa ON K1A ON4 Canada Canada The author has granted a non- L'auteur a accordé une licence non exclusive licence allowing the exclusive permettant à la National Library of Canada to Bibliothèque nationale du Canada de reproduce, ban, distribute or seU reproduire, prêter, distribuer ou copies of this thesis in microform, vendre des copies de cette thèse sous paper or electronic formats. la forme de microficbe/nlm, de reproduction sur papier ou sur format électronique. The author retains ownership of the L'auteur conserve la propriété du copyright in this thesis. Neither the droit d'auteur qui protège cette thèse. thesis nor substantial extracts fkom it Ni la thèse ni des extraits substantiels may be printed or otherwise de celle-ci ne doivent être imprimés reproduced without the author's ou autrement reproduits sans son permission. autorisation. Abstract Integrating several 1-bit processing elements at the sense amplifiers of a standard RAM improves the performance of massively-paralle1 applications because of the inherent parallelism and high data bandwidth inside the memory chip.
    [Show full text]
  • A Modern Primer on Processing in Memory
    A Modern Primer on Processing in Memory Onur Mutlua,b, Saugata Ghoseb,c, Juan Gomez-Luna´ a, Rachata Ausavarungnirund SAFARI Research Group aETH Z¨urich bCarnegie Mellon University cUniversity of Illinois at Urbana-Champaign dKing Mongkut’s University of Technology North Bangkok Abstract Modern computing systems are overwhelmingly designed to move data to computation. This design choice goes directly against at least three key trends in computing that cause performance, scalability and energy bottlenecks: (1) data access is a key bottleneck as many important applications are increasingly data-intensive, and memory bandwidth and energy do not scale well, (2) energy consumption is a key limiter in almost all computing platforms, especially server and mobile systems, (3) data movement, especially off-chip to on-chip, is very expensive in terms of bandwidth, energy and latency, much more so than computation. These trends are especially severely-felt in the data-intensive server and energy-constrained mobile systems of today. At the same time, conventional memory technology is facing many technology scaling challenges in terms of reliability, energy, and performance. As a result, memory system architects are open to organizing memory in different ways and making it more intelligent, at the expense of higher cost. The emergence of 3D-stacked memory plus logic, the adoption of error correcting codes inside the latest DRAM chips, proliferation of different main memory standards and chips, specialized for different purposes (e.g., graphics, low-power, high bandwidth, low latency), and the necessity of designing new solutions to serious reliability and security issues, such as the RowHammer phenomenon, are an evidence of this trend.
    [Show full text]
  • NEWS for R Version 4.1.1 (2021-08-10)
    NEWS for R version 4.1.1 (2021-08-10) NEWS R News LATER NEWS • News for R 3.0.0 and later can be found in file `NEWS.Rd' in the R sources and files `NEWS' and `doc/html/NEWS.html' in an R build. CHANGES IN R VERSION 2.15.3 NEW FEATURES: • lgamma(x) for very small x (in the denormalized range) is no longer Inf with a warning. • image() now sorts an unsorted breaks vector, with a warning. • The internal methods for tar() and untar() do a slightly more general job for `ustar'- style handling of paths of more than 100 bytes. • Packages compiler and parallel have been added to the reference index (`refman.pdf'). • untar(tar = "internal") has some support for pax headers as produced by e.g. gnu- tar --posix (which seems prevalent on OpenSUSE 12.2) or bsdtar --format pax, including long path and link names. • sQuote() and dQuote() now handle 0-length inputs. (Suggestion of Ben Bolker.) • summaryRprof() returns zero-row data frames rather than throw an error if no events are recorded, for consistency. • The included version of PCRE has been updated to 8.32. • The tcltk namespace can now be re-loaded after unloading. The Tcl/Tk event loop is inhibited in a forked child from package parallel (as in e.g. mclapply()). • parallel::makeCluster() recognizes the value `random' for the environment vari- able R_PARALLEL_PORT: this chooses a random value for the port and reduces the chance of conflicts when multiple users start a cluster at the same time. UTILITIES: • The default for TAR on Windows for R CMD build has been changed to be `internal' if no tar command is on the path.
    [Show full text]
  • Approximate Pattern Matching with Index Structures
    Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen a Approximatec e Pattern Matching b with Index Structuresd f Johannes Krugel a c b d c e d f e e e f a d e b c f Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Approximate Pattern Matching with Index Structures Johannes A. Krugel Vollständiger Abdruck der von der Fakultät für Informatik der Technischen Universität München zur Erlangung des akademischen Grades eines Doktors der Naturwissenschaften (Dr. rer. nat.) genehmigten Dissertation. Vorsitzender: Univ.-Prof. Dr. Helmut Seidl Prüfer der Dissertation: 1. Univ.-Prof. Dr. Ernst W. Mayr 2. Univ.-Prof. Dr. Stefan Kramer, Johannes Gutenberg-Universität Mainz Die Dissertation wurde am 06.05.2015 bei der Technischen Universität München eingereicht und durch die Fakultät für Informatik am 19.01.2016 angenommen. ii Zusammenfassung Ziel dieser Arbeit ist es, einen Überblick über das praktische Verhalten von Indexstrukturen und Algorithmen zur approximativen Textsuche (approximate pattern matching, APM) zu geben, abhängig von den Eigenschaften der Eingabe. APM ist die Suche nach Zeichenfolgen in Texten oder biologischen Sequenzen unter Berücksichtigung von Fehlern (wie z. B. Rechtschreibfehlern oder genetischen Mutationen). In der Offline-Variante dieses Problems kann der Text vorverarbeitet werden, um eine Indexstruktur aufzubauen bevor die Suchanfragen beantwortet werden. Diese Arbeit beschreibt und diskutiert praktisch relevante Indexstrukturen, Ähnlichkeitsmaÿe und Suchalgorithmen für APM. Wir schlagen einen neuen effizienten Suchalgorithmus für Suffixbäume im externen Speicher vor. Im Rahmen der Arbeit wurden mehrere Indexstrukturen und Algorithmen für APM implementiert und in einer Softwarebibliothek bereitgestellt; die Implementierungen sind effizient, stabil, generisch, getestet und online verfügbar.
    [Show full text]
  • FPGA Implementation of RISC-Based Memory-Centric Processor Architecture
    (IJACSA) International Journal of Advanced Computer Science and Applications, Vol. 10, No. 9, 2019 FPGA Implementation of RISC-based Memory-centric Processor Architecture Danijela Efnusheva1 Computer Science and Engineering Department Faculty of Electrical Engineering and Information Technologies Skopje, North Macedonia Abstract—The development of the microprocessor industry in by the strict separation of the processing and memory resources terms of speed, area, and multi-processing has resulted with in the computer system. In such processor-centric system the increased data traffic between the processor and the memory in a memory is used for storing data and programs, while the classical processor-centric Von Neumann computing system. In processor interprets and executes the program instructions in a order to alleviate the processor-memory bottleneck, in this paper sequential manner, repeatedly moving data from the main we are proposing a RISC-based memory-centric processor memory in the processor registers and vice versa, [1]. architecture that provides a stronger merge between the Assuming that there is no final solution for overcoming the processor and the memory, by adjusting the standard memory processor-memory bottleneck, modern computer systems hierarchy model. Indeed, we are developing a RISC-based implement different types of techniques for "mitigating" the processor that integrates the memory into the same chip die, and occurrence of this problem, [10], (ex. branch prediction thus provides direct access to the on-chip memory, without the use of general-purpose registers (GPRs) and cache memory. The algorithms, speculative and re-order instructions execution, proposed RISC-based memory-centric processor is described in data and instruction pre-fetching, and multithreading, etc.).
    [Show full text]
  • NEWS for R Version 3.3.1 (2016-06-21)
    NEWS for R version 3.3.1 (2016-06-21) NEWS R News CHANGES IN R 3.3.1 BUG FIXES: • R CMD INSTALL and hence install.packages() gave an internal error installing a package called description from a tarball on a case-insensitive file system. • match(x, t) (and hence x %in% t) failed when x was of length one, and either character and x and t only differed in their Encoding or when x and t where complex with NAs or NaNs. (PR#16885.) • unloadNamespace(ns) also works again when ns is a `namespace', as from getNames- pace(). • rgamma(1,Inf) or rgamma(1, 0,0) no longer give NaN but the correct limit. • length(baseenv()) is correct now. • pretty(d, ..) for date-time d rarely failed when "halfmonth" time steps were tried (PR#16923) and on `inaccurate' platforms such as 32-bit windows or a configuration with --disable-long-double; see comment #15 of PR#16761. • In text.default(x, y, labels), the rarely(?) used default for labels is now cor- rect also for the case of a 2-column matrix x and missing y. • as.factor(c(a = 1L)) preserves names() again as in R < 3.1.0. • strtrim(""[0], 0[0]) now works. • Use of Ctrl-C to terminate a reverse incremental search started by Ctrl-R in the readline-based Unix terminal interface is now supported for readline >= 6.3 (Ctrl- G always worked). (PR#16603) • diff(<difftime>) now keeps the "units" attribute, as subtraction already did, PR#16940. CHANGES IN R 3.3.0 SIGNIFICANT USER-VISIBLE CHANGES: 1 2 NEWS • nchar(x, *)'s argument keepNA governing how the result for NAs in x is deter- mined, gets a new default keepNA = NA which returns NA where x is NA, except for type = "width" which still returns 2, the formatting / printing width of NA.
    [Show full text]
  • Department of Computer Science Fast Text Searching with Errors
    Fast Text Searching With Errors Sun Wu and Udi Manber TR 91-11 DEPARTMENT OF COMPUTER SCIENCE FAST TEXT SEARCHING WITH ERRORS Sun Wu and Udi Manber1 Department of Computer Science University of Arizona Tucson, AZ 85721 June 1991 ABSTRACT Searching for a pattern in a text ®le is a very common operation in many applications ranging from text editors and databases to applications in molecular biology. In many instances the pat- tern does not appear in the text exactly. Errors in the text or in the query can result from misspel- ling or from experimental errors (e.g., when the text is a DNA sequence). The use of such approximate pattern matching has been limited until now to speci®c applications. Most text edi- tors and searching programs do not support searching with errors because of the complexity involved in implementing it. In this paper we present a new algorithm for approximate text searching which is very fast and very ¯exible. We believe that the new algorithm will ®nd its way to many searching applications and will enable searching with errors to be just as common as searching exactly. 1. Introduction The string-matching problem is a very common problem. We are searching for a pattern = = ... P p 1p 2...pm inside a large text ®le T t 1t 2 tn. The pattern and the text are sequences of characters from a ®nite character set Σ. The characters may be English characters in a text ®le, DNA base pairs, lines of source code, angles between edges in polygons, machines or machine parts in a production schedule, music notes and tempo in a musical score, etc.
    [Show full text]
  • The Stringdist Package for Approximate String Matching by Mark P.J
    CONTRIBUTED RESEARCH ARTICLES 111 The stringdist Package for Approximate String Matching by Mark P.J. van der Loo Abstract Comparing text strings in terms of distance functions is a common and fundamental task in many statistical text-processing applications. Thus far, string distance functionality has been somewhat scattered around R and its extension packages, leaving users with inconistent interfaces and encoding handling. The stringdist package was designed to offer a low-level interface to several popular string distance algorithms which have been re-implemented in C for this purpose. The package offers distances based on counting q-grams, edit-based distances, and some lesser known heuristic distance functions. Based on this functionality, the package also offers inexact matching equivalents of R’s native exact matching functions match and %in%. Introduction Approximate string matching is an important subtask of many data processing applications including statistical matching, text search, text classification, spell checking, and genomics. At the heart of approximate string matching lies the ability to quantify the similarity between two strings in terms of string metrics. String matching applications are commonly subdivided into online and offline applications where the latter refers to the situation where the string that is being searched for a match can be preprocessed to build a search index. In online string matching no such preprocessing takes place. A second subdivision can be made into approximate text search, where one is interested in the location of the match of one string in another string, and dictionary lookup, where one looks for the location of the closest match of a string in a lookup table.
    [Show full text]
  • California State University, Northridge Pattern
    CALIFORNIA STATE UNIVERSITY, NORTHRIDGE PATTERN MATCHING ALGORITHMS FOR INTRUSION DETECTION SYSTEMS A Thesis submitted in partial fulfillment of the requirements For the degree of Master of Science In Computer Science By Stanimir Bogomilov Belchev August 2012 The thesis of Stanimir Bogomilov Belchev is approved: _____________________________________ _________________ Prof. John Noga Date _____________________________________ _________________ Prof. Robert McIlhenny Date _____________________________________ _________________ Prof. Jeff Wiegley, Chair Date California State University, Northridge ii DEDICATION I dedicate this paper to my parents, family, and friends for their continuous support throughout the years. I am grateful they continuously prompted me to go back to school and continue to educate myself – this has helped me a lot in life. I also want to thank my girlfriend (and future wife) Nadia for always staying by my side and supporting me every step of the way. Her passions for science has had a great impact on me and prompted me to explore subjects that I wouldn’t think would be interesting to me anyways. Thank you!!! iii ACKNOWLEDGEMENTS I would like to thank the Computer Science department at California State University Northridge for their help and support. Especially I would like to thank my committee members – Prof. Jeff Wiegley (chair), Prof. Robert McIlhenny, and Prof. John Noga. I admire their passion to computing and their dedication to teaching their students. My stay at California State University Northridge was an invaluable experience that gave me inspiration, knowledge, and love towards computing. Every class was fun and exciting, even when I had to do my homework late at night. The staff and faculty and the Computer Science department was professional and very knowledgeable and they certainly helped me grow as an individual.
    [Show full text]
  • Grep Pocket Reference
    grep Pocket Reference John Bambenek and Agnieszka Klus Beijing • Cambridge • Farnham • Köln • Sebastopol • Taipei • Tokyo grep Pocket Reference by John Bambenek and Agnieszka Klus Copyright © 2009 John Bambenek and Agnieszka Klus. All rights reserved. Printed in Canada. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Se- bastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promo- tional use. Online editions are also available for most titles (http://safari .oreilly.com). For more information, contact our corporate/institutional sales department: (800) 998-9938 or [email protected]. Editor: Isabel Kunkle Copy Editor: Genevieve d’Entremont Production Editor: Loranah Dimant Proofreader: Loranah Dimant Indexer: Joe Wizda Cover Designer: Karen Montgomery Interior Designer: David Futato Printing History: January 2009: First Edition. Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly Media, Inc. grep Pocket Reference, the im- age of an elegant hyla tree frog, and related trade dress are trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions,
    [Show full text]
  • In-Memory Logic Operations and Neuromorphic Computing in Non-Volatile Random Access Memory
    materials Review In-Memory Logic Operations and Neuromorphic Computing in Non-Volatile Random Access Memory Qiao-Feng Ou 1, Bang-Shu Xiong 1, Lei Yu 1, Jing Wen 1, Lei Wang 1,* and Yi Tong 2,* 1 School of Information Engineering, Nanchang Hangkong University, Nanchang 330063, China; [email protected] (Q.-F.O.); [email protected] (B.-S.X.); [email protected] (L.Y.); [email protected] (J.W.) 2 College of Electronic and Optical Engineering & College of Microelectronics, Nanjing University of Posts and Telecommunications, Nanjing 210023, China * Correspondence: [email protected] (L.W.); [email protected] (Y.T.) Received: 15 June 2020; Accepted: 6 August 2020; Published: 10 August 2020 Abstract: Recent progress in the development of artificial intelligence technologies, aided by deep learning algorithms, has led to an unprecedented revolution in neuromorphic circuits, bringing us ever closer to brain-like computers. However, the vast majority of advanced algorithms still have to run on conventional computers. Thus, their capacities are limited by what is known as the von-Neumann bottleneck, where the central processing unit for data computation and the main memory for data storage are separated. Emerging forms of non-volatile random access memory, such as ferroelectric random access memory, phase-change random access memory, magnetic random access memory, and resistive random access memory, are widely considered to offer the best prospect of circumventing the von-Neumann bottleneck. This is due to their ability to merge storage and computational operations, such as Boolean logic. This paper reviews the most common kinds of non-volatile random access memory and their physical principles, together with their relative pros and cons when compared with conventional CMOS-based circuits (Complementary Metal Oxide Semiconductor).
    [Show full text]