jump to navigation

Instruções de um processador Fevereiro 20, 2009

Posted by daniellapa in microprocessadores.
add a comment

A Execução de programas pode ser dividida em várias camadas que são:

  • High Level – é o codigo programado exemplo: C e C++;
  • Assembly – ser de intermediário entre o código e a linguagem máquina;
    • Exemplos de programas em c para codigo Assembly:
      • Exemplo 1:
      • Em c :
#include<stdio.h>
int main(){
	printf("Ola");
	return 0;
}
      • Através do comando cc -S nomedoficheiro.c e o código c e convertido para assembly;
      • Em Assembly:
	.file	"1.c"
	.section	.rodata
.LC0:
	.string	"Ola"
	.text
.globl main
	.type	main, @function
main:
	leal	4(%esp), %ecx
	andl	$-16, %esp
	pushl	-4(%ecx)
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ecx
	subl	$4, %esp
	movl	$.LC0, (%esp)
	call	printf
	movl	$0, %eax
	addl	$4, %esp
	popl	%ecx
	popl	%econvertbp
	leal	-4(%ecx), %esp
	ret
	.size	main, .-main
      • Exemplo 2:
#include <stdio.h>
void main(){
	int i=0;
	while(i++<10)
		printf("Ola");
}
      • Em Assembly:
	.file	"2.c"
	.section	.rodata
.LC0:
	.string	"Ola"
	.text
.globl main
	.type	main, @function
main:
	leal	4(%esp), %ecx
	andl	$-16, %esp
	pushl	-4(%ecx)
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ecx
	subl	$20, %esp
	movl	$0, -8(%ebp)
	jmp	.L2
.L3:
	movl	$.LC0, (%esp)
	call	printf
.L2:
	cmpl	$9, -8(%ebp)
	setle	%al
	addl	$1, -8(%ebp)
	testb	%al, %al
	jne	.L3
	addl	$20, %esp
	popl	%ecx
	popl	%ebp
	leal	-4(%ecx), %esp
	ret
	.size	main, .-main
  • Exemplo 3:
#include<stdio.h>
void main(){
	int i=0, j;
	scanf("%d",&j);
	while(i++<j)
		if(i%2)
			printf("%d",i);
}
      • Em Assembly:
		.file	"3.c"
	.section	.rodata
.LC0:
	.string	"%d"
	.text
.globl main
	.type	main, @function
main:
	leal	4(%esp), %ecx
	andl	$-16, %esp
	pushl	-4(%ecx)
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ecx
	subl	$36, %esp
	movl	$0, -8(%ebp)
	leal	-12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	$.LC0, (%esp)
	call	scanf
	jmp	.L2
.L3:
	movl	-8(%ebp), %eax
	andl	$1, %eax
	testb	%al, %al
	je	.L2
	movl	-8(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	$.LC0, (%esp)
	call	printf
.L2:
	movl	-12(%ebp), %eax
	cmpl	%eax, -8(%ebp)
	setl	%al
	addl	$1, -8(%ebp)
	testb	%al, %al
	jne	.L3
	addl	$36, %esp
	popl	%ecx
	popl	%ebp
	leal	-4(%ecx), %esp
	ret
	.size	main, .-main
  • Das linhas 23 a 43 corresponde á condição if , das linhas 23 a 30 é a condição se for verdadeira, das linhas 32 a 43 é a condição de for falsa.
  • Machine – é a linguagem em que o computador funciona;
  • Register Tranfer – executa instruções no CPU;
  • Gate -
  • Circuit -

A memória retem corrente para guardar o valor 1 e 0.

Existem varios tipos de registos entre os quais:

  • Contador do programa -
  • Registo de endereçamento da memória – serve como meio de comunicação entre o processador e o barramento.
  • Registos de dados – reserva-nos uma área de armazenamento temporário de todos os dados que passam do CPU para a memória.
  • Registos de instruções – guarda o código da operação da instrução no ciclo da máquina.
  • Palavra de estado do programa – guarda informação sobre o programa que esta a executar e esta encarregue também de tratar das interrupções.

A sequência de passos de execução de instruções num CPU são:

  • Instruções aritméticas e lógicas – esta encarregue de realizar as operações binárias num resultado único.
  • Instruções de movimento de dados – efectua uma cópia dos dados de umalocalização para a outra.
    • De um modo geral os dados podem mover-se de:
      • Registo a registo
      • Registo a memória.
      • Memória a registo.
      • Memória a memória.
  • Operações de dados em blocos
  • Instruções de controlo do programa
  • Instruções de Entrada – Saída

Arquitectura interna de um microprocessador Fevereiro 14, 2009

Posted by daniellapa in hardware, microprocessadores.
1 comment so far

Barramento Interno

Os barramentos internos ou vias internas interligam os diversos componentes do microprocessador, conduzindo dados e endereços.

Unidade Lógica e Aritmética

Unidade Lógica e Aritmética – ALU: implementa as operações lógicas (NOT,AND, OR, XOR) e aritméticas (geralmente adição, subtração, multiplicação, divisão, dependendo do microprocessador). Em geral, o resultado de uma operação é armazenado no acumulador.

Registos

Registos: corresponde a uma memória local rápida do microprocessador, destinada ao armazenamento de dados e instruções.

Unidade de controlo

Unidade de Controle – UC: Todos as funções de um microprocessador são controladas pela UC. Ela retira cada instrução da memória (operação de busca ou “fetch”), interpretando-a (operação chamada de decodificação), fornecendo os sinais de controle necessários à sua execução.

Barramento de Dados

Barramento de Dados:  é um barramento bidirecional, que permite a movimentação de dados entre os diversos componentes num sistema microprocessado: microprocessador, memória e dispositivos de entrada e saída de dados.  Os sinais que controlam o tráfego de informações são fornecidos pelo barramento de controle. A largura do barramento de dados depende do processador, podendo ser de 8, 16, 32 ou 64 bits, e corresponde à quantidade de bits que podem ser transferidas em paralelo.

Barramento de Endereços

Barramento de Endereços: é um barramento unidirecional, que permite a seleção de uma posição de memória ou dispositivo de entrada e saída por parte do processador. O número de bits presentes no barramento de endereços determina o espaço de endereçamento de memória e/ou entrada e saída,

Arquitectura RISC

Reduced Instruction Set Computer ou Computador com um Conjunto Reduzido de Instruções (RISC), é uma linha de arquitetura de computadores que favorece um conjunto simples e pequeno de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas. A maioria dos microprocessadores modernos são RISCs, por exemplo DEC Alpha, SPARC, MIPS, e PowerPC. O tipo de microprocessador mais largamente usado em desktops, o x86, é mais CISC do que RISC, embora chips mais novos traduzam instruções x86 baseadas em arquitetura CISC em formas baseadas em arquitetura RISC mais simples, utilizando prioridade de execução.

Arquitectura CISC

CISC (sigla para Complex Instruction Set Computer, ou, em uma tradução literal, “Computador com um Conjunto Complexo de Instruções”): é um uma linha de arquitectura de processadores capaz de executar centenas de instruções complexas diferentes sendo, assim, extremamente versátil.