ISC_3

Propaganda
Introdução aos
Sistemas de Computação (3)
Execução de programas
num computador (1)
Níveis de abstração:
–  nível das linguagens HLL (High Level Languages): as
linguagens convencionais de programação (puro texto)
Estrutura do tema ISC
1. 
2. 
3. 
4. 
5. 
6. 
Representação de informação num computador
Organização e estrutura interna dum computador
Execução de programas num computador
O processador e a memória num computador
Da comunicação de dados às redes
Evolução da tecnologia e da eficiência
AJProença, Sistemas de Computação, UMinho, 2015/16
1
» imperativas e OO (Basic, Fortran, C/C++, Java, ...)
» funcionais (Lisp, Haskell, ...)
» lógicas (Prolog, ...)
–  nível da linguagem assembly (de “montagem”): linguagem
intermédia (comandos do CPU em formato texto)
–  nível da linguagem máquina: a linguagem de comandos,
específica p/ cada CPU ou família de CPU’s (em binário puro)
» arquiteturas CISC (Complex Instruction Set Computers)
» arquiteturas RISC (Reduced Instruction Set Computers)
AJProença, Sistemas de Computação, UMinho, 2015/16
Execução de programas
num computador (2)
•  Código C
int x = x+y;
Idêntico à expressão
x = x + y
Execução de programas
num computador (3)
Mecanismos de conversão (para comandos do CPU):
–  compilador
–  somar 2 inteiros (c/ sinal)
addl 8(%ebp),%eax
2
•  Assembly (da GNU p/ IA-32)
–  somar 2 inteiros de 4 bytes
•  operandos long em GCC
•  a mesma instrução, c/ ou s/ sinal
•  traduz um programa de um nível de abstração para outro inferior
(converte um ficheiro de texto noutro de texto);
por ex., de C para assembly
•  normalmente inclui mais que um passo de conversão, até chegar
à linguagem máquina
–  assembler (“montador”)
–  operandos:
•  “monta” os comandos / instruções em texto, para binário (object),
de acordo com as regras do fabricante do CPU
•  x: em registo %eax
•  y: na memória M[%ebp+8]
–  interpretador
0x401046:
03 45 08
AJProença, Sistemas de Computação, UMinho, 2015/16
•  Código object em IA-32
•  analisa, uma a uma, as instruções de um programa em HLL, e:
–  instrução com 3 bytes
–  na memória a partir do endereço
0x401046
3
»  gera código em linguagem máquina para essa instrução, e
»  executa esse código (nota: não guarda o código gerado)
AJProença, Sistemas de Computação, UMinho, 2015/16
4
Execução de programas
num computador (4)
De um programa em HLL até à sua execução:
Execução de instruções
(em linguagem máquina) num CPU
Ciclo de execução de instruções:
Programa em C
–  Leitura de uma instrução da memória
... e incremento do IP
–  Descodificação da instrução
–  Execução da operação
Compilador
Programa em assembly
Assembler
Módulo em ling máquina (object)
•  cálculo da localização do(s) operando(s),
e ir buscá-lo(s), se necessário
•  execução da ação especificada
•  guardar resultado, se necessário
Função de bib em ling máquina (object)
Linker
Modelo de computação de von Neumann (1945)
Programa em ling máquina (executable)
Análise de um exemplo: movl Mem_Loc,%eax
Loader
AJProença, Sistemas de Computação, UMinho, 2015/16
Memória
5
AJProença, Sistemas de Computação, UMinho, 2015/16
6
Modelo de computação de
von Neumann, 1945/46 (1)
Modelo de computação de
von Neumann, 1945/46 (2)
ENIAC (1ª geração, 1945)
– objetivo: cálculo tabelas de artilharia
(mas 1º teste foi p/ bomba H)
– máquina decimal (base 10)
Input
Output
Equip.
– 17.468 válvulas, 27 toneladas
– programação: manual, alterando as
conexões (cablagem)
CPU
ALU
Main
Memory
Acc
Program
Control Unit
Von Neumann introduz conceito de
stored-program :
–  dados e instruções em binário, e
armazenados numa memória
–  memória acedida pelo endereço da
informação
–  execução de instruções de modo
sequencial (daí o Program Counter,
PC), interpretadas pela unid. controlo
–  constrói novo computador, IAS
AJProença, Sistemas de Computação, UMinho, 2015/16
Arithmetic
and
Logic Unit
Estrutura básica do IAS
(Princeton Institute for Advanced Studies)
MQ
Arith & Logic Circ
Instruct
MBR
I/O
Eq.
IBR
PC
IR
Control
Circ
Main
& Data Mem
MAR
Estrutura expandida do IAS
Program Control Unit
7
AJProença, Sistemas de Computação, UMinho, 2015/16
Address
8
Relato do primeiro bug
num computador
Modelo de arquitetura de
um computador elementar
IBM, Mark II
(09-Set-1947):
- entrada que os
operadores de
serviço fizeram
no logbook...
CPU / Núcleo!
dum processador!
banco de registos!
ALU!
memory channel!
interface mem - I/O!
Memória!
primária!
Chipset!
I/O bus!
controlador!
USB!
interface!
PCI-Express!
controlador!
arquivo!
Expansão para
outros
componentes !
rato! teclado! gráfica/rede/...!
SSD/HDD!
AJProença, Sistemas de Computação, UMinho, 2015/16
9
AJProença, Sistemas de Computação, UMinho, 2015/16
Exemplo de execução de uma
instrução em linguagem máquina (1)
10
Exemplo de execução de uma
instrução em linguagem máquina (2)
Ex.: movl Mem_Loc,%eax
1. Leitura da instrução na memória (1)
Ex.: movl Mem_Loc,%eax
1. Leitura da instrução na memória (2)
CPU!
CPU!
banco de registos"
ALU"
IP
banco de registos"
Memória P
Memória P
ALU"
0
(IP)
“movl ...”
"
mem interface"
IP
“movl ...”
IP
mem interface"
RD
var x
Mem_Loc
O CPU coloca no address bus o valor em IP (endereço
p/ próxima instrução), e ativa o sinal de controlo RD !
AJProença, Sistemas de Computação, UMinho, 2015/16
0
“movl ...”
var x
Mem_Loc
A memória vai buscar a instrução ao endereço definido por IP e coloca-a no data bus p/ ser lida pelo CPU !
11
AJProença, Sistemas de Computação, UMinho, 2015/16
12
Exemplo de execução de uma
instrução em linguagem máquina (3)
Exemplo de execução de uma
instrução em linguagem máquina (4)
Ex.: movl Mem_Loc,%eax
1. Leitura da instrução na memória (3)
Ex.: movl Mem_Loc,%eax
2. Descodificação da instrução
... e incremento do IP
A unidade de controlo do CPU descodifica a instrução…
CPU!
banco de registos"
inc
IP
IR “movl ...”
Memória P
ALU"
… e prepara-se para executar a operação:
CPU!
“movl ...”
move long
banco de registos"
0
copiar valor com 32 bits
da memória, em Mem_Loc
para o registo %eax
ALU"
IP
IR “movl ...”
mem interface"
var x
Mem_Loc
10001011 10000101 00001000 00000001
mem interface"
O CPU lê a instrução do data bus, coloca-a no
registo de instrução (IR) e incrementa o IP!
AJProença, Sistemas de Computação, UMinho, 2015/16
13
AJProença, Sistemas de Computação, UMinho, 2015/16
Exemplo de execução de uma
instrução em linguagem máquina (5)
14
Exemplo de execução de uma
instrução em linguagem máquina (6)
Ex.: movl Mem_Loc,%eax
3. Execução da operação (1)
Ex.: movl Mem_Loc,%eax
3. Execução da operação (2)
CPU!
CPU!
banco de registos"
ALU"
IR “movl ...”
banco de registos"
Memória P
IR “movl ...”
Mem_Loc
“movl ...”
"
mem interface"
RD
var x
0
x
IP
“movl ...”
Mem_Loc
Após calcular o valor de Mem_Loc o CPU
coloca-o no address bus e ativa o sinal de RD
AJProença, Sistemas de Computação, UMinho, 2015/16
Memória P
ALU"
0
"
mem interface"
var x
IP
Mem_Loc
A memória vai buscar o valor de var x ao
endereço Mem_Loc e coloca-o no data bus
15
AJProença, Sistemas de Computação, UMinho, 2015/16
16
Exemplo de execução de uma
instrução em linguagem máquina (7)
Intel Ivy Bridge: wafer, die, chip...
Ex.: movl Mem_Loc,%eax
3. Execução da operação (3)
CPU!
banco de registos"
%eax var x
Memória P
ALU"
A batata
0
IR “movl ...”
“movl ...”
"
mem interface"
var x
IP
A bolacha
Mem_Loc
O CPU lê o valor de var x do data bus e
coloca-o no registo %eax
AJProença, Sistemas de Computação, UMinho, 2015/16
As
estampas
17
Intel Many Integrated Core (MIC):
the Xeon Phi with 60 cores
AJProença, Sistemas de Computação, UMinho, 2015/16
19
AJProença, Sistemas de Computação, UMinho, 2015/16
18
Download