210 likes | 217 Views
Embedded Systems: Supercomputing in a Pencil Tip. Frank Vahid* Department of Computer Science and Engineering University of California, Riverside vahid@cs.ucr.edu http://www.cs.ucr.edu/~vahid * Also with the Center for Embedded Computer Systems at UC Irvine
E N D
Embedded Systems: Supercomputing in a Pencil Tip Frank Vahid* Department of Computer Science and Engineering University of California, Riverside vahid@cs.ucr.edu http://www.cs.ucr.edu/~vahid * Also with the Center for Embedded Computer Systems at UC Irvine This work is being supported by the National Science Foundation
Key Trend: Moore’s Law Higher Performance Source: Intel • Transistors per chip double roughly every 18 months • 1980: ~10,000 transistors • Today: ~1,000,000,000 (1 billion) transistors • Means higher performance computers
Moore’s Law also means Smaller & Cheaper • Same chip shrinks to half its size every 18 months • Means we can put powerful computers in places never dreamed of before J. Wiley and Sons, 2006
Cray 1A Supercomputing in a Pencil Tip? • Remember the Cray 1A supercomputer? • Fastest computer in the world in 1976 • Cost about $10 million dollars (1976 $) • Roughly 100 MHz • 5.5 tons, freon cooled • $100,000 per month to maintain • Used for atmospheric research, physical simulations, etc. • About 1 million transistors
Today – A Supercomputer in a Pencil Tip 1 million transistors (Cray 1) • Approaching 1 billion transistors per square centimeter (65 nm) • 1 million transistors (Cray 1): 0.1 millimeters2 • 1 million transistors approaching the size of a speck of dust – literally • And often can use fewer transistors • ARM 32-bit processor only about 100,000 transistors Modern chip – 1 billion transistors 1 cm 1 cm Photo: Jason Hill http://www.dustnetworks.com/
Tiny Embedded Computers • Smart Dust (UCB) • Millimeter scale • Includes sensors, microprocessors, wireless communication, power supply • Costs dollars, even just cents, each • Potential uses • Weather/seismological monitoring on Mars • Land/space comm. networks • Chemical/biological sensors • Defense-related sensor networks • Inventory Control • Product quality monitoring • Smart office spaces Image: "Smart dust" particles self-assembled on drops of oil in water. The microscopic particles are nanostructured flakes of porous silicon that spontaneously assemble, orient, sense, and report on their local environment. UCSD, 2003.
Tiny Embedded Computers • Smart Pills • Electronically tracked and instructed to deliver medicine to specific location • “Swallowing the pill and the instrument” • iPills – micropump, sensors, and medicine • Pump controls amount of medicine based on body temperature and pH • Other uses of tiny computers? • Who knows 10 years from now? • See http://www.smalltimes.com http://www.templehealth.org/capsule/april_22_05/april2205_news03.htm
Magnetic Contact Switch Magnetic Contact Switch Magnetic Contact Switch Need something to indicate garage open at night – use led We want to detect night – use light sensor Motion Sensor Need a function of light sensor output and contact switch output – use Logic Block LED LED LED A’B’ A’B’ Configure Logic Block to turn led on when it’s night and when door is open Toggle We want to know if garage door open – use contact switch 2-Input Logic 2-Input Logic 2-Input Logic 2-Input Logic Electric Relay Tripper Light Sensor Light Sensor Light Sensor Button Splitter Plug pieces together and the system is done! One Project at UCR – eBlocks • NSF-funded project to empower non-engineers to build useful custom sensor-based systems • Plug together blocks, configure, done! • Low-cost mass-produced block types: • Sensors – motion, light, contact, etc. • Output – led, electric relay, beeper, etc. • Compute – logic, prolong, toggle, etc. • Basic configuration required (dials, switches) • Communicate – wireless point-to-point link • Simple example: Garage open at night?
LED 2-Input Logic 2-Input Logic 2-Input Logic 1 2 3 4 5 6 7 8 9 Prolonger Light Sensor Light Sensor Beeper Beeper Button Motion Sensor Building eBlocks Systems • The same building blocks can be used in a variety of applications Tripper A’B Motion Sensor Sleepwalker at Night Alarm Magnetic Contact Switch A+B A’B’ Garage Door Open At Night Detector Motion on Property Detector Light Sensor 1 2 3 4 5 6 7 8 9 eBlock to Camera Interface 2-Input Logic Motion Sensor Prolonger A+B Animal Videoing System
Output Output Output Compute/Communications Compute/Communications Compute/Communications Available eBlocks Available eBlocks Beeper Beeper Beeper When A is When A is When A is yes no yes no yes no AND OR AND OR AND OR B is B is B is yes no yes no yes no then the output is yes then the output is yes then the output is yes Combine Combine Combine Green/Red Light Green/Red Light Green/Red Light rst rst rst in in in Once Yes, Stays Yes Once Yes, Stays Yes Once Yes, Stays Yes Available eBlocks Toggle Toggle Toggle 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Sensors Sensors Sensors seconds seconds seconds Prolonger Prolonger Prolonger Button Button Button Hide this panel Advanced Mode Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port. Motion Sensor Motion Sensor Motion Sensor Hide this panel Advanced Mode Light Sensor Light Sensor Light Sensor Yes/No Yes/No Yes/No Hide this panel Advanced Mode Design Entry/Simulation • User specifies and tests block design • Java-based simulator • User can choose a variety of blocks by selecting between pallets
Output Output Compute/Communications Compute/Communications Available eBlocks Available eBlocks Beeper Beeper When A is When A is yes no yes no AND OR AND OR B is B is yes no yes no then the output is yes then the output is yes Combine Combine Green/Red Light Green/Red Light Button rst rst in in Once Yes, Stays Yes Once Yes, Stays Yes Toggle Toggle 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Sensors Sensors seconds seconds Prolonger Prolonger Button Button Hide this panel Advanced Mode Hide this panel Advanced Mode Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port. Motion Sensor Motion Sensor Light Sensor Light Sensor Yes/No Yes/No Design Entry/Simulation • User specifies and tests block design • Java-based simulator • User can choose a variety of blocks by selecting between pallets • Blocks are added to workspace by clicking or dragging blocks from “Available eBlocks” tray
Output Compute/Communications Available eBlocks Beeper When A is yes no AND OR B is yes no then the output is yes Combine Green/Red Light Button rst in Once Yes, Stays Yes Toggle 1 2 3 4 5 6 7 8 9 Sensors Light Sensor seconds Prolonger Button Hide this panel Advanced Mode Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port. Motion Sensor Light Sensor Yes/No Design Entry/Simulation • User specifies and tests block design • Java-based simulator • User can choose a variety of blocks by selecting between pallets • Blocks are added to workspace by clicking or dragging blocks from “Available eBlocks” tray
Output Output Compute/Communications Compute/Communications Available eBlocks Beeper Beeper When A is When A is yes no yes no AND OR AND OR B is B is yes no yes no then the output is yes then the output is yes Combine Combine Green/Red Light Green/Red Light Button rst rst in in Once Yes, Stays Yes Once Yes, Stays Yes Available eBlocks Toggle Toggle When A is yes no AND OR B is yes no 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 then the output is yes Sensors Sensors Light Sensor seconds seconds Combine Prolonger Prolonger Button Button Hide this panel Advanced Mode Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port. Motion Sensor Motion Sensor Light Sensor Light Sensor Yes/No Yes/No Hide this panel Advanced Mode Design Entry/Simulation • User specifies and tests block design • Java-based simulator • User can choose a variety of blocks by selecting between pallets • Blocks are added to workspace by clicking or dragging blocks from “Available eBlocks” tray
Output Output Output Compute/Communications Compute/Communications Compute/Communications Available eBlocks Available eBlocks Beeper Beeper When A is When A is When A is yes no yes no yes no AND OR AND OR AND OR B is B is B is yes no yes no yes no Beeper then the output is yes then the output is yes then the output is yes Combine Combine Combine Green/Red Light Green/Red Light Beeper Button rst rst rst When A is yes no AND OR B is yes no Green/Red Light in in in Once Yes, Stays Yes Once Yes, Stays Yes Once Yes, Stays Yes Available eBlocks then the output is yes Combine Toggle Toggle Toggle 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Sensors Sensors Sensors Light Sensor seconds seconds seconds Prolonger Prolonger Prolonger Button Button Button Hide this panel Hide this panel Advanced Mode Advanced Mode Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port. Motion Sensor Motion Sensor Motion Sensor Light Sensor Light Sensor Light Sensor Yes/No Yes/No Yes/No Hide this panel Advanced Mode Design Entry/Simulation • User specifies and tests block design • Java-based simulator • User can choose a variety of blocks by selecting between pallets • Blocks are added to workspace by clicking or dragging blocks from “Available eBlocks” tray
Output Output Output Compute/Communications Compute/Communications Compute/Communications Available eBlocks Available eBlocks Beeper Beeper When A is When A is When A is yes no yes no yes no AND OR AND OR AND OR B is B is B is yes no yes no yes no Beeper then the output is yes then the output is yes then the output is yes Combine Combine Combine Green/Red Light Green/Red Light Beeper Button rst rst rst When A is yes no AND OR B is yes no Green/Red Light in in in Once Yes, Stays Yes Once Yes, Stays Yes Once Yes, Stays Yes Available eBlocks then the output is yes Combine Toggle Toggle Toggle 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Sensors Sensors Sensors Light Sensor seconds seconds seconds Prolonger Prolonger Prolonger Button Button Button Hide this panel Hide this panel Advanced Mode Advanced Mode Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port. Motion Sensor Motion Sensor Motion Sensor Light Sensor Light Sensor Light Sensor Yes/No Yes/No Yes/No Hide this panel Advanced Mode Design Entry/Simulation • User specifies and tests block design • Java-based simulator • User can choose a variety of blocks by selecting between pallets • Blocks are added to workspace by clicking or dragging blocks from “Available eBlocks” tray • User is able to configure various blocks by clicking on switches
Output Output Output Compute/Communications Compute/Communications Compute/Communications Available eBlocks Available eBlocks Beeper Beeper When A is When A is When A is yes no yes no yes no AND OR AND OR AND OR B is B is B is yes no yes no yes no Beeper then the output is yes then the output is yes then the output is yes Combine Combine Combine Green/Red Light Green/Red Light Beeper Button rst rst rst When A is yes no AND OR B is yes no Green/Red Light in in in Once Yes, Stays Yes Once Yes, Stays Yes Once Yes, Stays Yes Available eBlocks then the output is yes Combine Toggle Toggle Toggle 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Sensors Sensors Sensors Light Sensor seconds seconds seconds Prolonger Prolonger Prolonger Button Button Button Hide this panel Hide this panel Advanced Mode Advanced Mode Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port. Motion Sensor Motion Sensor Motion Sensor Light Sensor Light Sensor Light Sensor Yes/No Yes/No Yes/No Hide this panel Advanced Mode Design Entry/Simulation • User specifies and tests block design • Java-based simulator • User can choose a variety of blocks by selecting between pallets • Blocks are added to workspace by clicking or dragging blocks from “Available eBlocks” tray • User is able to configure various blocks by clicking on switches • Connections created by drawing lines between blocks
Output Output Output Compute/Communications Compute/Communications Compute/Communications Available eBlocks Available eBlocks Beeper Beeper When A is When A is When A is yes no yes no yes no AND OR AND OR AND OR B is B is B is yes no yes no yes no Beeper then the output is yes then the output is yes then the output is yes Combine Combine Combine Green/Red Light Green/Red Light Beeper rst rst rst When A is yes no AND OR B is yes no Green/Red Light in in in Once Yes, Stays Yes Once Yes, Stays Yes Once Yes, Stays Yes Available eBlocks then the output is yes Light Sensor Combine Toggle Toggle Toggle 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Sensors Sensors Sensors Light Sensor seconds seconds seconds Prolonger Prolonger Prolonger Button Button Button Hide this panel Hide this panel Advanced Mode Advanced Mode Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port. Motion Sensor Motion Sensor Motion Sensor Light Sensor Light Sensor Light Sensor Yes/No Yes/No Yes/No Hide this panel Advanced Mode Design Entry/Simulation • User specifies and tests block design • Java-based simulator • User can choose a variety of blocks by selecting between pallets • Blocks are added to workspace by clicking or dragging blocks from “Available eBlocks” tray • User is able to configure various blocks by clicking on switches • Connections created by drawing lines between blocks • User can create, experiment, test and configure design Button
LED LED More than half of the students were able to build these systems in less than 10 minutes! 2-Input Logic Magnetic Contact Switch 1 2 3 4 5 6 7 8 9 Prolonger Light Sensor A’B’ Beeper Beeper Motion Sensor Button Motion Sensor Light Sensor 1 2 3 4 5 6 7 8 9 eBlock to Camera Interface 2-Input Logic Motion Sensor Prolonger A+B Simple Systems – Sensor blocks directly to output block Intermediate Systems – Systems that require intermediate logic OR state blocks Complex Systems – Systems that require intermediate logic AND state blocks Usability of eBlocks • eBlocks usability experiments • >500 participants, 2 years • Participants of various expertise levels • None had previous eBlocks experience Days to weeks required by advanced students to build similar systems without benefit of eBlocks
Partitions Programmable eBlocks eBlocks as a Programming Paradigm • Use virtual eBlocks in graphical simulator to describe desired sensor system behavior • Intuitive due to spatial emphasis, not temporal emphasis • Automatically compile to code on programmable eBlocks
Programmable eBlock #include <pic.h>#include “sci.h” #include “io.h” #include “constants.h” Unsigned char data_val = ERROR; ... main(void) { unsigned I, j; TRISB = 0; ... } main(void) { ORTA = 0xff; CMCON = 0x07; TRISA = 0x00; TRISB = 0x02; asm("CLRWDT"); ... } eBlock Synthesis Tool – Programming • Tool generates C code automatically C Code • Download code to block with click of a button • Ordinary users can “write” programs in minutes • Spatial vs. temporally-oriented language • 20 high school graduates: eBlocks (spatial) vs. LEGO Mindstorms (temporal), 6 example systems, 40 minutes to build
Conclusions • Low-cost powerful computer chips opening vast new territory • Sensors with compute and communication nearly free • Smart Dust, Smart Pills, RFID, … • What new useful applications will evolve? • eBlocks – Enables user-customized systems • Monitor home/office/school/store/etc. • Sample application: Monitor activity level and patterns of ageing parent – must be customized, behaviors highly person-specific • Detect unusual behavior Response (phone call, visit, …) • Monitor trends (w/ doctor) Early detection and correction of problems • Other sensor-network projects happening at UCR too • Future is wide open! • Collaborators • Ph.D students: Susan Lysecky, Ryan Mannion, David Sheldon; Profs. Harry Hsieh, Walid Najjar, Crista Lopes (UC Irvine)