CS1033: Programming Fundamentals Part C: Computer Systems & Hardware Notes
Introduction
- Computers are ubiquitous, found in automobiles, appliances, mobile phones, and cameras.
- They reshape lives at home, work, and school; businesses widely use networked computers connected to the Internet.
- Computers control electrical and mechanical functions in devices, often called "invisible computers" or "embedded systems."
What is a Computer?
- An electronic device for analyzing and storing data and making calculations.
- A machine that can be programmed to execute instructions and process data into useful information.
- Important features:
- It is a machine.
- It can be “programmed”; that is, it can (understand and) execute a finite set of “instructions”.
- It can “process” (perform operations on) “data” according to those “instructions”.
- It can execute a “sequence of instructions in a given order” that are “stored” within the machine.
- The actual “order of execution of instructions” in a given sequence of instructions can depend dynamically on data, results of execution of previous instructions or some events.
- It can execute a sequence of instructions “repeatedly”, as many times as instructed or forever.
- It can execute instructions very fast (for e.g., billions of instructions per second)
- A combination of mechanical, electrical, and electronic components.
- Computers execute instructions fast and accurately, but their 'intelligence' depends on human programming.
Uses of Computers
- Initially used for complex calculations; now used in diverse fields.
- Students:
- find information for studies from the Internet or educational compact discs
- read electronic-books (e-books)
- access e-learning resources and activities
- play computer games
- listen to music and watch movies
- create documents, music, movies, and animations
- draw pictures and design web pages
- communicate, chat, share electronic content with friends and others.
- Teachers: enhance work effectiveness.
- Employees: prepare reports, manage stock, communicate with stakeholders, and create presentations.
- Doctors: track patient history and simulate human body models.
- Engineers/Scientists: perform calculations, technical drawings, and simulations; forecast weather; send rockets to space.
- Artists: create music, movies, animations, pictures, and cartoons.
- Computers control household equipment, automobiles (about 50 computers per car), airplanes, and trains using sensors and user inputs.
- Computers decide how to operate machine parts to provide desired functions.
Different Types of Computers
- Personal Computers (PCs): Introduced by IBM in the early 1980s for single-person use.
- Affordable, small, and suitable for individuals/small businesses.
- "IBM-compatible" PCs used the Intel "8086" microprocessor family (x86 architecture).
- Macintosh: Apple's alternative with software incompatible with PCs due to different microprocessor and hardware architecture.
- Basic types of personal computers:
- Desktops: stationary computers for offices and homes.
- Workstations: powerful desktops for scientists, engineers, and digital artists with high-resolution monitors and graphic handling.
- Laptops (notebooks): portable computers with desktop power, weighing less than 3kg, operate on AC power or batteries.
- Tablet computers: lighter than laptops, accept input from the screen via fingers or stylus.
- Handheld computers: small devices like personal digital assistants (PDAs) for notes, contacts, and schedules.
- Smart phones: cellular phones with advanced features, web, email, and specialized software.
- Wearable computers: integrated into watches, visors, and clothing for common applications.
- Computers for organizations:
- Network servers: powerful PCs with special hardware/software for networks, may be in clusters or server farms.
- Mainframe computers: used in large organizations for simultaneous data access by many users via terminals.
- Minicomputers: smaller than mainframes, capabilities between mainframes and PCs.
- Supercomputers: expensive, powerful computers for complex computations, used in research and large businesses. E.g. IBM Roadrunner, Cray Titan, Tianhe-IA.
- Embedded computers:
- Reside inside systems like automobiles or appliances.
- Interact with the environment to perform specific tasks, enabling “smart” devices.
- Modern smart TVs offer internet access and video calls.
Components of a Computer System
- Hardware: Physical components that can be seen and touched.
- Software: Programs that control hardware activities; categorized as system software and application software.
- Data: Input for processing or output after processing.
- User: A critical component of a computer system.
- Computers are vital due to the importance of information.
- Information examples: newspaper contents, books, plans, recipes, addresses, and telephone directories.
- Computers process, store, and transfer information via networks like the Internet.
- Information technology (IT) or information and communication technology (ICT) encompasses computer and communication technologies.
- Information systems manage information using policies, procedures, and resources, often requiring computers.
- Managed by information system (IS) departments, IS managers, or a chief information officer (CIO).
Introduction to Computer Hardware
- Hardware comprises physical components: computers, monitors, printers.
- Components are essential or optional, governed by electrical, electronic, and mechanical principles.
- Discusses major hardware components, starting with the motherboard and memory before the processor.
Major Components of a Personal Computer System
- Motherboard / System Board:
- Central Processing Unit (CPU / Microprocessor)
- Memory:
- Random Access Memory (Read/Write memory) (RAM)
- Read Only Memory (ROM)
- Graphic / display controller
- Network / Wi-Fi controllers
- Audio Interface (Sound card)
- Universal Serial Bus (USB) controller
- Input / Output sub system:
- Display Monitor (VDU)
- Keyboard
- Mouse
- Scanner
- Printer
- Microphone / Speakers
- Joystick / Game controller
- Secondary storage devices:
- Solid State Drive (SSD)
- Hard Disk Drive (HDD)
- CD-ROM / DVD drive
- Floppy disk drive
- Tape drives
- Chassis:
- Power supply unit
- Fan / cooling system
The Traditional View of a Computer System
- Traditional computers are easier to understand.
- Classifications: single-user and multi-user computer systems.
The Traditional View of a Single User Computer System
- Only one user can use at a time.
- Central Processing Unit (CPU) communicates with and manages all subsystems.
- Video Display Unit (VDU) produces visual output.
- VDU, keyboard, and printer are part of the Input/Output (IO) subsystem.
- Memory subsystem: Random Access Memory (RAM) and Read-Only Memory (ROM).
- RAM: temporary memory for current data and instructions; loses data when powered off.
- ROM: permanent memory for long-term data and instructions.
- Secondary storage: disk drives (SSD, hard disks, floppy disks) and tape drives for additional storage.
- Solid State Drives (SSD): high capacity, fast, permanent storage using flash memory.
- Hard disks: high capacity, permanent storage (slower than SSD).
- Tape Drives: high capacity, cost-effective data storage, but slower.
- CPU is central unit controlling the system but does not scale well.
A Modern Computer System
- Most subsystems included in a box referred to as the ‘Machine’.
- Includes Video sub-system, Multimedia devices, networking adapters and communication ports.
The Motherboard
- Most important component, also called ‘main board’.
- A large circuit board where the processor, memory, and other electronic components are attached.
- Controllers manage hard disks, I/O devices, and microprocessor operations.
- The motherboard provides the path for processor communication with memory, disks, expansion cards, keyboard, and other components.
Memory
- Temporary (volatile) and permanent (non-volatile) storage.
- Volatile memory loses content when power is switched off.
- Memory is a temporary storage area for programs and data.
- Microprocessor gets data and instructions from memory and sends results back.
- Considered the workspace for the microprocessor.
- Memory consists of consecutive locations, each storing a byte.
- Memory locations are identified by a unique memory address.
- The microprocessor uses memory to store Instructions and Data.
- Memory Bus connects all memory locations using shared electrical connections.
Memory Bus
- A set of electrical connections that connects memory and the microprocessor.
- Three types of buses:
- Address Bus: CPU indicates the memory location.
- Control Bus: Sends control information like read/write requests.
- Data Bus: For actual data transmission (bidirectional).
- Writing data to memory:
- Address placed on Address Bus.
- Data placed on Data Bus.
- CPU activates Write Signal (WR) in control bus.
- Reading data from memory:
- Address placed on Address Bus.
- CPU activates Read Signal (RD) on the control bus.
- Data is fetched from the Data Bus.
Types of Memory
- Read Only Memory – ROM: Read-only memories that are pre-wired during fabrication, used to store initial start-up programs of the computer, not economical to produce in small quantities.
- Programmable Read Only Memory – PROM: Can be written once after manufacturing, programming requires special equipment, more cost-effective for small quantities.
- UV Erasable PROM – UVEPROM: Contents can be written multiple times, requires exposure to Ultra Violet (UV) light to erase contents, erasing/programming require special equipment.
- Electrical Erasable PROM – EEPROM: Content can be erased by applying high voltage, programming requires EEPROM to be removed from application circuit.
- Flash ROM: Special type of EEPROM that can be erased/programmed while in application, contents remain unchanged after power failure, used in PCs, networking devices, memory pens.
- Read Write Memory – RWM: Traditionally known as RAM, contents erased when power is disconnected, two types: Static RAM (SRAM) and Dynamic RAM (DRAM).
Static RAM – SRAM
- Built using transistors.
- Each transistor represents a bit.
- Properties of transistors:
- High speed switching
- Will retain state forever (if power is supplied)
- More reliable
- Low density
- High power consumption
- High cost (per bit)
Dynamic RAM – DRAM
- DRAMs are developed using capacitors.
- Each capacitor represents a bit.
- Capacitors are cheap but they must be re-charged from time to time (certain DRAMs are needed to be refreshed at 15s intervals).
- Properties of capacitors:
- Slower performance
- Automatically discharges, needs refreshing
- Less reliable
- High density
- Low power consumption
- Low cost (per bit)
Memory Modules
- Combine memory ICs, presented to the motherboard as a single memory block.
- Types: SIM (Single Inline Memory Module), DIMM (Dual Inline Memory Module), and DDR-DIMM (Double Data Rate-DIMM).
Memory Characteristics
- Important characteristics:
- Access speed – time taken for the CPU to read from or write to memory
- Cycle time – time taken to complete one memory access operation
- Packing Density - memory capacity per unit area
- Power consumption
- Cost - cost per unit of memory capacity
- Memory controller manages communication between different memory types and microprocessor.
Memory Hierarchy
- Memory organized to address speed differences.
- Objective: a memory system with sufficient capacity that is cheap and fast.
- Uses fast but expensive memory types (limited capacity) and slow but cheap memory types (larger capacity).
- Frequently used items are stored in faster devices.
Traditional Memory Hierarchy
- Memory access speed gap between secondary storage and registers filled by main memory.
- As one goes up the hierarchy, access speed and cost increase, while capacity decreases.
- Capacities: registers in bits, main memory in megabytes, secondary storage in gigabytes or terabytes.
Modern Memory Hierarchy
- Includes Cache memory between registers and main memory.
- Small amount of memory, faster than the main memory but slower than the registers.
- Capacities given in Kilobytes.
- Cache stores frequently used instructions and data.
- Cache needs to swap data and instructions with other levels in the hierarchy because of limited capacity.
- Cache memory is split into several levels of caches (e.g., Level1, Level2 and Level3 in Intel Core i7 processors).
Central Processing Unit
- Also called the Microprocessor; the brain or engine of the computer.
- Performs arithmetic, logic operations, and controls other components.
- The most expensive component.
- Evolution through several generations, starting in the 1970s.
Components of a CPU
- Arithmetic and Logic Unit (ALU)
- Control unit
- Registers
Arithmetic and Logic Unit – ALU
- The data processing unit, performing arithmetic and logical operations.
Control Unit
- Controls the operation of the CPU and rest of the machine.
Registers
- Memory inside the CPU that holds data for processing and control.
- Registers connected to ALU and control unit.
- Types of registers:
- Program Counter (PC)
- Instruction Register (IR)
- Accumulator (A)
- Flag register (F)
- General Purpose Registers (GPR)
Program Counter – PC
- Keeps track of the memory address of the next instruction to be executed.
- Points to the next instruction to be executed.
- After fetching an instruction, the PC is updated automatically.
Instruction Register – IR
- Stores the fetched instruction for execution.
- Located close to the control unit for decoding.
Accumulator – A
- Stores results of arithmetic and logical operations.
- Connected directly to the output of the ALU.
Flag Register – F
- Stores the status of the last operation carried out by the ALU.
- Indicates states like overflow, division by zero, zero, positive or negative result.
General Purpose Registers – GPRs
- Used to store intermediate results of the ALU operations.
- Programmers use them to run complex programs.
Execution of a Program
- Assembly language example:
- 100: Load A,10 ; A 10
- 101: Load B,15 ; B 15
- 102: Add A,B ; A A+B
- 103: STORE A,[20] ; [20] A
- Assembly language statement sections:
- Identifier
- Operation
- Operand(s)
- Comment
- Memory division: data memory and program memory.
- Each instruction executes in a separate instruction cycle with fetch and execution stages.
- Approaches to improve CPU performance when speed of transistors is saturated:
- Instruction pre-fetching.
- Instruction Pipelining.
- Hyper Threading (HT).
- Multicore processors.
Instruction Pre-fetching
- Overlaps fetch and execution cycles.
- The fetch cycle of the 2nd instruction starts while the 1st instruction is in the execution cycle.
- Reduces total execution time.
Instruction Pipelining
- Divides the instruction cycle into sub-operations, with a separate CPU segment for each.
- Multiple instructions can be in the instruction cycle simultaneously.
- Increases throughput of the microprocessor.
Hyper Threading
- Allows two different resources of the CPU to be used at the same time.
- One thread uses the integer unit, while another uses the floating-point unit.
- The operating system recognizes the computer as having two CPUs.
- Requirements: CPU, chipset, BIOS, and OS must support HT.
Multicore processors
- Combines multiple independent microprocessors and caches on a single chip.
- Performance gain is higher than HT.
- Improved by:
- Using a high-performance CPU.
- Having an effective memory hierarchy.
- Using buses with different speeds.
- Using CPU support chips.
- Effective memory hierarchy and cache memory improve CPU performance.
- Different speeds for internal operations and memory communication using a high-speed bus for internal communication while a slower bus is used to communicate with main memory.
CPU Support Chips
- Carry out tasks on behalf of the CPU.
- Improve overall system performance.
- Examples:
- Direct Memory Access (DMA) controllers.
- Interrupt Controllers.
- Real-Time Clock (RTC).
- Other devices.
- Disk controllers.
- Communication controllers.
- Display controllers.
Direct Memory Access (DMA) Controller
- Bypassing the CPU when transferring data between memory and Input/Output (IO) devices.
- The DMA controller resides between the CPU and memory, informs the DMA controller when the CPU needs something to be in memory.
Disk Controllers
- Examples are Floppy Disk Controller (FDC) and ATA Controller (ATAC) for hard disks.
- Transfers the content of the buffer directly from memory to the disk sector.
Real Time Clocks - RTC
- Keeps track of time of the day, and is usually backed-up by an extra powersource.
- Used to store some of the configuration information such as CMOS9 setup memory.
Display Controllers
- Generates the images and text that you see on the displaying device on behalf of the CPU.
- Video controllers are used display the image that you see on monitor.
- Display commands are given by the CPU, and they are carried out by the display controller.
- Display controller generates the actual image in its memory; called the Refresh Buffer, with 1’s and 0’s.
- Video standards:
- Video cards are classified based on their video processor and video memory.
Secondary Storage
- Permanent and high-capacity storage solution.
- Cost per a Megabyte of secondary storage is lower than the main memory.
- Different secondary storage devices such as hard disks, floppy disks, CD-ROMs, DVD-ROMs and ZIP disks are used in personal computer systems.
- Classes: Magnetic Storage and Optical storage.
Hard Disk Drive
- The main secondary storage device used in a computer.
- Contains a rigid disk-shaped platter, coated with magnetic medium.
- Read/write heads are used to read and write data to and from each platter.
- Categorized based on the capacity, controller, and platter rotation speed.
- Controllers such as IDE, SCSI and SATA.
- Hard disks are categorized based on their capacity, controller, and platter rotation speed.
- Track: A single ring of data on one side of a platter
- Sectors: A smaller division of data in a track.
- Cylinder: A set of tracks on a disk that are on each side of all the platters in a stack and are at the same distance from the centre of the disk.
Floppy Disk Drive
- A removable disk which has a flexible magnetic medium that is enclosed in a semi rigid or rigid plastic case.
- Early floppies were having a diameter of 8” and its capacity was limited to 300KB.
- We use the 3½” High Density (HD) floppy disk which comes in a rigid plastic case and having a capacity of 1.44MB.
Optical Storage
- Optical storage devices make use of light instead of magnetism.
- Examples of optical storage;
- CD-ROM (Compact Disk – Read Only Memory)
- CD-R (CD – Recordable)
- CD-RW (CD-Rewritable)
- DVD (Digital Versatile/Video Disk)
- DVD-R, DVD-RW, etc.
Flash Storage
- A widely used non-volatile computer storage medium, built using EEPROMs.
- Categorized into two main divisions as NAND Flash and NOR Flash based on their operational characteristics.
- Stores information in an array of memory cells made from floating gate transistors.
- Due to its high capacity and high transfer speeds compared to other forms of portable media, flash storage devices have become a popular portable storage option.
Introduction to Computer Software
- Software cannot be seen or touched but is essential for computer usability.
- Programs allow users to control computer activities; categorized as system software and application software.
System Software
- Manages computer hardware.
- Maintains computer efficiency.
- Facilitates tasks quickly.
- Aids software creation.
- May not target end-users.
- Types: operating systems, utility software, software development tools.
- Operating System (OS): Manages hardware and provides a user-friendly interface.
- Microsoft Windows, Linux, and Mac OS are a few examples.
- Utility Software: Performs specific tasks related to managing computer system resources.
- Examples: disk management, network administration, data compression, text editing, and file handling.
- Software Development Tools: Create new software, including language translators, compilers, assemblers, linkers, and debuggers.
- Firmware: System software embedded in hardware devices.
- Systems programming is to produce system software and requires a greater degree of hardware awareness than programming application software.
Application Software
- Employs computer capabilities for specific tasks.
- Designed for end-users, such as word processors, database systems, and media players.
- Sits on top of systems software; requires an operating system to run.
Operating Systems (OS)
- A layer of software that acts as a virtual machine on top of the hardware.
- Provides a common interface to software programs, regardless of specific hardware.
- Offers programs a set of services not tightly coupled to specific hardware components.
- An operating system provides two major services: as an extended machine and as a resource manager.
Operating System as an Extended Machine
- Hides underlying hardware details and presents a user-friendly virtual machine.
Operating System as a Resource Manager
- Manages computer resources effectively while ensuring user satisfaction.
- Programs such as the “shell” are utility software, and they use the services of the core of the OS.
- The core of an OS is the kernel, it loads before any of the user programs and remains in the memory, responsible for managing CPU, memory, disk, processes.
History of Operating Systems
- First generation (1945-1955): programs were written by changing the wire in a plugboard.
- The second generation (1955-1965): batch systems.
- The third generation (1965-1980): multiprogramming and time-sharing systems for resource utilization.
Multi-programming: the OS keeps multiple jobs in the memory, the CPU executes one of the jobs in the memory and it continues executing the selected one, until it gets blocked due to some I/O activity.
Time-sharing: Time-sharing system allows users to interact with their programs while it is being executed. Timesharing improves resources utilization and CPU is never idle.
Currently we are in the fourth generation (1980 - present) of OSs which is referred to as personal computer OSs.
Functions of an Operating System
- Memory management: Allocating memory for programs and managing data transfer.
- Spooling print jobs: Scheduling print tasks.
- Configuring devices: Allowing easy access and setup.
- Monitoring system performance: Displaying resource utilization.
- Administering security: Supporting concurrent users with authentication and authorization.
- Managing storage media and files: Optimizing disk usage, saving/retrieving files, and setting file attributes.
Popular Operating Systems
- Microsoft OSs, UNIX, and mainframe OSs from IBM.
- Microsoft Disk Operating System (MS-DOS) later evolved into Windows while UNIX led to different variants such as Linux, Sun Solaris, FreeBSD, AIX, HP-UX and so on.
DOS objective was to keep the OS, application programs and all user files on a disk and managing them through set of commands called DOS commands.
Microsoft released their first version of GUI based OS called Windows 1.0 in 1985.
UNIX is so stable and highly reputed for its security, reliability, robustness, and performance.
Linux was developed by Linus Torvalds in 1991.
Both OSs support multitasking and multiprocessing; however, Linux seems better in terms of handling multiple users.
Programming an Embedded System
Introduction to Embedded Systems
- Embedded computers or embedded systems are in everyday items from common house-hold appliances to automobiles and airplanes.
- An embedded system is a special-purpose computer which is completely encapsulated by the device it controls.
- Their function is usually implemented by the software that run inside the embedded computer.
- Embedded systems cannot be programmed or maintained by the end user.
- When designing an embedded system there are design constraints such as limited memory, requirement of low cost, strict performance guarantee, fail-safe operations, low power consumption, reliability and guaranteed real-time behaviour.
- Most of the above constraints are not applicable to personal computers we daily use.
- These embedded systems often use simple executives (Operating System kernels) or real-time operating systems, support for real-time scheduling and no hard drives.
- Microcontroller can be used in lightweight embedded applications.
- Programming and designing circuits with microcontrollers are quite complex and not friendly for beginners. We have to write microcontroller programs separately and insert it into the device using a separate tool- a programmer.
Introduction to Arduino
- Arduino is an open-source physical computing platform based on a simple general purpose microcontroller board, and a development environment for writing software for the board.
- Arduino is a platform that can be used to develop and implement embedded systems.
- Arduino can be used to develop interactive devices, taking inputs from a variety of switches or sensors, and controlling a variety of lights, motors, and other physical outputs.
- The open-source IDE can be downloaded for free as well. So, it suits well for beginner in embedded programming.
- Unlike the PC, Arduino does not have a keyboard, or a display screen directly attached to it.
- Arduino programs are usually written and compiled in a different computer (usually a PC) and later downloaded into the Arduino board via the USB cable.
- This process is commonly referred to as “cross- compiling”).
- Learning to program the Arduino environment is easy since it contains number of tools which hide messy details of microcontroller programming and wrap it up in an easy-to-use package.
- Lakduino UNO (Arduino UNO compatible) which uses ATmega328P.
- A development board (here Lakduino UNO) is basically the microcontroller plus additional circuitry like power units, protection circuits and communication units.
Arduino Hardware
- The Arduino board is where the code you write is executed.
- Specific components are attached to the board to enable it to interact with the physical world.
- Components can be sensors, which convert some aspect of the physical world to electricity so that the board can sense it, or actuators, which get electricity from the board and convert it into something that changes the world.
- The most popular boards contain a USB connector that is used to provide power and connectivity for uploading your software onto the board.
Arduino Software
- Software programs, called sketches, are created on a computer using the Arduino integrated development environment (IDE).
- The IDE enables you to write and edit code and convert this code into instructions that Arduino hardware understands.
- The IDE also transfers those instructions to the Arduino board (a process called uploading).
Brief Introduction to Electronic Components
- Resistor: Required for components with low amount of current to prevent burning them.
- Light-Emitting Diode (LED): Converts electrical current into light. LEDs are polarized and current can pass through anode but not cathode.
- Solderless Breadboard: useful for developing circuits.
Installing the Integrated Development Environment (IDE)
- Install the Arduino development environment on your computer to develop software for Arduino.
- The Arduino software for Windows, Mac, and Linux can be downloaded from http://arduino.cc/en/Main/Software.
Developing Embedded System Applications Using Arduino
- By developing software that can manipulate hardware components and properly integrating them, you can develop various useful embedded systems.
- Basic steps you can follow:
- Determine objective of your application: how it should behave.
- Write your algorithm: Write a pseudo code or flow chart, which contains the set of instructions that describe how you are going to achieve the objective.
- Select your hardware: Select the hardware components you need and decide how it should be connected to the Arduino. Draw a schematic diagram.
- Write the sketch program: Develop the algorithm into software program using Arduino IDE.
- Connect the hardware components: Connect the hardware, circuitry, and other items to Arduino board.
- Test and debug: Your program may not give intended output first time. Identify errors and their causes. They may be in the hardware, the sketch or algorithm. Fix them.
Current Trends in Computing
Cloud Computing
- Cloud computing is a subscription-based service which provides a pool of configurable computer resources: storage, networks, servers, applications, and services, over the internet.
-
Characteristics of cloud computing:
- On demand service
- Broad network access
- Rapid Elasticity
- Pool of Computing Resources
- Measured Service
While cloud computing can bring many advantages to a business, it also can bring some disadvantages.
Augmented Reality
- an be applicable for many fields including architecture, art, commerce, education,gaming, medical, etc.
Augmented Reality (AR) augments / supplements user’s physical, real-world environment with computer generated sensory inputs such as video, sound, graphics, or location. E.g.: GPS data.
Ubiquitous Computing
- is the concept of enabling computing everywhere at any time.
- Ubiquitous computing integrates computers in any device from clothing to tools to vehicles to homes to human body.
Characteristics of ubiquitous devices are:
- Very tiny in physical size
- Being integrated into any shape of device and displacing services of desktop systems
- Augment the original use-value of devices they are embedded
- Communicating through increasing interconnected networks
Future Trends and Challenges of Computers
Challenges in Embedded Computing
- Challenges with embedded systems is delivering predictably good performance.
- Embedded systems have real-time requirements; if computations are not completed before a deadline, the system will fail, possibly injuring the user.
Unfortunately, many of the performance enhancing features which make personal computers so fast also make it difficult to predict their performance accurately.
GPU-Accelerated Computing
- GPU-accelerated computing is the use of a graphics processing unit (GPU) together with a CPU to accelerate scientific, engineering, and enterprise applications.
- GPU-accelerated computing offers unprecedented application performance by offloading compute-intensive portions of the application to the GPU, while the remainder of the code still runs on the CPU.
A CPU consists of a few cores optimized for sequential serial processing while a GPU consists of thousands of smaller, more efficient cores designed for handling multiple tasks simultaneously.
Reconfigurable Computing
- Reconfigurable computing is a computer architecture combining some of the flexibility of software with the high performance of hardware by processing with very flexible high speed computing fabrics like field- programmable gate arrays (FPGAs).
The principal difference when compared to using ordinary microprocessors is the ability to make substantial changes to the data path itself in addition to the control flow
Quantum Computing
- A quantum computer (also known as a quantum supercomputer) is a computational device that makes direct use of quantum-mechanical phenomena, such as superposition and entanglement, to perform operations on data.
- Quantum computers are different from digital computers based on transistors.
- There are new cryptographic standards resilient against quantum attacks, ensuring the security of confidential electronic information in the quantum era.
- Large-scale quantum computers will be able to solve certain problems much more quickly than any classical computer using the best currently known algorithms.