The modern computing devices are characterized by a high level of specialization according to the task they have to accomplish. However, some key concepts related to their hardware and software architectures, and their interactions, exist and their knowledge is mandatory to choose and exploit the devices to integrate systems that satisfy the computing requirements of the theoretical and experimental physics.

Those concepts will be illustrated with C-based code examples extracted from scientific applications, using the open RISC-V architecture as a reference for their execution. 

The student will familiarise with the fundamental elements of the hardware architecture (control, data-path, instruction parallelism, hierarchy of memories) and software (compiler, operating system) and will understand the impact they have on the application efficiency; eventually some basic notions of parallel programming will be introduced.

The hardware description language VHDL will be introduced and the basic knowledge of the tools for the design of today’s hardware computing systems.

Course Program

  • Introduction to computers: hardware organization, firmware and software, performance definition and measurement.
  • Language of computers: high level, assembly and machine languages, examples.
  • Computer arithmetic: arithmetic and logical operations on integers and floating point numbers.
  • Fundamentals of logic design: gates, truth tables, boolean logic equations; combinational and sequential circuits, finite-State machines.
  • Introduction to hardware description languages: the VHDL language.
  • Processor Architecture: functional units, registers, control unit, microprogramming; processing unit; pipelining, exceptions handling.
  • Memory hierarchy: cache memory, virtual memory. 
  • Storage and I/O.
  • Overview of multicore systems, multiprocessors and clusters: parallel processing, classification, examples of many-core computing architectures (GPU) and multiprocessor systems networks