@InCollection{asthana:active-book, author = {Abhaya Asthana and Mark Cravatts and Paul Krzyzanowski}, title = {An Experimental Memory-based {I/O} Subsystem}, booktitle = {Input/Output in Parallel and Distributed Computer Systems}, chapter = {17}, editor = {Ravi Jain and John Werth and James C. Browne}, crossref = {iopads-book}, year = {1996}, series = {The Kluwer International Series in Engineering and Computer Science}, volume = {362}, pages = {373--390}, publisher = {Kluwer Academic Publishers}, earlier = {asthana:active}, keywords = {parallel I/O architecture, pario-bib}, abstract = {We describe an I/O subsystem based on an active memory named SWIM (Structured Wafer-based Intelligent Memory) designed for efficient storage and manipulation of data structures. The key architectural idea in SWIM is to associate some processing logic with each memory chip that allows it to perform data manipulation operations locally and to communicate with a disk or a communication line through a backend port. The processing logic is specially designed to perform operations such as pointer dereferencing, memory indirection, searching and bounds checking efficiently. The I/O subsystem is built using an interconnected ensemble of such memory logic pairs. A complex processing task can now be distributed between a large number of small memory processors each doing a sub-task, while still retaining a common locus of control in the host CPU for higher level administrative and provisioning functions. We argue that active memory based processing enables more powerful, scalable and robust designs for storage and communications subsystems, that can support emerging network services, multimedia workstations and wireless PCS systems. A complete parallel hardware and software system constructed using an array of SWIM elements has been operational for over a year. We present results from application of SWIM to three network functions: a national phone database server, a high performance IP router, and a call screening agent.}, comment = {Part of a whole book on parallel I/O; see iopads-book.} }