Baixe o app para aproveitar ainda mais
Prévia do material em texto
OC notas de aula.txt ORG COMP - A1 ________________________________________________________________ LV: MONTEIRO, Mario A. Introdução a Organização de Computadores. 5ª Edição, Editora LTC. WEBER, Raul Fernando. Fundamentos de Arquitetura de Computadores. 3ª Edição, Série Livros Didáticos nº8, Editora Artmed STALLINGS, Willian. Arquitetura e Organização de Computadores. 5ª Edição, Editora Prentice Hall. POLLI, Marco. Organização de Computadores. Rio de Janeiro: SESES, 2014. 128 p. MONTEIRO, Mario A. Introdução a Organização de Computadores. Rio de Janeiro: LTC, 2007. p. 708. RIBEIRO, Carlos; DELGADO, José. Arquitetura de computadores. Rio de Janeiro: LTC, 2009. NA: Fundamentos do funcionamento de um computador Computador: É uma máquina capaz de sistematicamente tratar e fornecer os resultados derivados do processamento dos dados com um ou mais objetivos. Podemos dizer que a sua função é transformar dados em informações. Processamentos de dados > hardware > processador / memória / dispositivos de entrada e saída (E/S) / barramento > software > fundamentos da programação / linguagem de programação / sistema operacional Processador (UCP ou CPU) > funções básicas: ler, interpretar instruções, realizar operações matemáticas Memória > sistema de armazenamento e recuperação de dados > dividida em partes endereçáveis, onde as informações estão armazenadas e podem ser recuperadas E/S > permite a comunicação entre o sistema de computação (computador) e o meio exterior (usuário) Barramento > conjunto de fios que conduz o sinal elétrico entre os componentes (linhas impressas na placa) > é constituído de uma parte para endereço, uma para dados e outra para controle Fundamentos da programação > processamento de dados requer a execução de uma série de etapas, que podem ser realizadas por um computador. Estas etapas ordenadas são denominadas algoritmos. Cada passo do algoritmo será correspondente a uma instrução e o conjunto de instruções utilizadas irá constituir um programa > O computador possui uma linguagem própria (linguagem binária) para receber ordens. Todas as informações e todos os dados coletados são representados por sequências de 0 e 1, que são conhecidos como bits. O termo bit é formado pelas duas primeiras letras da palavra BInary e da última letra da palavra digiT. Linguagem de programação > O código escrito (editado) em uma linguagem de programação (ou alto nível) é convertido em linguagem binária para que possa ser executado. Essa conversão se dá através de compiladores e ligadores (link editor ou linker) [Função dos compiladores] > Converter um programa escrito em uma linguagem de alto nível em código binário. O arquivo resultante é chamado código objeto // Função dos ligadores > Agregar módulos em um único programa, inserindo informações de relocação de endereços e referência entre os módulos. O arquivo resultante é chamado código executável Página 1 OC notas de aula.txt Sistema operacional > Conjunto de programas que permite a interação entre o usuário e o computador > Fornece um ambiente onde o usuário possa executar programas > ver figura oc1 > funções básicas: interface com usuário¹, gerencia de recursos², proteção // funções avançadas: segurança de acesso, auditoria, gerência de usuários ¹ acessar o sistema - segurança de acesso / criar e gerir diretórios, arquivos e programas / executar programas / acessar dispositivos E/S / acessar conteúdos de arquivos ² tempo de processador (CPU) / espaço em memória / espaço para armazenamento de arquivos / acessar dispositivos E/S / programas utilitários e aplicativos / bibliotecas de funções (DLLs) / rotinas de serviço / programas de interface com dispositivos (drivers) PERGUNTAS: Organização de computadores > aula 01 > sistema operacional > funções avançadas: qual a diferença entre "espaço em memória" e "espaço para armazenamento de arquivos"? Mesma coisa A atividade estruturada disponível logo no início da disciplina Organização de computadores volta a ser abordada em aulas posteriores? VA: Sistemas embarcados > Um sistema embarcado (ou sistema embutido) é um sistema micro processado no qual o computador é completamente encapsulado ou dedicado especificamente ao dispositivo ou sistema que ele controla * VA 35'10" > o termo usuário é usado para se referir aos programadores, sistemas e aplicativos (usuários do sistema operacional) Compilador > converte o programa fonte (escrito em linguagem de alto nível) em código binário, resultando no chamado código objeto Sistema operacional > gerencia recursos de hardware e software, permitindo ao usuário se comunicar com o computador TC: 88% ORG COMP - A2 ________________________________________________________________ NA: Forma de representação das informações em computador > as unidades de armazenamento > Conceitos fundamentais para o cálculo de espaço de armazenamento e para o entendimento dos limites impostos por uma determinada arquitetura Unidades de informação são denominadas: Bit, Byte, Word e Múltiplos Bit: é a unidade para composição de uma informação > bits 0 e 1 são os algarismos na numeração binária > com estes dois algarismos, todos os demais números podem ser representados Byte é a unidade mínima de informação composta por 8 bits > ex. 00110101 [8 bits] Word é a unidade de armazenamento e recuperação de uma informação > ex. 00110101 00110101 [16 bits - 2 bytes] Múltiplos são representados pela potência de 2 > ex. 1KB = 2¹° bytes 1MB = 2²° bytes 1GB = 2³° bytes A partir do byte a contagem é feita em relação a 1024, ou seja, 1024 bytes, correspondem a 1Kb (kilobyte). E agora segue assim por diante: Página 2 OC notas de aula.txt 1 Byte = 8 bits 1 kilobyte (kB ou Kbytes) = 1024 bytes 1 megabyte (MB ou Mbytes) = 1024 kilobytes 1 gigabyte (GB ou Gbytes) = 1024 megabytes 1 terabyte (TB ou Tbytes) = 1024 gigabytes 1 petabyte (PB ou Pbytes) = 1024 terabytes 1 exabyte (EB ou Ebytes) = 1024 petabytes 1 zettabyte (ou Zbytes) = 1024 exabytes 1 yottabyte (ou Ybytes) = 1024 zettabytes. **Existe muita diferença entre o uso de caixa alta e caixa baixa nas unidades de medidas > de acordo com Sistema Internacional de Unidades há uma tabela Prefixo do SI, que traz os múltiplos e seus devidos fatores > p.e. o k (minúsculo) é o símbolo de quilo, M (maiúsculo) é o símbolo de mega, G (maiúsculo) é o símbolo de giga, e m (minúsculo) é o símbolo de mili > Esses múltiplos nada mais são do que números -> Quando eles vão na frente de alguma coisa, essa coisa é multiplicada por esse número >> temos o símbolo de byte que é B (maiúsculo) e o símbolo de bit que é b (minúsculo) Sistema de numeração decimal > de base 10 > é o mais conhecido -> notação posicional [depende da posição do algarismo] Sistema binário > base 2 [esta representação pode ser muito longa] Sistema hexadecimal ou base 16 [costuma-se representar os números] Combinações permitidas com n dígitos em uma base B > B elevada a n potencial > ex. 3 dígitos na base 10 = 10³ = 1000 números distintos (000 a 999) / 3 dígitos na base 2 = 2³ = 8 números distintos (000 a 111) Exemplos de conversões >> (101)b = 1*2² + 0*2¹ + 1*2° 4 + 0 + 1 = (5)d (A5)h = A*16¹ + 5*16° 10*16¹ + 5*1 160 + 5 = (165)d (39)d = (27)h >> (27)h = 2*16¹ + 7*16° = 32 + 7 = (39)d (45)d = ?'2' >> 45 |2_ 1 22 |2_ 0 11 |2_ 1 5 |2_ 1 2 |2_ 0 1 |2_ 1** 0 **começo da representação 45'10' = (101101)b 101101 = 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 32 + 0 + 8 + 4 + 0 + 1 Nota importante* qualquer número (base) elevada a 0 é sempre 1 VA: BIT > 0 e 1 > cadaposição pode ter 2 valores > 1 bit: pode ser 0 ou 1 > duas possibilidades -> 2 = 2¹ > 2 bits: 00 01 10 11 > quatro possibilidades -> 4 = 2² Página 3 OC notas de aula.txt > n bits: 00n 01n ... > 2^n possibilidades *nota: decorar as potências de 2 facilita os cálculos De quantos bits eu preciso para representar um número na base dois? Devemos encontrar a potência de dois mais próxima que comporte o número. > 120 -> são necessários 7 bits: 2^7 = 128 combinações (representações 0 até 127) > 250 -> são necessários 8 bits: 2^8 = 256 combinações (representações 0 até 255) múltiplos do Byte - KB (kilobyte) : 2^10 : 1024 : 1024 bytes MB (megabyte) : 2^20 : 1.048.576 : 1024 kilobytes GB (gigabyte) : 2^30 : 1.073.741.824 : 1024 megabytes TB (terabyte) : 2^40 : 1.099.511.627.776 : 1024 gigabytes PB (petabyte) : 2^50 : 1.125.899.906.843.624 : 1024 terabytes Quantos arquivos de 3MB cabem em 90GB? 1KB = 2^10 bytes 90GB = 90 x 2^30 bytes 1KB = 2^20 bytes 3MB = 3 x 2^20 bytes 1KB = 2^30 bytes nº arquivos = __90__x__2^30__bytes__ = 30 x 2^10 (*potências simplificam subtraindo) 3 x 2^20 bytes nº arquivos = 30 K arquivos (kilo) AT: Uma máquina foi criada para atender as necessidades do dr Byte, ela dispõe de um registrador para processamento com 5 bits. Qual o maior número possível de ser representado neste registrador? 2^n = 2^5 = 2x2x2x2x2 = 4x2x2x2 = 8x2x2 = 16x2 = 32 -> 0 a 31 -> resposta 31 >conferindo: 5 posições -> 1 1 1 1 1 -> 2^4 2^3 2^2 2^1 2^0 -> 16 + 8 + 4 + 2 + 1 = 31 Você possui um link de internet em sua casa de 8Mbps. Considerando o link em sua performance máxima, informe em quanto tempo em minutos você conseguirá efetuar o download de um arquivo de 600MB. -> 600MB / 8Mb -> em cima da equação byte e embaixo bit -> 600 x 2^20 [mega: tabela] x 2^3 [bit: 8] / 8 x 2^20 [mega] [já é bit, não tem 2^3] por segundo -> 600 segundos -> resultado 10 minutos TC: 62% ORG COMP - A3 ________________________________________________________________ NA: converter números inteiros de uma base para outra > entender como são representados os números negativos > operações algébricas com diferentes bases > A representação em hexadecimal é uma alternativa entre a forma decimal [que Página 4 OC notas de aula.txt não pode ser expressa em potência de 2] e a forma binária [que utiliza muitos dígitos em sua representação] > DA BASE DECIMAL PARA BASE BINÁRIA (22)d = (?)b >> 22 |2_ 0 11 |2_ 1 5 |2_ 1 2 |2_ 0 1 |2_ 1** 0*** **começo da representação (22)d = (10110)b ***divisões sucessivas enquanto o consciente for DIFERENTE de zero > DA BASE BINÁRIA PARA BASE DECIMAL (10110)b = 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 16 + 0 + 4 + 1 + 1 (22)d = (10110)b > DA BASE DECIMAL PARA BASE HEXADECIMAL (22)d = (?)h >> 22 |16_ 6 1 |16_ 1** 0 **começo da representação (22)d = (16)h (451)d = (?)h >> 451 |16_ 3 28 |16_ 12 1 |16_ 1 0 **(451)d >> 1 12 3 >> (1C3)h > DA BASE HEXADECIMAL PARA BASE DECIMAL (16)h = 1*16^1 + 6*16^0 = 16 + 6 (16)h = (22)d (1C3)h = 1*16^2 + 12*16^1 + 3*16^0 = 256 + 192 + 3 (1C3)h = (451)d DA BASE BINÁRIA PARA BASE HEXADECIMAL > Para se converter de qualquer base para qualquer base, primeiro converte-se para a base 10 e depois da base 10 para a nova base > Porém há um "macete" de conversão entre a base 2 e 16, e vice-versa > Basta notar que qualquer dígito hexadecimal pode ser expresso por 4 bits binários > Cada conjunto de 4 bits representa um dígito em hexadecimal > Ou seja, com 4 bits podemos escrever 16 números diferentes > O número é convertido da direita para a esquerda em grupos de quatro de acordo com a tabela binária: 1 0 1 1 0 equivale a 0 0 0 1 0 1 1 0 -> (16)h | 1 | | 6 | DA BASE HEXADECIMAL PARA BASE BINÁRIA (16)h -> 0 0 0 1 0 1 1 0 Página 5 OC notas de aula.txt | 1 | | 6 | > Representação de números negativos em base binária > Sinal e magnitude o dígito mais significativo indica o sinal: 0 representa uma número positivo e 1 representa um número negativo: representação em 5 dígitos >> 12 = 0 1 1 0 0 -> '0' 1 1 0 0 -12 = 1 1 1 0 0 -> '1' 1 1 0 0 ** Descrição >> primeiro, temos que ter o 12 em binário, que seria 1100 A representação sinal e magnitude utiliza um bit para representar o sinal, o bit mais à esquerda: 0 para indicar um valor positivo, 1 para indicar um valor negativo Portanto temos: 1100 e colocamos o bit de representação negativo na frente: 11100 Entretanto você não pode colocar esse valor diretamente na calculadora sem definir que representa um número negativo, pois ela não irá considerar o bit mais da esquerda como o sinal negativo e sim como o bit que vale 16, somado aos outros bits ligados (8 e 4), totalizando 28 > complemento a base -1 Complemento é a diferença entre cada algarismo do número e o maior algarismo possível na base >> a operação é feita através de complemento a 1, que se resume na inversão de todos os dígitos: representação em 5 dígitos >> -12 = 1 0 0 1 1 -> '1' 1 1 0 0 12 = 1 0 1 0 0 -> '1' 1 0 1 1 **Para se realizar o complemento a 1 de um número basta complementar cada um de seus bits O complemento é, simplesmente, onde é 1 vira 0, e onde é 0 vira 1 Assim, o complemento a 1 de 1001 é 0110 > complemento a base A representação mais utilizada para número negativos corresponde ao complemento à base, que, no caso de base binária, é chamado de complemento a 2 >> Para obtenção de um número negativo expresso em complemento a 2, o número deverá ser invertido e, em seguida, ser adicionado do valor 1: decimal sinal e magnitude complemento a 1 complemento a 2 -10 11010 10101 10110 **Para determinar o complemento a 2 de um número, pega-se o complemento a 1 deste número e soma-se 1 Assim, o complemento a 2 de 01001 é determinado da seguinte maneira: --> complemento a 1: 10110 --> soma-se 1: 10110 + 1 = 10111 --> resposta: 10111 ** exemplos: Considere 8 bits, +55 e -55 em binário usando a representação em complemento a 1 e a 2 respectivamente. Primeiro temos que converter de decimal para binário o 55, correto? Convertendo encontraríamos 110111; Para a resolução da questão, você terá que considerar 8 bits, logo ficaria 0011 Página 6 OC notas de aula.txt 0111; Em complemento a 1, precisamos inverter. Lembre-se que a inversão não é da direita para esquerda e sim, onde é 0 (zero) passará a ser 1 (um) e onde é 1 (um) passará a ser 0 (zero), ok? Teríamos então 1100 1000; Em complemento a 2, precisamos somar 1 ao valor de complemento a 1. Neste caso: 1100 1000 + 1 --------------- 1100 1001 Neste caso já temos a resposta: +55 = 0011 0111 e -55 = 1100 1001 Utilizando k dígitos binários, determinar quantos números não-negativos podem ser representados em sinal de magnitude, complemento a 1 e complemento a 2 Um número com k bits (digito binário), sem levar em consideração o sinal, pode expressar (2^k)-1 valores Por exemplo, com 4 bits o maior inteiro sem sinal possível é 15 = (2^4) - 1 Se tivermos sinal/magnitude temos que reservar 1 bit para o sinal, assim nos sobra k-1 bits para representar o valor Portanto, o maior valor será (2^(k-1))-1 Por exemplo, se tivermos4 bits, tiramos 1 para o sinal, sobram 3 bits Assim, o maior valor será (2^(4-1))-1 = (2^3) -1 = 7 No caso de complemento a 1 ou 2 também utilizamos um bit para sinal, portanto o mesmo valor será atribuído que é o caso acima: (2^(k-1))-1. VA: tabela binário | hexadecimal 0000 | 0 0001 | 1 0010 | 2 0011 | 3 0100 | 4 ... | ... 1100 | C 1101 | D 1110 | E 1111 | F > SINAL E MAGNITUDE > -10 = 1 1010 >> 1 (sinal) 1010 (magnitude) > um bit reservado para o sinal -> o mais significativo > o maior número negativo representado nesse sistema: 11111 = - 1*2^3+1*2^2+1*2^1+1*2^0 = - 8+4+2+1 = -15 > COMPLEMENTO A 1 > sinal >> mantém o bit reservado -> o mais significativo > magnitude >> corresponde a diferença entre cada algarismo do número e o maior algarismo possível na base > no caso da base 2 o maior algarismo é 1 >> 1 - 1 = 0 e 1 - 0 = 1 >> equivale a inverter a magnitude > -10 = 1 1010 >> 1(sinal) 1010(magnitude) >> 1(sinal) 0101(magnitude invertida) = 1 0101 = 10101 * para n bits metade das combinações representa números positivos e a outra metade negativos Página 7 OC notas de aula.txt > COMPLEMENTO A 2 > sinal >> mantém o bit reservado -> o mais significativo > magnitude >> utiliza a representação de complemento a 1 e SOMA mais 1 > para n bits metade das combinações representa números positivos e a outra metade negativos > -10 = 10101 + 1 >> 1(sinal) 0101(magnitude invertida) + 1(somar ao último) >> = 10110 * é a representação mais utilizada SOMANDO E SUBTRAINDO > dois números positivos representados por seis bits (n=6): 10 = (001010)b e 7 = (000111)b soma >> 10 + 7 -> 001010 000111 ------ 010001 -> 0+16+0+0+0+1 = 17 ** na soma se vai 1, vale 2 na frente = no decimal se mudamos de casa vale 10, no binário vale 2 (18 minutos da vídeo aula 3) subtração 10 - 7 e 7 - 10 >> a operação depende da forma de representação do negativo (inverter) (soma 1) SM¹ C1 C2 >> - 7 -> 100111 111000 111001 >> - 10 -> 101010 110101 110110 SM >> + 10 -> 0 01010 >> - 7 -> 1 00111 ------- 0 00011 >> mantém-se o sinal da maior magnitude (01010) = 0 12 02 02 (zero menos um empresta um e fica dois*) 0 01010 1 00111 ------- 0 00011 ¹ Sinal Magnitude * para subtrair 1 de 0 é preciso pedir emprestado C1 >> + 10 -> 0 01010 > efetua-se a soma bit a bit >> INCLUSIVE do sinal Página 8 OC notas de aula.txt >> - 7 -> 1 11000 ------- ? ????? >> o sinal também é incluído na soma 111 (um que sobra é somado ao resultado*) | 001010 | 111000 | ------ | 000010 |__*> +1 = 000011 resultado final *** importante: se houver o um que sobra (vai um) o resultado é positivo e soma o 1 C1 >> - 10 -> 1 10101 > efetua-se a soma bit a bit >> INCLUSIVE do sinal >> + 7 -> 0 00111 ------- ? ????? >> o sinal também é incluído na soma 111 (vai um) 110101 000111 ------ 111100 *** importante: se NÃO houver o um que sobra (vai um) o resultado é negativo e deve ser complementado = 1 00011 resultado final (-3) C2 >> + 10 -> 0 01010 > efetua-se a soma bit a bit >> INCLUSIVE do sinal >> - 7 -> 1 11001 ------- ? ????? >> o sinal também é incluído na soma 111 (um que sobra é somado ao resultado*) | 001010 | 111001 | ------ | 000011 |_> = 000011 (3) resultado final positivo *** importante: se houver o um que sobra (vai um) o resultado é positivo Página 9 OC notas de aula.txt 11 (vai um) C2 >> - 10 -> 1 10110 > efetua-se a soma bit a bit >> INCLUSIVE do sinal 110110 >> + 7 -> 0 00111 000111 ------- ------ ? ????? >> o sinal também é incluído na soma 111101 -> complementar a dois** => 100010 11 (vai um) 110110 000111 ------ 111101 -> complementar a dois** => 100010 100010 + 1 = 100011 (-3) *** importante: se NÂO houver o um que sobra (vai um) o resultado é negativo e deve ser complementado AT:> Utilizando k dígitos binários determine quantos números não negativos podem ser representados em sinal e magnitude, complemento a 1 e complemento a 2. R: Quando escrevemos números binários negativos de k dígitos, independente da representação (sinal e magnitude, complementos), o bit mais significativo (mais à esquerda) é utilizado para o sinal. Portanto, os outros k-1 dígitos são utilizados para o número (valor). Logo, podemos representar 2 elevado a k-1 números distintos. > Mariozinho contava mais figurinhas que Joãozinho. Quando mantinha o primeiro dedo mais a esquerda levantado e os quatro abaixados, ele contabilizava dezesseis. Qual o sistema de numeração utilizado por Mario? R: Binário, pois se pegar o bit mais significativo de cinco bits (1000), desse sistema, equivale 2^4, ele vai contar 16 Quantas figurinhas a mais ele conseguiria contar e memorizar? R: base elevada ao n de bits => 2^5 = 32 -> 31 figurinhas, pois inclui o zero Caso utilizasse as duas mãos e os dois pés, qual seria a sua capacidade de contagem? R: 2^20-1 > Quanto é -20 em binário em complemento de 1 e de 2? R: 32/16/8/4/2/1 >> 16+4 >> 10100 - em C1 101011 (inverte magnitude) e em C2 101100 (soma 1) TC: 100% ORG COMP - A4 ________________________________________________________________ NA:> conceitos básicos de lógica digital >> símbolos utilizados para representação de portas lógicas >> como eles são utilizados na construção de uma tabela-verdade > Portas >> circuitos digitais são formados por elementos capazes de manipular Página 10 OC notas de aula.txt apenas grandezas binárias -> são chamados de portas lógicas >> são elementos de hardware que recebem um ou mais sinais de entrada e produzem um sinalde saída, cujo valor é o resultado de uma operação lógica Informação binária é representada por um sinal digital [pulsos elétricos]: +3V -> representa o bit 1 +0,5V -> representa o bit 0 **considerar sempre uma margem de tolerância ** a tendência é reduzir essas tensões para economizar energia e prolongar a duração da carga (bateria) ** O resultado de uma expressão lógica será sempre VERDADEIRO ou FALSO >> O resultado verdadeiro equivale ao valor 1 / O resultado falso equivale ao valor 0 > Operações lógicas >> são apresentadas pelas seguintes palavras: AND, OR, NOT, NAND, NOR e XOR >> AND -> Produz resultado verdade se e somente se todas as entradas forem verdade >> OR -> Produz resultado verdade se pelo menos uma das entradas for verdade >> NOT -> Inverte o valor da entrada >> NAND -> Produz resultado verdade se e somente se todas as entradas forem falsas >> NOR -> Produz resultado falso se pelo menos uma das entradas for verdade >> XOR -> Produz resultado verdade se os valores de sua entrada forem diferentes > As operações lógicas podem ser representadas de duas maneiras: Representação matemática ou Símbolo gráfico >> rep mat > considerando entradas A e B: ver fig oc4_representacao matematica_op log >> Cada operação possui um símbolo gráfico conforme fig oc4_simbolo grafico_op log [precisa decorar] - ** símbolo do OR é o triangular e do AND é redondo > Expressão lógica >> é uma expressão algébrica formada por variáveis lógicas e por símbolos representativos de operações lógicas > O valor do resultado de uma expressão lógica pode ser obtido por uma tabela-verdade construída com todas as possibilidades de entrada e as correspondentes saídas **p.e. na expressão F= X + Y¬ * Z [onde 1 representa um resultado verdadeiro e 0 um falso] *>> [o símbolo 'Y¬' seria o 'Y' em sua representação correta e significa um NOT // o + significa um OR // o * significa um AND ] Tabela verdade X Y Z F 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 Página 11 OC notas de aula.txt 1 1 0 1 1 1 1 1 VA: > hardware >> conceitos de portas lógicas > valores lógicos são utilizados como entrada -> as portas lógicas fazem o processamento do sinais -> resultado lógico como saída >> valores lógicos booleanos > bit 1 valor verdadeiro / bit 0 valor falso > AND -> p.e vou começar a aula se a porta estiver fechada e todos sentados -> a aula só começa se houver essa conjunção de condições -> uma e outra >> o efeito é o mesmo = o resultado será verdade somente quando todas as entradas forem verdade [verdade e verdade] > Tabela verdade >> um diagrama em forma de tabela com todas as combinações possíveis de entrada e as saídas correspondentes, obedecendo a operação lógica da(s) porta(s) envolvida(s) >> p.e representação matemática > A * B [ou A . B] >> Q = A * B tabela verdade A B Q 0 0 0 0 1 0 1 0 0 1 1 1 -> somente nesse caso a saída é verdadeira > OR [inclusivo] >> p.e vou começar a aula se a porta estiver fechada ou todos sentados -> a aula começa quando ao menos uma das condições é atendida -> uma ou mais >> o efeito é o mesmo = o resultado será verdade quando pelo menos uma das entradas forem verdade >> p.e representação matemática > A + B >> Q = A + B tabela verdade A B Q 0 0 0 -> somente nesse caso a saída é falso 0 1 1 1 0 1 1 1 1 > NOT >> inverte o valor de entrada -> o que é verdade vira falso e vice-versa _ _ >> p.e representação matemática > ¬A >> Q = A tabela verdade A Q 0 1 1 0 > NAND >> resulta no inverso da porta AND -> o que é verdade no AND vira falso e vice-versa _____ _____ Página 12 OC notas de aula.txt >> p.e representação matemática > ¬A * B >> Q = A * B tabela verdade A B Q 0 0 1 0 1 1 1 0 1 1 1 0 -> somente nesse caso a saída é falso > NOR >> resulta no inverso da porta OR -> o que é verdade no OR vira falso e vice-versa _____ _____ >> p.e representação matemática > A + B >> Q = A + B tabela verdade A B Q 0 0 1 -> somente nesse caso a saída é verdadeiro 0 1 0 1 0 0 1 1 0 > XOR >> exclusive or >> resultados mutualmente exclusivas entre si -> produz resultado verdade se as entradas forem diferentes >> p.e representação matemática > A (+) B >> Q = A (+) B **[na representação correta o "mais" é dentro de um "círculo"] tabela verdade A B Q 0 0 0 0 1 1 1 0 1 1 1 0 -> diferença da OR > precedência entre as portas: >> a negação (NOT) vem em frente de tudo >> a multiplicação (AND) tem precedência sobre adição (OR) (como na álgebra de reais) >> expressões entre parênteses tem precedência _ >>p.e. -> X = A + B * C 1°) NOT B 2°) resultado acima AND C 3°) OR com resultado de (2°) Tabela verdade _ _ A B C B B*C X 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 Página 13 OC notas de aula.txt 1 0 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 ** ver figura oc4_simbolos graficos_exemplo AT: 1) Foi criado um circuito lógico que combina 2 entradas, cada uma formada por 3 bits. Chamamos estas entradas de A e B. Se em determinado momento o valor da entrada A é 011 e de B é 110 e a expressão que representa em circuito é A NAND B, qual será a saída para estas entradas? 1°> com duas entradas são quatro possibilidades de combinações de sinais 2°> montar a tabela de entradas 3°> colocar um NAND na tabela [nomeamos de X] 4º> fazer bit a bit dos três >> A 011 e B 110 >> 0 em A e 1 em B, de acordo com a tabela, resulta 1 >> 1 em A e 1 em B, resulta 0 >> 1 em A e 0 em B, resulta 1 >> resultado final 101 A B X 0 0 1 1 1 0 0 1 1 1 0 1 2) Com base na tabela-verdade referente à expressão boleana a seguir, quantas serão as possibilidades do resultado ser verdade (1)? S = A.B+A.C 1º> montar a tabela de três entradas 2º> resolver pela precedência 3º> verificar resposta = são 3 possibilidades A B C A.B A.C S 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 AND > resultado verdade somente se todas entradas forem verdade OR > resultado verdade se pelo menos uma entrada for verdade NOT > inverte o valor da entrada NAND > resultado inverso da AND > resultado falso somente se todas entradas forem verdade NOR > resultado inverso do OR > resultado falso se pelo menos uma entrada for verdade XOR > exclusivo > resultado verdade somente se as entradas forem diferentesTC: 100% Página 14 OC notas de aula.txt ORG COMP - A5________________________________________________________________ LV: Apêndice B de Introdução a Organização de Computadores – Mario Monteiro NA: Álgebra Booleana > área da Matemática que trata de regras e elementos de lógica >> trata de variáveis e de operações com estas variáveis, porém utiliza variáveis binárias em que o valor 1 equivale à condição verdadeira e o valor 0, à condição falsa > Uma expressão lógica pode ser simplificada garantindo, assim, circuitos mais simples e mais baratos de serem produzidos >> são 22 regras de simplificação: Regra 1 -> X + 0 = X Regra 2 -> X + 1 = 1 Regra 3 -> X + X = X Regra 4 -> X + X¬ = 1 Regra 5 -> X * 0 = 0 Regra 6 -> X * 1 = X Regra 7 -> X * X = X _ Regra 8 -> X * X¬ = 0 [*símbolo X¬ é uma representação aqui nas anotações de negação / original ->> X] Regra 9 -> X¬¬ = X [*símbolo X¬¬ é uma representação aqui do original é X com duplo traço em cima = dupla negação] Regra 10 -> X + Y = Y + X [lei da comutatividade] Regra 11 -> X (+) X = 0 [* símbolo (+) é uma representação aqui do original + inserido no círculo = exclusive or XOR] Regra 12 -> X * Y = Y * X [lei da comutatividade] Regra 13 -> X + (Y + Z) = (X + Y) + Z [lei da associatividade] Regra 14 -> X * (Y * Z) = (X * Y) * Z [lei da associatividade] Regra 15 -> X * (Y + Z) = X * Y + X * Z [lei da distributividade] Regra 16 -> X + X * Z = X Regra 17 -> X * (X + Y) = X Regra 18 -> (X + Y) * (X + Z) = X + Y * Z Regra 19 -> X + X¬ * Y = X + Y Regra 20 -> X * Y + Y¬ * Z + Y * Z = X * Y + Z _ _ _ _ _ Regra 21 -> (X + Y) = X * Y [Teorema de Morgan] _ _ _ _ _ Regra 22 -> (X * Y) = X + Y [Teorema de Morgan] >> exemplo de simplificação de expressões utilizando as regras apresentadas _ R = (X + Y) * (X + Y) Página 15 OC notas de aula.txt _ Etapa 1 R = X + Y * Y Regra 18 Etapa 2 R = X + 0 Regra 8 Etapa 3 R = X Regra 1 VA: circuitos digitais são representados por expressões, cuja entradas são combinadas e saídas analisadas por meio da tabela-verdade >> as regras de simplificação da álgebra de Boole são utilizadas para reduzir o tamanho dessas expressões e consequentemente os circuitos *p.e. Regra 1 -> se eu tenho uma entrada X [pode ser 0 ou 1] e faço um OU [representado por +] com 0 [combinado com 0] vai dar o próprio X como saída [o 0 vai dar 0 e o 1 vai dar 1] >> X + 0 = X mais exemplo -> Comprovar a regra 16: X + X * Z = X [x OU x E z é IGUAL a x] >> pela tabela-verdade é possível observar se o resultado é igual a X X Z X*Z X+x*z 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 >> comprovar se o lado esquerdo é igual ao lado direito pela álgebra de Boole X + (X * Z) [aplicando a regra 6 - X*1=X - substitui X] ->> [X * 1] + X * Z [aplicando a regra 4 - X+X¬=1 - substitui 1] ->> X * [Z + Z¬] + X * Z [aplicando a regra 15 - X*(Y+Z)=X*Y+X*Z - substitui X*[Z+Z¬]] ->> [X * Z + X * Z¬] + X * Z [aplicando a regra 10 - X+Y=Y+X - alterna ordem X*Z + X*Z¬ + X*Z] ->> X * Z + X * Z + X * Z¬ [aplicando a regra 3 - X+X=X - substitui X*Z + X*Z] ->> X * Z + X * Z¬ [aplicando a regra 15 - X*(Y+Z)=X*Y+X*Z - substitui X*Z+ X*Z¬] ->> X * (Z + X * Z¬) [aplicando a regra 4 - X+X¬=1 - substitui Z+Z¬] ->> X * 1 [aplicando a regra 6 - X*1=X - substitui X] Página 16 OC notas de aula.txt ->> X mais exemplo -> simplificar a expressão: _ _ X = (A + B) * B [*além de A e B tem uma barra que cobre a expressão toda] >> no vídeo há uma representação gráfica do circuito [16'26" >> fig oc5_explicacao de representação de circuito] _ _ X = (A + B) + B >> regra 22 - barrado com AND transforma em OR [*considerar a barra que cobre a expressão] _ _ _ X = (A * B) + B >> regra 21 - barrado com OR transforma em AND [*considerar a barra que cobre a expressão] _ X = (A * B) + B >> regra 9 - duplo barrado é a negação da negação - se anulam em A e B X = A + B >> regra 19 - a representação anterior pode ser simplificada RESULTADO: X = A + B AT: >> para transformar representação gráfica em expressão booleana > começa da esquerda para direita combinando as variáveis com AND / OR / NAND / NOR / NOT até a mais extrema a direita *** AND é * e OR é + Dada a expressão lógica S = AB + C, determine o valor da saída S, quando A = 010, B 110 e C=001: resolvi pela tabela A B AB +C S 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 TC: 100% -> fazer mais!!! ORG COMP - A6 ________________________________________________________________ NA: > modelo de von neumann > contribuições >> Dados e instruções fossem armazenados em uma única memória que seria utilizada tanto para leitura quanto para escrita >> Os dados armazenados na memória poderiam ser acessados através de endereços >> A execução de um programa ocorre sequencialmente, por ordem de endereços, exceto se for feita algum desvio explícito no programa > o modelo de neumann é formado por uma CPU, memória, unidade de entrada e unidade de saída, conectados entre si através de um barramento >> CPU > Unidade lógico-aritmética -> execução de provações lógicas e aritméticas efetuando transformações sobre os dados > Unidade de controle -> interpretação e execução de comandos > Registradores internos -> conjunto de células que funcionam como pequenas memórias para leitura e gravação temporária de dados Página 17 OC notas de aula.txt >> Memória > A comunicação entre CPU e memória utiliza dois registradores específicos: RDM [registrador de dados de memória] - armazena conteúdo da palavra lida / REM [registrador de endereços da memória] - armazena o endereço da palavra na memória >> Barramento > Conectam CPU/Memória/Controladores de dispositivos de E/S - dividido em 3 partes: controle [define o tipo de operação] / dados [informa o que será lido/escrito] / endereço [informa o endereço para leitura/escrita] >> Programação > O valor de uma variável é alterado durante a execução de um programa / Instruções e dados são armazenados indistintamente > limitações do modelo >> grande quantidade de acessos à memória / velocidade dos novos dispositivos / execução em paralelo VA: modelo neumann > características: dados e instruções são armazenados em uma única memória / são armazenados e acessados por meio de endereços / a execução de um programa ocorre sequencialmente, por ordem de endereço, a menos que haja um desvio MEMÓRIA <=> PROCESSADOR <=> ENTRADA/SAÍDA > Registradores >> células de memória >> registradores de propósito geral e de propósito específico (p.e. RDM e REM) > tamanho da célula -> determina o RDM >> célula de 32 bits -> RDM com 32 bits [RDM tem a capacidade da célula => 4 X 8 bits = 4 Byte => 1 Byte = 8 bits] > tamanho da memória em células -> determina REM >> memória com 256 célula -> REM com 8 bits [número de combinações, de endereços -> 2^n => 2^8] > tamanho da memória máxima no exemplo => 256 X 4 Byte = 2^8 X 2^2 Byte = 2^10 Byte [repete a base e soma os expoentes] = 1kB > CPU [unidade central de processamento] >> unidade de controle / unidadearitmética e lógica / registradores >> unidade de controle => gerenciamento do fluxo interno dos dados >> unidade aritmética e lógica (UAL) => execução de operações lógicas e aritméticas - transformações sobre os dados >> registradores => células de memória (temporárias) dentro do processador registradores especiais: > registrador de instruções (IR) - armazena a instrução que está sendo apresentada > registrador de estado (PSW) - armazena condições de estado geradas pela UAL gerando informações para unidade de controle > contador do programa (PC) - armazena o endereço da próxima instrução que será executada Página 18 OC notas de aula.txt > barramentos >> podem ser de três tipos: endereçamento / controle / dados Limitações do modelo original -> atualmente há acessos múltiplos à memória e maior velocidade TC:75% ORG COMP - A7 ________________________________________________________________ NA: > Instruções > Memória / Processador [unidade de controle; unidade aritmética e lógica - acumulador] / E/S > o processador é dividido em três partes: >> Instruções / Unidade de controle / Unidade Lógico aritmética > Todo o processador é fabricado contendo um conjunto de instruções que define quais operações ele pode realizar > cada processador apresenta um conjunto de instruções, sendo cada uma responsável pela execução de uma tarefa > A instrução utiliza registradores de uso geral para armazenamento temporários dos dados que serão processados e de uso específico para funções pré definidas de controle ou destinadas a uma forma de armazenamento implícito * Ninguém programa diretamente utilizando as instruções do processador! Os programas são desenvolvidos em linguagens de alto nível. Os compiladores são responsáveis por transformar este programa para uma linguagem de montagem (Assembly), que é a representação textual das instruções como p.e. ADD, MOV, INC etc > três tipos de instrução: Instruções aritméticas e lógicas / Instruções de movimentação de dados / Instruções de transferências de controle >> IAL -> Realizam operações aritméticas (ADD, SUB, etc) e lógicas (AND, OR, etc) >> IMD -> Transferem dados entre registradores ou entre registrador e memória principal (MOV) >> ITC -> Executam o desvio do fluxo sequencial do código (JMP) * Alguns processadores possuem ainda instruções para tratamento de ponto flutuante, manipulação de bits e manipulação de cadeias de caracteres (strings) > A execução de uma instrução é dividida em etapas: -> Busca -> Decodificação -> Busca de operandos -> Fim - |___________<________________<______________________<___| > Uma instrução possui dois formatos básicos: Código da operação / Operando > As instruções podem ter mais de um operando ou nenhum operando >> Código da operação -> Indica que operação será executada / a quantidade de bits destinada a este código determina o número máximo de instruções possíveis >> Operando -> indica o(s) dado(s) que serão manipulado(s) / operações aritméticas possuem em geral 2 ou 3 operandos >> p.e. -> instrução de 12 bits: 0001 0101 1000 [código] [operando 1] [operando 2] -> ADD R1,R2,R3 : operação de soma onde a soma de R1 e R2 é armazenada em R3 Página 19 OC notas de aula.txt -> ADD R1,R2: o valor de R2 é adicionado ao valor de R1 e armazenado em R2. > os modos de endereçamento são: imediato, direto, indireto, por registrador, relativo à base e indexado >> imediato -> Utiliza um valor como operando e não um endereço na memória / p.e ADD #4, R1 O valor 4 é adicionado ao registrador R1 >> direto -> Indica o endereço de memória onde está o operando / p.e ADD (20), R1 O conteúdo do endereço 20 é adicionado a R1 >> indireto -> Indica um ponteiro para o operando / p.e ADD (R1),R2 R1 contém o endereço do valor que será adicionado a R2 >> por registrador -> O endereço se refere a um registrador >> relativo à base -> Endereço obtido pela soma do operando com o conteúdo de um registrador base / p.e ADD 20(R1),R2 O endereço é dado pelo deslocamento R1 a partir da base 20 >> indexado -> índice para uma estrutura (vetor) / p.e ADD (R1+R2),R3 O endereço é fornecido pela soma do endereço base R1 com o deslocamento R2 VA: > instruções >> são as ordens que o computador entende >> cada família de processadores tem seu próprio conjunto de instruções [instruction set] >> quem usa essas instruções >> o programador assembly [linguagem baixo nível] e os compiladores >> instruções podem ter formatos diferentes, dependendo do número de operandos > tipos de instruções: instruções aritméticas e lógicas / instruções de movimentação de dados / instruções de transferências de dados > formato de instrução: código da operação COp / operando(s) [dados -> números, caracteres ou endereços] > p.e >> ADD -> soma o primeiro operando com o segundo, o resultado fica armazenado no primeiro operando -> ADD op1, op2 >> MOV -> copia o segundo operando [fonte] para o primeiro operando [destino] -> MOV op1, op2 >> JNZ -> desvia a execução do programa para o endereço indicado -> JNZ op1 > registradores: >> registradores de uso geral para armazenamento temporário dos dados que serão processados -> p.e. AX, BX >> registradores de uso específico para funções pré-definidas de controle -> p.e. IR, PSW, PC > modos de endereçamento: >> imediato - utiliza o próprio valor como operando >> direto - indica o endereço de memória onde está o valor do operando >> indireto - indica um ponteiro [endereço] para o endereço do operando >> registrador - o endereço se refere a um registrador >> deslocamento - obtido pelo soma do operando com o conteúdo de um registrador base AT: Um determinado processador possui um conjunto de 64 instruções. Quantos bits de opcode a instrução deverá possuir? Página 20 OC notas de aula.txt opdecode -> 64 2^n bits -> 2^6 = 64 -> 2^n -> n=6 R. com seis bits eu consigo representação 64 instruções diferentes Um processador possui um conjunto de instruções que emprega vários modos de endereçamento. Considere que a memória principal possui endereços de 16 bits e o mapa de memória a seguir. Para cada item diga qual o valor obtido: a) a instrução possui o modo direto e o operando possui o valor 15B9 b) a instrução usa o modo imediato e o operando possui o valor 15BA c) a instrução usa o modo indireto e o operando possui o valor 15BB Tabela -> Endereço _|_ Conteúdo 15B9 | 7C 15BA | 82 15BB | 15 15BC | BE 15BD | 9A 15BE | 75 R. a) 15B9 -> direto -> 7C -> resposta 7C / b) 15BA -> imediato -> resposta 15BA / c) 15BB -> indireto -> endereço 15BB = 15, faltam dois bytes, usa os valores do seguinte -> endereço 15BE -> resposta 75 Considerando uma instrução com código de operação de 4 bits e operando de 8 bits, cujo processador trabalhe com endereçamento direto, quantas instruções no máximo podem existir nessa configuração e qual o maior endereço (em hexadecimal) pode servir de operando? R. COp _|_ Endereço __ __ __ __ | __ __ __ __ __ __ __ __ COp 4 bits = 2^n = 2^4 = 16 combinações End 1 Byte -> 1111 1111 -> 1111 = F -> FF TC: 88% ORG COMP - A8 ________________________________________________________________ NA: > processador > modelo de Von Neumann >> Memória <-> Unidade de Controle <-> Unidade Aritmética e Lógica [Acumulador] <-> E/S | | |<-------------------------------------------->| > um computador é inicializado pelo procedimento de bootstrap / o processador é composto por circuitos capazes de executar instruções >> função do processador é executar instruções e, para isso, obedece ao ciclode busca, decodificação e execução da instrução ->início ->buscar instrução na memo ->decodificar instr ->buscar comandos ->executar ->escrever resultados ->término | Página 21 OC notas de aula.txt | |<------------------------------------------------------------------------------ ----------------------------------<| > funções do processador >> 1) Buscar instrução na memória 2) Interpretar que operação está sendo requerida 3) Buscar operandos necessários 4) Executar operação 5) Guardar o resultado (se for o caso) 6) Reiniciar o ciclo > As funções realizadas pelo processador podem ser divididas em dois grupos: controle e processamento >> CTRL > Responsável pela busca, interpretação e controle de execução das instruções -> componentes: unidade de controle (UC) / registrador de instruções [responsável pela movimentação de instrução] / decodificador de instruções [armazena a instrução executada] / contador de instruções [identifica a instrução executada] / registrador de endereço de memória [armazena o endereço da próxima instrução] / registrador de dados de memória [REM ou MAR] >> PROC > Execução de operações aritméticas, operações lógicas, movimento de dados, desvios e operações de entrada ou saída -> componentes: UAL (ALU) / ACC [acumulador - cada bit possui um significado - sinal, overflow, zero, vai 1, paridade, etc] / Registradores de dados [registrador acumulador] / Registrador de estado (PSW) > Interrupções >> São eventos provocados pelo hardware que provocam o desvio da sequência normal de execução de uma tarefa >> São sinais de hardware fundamentais para a existência de sistemas multitarefa, pois provocam a interrupção da tarefa em execução >> As interrupções são inicialmente tratadas pelo processador que, em seguida, desvia a execução do programa para a rotina de tratamento da interrupção também chamada de interrupt handler *VER a8_oc_figura1.png > As interrupções podem ser divididas em três classes: relógio, E/S e falha de Hardware >> Relógio -> Relógio é o dispositivo gerador de pulsos cuja duração é chamada de ciclo / A frequência do processador é dada pela quantidade de ciclos por segundo / A interrupção gerada pelo relógio interno do processador provoca a suspensão periódica da tarefa em execução para permitir a execução de uma nova tarefa / Esta interrupção é fundamental para o modelo de sistemas multitarefa atuais >> E/S -> Gerada por um controlador de E/S para sinalizar o término de uma operação / Após o término da execução da rotina de tratamento o processamento retorna ao ponto imediatamente após de onde foi interrompido >> Falha HW -> Gerada por uma falha de hardware para impedir a continuidade da execução da tarefa > Pipeline >> O esquema tradicional de execução de uma instrução (sequencial) Página 22 OC notas de aula.txt não utiliza o potencial dos circuitos eletrônicos cada vez mais rápidos, pois existem tarefas mais lentas que outras, como, por exemplo, o acesso à memória / No modelo sequencial, os componentes do processador não envolvidos com o acesso à memória estariam ociosos durante a execução da tarefa >> O pipeline funciona, então, como uma linha de montagem, permitindo que várias instruções sejam executadas SIMULTANEAMENTE, reduzindo o tempo de término de cada ciclo >> O objetivo é utilizar as diversas unidades do processador por instruções diferentes > p.e. > Enquanto uma instrução utiliza a ULA, outra instrução pode trazer um endereço da memória > Características: • Busca antecipada de instruções / • Memória de laço de repetição / • Previsão de desvio VA: > incialização > procedimento de bootstrap >> 1.energia / 2.registradores inicializados / 3.executa instrução BIOS - basic input output system / 4.BIOS [POST - power on self test] / SETUP - configurações do hardware / carga SO - sistema operacional] > função do processador >> executar instruções > para isso obedece o ciclo de busca, decodificação e execução da instrução > sequência de interrupção: >> dispositivo de controle ou outro sistema de hardware que permita ativar uma interrupção >> processador termina a execução da instrução corrente >> processador reconhece o sinal de interrupção >> processador coloca o PSW e PC na pilha de controle >> processador carrega novo valor do PC, baseado na interrupção >> salva informações remanescentes sobre o estado do processo >> processa a interrupção >> restaura a informação do estado do processo >> restaura o velho PSW e PC > Pipeline -> é uma linha de montagem > os processos são executados linearmente > é uma técnica usada em processadores para melhorar seu desempenho, que consiste em "dividir" o processador em vários estágios distintos >> é a técnica de projeto que permite a unidade central de processamento começar a processar uma instrução antes da anterior ter sido concluída AT: > as funções realizadas pelo processador são divididas em dois grupos: controle e processamento as funções de controle são responsáveis pela busca, interpretação e controle de execução das instruções exemplos de componentes do grupo de procedimentos: ACC [acumuladores], PSW [registrador de status] e registradores de dados > as interrupções são incialmente tratadas pelo processador as rotinas de interrupção também são chamadas de interrupt handler a rotina de interrupção é executada da mesma maneira que um programa de usuário as interrupções são sinais de hardware fundamentais para a existência de sistema multitarefa, pois provocam a parada da tarefa em execução Página 23 OC notas de aula.txt TC: 100% ORG COMP - A9 ________________________________________________________________ NA: > Memória [MM] > como funciona a memória principal e como ela se relaciona com os demais elementos do sistema de computação / importância da memória cache para o desempenho de um computador e o relacionamento desta memória com a memória principal > A memória principal é a responsável pelo armazenamento temporário de informações que serão manipuladas pelo sistema e que irão permitir sua recuperação quando necessário >> O elemento básico de armazenamento é o bit, porém a forma de como estes bits são agrupados para representar uma informação depende de cada sistema -> Este agrupamento é denominado célula e passa a ser a unidade de armazenamento >> processadores de 16 bits -> possuem endereços de 20 bits, permitindo usar até 1MB endereços de memória / Cada célula possui 1 byte de largura >> processadores de 32 bits -> possuem endereços de 32 bits permitindo o acesso a 4GB células também de 1 byte > hierarquia: Existem vários tipos diferentes de dispositivos de armazenamento, cada um com características próprias de tempo de acesso, capacidade, aplicabilidade, etc / Estas memórias são organizadas na forma de pirâmide onde, no topo, encontra-se aquela com maior custo, maior velocidade e menor capacidade de armazenamento e, na base, o inverso: [__registradores__]--------------> Armazenamento de dados na CPU [____memória cache____]------------> Localizada entre o processador e a mm principal [____memória principal____]----------> É a memória básica de um sistema de computação* [______memória secundária______]-------> MM não volátil para armaz. de dados e programas** *RAM - onde ficam armazenados os programas em execução e os dados em uso **E/S - p.e. HD, pen drive > Componentes da memória principal >> A CPU comunica-se com a memória através de um barramento e utiliza os registradores RDM e REM para o envio e recebimento das informações >> Utiliza, ainda, registradores para armazenamento durante a transferências >> As operações de leitura e escrita são gerenciadas pelo controladorde memória > barramentos de dados -> Interliga a RDM à memória principal para transferência de Informações / É bidirecional > registrador de dados -> Registrador que armazena temporariamente a informação que está sendo transferida de/para a memória > barramento de endereços -> Interliga a REM à memória principal / É unidirecional > registrador de endereços da MM -> Registrador que armazena temporariamente o endereço de acesso > barramento de controle -> Interliga a unidade de controle do processador à memória principal para envio de sinais durante as operações de leitura e escrita Página 24 OC notas de aula.txt > controlador da MM -> Responsável por gerar os sinais necessários para controle do processo de leitura e escrita, além de interligar a memória aos demais componentes do sistema > operações da MM principal -> dois grupos >> Operação de Leitura e Operação de Escrita >> Operação de Leitura >> 1- REM <- endereço em outro registrador 2- O endereço é colocado no barramento de endereço 3- Sinal de leitura no barramento de controle 4- Decodificação de endereço e localização da célula 5- RDM <- MP pelo barramento de dados 6- Outro registrador <- RDM >> Operação de Escrita >> 1- REM <- endereço em outro registrador 2- O endereço é colocado no barramento de endereço 3- RDM <- outro registrador 4- Sinal de escrita no barramento de controle 5- MP (REM) <- RDM > Organização da memória principal >> A memória é organizada em células >> Um conjunto de células que possuem um significado é chamado de palavra (word) >> A palavra é a unidade de informação do sistema que deve representar o valor de um dado ou de uma instrução de máquina > Unidade de transferência -> Consiste na quantidade de bits que é transferida para a memória em uma operação de escrita e da memória em uma operação de leitura / Em função do aumento da taxa de transferência dos barramentos, os sistemas utilizam unidades superiores a uma célula de memória > Capacidade da memória principal -> Quantidade de informações que podem ser armazenadas representadas por N [número de células * tamanho da célula] > Memória cache >> O estudo da memória cache pode ser subdividido em: motivação / acesso / organização / mapeamento / algoritmos de substituição >> motivação -> Diferença de velocidade entre processador e memória principal Princípio da Localidade: temporal e espacial [Temporal: Se um item é referenciado, tenderá a ser referenciado novamente p.e. loops (instruções e dados)] [Espacial: Se um item é referenciado, itens cujos endereços são próximos tenderão a ser referenciados em seguida. p.e. acesso a dados de um array] >> acesso -> O acesso a cache é transparente para a aplicação e ao sistema operacional Para a leitura de 1 byte na memória principal têm-se os seguintes passos: 1. O processador inicia a operação de leitura e coloca o endereço desejado na Memória Principal 2. O sistema de controla da cache intercepta o endereço e conclui se o dado solicitado está ou não armazenado na cache / Um acerto é denominado cache hit e a falta é denominada cache miss 3. Se ocorrer um cache miss o controlador da memória principal é acionado Página 25 OC notas de aula.txt para localizar o dado na memória, transferindo-o para a cache 4. Um novo acesso é feito à memória cache 5. Considerando o princípio da localidade, os próximos dados consultados já deverão estar na cache, compensando (e muito!) a demora causada por uma falha >> organização -> A memória cache é organizada em um conjunto de L linhas, sendo cada linha constituída de X bytes As linhas têm endereço de 0 a L-1 Cada linha possui um campo indicador do endereço do bloco que está naquele instante armazenado nela. Este campo é denominado tag ou rótulo A localização é composta, no mínimo, pelo endereço do bloco e pelo deslocamento dentre do bloco >> mapeamento -> 1. Direto - cada bloco da MP tem uma linha de cache previamente definida. Como o tamanho da memória é muito maior que o tamanho da cache, é necessário se obter o tag do bloco e verificar se é o mesmo tag que está na linha indicada, indicando um hit. É um método simples, porém de pouca flexibilidade 2. Associativo - não há local fixo na cache para um bloco da MP, no entanto será necessário comparar o tag com o tag de cada linha 3. Associativo por conjunto - utiliza conceitos das técnicas anteriores, utilizando mapeamento direto para identificar um bloco e mapeamento associativo para localizar o dado dentro do bloco >> algoritmos de substituição -> O tamanho da memória cache é muito menor que o da MP, então a mesma linha de cache poderá ser escolhida por mais de um dado Para escolher a linha que deverá ser substituída no caso de uso do mapeamento associativo, os métodos mais utilizados são: LRU (menos recentemente usado) ou FIFO (fila) / É possível, ainda, fazer uma escolha aleatória que, mesmo sendo aparentemente menos eficiente, pode reduzir a sobrecarga para identificação do bloco **Todo o gerenciamento da memória cache é feito por hardware. Nem o Sistema Operacional, nem as aplicações têm conhecimento da existência da memória cache **Política de escrita na memória: Sempre que ocorre uma escrita na cache, a memória principal deve ser atualizada, porém esta atualização pode ocorrer em diferentes momentos: • simultaneamente em ambas as memórias (write through), • escrita somente quando o bloco for substituído (write back) ou • escrita na MP somente na primeira atualização (write once), útil para sistemas multiprocessados VA: > memória principal [RAM] e memória cache [auxilia o desempenho] -> tipos de memória volátil -> armazenam um conteúdo e quando tira a energia, essa memória se perde > memória secundária -> memória não volátil -> mesmo sem energia os dados continuam armazenados > quanto mais alta a memória na pirâmide -> maior a velocidade / maior o custo / menor a capacidade de armazenamento > Barramento de dados - interliga o RDM [registrador de dados] à MP > RDM - armazena temporariamente as informações que estão sendo transferidas Página 26 OC notas de aula.txt de/para a MM > barramento de endereços - interliga o REM [registrador de endereço de memória] à MP - indica em que endereço será lido ou gravado o dado > REM - contém o endereço que será lido ou gravado na MP > barramento de controle - interliga a UC [unidade de controle do processador] à MP - onde trafegam os sinais de controle [identificando se é leitura ou gravação] > controlador de MM - é o responsável pelos sinais de controle > operação de leitura na MP - há um sinal do que será lido; o endereço do que será lido [REM]; o endereço é colocado no barramento de endereço; há um sinal de leitura no barramento de controle; acontece a decodificação do endereço e localização da célula; vem pelo barramento e chega ao RDM; e no RDM será colocado o conteúdo lido para que seja trazida a MM para o processador *o RDM é a porta de E/S da dados entre o processador e a memória / o REM [endereço] indica o que estou lendo/gravando > operação de escrita na MP - endereço em outro registrador; levado ao REM; o endereço é colocado no barramento de endereço; o conteúdo de escrita é levado a porta de saída do registrador de dados da memória [RDM]; envia o de escrita no barramento de controle; acontece a decodificação do endereço e localização da célula; chega ao RDM, que envia a MP (REM) [por meio do barramento de dados] > conceitos: organização da memória principal -> células [unidade de leitura e gravação que agrupa Bytes de um dado] palavra -> conjunto de células com significado unidade de transferência -> quantidade de bits transferidos de/para a MM capacidadede memória -> quantidade de informações armazenadas N -> número de células * tamanho de célula [multiplica para encontrar essa quantidade total] > memória cache >> o acesso a cache não é visível para a aplicação e para o SO > todo seu gerenciamento é feito por hardware >> o processador inicia a operação de leitura para o endereçamento desejado da MP >> o sistema de controle da cache intercepta o endereço e conclui se o dado solicitado está ou não armazenado na cache [um acerto é denominado cache hit e uma falha cache miss] >> se ocorrer cache miss, o controlador da MP é acionado para localizar o dado na memória, transferindo-o para a cache -> um novo acesso é feito à memória cache *a memória cache [agilizar] compensa a diferença de velocidade de processamento entre o processador [rápida] e a memória principal [mais lenta] > princípio da localidade >> temporal [itens referenciados mais de um vez - looping] / espacial [itens quando endereços são próximos] > a MM cache é organizada em conjunto de linhas - cada linha possui um indicador do endereço de um bloco que está armazenado nela naquele instante -> este campo indicador é denominado tag ou rótulo Página 27 OC notas de aula.txt > mapeamento da cache >> direto [cada bloco da MP tem uma linha da cache previamente definida - bloco e linha são identificados por tag] / associativo [não há local fixo na cache para um bloco da MP] / associativo por conjunto [uma mistura do direto com associativo] AT: > Considere um sistema cuja célula de memória é composta por 16 bits e o registrador de endereços possui 32 bits. Qual o tamanho máximo da memória principal neste sistema? REM 32 bits -> 2^32 = 4G células célula 16 bits -> 2^16 = 2 bytes Total: multiplica REM pelo tamanho da célula -> MP = 4G X 2B = 8GB > Quantos bits o registrador de endereços deve ter para endereçar uma memória de 4GB onde cada célula possui 64 bits? célula = 64 bits -> 8 bytes quantidade de células -> 4GB/8B = 2^32 / 2^3 [32 - 3] = 2^29 células REM -> 29 bits > capacidade máxima de endereçamento -> determinada pelo REM tamanho da célula de memória -> capacidade total de memória dividido pela capacidade de células que posso endereçar [REM] tamanho da palavra de memória -> é vinculada ao RDM p.e. Um processador possui um RDM com capacidade de armazenar 64 bits em um REM com capacidade de armazenar 35 bits. A memória desse sistema tem 126 GB. Qual a capacidade máxima de endereçamento? Qual o tamanho da célula de memória? Qual o tamanho da palavra de memória? RESPOSTA: Se REM tem 35 bits -> 2^35 = 2^5 * 2^30 células -> 2^5 = 32 | 2^30 = Giga -> 32G endereços [endereçamento] Memória 128GB e 32G endereço -> 128GB / 32G endereço = 4B [Giga se anulam] -> 4B por endereço Cada célula possui 4B -> converter para bits -> 4X8 -> 32 bits tamanho da célula RDM tem 64 bits -> a palavra, nesse caso, corresponde ao RDM -> 64 bits possui a palavra > A CPU comunica-se com a memória através de um barramento [de dados] e utiliza os registradores RDM e REM para o envio e recebimento das informações Memória secundária não é a memória básica de um sistema [são diferentes] Memória cache é a memória volátil para armazenamento de dados e programas > Para validar o uso da memória cache nas arquiteturas modernas de computadores, foram realizadas algumas pesquisas para compreender o comportamento dos programas. Essas características observadas podem ser resumidas no: princípio de processamento sequencial e pipelining princípio da integração entre UCP / Memória / Dispositivos E/S Certo princípio da localidade temporal e localidade espacial princípio do subsistema de memórias e barramentos múltiplos Página 28 OC notas de aula.txt princípio da velocidade de acesso e capacidade de armazenamento > A eficiência da memória cache é medida utilizando: Certo O total de acertos (cache hit) dividido pelo total de acessos, multiplicado por 100 O total de acessos dividido pelo total de acertos (cache hit) O total de acessos dividido pelo total de erros (cache miss) O total de acessos dividido pelo total de acertos (cache hit), multiplicado por 100 Erro O total de erros (cache miss) dividido pelo total de acessos TC: 88% ORG COMP - A10 _______________________________________________________________ LV: capítulo 15 de Fundamentos de Arquitetura de Computadores – Raul Fernando Weber NA: > dispositivos > subsistema de entrada e saída >> assunto bastante abrangente, envolve todos os periféricos de um computador, cada um com características bem específicas >> principais conceitos de funcionamento para que possam ser adequados aos periféricos atuais e futuros > atividade de E/S (entrada e saída) -> é a troca de informações entre o computador e o meio externo: -> Um sistema de E/S deve ser capaz de receber e enviar informações ao meio externo e converter as informações de maneira que se tornem legíveis para o computador ou para o usuário -> Cada dispositivo apresenta características bem particulares, tornando o estudo de cada tipo de dispositivo único > características dos dispositivos: taxa de transmissão / aplicação / complexidade de controle / unidade de transferência /representação de dados / condições de erro * A arquitetura de E/S deve especificar um método para identificação do dispositivo, o endereço do dado a ser transportado, a quantidade de dados a serem transportados e um método que identifique o término da operação de E/S > componentes dos dispositivos são: periférico, interface, controlador, barramento, porta de E/S >> periférico -> Dispositivo conectado a um computador de forma a permitir a comunicação com o mundo externo >> interface -> Componente que conecta o periférico aos barramentos do computador >> controlador -> Implementa as operações (lê, escreve...) >> barramento -> Conjunto de circuitos impressos que transportam os sinais >> porta E/S -> Endereço no sistema de E/S *ver imagem -> a10_oc_figura1.png > Endereçamento de E/S >> Utiliza um conjunto de registradores internos ao controlador que recebem ordens do processador e fornecem o status de uma operação Página 29 OC notas de aula.txt >> Os registradores são associados a endereços e podem ser implementados de duas formas: em espaço de memória e em espaço de E/S -> espaço de MM >> Na fase de projeto do computador é definida uma zona do endereçamento de memória que será utilizada para dispositivos de E/S / Programação com instruções de acesso a memória (mov) -> espaço de E/S >> Instruções especiais para manipulação de dispositivos / No projeto do processador são definidos dois espaços distintos de endereçamento > Os dispositivos podem ser classificados em três formas, que são: quanto a interação, quanto a transferência de dados e quanto a forma de comunicação >> interação -> com usuário (teclado, mouse p.e.) / com outros componentes (discos p.e.) / dispositivos remotos (modem p.e.) >> transferência de dados -> orientado à bloco (disco p.e.) / orientado à caractere (terminal p.e.) >> forma de comunicação -> Programmed I/O - Responsabilidade do programador Interrupt-driven I/O - Processador é interrompido quando a operação se completa Direct memory Access (DMA) - Transferência dos dados diretamente para a memória sem interferência do processador > Tipos de transmissão de dados: serial, paralelo >> serial -> O periférico é conectado ao controlador por apenas uma linha de comunicação de dados; logo, a transferência é feita por um bit de cada vez (USB, PCI Express, SATA, p.e.) >> paralelo -> Um grupo de bits é transferido simultaneamente através de um conjunto de linhas de comunicação (MCA, ISA/EISA, AGP [monitores -substituídos pelo PCI] p.e.) > Memória secundária >> São os meios de armazenamento não-volátilcomo, p.e., os discos magnéticos >> A organização destes discos é particularmente importante pela função que exercem -> discos magnéticos são divididos em setores, trilhas e cilindros * ver figura -> a10_oc_figura2.png > O desempenho de um disco é medido pela velocidade de localizar uma informação > Considera-se que o disco roda em velocidade constante para posicionar a cabeça na trilha > Para calcular o desempenho de um disco, são computados: o tempo seek (tempo gasto para posicionar o cabeçote em uma trilha), o atraso rotacional (tempo gasto para posicionar um setor - latência) e a transferência (tempo gasto para transferência de dados - bytes) -> O tempo T de transferência de um conjunto de dados é dado por >> T = T'seek + T'atraso + T'transf T'seek = n .m + S [n- número de trilhas / m- constante, depende do disco / S- startup time] T'atraso = 1/2r [r- velocidade de rotação] T'transf = b/rN [N- qtd de bytes na trilha] *Quando o arquivo a ser transferido está organizado de forma sequencial, o tempo Página 30 OC notas de aula.txt de seek somente será computado para a primeira trilha > Existem, ainda, estratégias para atendimento às requisições, fornecidas pelo SO, denominadas estratégias de escalonamento de disco >> podem ser baseadas na ordem dos pedidos, na localização e na localização segmentada >> ordem dos pedidos -> FiFo [mais simples / atendimento na ordem dos pedidos]; Prioridade [fora do controle do gerenciador]; LiFo [diminui o movimento da cabeça de leitura em arquivos sequenciais] >> localização -> SSTF (shortest service time first) [Fila é reordenada para atender às requisições de forma a minimizar o movimento da cabeça / Possibilidade de starvation]; Scan (elevador) [Variação do SSTF, porém estipula uma direção preferencial / O sentido se inverte ao final da varredura]; C-Scan [semelhante ao Scan, porém com um único sentido] >> localização segmentada -> N-step-Scan [Divide as requisições em filas de tamanho N / As requisições de cada fila são processadas em conjunto / Novas requisições são colocadas em novas filas / Para valores grandes de N, é semelhante ao SCAN / Para N = 1, equivale a FIFO]; FSCAN [Utiliza duas filas / Enquanto uma fila está sendo atendida, novas requisições são colocadas na outra fila] VA: > componentes do sistema E/S: periférico [dispositivo conectado ao computador, p.e. mouse] interface [componente que conecta o periférico ao barramento, p.e. usb] controlador [hardware por trás da interface - um chip] barramento [conjunto de fios que transportam os sinais] portas de E/S [endereço no sistema E/S] > tipos de endereçamento > utiliza um conjunto de registradores internos ao controlador que recebem ordens do processador e fornecem o status de uma operação > os registradores são associados a endereços e podem ser implementados de duas maneiras: em espaço de memória e em espaço de E/S > Seek -> tempo gasto para posicionar o cabeçote em uma trilha > atraso rotacional -> tempo gasto para posicionar um setor (latência) > tranferência -> tempo gasto para a transferência de dados efetivamente >> estratégia baseada na fila de requisição -> FiFo [First in First out]; Prioridade [fora do controle do gerenciador]; LiFo [Last in First out] >> baseada na localização -> SSTF (shortest service time first); Scan (elevador); C-Scan [semelhante ao Scan, porém com um único sentido] TC: 100% OC - REV A1-5 _________________________________________________________________ A1 > princípios de funcionamento do computador > máquina destinada ao processamento de dados, capaz de receber instruções com o objetivo de transformar esses dados e alcançar um fim > entrada -> transformação -> saída dados -> processamento -> informação > hardware é parte física do computador [tudo aquilo que tocamos] - é formado pelas placas, pelos componentes eletrônicos Página 31 OC notas de aula.txt > software é a parte lógica [o que instalamos e programamos] > processamento de dados -> HW e SW > Formatos de computador: desktop / laptop [notebook] / netbook / tablet / smartphone > barramentos [a comunicação dos componentes de HW - caminhos para transferências de bites] -> endereçamentos / transferência de dados / controle [leitura ou gravação na memória] > SW - sistema operacional e aplicativos instalados no SO > SW - desenvolvimento - programa [fonte] >> compilador >> objeto [código intermediário] >> ligador [link edição] >> executável [transforma os dados em ações no SW] > o computador: | usuários [programadores / sistemas e aplicativos] <-> sistema operacional [DOS, WIN, LINUX, MAC-OS] SW | | device drivers [IOS, Android, WPhone] ____|__________________________________________________________________ | | UCP [Intel - Atom, i3, i5, i7] / RAM [Turion, Sempron] [Poder de processamento] HW | | Dispositivos E/S [Troca e armazenamento] > Processamento de dados é a tarefa de transformar dados em informações > Essa tarefa pode ser executada por um computador > para que o computador faça uma tarefe é necessário que exista um programa que determine com esta tarefa será executada > para o desenvolvimento de um programa utilizamos uma linguagem de programação [alto nível] > o programa escrita nessa linguagem é transformado em código de máquina por meio dos processos de compilação e ligação A2 > unidades de armazenamento de dados > utilizamos o sistema decimal, no qual temos algarismo de 0 a 9, representando valores de unidades, dezenas, centenas, etc. > dependendo da posição [notação posicional] o algarismo assume um valor diferente > cada posição corresponde a uma potência de base começando em ZERO [mais à direita] > p.e. -> 258 na base 10 ou 258¬10 -> 2*10^2 + 5*10^1 + 8*10^0 > base binária 0 1 2 3 4 5 6 7 8 9 [b10] > base binária 0 1 [b2] > base hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F [b16] > todas essas bases são posicionais - a posição está relacionada a potência da base > base binária -> BIT [BInary digiT] >> 0 ou 1 >> cada posição pode ter 2 valores 1 bit: 0 1 -> 2 = 2¹ possibilidades Página 32 OC notas de aula.txt 2 bits: 00 01 10 11 -> 4 = 2² possibilidades n bits: 00n 01n -> 2^n possibilidades > conjunto de oito bits representa um Byte > múltiplos do Byte: KiloByte 2^10 MegaByte 2^20 GigaByte 2^30 TeraByte 2^40 PetaByte 2^50 ExaByte 2^60 ZetaByte 2^70 YottaByte 2^80 > 1 MB = 2^10 = 1024 > 1 MB é 1 KB multiplicado por 2^10 -> 1MB = 2^10 * 2^10 = 2^20 > para uma determinada base B, empregando-se n dígitos pode-se representar B^n combinações distintas > considere, p.e, a representação em base decimal com 3 dígitos. Esta representação fornece 10^3 (portanto, 1000) números distintos (000 a 999) > se, no entanto, utilizarmos a base binária, para os mesmo 3 dígitos, tem-se 2^3 (portanto, 8) números distintos (000 a 111) A3 > representação da informação > conversão entre bases decimal -> binário decimal -> hexadecimal binário -> hexadecimal hexadecimal -> binário > conversão D->B REGRA >> os restos da divisão pela base [de trás para frente - o primeiro resto será quando o quociente for igual a zero] irão formar o número convertido p.e. número 14 14 |2_ 0 7 |2_ 1 3 |2_ 1 1 |2_ 1 0 então,
Compartilhar