CapitalOneArchitecture - Rice University Department of

Download Report

Transcript CapitalOneArchitecture - Rice University Department of

System and Software
Architecture
Managing Complexity in Computer Systems
Design and Software Implementation
Ken Kennedy
Rice University
http://www.cs.rice.edu/~ken/Presentations/CapitalOneArchitecture.pdf
Center for High Performance Software
Outline
•
Computer Architecture
•
Software Architecture
•
Role of Research
— Uniprocessor
— Parallel and distributed computer systems
— Layered software architectures
— System Software
– Operating system, file system, compilers, API
— Software design paradigms
– Objects, event-driven, client-server
— PITAC Report
Center for High Performance Software
The Computer
Processor
Center for High Performance Software
The Computer
Processor
L1 Cache
Center for High Performance Software
On Chip
The Computer
Processor
L1 Cache
L2 Cache
System Bus
Storage (RAM)
Center for High Performance Software
On Chip
The Computer
Processor
L1 Cache
On Chip
L2 Cache
System Bus
Storage (RAM)
Center for High Performance Software
IO
Interface
The Computer
Processor
L1 Cache
On Chip
L2 Cache
System Bus
Storage (RAM)
Center for High Performance Software
IO
Interface
Network
Interface
Buzzwords
•
Microprocessor
•
Personal computer
•
Workstation
•
Mainframe
•
Server
•
Supercomputer
— a single-chip computer
— an affordable computer
— a powerful single-user computer typically used for engineering
— a large multi-user computer
— a computer that provides "services" via a network
— a scientific computer of the highest possible performance
Center for High Performance Software
Trends in Computing
•
Moore's Law
Center for High Performance Software
Trends in Computing
•
Moore's Law
— Memory
– Double the bits on a chip every 18 months
Center for High Performance Software
Trends in Computing
•
Moore's Law
— Memory
– Double the bits on a chip every 18 months
— Reinterpreted for CPU chips
– double the speed at the same price, or
– same speed at half the price
Center for High Performance Software
Trends in Computing
•
Moore's Law
— Memory
– Double the bits on a chip every 18 months
— Reinterpreted for CPU chips
– double the speed at the same price, or
– same speed at half the price
Chip
Date
MHz
Transistors
8086
6/78
10
29K
80286
2/82
12
134K
80386
10/85
33
275K
80486
4/89
100
1.2M
Pentium
3/93
233
5.5M
Pentium II
5/97
400
7.5M
Center for High Performance Software
Moore’s Law
Pentium II
Pentium
80486
8086
Center for High Performance Software
80286 80386
Trouble with Moore’s Law
•
Transistor count does not necessarily translate to speed
— Architectural tricks are needed
– Parallel instruction issue
— Actual application speed doubles more slowly
– Losses due to difficulty of exploiting architecture
Center for High Performance Software
Trouble with Moore’s Law
•
Transistor count does not necessarily translate to speed
•
Physical limits will eventually be reached
— Architectural tricks are needed
– Parallel instruction issue
— Actual application speed doubles more slowly
– Losses due to difficulty of exploiting architecture
— Speed of light
Center for High Performance Software
Trouble with Moore’s Law
•
Transistor count does not necessarily translate to speed
•
Physical limits will eventually be reached
•
Chip fabrication facilities becoming too expensive
— Architectural tricks are needed
– Parallel instruction issue
— Actual application speed doubles more slowly
– Losses due to difficulty of exploiting architecture
— Speed of light
— Most recent: $2 billion
— Next: $10 billion
Center for High Performance Software
Trouble with Moore’s Law
•
Transistor count does not necessarily translate to speed
•
Physical limits will eventually be reached
•
Chip fabrication facilities becoming too expensive
•
We can’t wait for the processing power to arrive
— Architectural tricks are needed
– Parallel instruction issue
— Actual application speed doubles more slowly
– Losses due to difficulty of exploiting architecture
— Speed of light
— Most recent: $2 billion
— Next: $10 billion
— Supercomputer as time machine
Center for High Performance Software
Why We Need Powerful Computers
•
To solve bigger problems faster
— Weather prediction
— Aircraft design
— Computational chemistry
— Environmental cleanup
— Process control
— Responsive transaction processing
– instantaneous response to 100 million users
Center for High Performance Software
Why We Need Powerful Computers
•
To solve bigger problems faster
•
To run more complex software
— Weather prediction
— Aircraft design
— Computational chemistry
— Environmental cleanup
— Process control
— Responsive transaction processing
– instantaneous response to 100 million users
— image processing (Adobe Photoshop)
— video editing and delivery (Adobe Premiere)
— animation and graphics (Pixar and LucasFilms)
Center for High Performance Software
Going Beyond Moore’s Law
•
Solution to limitations: Architectural Change
Center for High Performance Software
Going Beyond Moore’s Law
•
•
Solution to limitations: Architectural Change
Parallel Computing
— Use of more than one processor for the same application
— Cost: programming complexity
– Application decomposition
– Synchronization and communication
Center for High Performance Software
Going Beyond Moore’s Law
•
•
Solution to limitations: Architectural Change
•
Distributed Computing
Parallel Computing
— Use of more than one processor for the same application
— Cost: programming complexity
– Application decomposition
– Synchronization and communication
— Use of more than one computer for each application
– Assigning different tasks to specialized facilities
database access, transaction processing
— Cost: more programming complexity
– All complexity of parallelism plus
– Security, reliability, performance guarantees, network traffic
Center for High Performance Software
Symmetric Multiprocessor (SMP)
Processor 1
Cache
System Bus
Storage (RAM)
Center for High Performance Software
Network
Interface
Symmetric Multiprocessor (SMP)
Processor 1
Processor 2
Cache
Cache
System Bus
Storage (RAM)
Center for High Performance Software
Network
Interface
Symmetric Multiprocessor (SMP)
Processor 1
Processor 2
Processor 3
Cache
Cache
Cache
System Bus
Storage (RAM)
Center for High Performance Software
Network
Interface
Symmetric Multiprocessor (SMP)
Processor 1
Processor 2
Processor 3
Processor 4
Cache
Cache
Cache
Cache
System Bus
Storage (RAM)
Center for High Performance Software
Network
Interface
Symmetric Multiprocessor (SMP)
Processor 1
Processor 2
Processor 3
Processor 4
Cache
Cache
Cache
Cache
System Bus
Storage (RAM)
Key Problem: Parallel programming
Center for High Performance Software
Network
Interface
Distributed-Memory Machines
Backplane Network
Center for High Performance Software
Distributed-Memory Machines
Processor 1
Cache
System Bus
Storage (RAM)
Network
Interface
Backplane Network
Center for High Performance Software
Distributed-Memory Machines
Processor 1
Processor 2
Cache
Cache
System Bus
System Bus
Storage (RAM)
Network
Interface
Storage (RAM)
Backplane Network
Center for High Performance Software
Network
Interface
Distributed-Memory Machines
Processor 1
Processor 2
Cache
Cache
System Bus
System Bus
Storage (RAM)
Network
Interface
Storage (RAM)
Network
Interface
Backplane Network
Key Problem: Data movement between memories
Center for High Performance Software
SMP Cluster
Local Area Network
Center for High Performance Software
SMP Cluster
Workstation 1
P1
P2
System Bus
Storage (RAM)
Network
Interface
Local Area Network
Center for High Performance Software
SMP Cluster
Workstation 1
P1
Workstation 2
P2
P1
System Bus
Storage (RAM)
System Bus
Network
Interface
Storage (RAM)
Local Area Network
Center for High Performance Software
P2
Network
Interface
SMP Cluster
Workstation 1
P1
Workstation 2
P2
P1
System Bus
Storage (RAM)
P2
System Bus
Network
Interface
Storage (RAM)
Network
Interface
Local Area Network
Key Problem: Data movement between machines
Center for High Performance Software
Distributed Computing
Local or Global Network (e.g., The Internet)
Center for High Performance Software
Distributed Computing
PC
P
Bus
RAM
NI
Local or Global Network (e.g., The Internet)
Center for High Performance Software
Distributed Computing
Workstation
PC
P
P
Cache
Bus
Bus
RAM
NI
RAM
NI
Local or Global Network (e.g., The Internet)
Center for High Performance Software
Distributed Computing
SMP Server
Workstation
PC
P
P
Cache
Bus
Bus
RAM
NI
RAM
P1
P2
Cache
Cache
System Bus
NI
Storage (RAM)
Network
Interface
Local or Global Network (e.g., The Internet)
Center for High Performance Software
Distributed Computing
SMP Server
Workstation
PC
P
P
Cache
Bus
Bus
RAM
NI
RAM
P1
P2
Cache
Cache
System Bus
NI
Storage (RAM)
Network
Interface
Local or Global Network (e.g., The Internet)
Key Problem: Division of Labor
Center for High Performance Software
The Problem: Programming
•
Programming is Hard
— Programmer must manage:
– creation of parallel work
– synchronization at completion
– communication of results
– debugging and performance tuning
– mapping to different machines
Center for High Performance Software
The Problem: Programming
•
Programming is Hard
— Programmer must manage:
– creation of parallel work
– synchronization at completion
– communication of results
– debugging and performance tuning
– mapping to different machines
— Automatic parallelization does not work!
Center for High Performance Software
The Problem: Programming
•
Programming is Hard
•
Sequential Algorithms Usually Do Not Work
— Programmer must manage:
– creation of parallel work
– synchronization at completion
– communication of results
– debugging and performance tuning
– mapping to different machines
— Automatic parallelization does not work!
Center for High Performance Software
The Problem: Programming
•
Programming is Hard
•
Sequential Algorithms Usually Do Not Work
— Programmer must manage:
– creation of parallel work
– synchronization at completion
– communication of results
– debugging and performance tuning
– mapping to different machines
— Automatic parallelization does not work!
— Example: take the maximum of a set of numbers
– each processor takes maximum of a subset
– how do we find the maximum of all the subset maxima?
Center for High Performance Software
Example: Parallel Maximum
8
2
5
Center for High Performance Software
3
1
9
6
7
Example: Parallel Maximum
8
8
5
2
5
Center for High Performance Software
9
3
1
7
9
6
7
Example: Parallel Maximum
8
9
8
8
5
2
5
Center for High Performance Software
9
3
1
7
9
6
7
Example: Parallel Maximum
9
8
9
8
8
5
2
5
Center for High Performance Software
9
3
1
7
9
6
7
Software
•
Key Challenge: Managing Complexity
Center for High Performance Software
Software
•
Key Challenge: Managing Complexity
— Complexity of problems
– Modern applications have many different components
Center for High Performance Software
Software
•
Key Challenge: Managing Complexity
— Complexity of problems
– Modern applications have many different components
— Complexity of computing platforms
– Parallel, distributed, networked
Center for High Performance Software
Software
•
Key Challenge: Managing Complexity
•
Solutions
— Complexity of problems
– Modern applications have many different components
— Complexity of computing platforms
– Parallel, distributed, networked
— Layered abstractions
– Objects
– Software service layers
Center for High Performance Software
Software
•
Key Challenge: Managing Complexity
•
Solutions
— Complexity of problems
– Modern applications have many different components
— Complexity of computing platforms
– Parallel, distributed, networked
— Layered abstractions
– Objects
– Software service layers
— Composition of systems from components
– Independence from platform location
– Seamless integration
Center for High Performance Software
Software Layering
Level 0
Center for High Performance Software
Machine
Software Layering
Level 1
Level 1 Virtual Machine
Level 0
Machine
Center for High Performance Software
Software Layering
Level 2
Level 2 Virtual Machine
Level 1
Level 1 Virtual Machine
Level 0
Machine
Center for High Performance Software
Software Layering
Level 3
Level 3 Virtual Machine
Level 2
Level 2 Virtual Machine
Level 1
Level 1 Virtual Machine
Level 0
Machine
Center for High Performance Software
Software Layering
Level 4
Level 4 Virtual Machine
Level 3
Level 3 Virtual Machine
Level 2
Level 2 Virtual Machine
Level 1
Level 1 Virtual Machine
Level 0
Machine
Center for High Performance Software
Implementation of Virtual Machines
•
Interpretation
— Commands of one layer are implemented in terms of the commands
of the layer on which it is built
— Advantages: simplicity, dynamic error detection
— Disadvantage: performance
Center for High Performance Software
Implementation of Virtual Machines
•
Interpretation
•
Translation
— Commands of one layer are implemented in terms of the commands
of the layer on which it is built
— Advantages: simplicity, dynamic error detection
— Disadvantage: performance
— Commands of one layer are rewritten directly as commands of the
layer below
– By a preprocesor (Compiler)
— Advantages: performance and preliminary error checking
– Compiler checks program for inconsistencies, optimizes
— Disadvantage: requires implementation of complex translator
Center for High Performance Software
Layering in Basic System Software
Level 4
Level 3
Level 2
Level 1
Level 0
Center for High Performance Software
Machine
Layering in Basic System Software
Level 4
Level 3
Level 2
Level 1
Operating System Machine
Partial Interpretation (OS)
Level 0
Center for High Performance Software
Machine
Layering in Basic System Software
Level 4
Level 3
Level 2
Assembly Language Level
Translation (assembler)
Level 1
Operating System Machine
Partial Interpretation (OS)
Level 0
Center for High Performance Software
Machine
Layering in Basic System Software
Level 4
Level 3
Programming Language Level
Translation (compiler)
Level 2
Assembly Language Level
Translation (assembler)
Level 1
Operating System Machine
Partial Interpretation (OS)
Level 0
Center for High Performance Software
Machine
Layering in Basic System Software
Level 4
Command-Driven Application
Interpretation
Level 3
Programming
Level 3 Virtual
Language
Machine
Level
Translation (compiler)
Level 2
Assembly
Level 2 Virtual
Language
Machine
Level
Translation (assembler)
Level 1
Operating
Level 1 Virtual
SystemMachine
Machine
Partial Interpretation (OS)
Level 0
Center for High Performance Software
Machine
Layering in Networks
Basic Network Services:
bitways, point-to-point packet transfer
Center for High Performance Software
Layering in Networks
Middleware:
routing, file transfer, quality of service
Basic Network Services:
bitways, point-to-point packet transfer
Center for High Performance Software
Layering in Networks
Application:
e.g., World-Wide-Web
Middleware:
routing, file transfer, quality of service
Basic Network Services:
bitways, point-to-point packet transfer
Center for High Performance Software
Standard Computer System Layers
Computer Hardware
Center for High Performance Software
Standard Computer System Layers
Operating System
Computer Hardware
Center for High Performance Software
Standard Computer System Layers
Operating System
File System
Computer Hardware
Center for High Performance Software
Standard Computer System Layers
System Service Libraries (API)
Operating System
File System
Computer Hardware
Center for High Performance Software
Standard Computer System Layers
System Service Libraries (API)
Middleware
Operating System
File System
Computer Hardware
Center for High Performance Software
Standard Computer System Layers
High-Level Language
System Service Libraries (API)
Middleware
Operating System
File System
Computer Hardware
Center for High Performance Software
Standard Computer System Layers
High-Level Language
User Libraries
System Service Libraries (API)
Middleware
Operating System
File System
Computer Hardware
Center for High Performance Software
Standard Computer System Layers
Application
High-Level Language
User Libraries
System Service Libraries (API)
Middleware
Operating System
File System
Computer Hardware
Center for High Performance Software
Object
•
Abstract Software Component
— Replaces older concepts: data and subroutines
Center for High Performance Software
Object
•
Abstract Software Component
•
Encapsulates Behaviors
— Replaces older concepts: data and subroutines
— All interactions via methods
– E.g., create, destroy, display, modify
— Class: Objects with common behaviors
Center for High Performance Software
Object
•
Abstract Software Component
•
Encapsulates Behaviors
— Replaces older concepts: data and subroutines
— All interactions via methods
– E.g., create, destroy, display, modify
— Class: Objects with common behaviors
Private Data
Method 1
Method 2
Center for High Performance Software
Objects
•
Abstract Software Component
•
Encapsulates Behaviors
— Replaces older concepts: data and subroutines
— All interactions via methods
– E.g., create, destroy, display, modify
— Class: Objects with common behaviors
Private Data
Method 1
Method 2
Center for High Performance Software
Example: Screen Window
createWindow
destroyWindow
writeTextInWindow
redisplayWindow
resizeWindow
Parallelism versus Multithreading
•
Multithreading
— Task broken down into collaborating threads that can run in parallel
— Example
— Key strategy: synchronization
Center for High Performance Software
Parallelism versus Multithreading
•
Multithreading
•
Multiprogramming
— Task broken down into collaborating threads that can run in parallel
— Example
— Key strategy: synchronization
— Multiple threads run on a single processor
– Each makes progress
— Key strategy
– Time slicing in the OS
Center for High Performance Software
Parallelism versus Multithreading
•
Multithreading
•
Multiprogramming
•
Multiprocessing
— Task broken down into collaborating threads that can run in parallel
— Example
— Key strategy: synchronization
— Multiple threads run on a single processor
– Each makes progress
— Key strategy
– Time slicing in the OS
— Multiple processors available to run threads in parallel
— Key strategies
– Processor scheduling and resource allocation
Center for High Performance Software
Client-Server Computing
•
Division of Labor in an Application
Center for High Performance Software
Client-Server Computing
•
Division of Labor in an Application
— Server:
– Provides services and access to shared data needed by all
clients
– Runs on high-performance computer
Center for High Performance Software
Client-Server Computing
•
Division of Labor in an Application
— Server:
– Provides services and access to shared data needed by all
clients
– Runs on high-performance computer
— Client:
– Performs tasks unique to local problem-solving need
– Runs on PC or workstation
Center for High Performance Software
Client-Server Computing
•
Division of Labor in an Application
•
Collaboration over Network
— Server:
– Provides services and access to shared data needed by all
clients
– Runs on high-performance computer
— Client:
– Performs tasks unique to local problem-solving need
– Runs on PC or workstation
Center for High Performance Software
Client-Server Computing
•
Division of Labor in an Application
•
•
Collaboration over Network
— Server:
– Provides services and access to shared data needed by all
clients
– Runs on high-performance computer
— Client:
– Performs tasks unique to local problem-solving need
– Runs on PC or workstation
Example: World Wide Web
Center for High Performance Software
Client-Server Computing
•
Division of Labor in an Application
•
•
Collaboration over Network
— Server:
– Provides services and access to shared data needed by all
clients
– Runs on high-performance computer
— Client:
– Performs tasks unique to local problem-solving need
– Runs on PC or workstation
Example: World Wide Web
— Server: translates URL into data location, delivers HTML
Center for High Performance Software
Client-Server Computing
•
Division of Labor in an Application
•
•
Collaboration over Network
— Server:
– Provides services and access to shared data needed by all
clients
– Runs on high-performance computer
— Client:
– Performs tasks unique to local problem-solving need
– Runs on PC or workstation
Example: World Wide Web
— Server: translates URL into data location, delivers HTML
— Client: browser formats web page for screen display, translates link
accesses to URLs for delivery to server.
Center for High Performance Software
Batch Versus Event-Driven Processing
•
Batch Processing
— Transactions collect and are processed together at regular intervals
Center for High Performance Software
Batch Versus Event-Driven Processing
•
Batch Processing
— Transactions collect and are processed together at regular intervals
— Example: Payroll
– Transactions are processed once each pay period in a single run
— Principal strategy: Sorting
Center for High Performance Software
Batch Versus Event-Driven Processing
•
Batch Processing
•
Event Driven (Real-Time) Processing
— Transactions collect and are processed together at regular intervals
— Example: Payroll
– Transactions are processed once each pay period in a single run
— Principal strategy: Sorting
— Transactions are processed immediately on receipt
Center for High Performance Software
Batch Versus Event-Driven Processing
•
Batch Processing
•
Event Driven (Real-Time) Processing
— Transactions collect and are processed together at regular intervals
— Example: Payroll
– Transactions are processed once each pay period in a single run
— Principal strategy: Sorting
— Transactions are processed immediately on receipt
— Example: Airline reservations
– Transaction confirmed during reservation session
Center for High Performance Software
Batch Versus Event-Driven Processing
•
Batch Processing
•
Event Driven (Real-Time) Processing
— Transactions collect and are processed together at regular intervals
— Example: Payroll
– Transactions are processed once each pay period in a single run
— Principal strategy: Sorting
— Transactions are processed immediately on receipt
— Example: Airline reservations
– Transaction confirmed during reservation session
— Key strategies:
– Data organization for rapid access to single elements (BTrees)
– Mechanisms to ensure data integrity
locking, two-phase commit, rollback
Center for High Performance Software
Software Architecture
•
Middleware
— Software layers intended to provide services to many applications
– Typically system software and network services
Center for High Performance Software
Software Architecture
•
Middleware
•
Reuse
— Software layers intended to provide services to many applications
– Typically system software and network services
Center for High Performance Software
Software Architecture
•
Middleware
•
Reuse
— Software layers intended to provide services to many applications
– Typically system software and network services
— Component Reuse in Software Engineering
– Components that can be incorporated in many applications
Center for High Performance Software
Software Architecture
•
Middleware
•
Reuse
— Software layers intended to provide services to many applications
– Typically system software and network services
— Component Reuse in Software Engineering
– Components that can be incorporated in many applications
— Design Reuse in Software Architecture
Center for High Performance Software
Software Architecture
•
Middleware
•
Reuse
— Software layers intended to provide services to many applications
– Typically system software and network services
— Component Reuse in Software Engineering
– Components that can be incorporated in many applications
— Design Reuse in Software Architecture
– Applications designed in layers (with collaborating components)
Basic computational engine, application middleware, domainspecific logic, presentation
Center for High Performance Software
Software Architecture
•
Middleware
•
Reuse
— Software layers intended to provide services to many applications
– Typically system software and network services
— Component Reuse in Software Engineering
– Components that can be incorporated in many applications
— Design Reuse in Software Architecture
– Applications designed in layers (with collaborating components)
Basic computational engine, application middleware, domainspecific logic, presentation
– Example of application middleware
Implementation of “transaction” on top of data base engine
Center for High Performance Software
Example: A Reservation System
Data Base Engine
64-Processor
Distributed-Memory System
Center for High Performance Software
Example: A Reservation System
Flights and Seats
Data Base Engine
64-Processor
Distributed-Memory System
Center for High Performance Software
Example: A Reservation System
Reservations
Flights and Seats
Data Base Engine
64-Processor
Distributed-Memory System
Center for High Performance Software
Example: A Reservation System
Reservations
Call-Handling
Computer
System
Flights and Seats
Data Base Engine
16-processor
SMP
Center for High Performance Software
64-Processor
Distributed-Memory System
Example: A Reservation System
Reservations
Travel
Agent
Worstation
Call-Handling
Computer
System
PC
Flights and Seats
Data Base Engine
16-processor
SMP
Center for High Performance Software
64-Processor
Distributed-Memory System
Importance of Standards
•
Complex software
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
Center for High Performance Software
Importance of Standards
•
Complex software
•
Standards: A Critical Complexity Management Strategy
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
Center for High Performance Software
Importance of Standards
•
Complex software
•
Standards: A Critical Complexity Management Strategy
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
— Examples:
– Cross-processor object management: CORBA and DCOM
Center for High Performance Software
Importance of Standards
•
Complex software
•
Standards: A Critical Complexity Management Strategy
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
— Examples:
– Cross-processor object management: CORBA and DCOM
– Database interfaces: SQL
Center for High Performance Software
Importance of Standards
•
Complex software
•
Standards: A Critical Complexity Management Strategy
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
— Examples:
– Cross-processor object management: CORBA and DCOM
– Database interfaces: SQL
– User interface: X Windows
Center for High Performance Software
Importance of Standards
•
Complex software
•
Standards: A Critical Complexity Management Strategy
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
— Examples:
– Cross-processor object management: CORBA and DCOM
– Database interfaces: SQL
– User interface: X Windows
– Graphics: OpenGL
Center for High Performance Software
Importance of Standards
•
Complex software
•
Standards: A Critical Complexity Management Strategy
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
— Examples:
– Cross-processor object management: CORBA and DCOM
– Database interfaces: SQL
– User interface: X Windows
– Graphics: OpenGL
– Programming language: C++ and Fortran
Center for High Performance Software
Importance of Standards
•
Complex software
•
Standards: A Critical Complexity Management Strategy
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
— Examples:
– Cross-processor object management: CORBA and DCOM
– Database interfaces: SQL
– User interface: X Windows
– Graphics: OpenGL
– Programming language: C++ and Fortran
– Execution environment: Java and Java Virtual Machine
Center for High Performance Software
Importance of Standards
•
Complex software
•
Standards: A Critical Complexity Management Strategy
— Consists of many different components running on different
machines
— Challenge: management of incompatibilities
— Examples:
– Cross-processor object management: CORBA and DCOM
– Database interfaces: SQL
– User interface: X Windows
– Graphics: OpenGL
– Programming language: C++ and Fortran
– Execution environment: Java and Java Virtual Machine
– Data representation: IEEE Floating Point
Center for High Performance Software
Conclusions
•
Computing platforms are growing ever more complex
•
Software is growing more complicated
•
Strategies for management of complexity are essential
— Powerful but complex microprocessors
— Parallel and distributed computing
— Hand-held devices and embedded processors
— Parallel programming
— Distributed applications
— Event-driven processing
— Layered design (incremental abstraction)
— Objects
— Reuse
— Standard interfaces
Center for High Performance Software
Information Technology Research:
Investing in Our Future
President's Information Technology Advisory Committee
Report to the President
Ken Kennedy
PITAC Co-Chair
http://www.cs.rice.edu/~ken/Presentations/PITAC.pdf
President’s Information Technology Advisory Committee
Charter
•
The Committee shall provide an independent assessment of:
— Progress made in implementing the High-Performance Computing
and Communications (HPCC) Program;
— Progress in designing and implementing the Next Generation
Internet initiative;
— The need to revise the HPCC Program;
— Balance among components of the HPCC Program;
— Whether the research and development undertaken pursuant to
the HPCC Program is helping to maintain United States leadership
in advanced computing and communications technologies and their
applications;
— Other issues as specified by the Director of the Office of
Science and Technology.
– Review of the entire IT investment strategy — is it meeting
the nation’s needs
Center for High Performance Software
Committee Membership
•
Co-Chairs:
•
Members:
— Bill Joy, Sun Microsystems
— Eric Benhamou, 3Com
— Ching-chih Chen, Simmons
— Steve Dorfman, Hughes
— Bob Ewald, SGI
— Sherri Fuller, U of Washington
— Susan Graham, UC Berkeley
— Danny Hillis, Disney, Inc
— John Miller, Montana State
— Raj Reddy, Carnegie Mellon
— Larry Smarr, UIUC
— Les Vadasz, Intel
— Steve Wallach, Centerpoint
Center for High Performance Software
— Ken Kennedy, Rice
—
—
—
—
—
—
—
—
—
—
—
—
Vinton Cerf, MCI
David Cooper, LLNL
David Dorman, PointCast
David Farber, Penn
Hector Garcia-Molina, Stanford
Jim Gray, Microsoft
Robert Kahn, CNRI
David Nagel, AT&T
Ted Shortliffe, Stanford
Joe Thompson, Miss. State
Andy Viterbi, Qualcomm
Irving Wladawsky-Berger, IBM
Methodology
•
Evaluation of Federal Research Investment Portfolio
•
Review of Balance in Federal Research Portfolio
— Plans reviewed for each of the major areas:
– High End Computing and Computation
– Large Scale Networking
– Human Centered Computer Systems
– High Confidence Systems
– Education, Training, and Human Resources
— Fundamental versus Applied
– Based on our own definition of these terms
— High-Risk versus Low-Risk
— Long-Term versus Short-Term
Center for High Performance Software
Principal Finding
•
Drift Away from Long-Term Fundamental Research
— Agencies pressed by the growth of IT needs
– IT R&D budgets have grown steadily but not dramatically
– IT industry has accounted for over 30 percent of the real
GDP growth over the past five years, but gets only 1 out of
75 Federal R&D dollars
– Problems solved by IT are critical to the nation—engineering
design, health and medicine, defense
Center for High Performance Software
Principal Finding
•
Drift Away from Long-Term Fundamental Research
— Agencies pressed by the growth of IT needs
– IT R&D budgets have grown steadily but not dramatically
– IT industry has accounted for over 30 percent of the real
GDP growth over the past five years, but gets only 1 out of
75 Federal R&D dollars
– Problems solved by IT are critical to the nation—engineering
design, health and medicine, defense
— Most IT R&D agencies are mission-oriented
– Natural and correct to favor the short-term needs of the
mission
Center for High Performance Software
Principal Finding
•
Drift Away from Long-Term Fundamental Research
•
This Trend Must Be Reversed
— Agencies pressed by the growth of IT needs
– IT R&D budgets have grown steadily but not dramatically
– IT industry has accounted for over 30 percent of the real
GDP growth over the past five years, but gets only 1 out of
75 Federal R&D dollars
– Problems solved by IT are critical to the nation—engineering
design, health and medicine, defense
— Most IT R&D agencies are mission-oriented
– Natural and correct to favor the short-term needs of the
mission
— Continue the flow of ideas to fuel the information economy and
society
Center for High Performance Software
Remedy
•
Increase the Federal IT R&D Investment by 1.4 billion dollars
per year
— Ramp up over five years
— Focus on increasing fundamental research
Center for High Performance Software
Remedy
•
•
Increase the Federal IT R&D Investment by 1.4 billion dollars
per year
— Ramp up over five years
— Focus on increasing fundamental research
Invest in Key Areas Needing Attention
— Software
— Scalable Information Infrastructure
— High-End Computing
— Social, Economic, and Workforce Issues
– Reinvigorate Colleges and Universities
Center for High Performance Software
Remedy
•
Increase the Federal IT R&D Investment by 1.4 billion dollars
per year
— Ramp up over five years
— Focus on increasing fundamental research
•
Invest in Key Areas Needing Attention
•
Develop a Coherent Management Strategy
— Software
— Scalable Information Infrastructure
— High-End Computing
— Social, Economic, and Workforce Issues
– Reinvigorate Colleges and Universities
— Establish clear organizational responsibilities
— Diversify modes of support
Center for High Performance Software