Você está na página 1de 16
WUT ET SR Unidade 3 SEO ue culo Ren ao) Nesta unidade de ensino, trabalharemos quatro tépicos tematicos: Estudaremos desde conceitos, simbologia e representacao até a maneira de realizarmos os cAlculos entre as respectivas bases. Para a compreensiio desta se¢o, precisamos entender que: ‘Toda representacao de um sistema numérico é formada pelo néimero correspondente e sua base. A base deve sempre ser representada de forma subscrita, representando o valor da base ‘em questao. Osistema bindrio € representado por Oe 1. Exemplo: 10010123. Osistema decimal € representado pela base 10 e possui digitos de 0 a9. Por Gltimo, o sistema hexadecimal € representado pela base 16. Seus digitos JAo sistema octal possuia base 8 e é sao representados de 0 a 9, acrescidos representado por digitosde0 a7, de A,B, C, D, Ee F. Sua notagao é ficando assim: 5428. FA4116. Quando trabalhamos com bases numéricas, temos de considerar que esses nimeros podem ser convertidos entre as bases. Por exemplo, podemos receber um ndimero decimal, como uma temperatura. Esse ntimero pode ser convertido para outras bases, como a bindria ou hexadecimal. Veremos o processo de conversdo em nossa proxima secao. Para iniciarmos nossos estudos, antes de mais nada precisamos lembrar de alguns conceitos basicos: BIT e sistemas numéricos. Vem dot bindrio € omenor elemento de informacao qui er eee nd fOr OR a Renee alee) ERT ueE:Ly Aquitetura de um processador Uma definicao de arquitetura de um processador deve vir acompanhada, obrigatoriamente, da indicacdo de como o numero bindrio é considerado, sendo que existem duas possibilidades. Para ler 0 ntimero bindrio da esquerda para a direita (dizemos que o MSB é 0 primeiro e o LSB € 0 Ultimo. MSB é uma sigla para o bit mais significative e LSB é o bit menos significativo. Se o primeiro é o MSB, ele é 0 que representa o maior valor, sendo que o numero deve ser lido da esquerda para direita. Entretanto, existem arquiteturas que o primeiro bit é o LSB e o ultimo é o MSB, fazendo com que o numero seja interpretado de maneira invertida. A sua segunda tarefa é melhorar o tamanho e qual sera a forma da instrugdo escolhidos para o projeto de um processador. Considere que vocé, profissional de computa¢ao, foi contratado Para desenvolver um novo nucleo para um processador e precisa agora resolver diversos problemas relacionados a arquitetura do processador. E necessdrio que vocé, como projetista, crie todo um conjunto novo de instrugdes que sera utilizado como base para a construcdo do processador. Questionamentos: Qual seria o tamanho desta instrucao? O que é necessario representar nesta instrugdo? Sabendo que uma instrugdo é nada mais que um conjunto de algarismos binérios, sendo assim, 0 que cada um destes algarismos representa? Qual parte da informagao deve colocada em cada parte dos bits? Existe uma regra? A instrugao referencia espacgos na meméria que serdo utilizados para recuperar informagdes para o processador e, também, para salvar os resultados de processamento. Estas informagées deverdo também ser incluidas no projeto da instrugéio, porém, como fazer isso da melhor forma possivel? = Toda a informagio utilizada em um processador deve ser armazenada, por isso sempre que compramos um computador verificamos algumas informacées tais como: sua capacidade de memoria RAM, seu HD, se o processador possui um, dois ou trés niveis de memoria cache . * O tamanho da memoria esta diretamente relacionado a complexidade de seu gerenciamento. " Aunidade basica de armazenamento ¢ 0 registrador. = Existe no processador um banco de registradores. " Este banco de registradores funciona da seguinte maneira: vocé passa um endereco de um determinado registrador e 0 bloco de hardware retorna seu contetido. Banco de Registradores Endereco: 000 001 010 011 100 101 contetdo:} 5 | 8/8] z] 5 :| v Entrada de 3 bits Banco de | registradores Saida de 4 bits Manipulacgdo dos registradores O acesso ao dado é feito por meio do enderegamento direto, ou seja, 0 endereco enviado é 0 préprio endereco do registrador & ativa apenas o setor da meméria correspondente, tornando este tipo de acesso extremamente répide e permitindo que seja implantado dentro do processador para o armazenamento de informages. ‘A manipulacdo dos registradores 6 realizada por melo de instrugdes dos processadores, do tipo |, tipo Re tipoJ. aaa As instrugdes do tipo | manipulam enderecos de meméria ou constantes. ‘As instrugdes do tipo R podem realizar a manipulacdo e as operagées entre registradores. ‘As instrugées do tipo J realizam desvios de instrugdes a serem executados. Processadores MIPS Hennessy e Patterson (2017) propdem um _ processador chamado MIPS, cuja arquitetura foi utilizada como base de diversos processadores comerciais. O MIPS possui 32 registradores (do registrador 0 ao registrador 31) que armazenam dados de 32 bits de tamanho. Sendo assim, como deve ser o projeto deste banco de registradores considerando os bits de entrada e de saida? Para representar os 32 registradores é necessdrio um barramento de enderecos de 5 bits, uma vez que 25 = 32, ou seja, (registrador 0 — 00000b, ao registrador 31 — 11111b) e um barramento de saida de dados de 32 bits. Arquitetura de Von Neumann x Arquitetura de Harvard + Nas duas arquiteturas, © computador possui quatro componentes bésicos: meméria, unidade de controle, unidade l6gica aritmética (ULA) e entrada/saida de dados. + A diferenca basica entre estas duas arquiteturas 6 o fato de que na arquitetura de Von Neumann a meméria de programa e a memGria de dados esto fisicamente no mesmo chip. + No caso da arquitetura de Harvard existe uma separacao fisica real da meméria de dados e da meméria de programas 0 que gera um custo maior de implantagao porém, a protegdo é maior visto que se um virus for executado, ele iré afetar apenas a meméria de programa sem que os dados sejam perdidos. Hierarquia de memorias + Apds entender os registradores e os tipos de arquiteturas, 0 préximo passo é entendermos a unidade de controle e a parte de entrada/saida de dados. * Sem este entendimento seria complexo demais compreender como é formado um conjunto de instrucées. * Na hierarquia de meméria, quando um dado nio esta armazenado em um registrador é possivel que esteja ou na memiéria principal (representada em nosso sistema por niveis secunddrio de cache e também pela meméria RAM) ou na memoria secundaria (representada pelo HD). Instrugdo * Em uma instrugao é possivel também acessar enderegos de memoria que nao sdo enderecos de registradores e, nestes casos, € necessdrio que se tenha o endereco propriamente dito do dado ou ent&o que se passe o valor numérico a ser trabalhado pelo processador. * Este tipo de enderegamento é chamado de imediato e ira gerar um tipo especifico de instrucdes. * Apos apresentar alguns conceitos basicos, vamos a defini¢ao de instrugao: * Segundo Hannessy e Patterson (2017), uma instrugdo é um conjunto de bits (0’s e 1’s), entendidos pelo processador como sinais eletrénicos, que podem ser representados por um conjunto de numeros. + Cada um destes ndmeros representa algo especifico para o processador c a juncio destes numeros em uma palavra unica é 0 que chamamos de instrugao. * Para entender o papel de uma instrug3o vamos analisar os blocos que compdem o processador e 0 que cada um deve receber e comose da o caminho dos dados através dos blocos. ance de Cr registroores Toad] Programe ‘ee docos O conceito de instrugdo deve ser assimilado de forma completa. Portanto vamos utilizar uma imagem que representa uma instrugéo de 32 bits com a mesma divisdo proposta por Hennessy e Patterson (2017) para visualizar um projeto real. 00000001010101010101011111001100 15 bits para 6 bits para os operandos fungao 6 bits para 5 bits para operacao deslocamento Modos de enderecamento em processadores O simulador é um programa gratuito gerado em java (jar) que deve ser apenas executado. Ex.: os valores nos registradores e realizar a sua soma. O processador que iremos projetar deve ser simples, porém pode ser pensado para um tipo de operagées especificas. Os processadores possuem sempre uma unidade que deve ser especializada na execucdo de operagées aritméticas como soma, subtraco, divisdo, multiplicagdo, dentre outras . A segunda questéo importante é que este conjunto de instrugdes deve ter definido um tamanho de palavra que o processador serd capaz de aceitar. Considerando que o processador teré de se comunicar com outros blocos possivel escolher um tamanho de palavra padrao. Os processadores mais novos esto operando em 64 bits (que é tamanho da sua palavra), porém, o nosso processador pode ser projetado considerando que um dado de 64 bits ird precisar de toda uma estrutura de suporte maior como o barramento de transmissao de dados, os registradores para armazenar 0s dados, dentre outras estruturas. Sendo assim, para manter um tamanho de arquitetura pequeno e compativel com os projetos j4 executados no mercado vamos optar por uma arquitetura de 32 bits. As duas primeiras etapas foram entdo cumpridas e justificadas. Veja: vocé como projetista poderia escolher qualquer numero de bits e um nticleo especializado em outras funcées. Porém, modificar estas caracteristicas do problema exige normalmente conhecimentos mais avancados sobre as aplicacdes para as quais 0 processador seria desenvolvido, e um tamanho maior de palavra deve ser justificado com a necessidade de mais bits para representacao. Um numero muito pequeno destes bits pode causar um problema caso sua arquitetura do processador precise passar por um upgrade e isso também deve ser considerado. Agora, para cada um dos bits, ou conjunto de bits, devemos escolher uma funcionalidade correspondente. Como ainda néo conhecemos a fundo as funcionalidades necessarias, é possivel tentar sem medo definir este modelo de instrugdo. Mais a frente no estudo de arquitetura de computadores poderemos analisar a resposta que demos aqui e entender o motivo de ser boa ou ruim para determinados aspectos. O processador lida normalmente com operagées numéricas, sendo que os nuimeros envolvidos estaréo armazenados em uma memoria. Assim existe a necessidade de dois tipos de campos: um onde acessamos o niimero em um registrador (como nas instrugdes do tipo R apresentadas) e outro que o numero é obtido diretamente na instrugéo (como nas instrugdes do tipo | apresentadas). Existem processadores inteiros como o MIPS (HENNESSY, PATTERSSON, 2017) que sdo definidos com 32 instrugdes e outros como os processadores que possuem centenas. O numero de bits que reservarmos para o tipo de instrugio deve ser capaz de identificar unicamente cada uma delas. Sendo assim podemos deixar 1 byte para a identificagaio de instrugdes, ou seja, 8 bits. Também é comum reservar bits para controle da arquitetura que no nosso caso serao 6 bits. Os outros 18 bits podem ser divididos da seguinte maneira: para instrucées do tipo R, trés grupos de 6 bits, e para instrucées do tipo | dois campos um de 6 bits e um de 12 bits. Vamos analisar esta resposta. Reservando 1 byte para instrugées poderemos identificar unicamente instrugdes, ou seja, 256. Este ntimero é razodvel jé que estamos projetando um processador apenas para cdlculos matemiticos, pois so poucas as possiveis operacdes matemiticas. Os outros 6 para controle do sistema sao importantes ja que podem ser utilizados para configurar outras partes do processador. Neste caso permitimos, com 6 bits, que existam opgées de configuracdes totalizando 64 o que é suficiente também para o controle dos blocos ldgicos. O tipo R possui 3 campos de 6 bits cada. Um campo de 6 bits para o endereco de um registrador (lugar onde fica armazenado um valor na memoria) permite enderecar 64 registradores (do 0 ao 63). Normalmente, um projeto de processador simples nao possui mais que 40 registradores sendo um numero aceitavel. Por fim, para a instrugdo do tipo I, temos novamente os 6 bits para enderecar um registrador mantendo o padrao anterior. No caso da parte imediata deixamos 12 bits, isso quer dizer que quando o programador do processador quiser passar um numero direto para o processador poderd usar apenas do 0 ao 4095. Pronto, projetamos assim a nossa instru¢do de 32 bits com: 8 bits para identificag3o da instrug3o. 6 bits para controle do processador. 18 bits para informacées sobre os operandos. No tipo R sao trés enderecos de 6 bits para os registradores. No tipo | 6 um conjunto de 6 bits para um enderego e 12 bits para um numero imediato. A segmentacio de instrugdes (em inglés, pipeline) 6 uma técnica de hardware que permite que a CPU realize a busca de uma ou mais instruges além da préxima a ser executada Suponha que vocé tem que arrumar a sua roupa suja, para isso vocé necessita: (a) Lavar, (b) Secar, (c) Passar e (d) dobrar cada peca de roupa “S70 74S 300 38 am NS AOD ons ox 0s 100 10 Ms 200 Temo Carga de roupa Para incrementar a eficiéncia de nosso processo_podemos realizar o seguinte processo: primeiro lavamos a | peca; tiramos a! peca e colocamos no secador e simultaneamente lavamos a Il peca; tiramos para passar a | pega, colocamos para secar a Il e adicionamos uma Ill na lavadora; finalmente dobramos a |, passamos a I, secamos a Ml e lavamos a IV; repetiremos esse processo sobre todas as pecas e vemos que temos um sistema trabalhando em paralelo. Faz o paralelismo de instrucdes, aumentando a eficiéncia na execucdo das instrucées. O pipeline nao reduz o tempo de uma instrucao, mas agiliza o desempenho de um conjunto de tarefas. + A divisdo das etapas de execucdo da instrucdo permite que as areas que ja foram utilizadas possam executar a proxima instrugao e este conceito é o que chamamos de pipeline. * Quanto maior o numero de estagios no pipeline, maior o numero de instrucdes que podem ser executadas. Pipeline (no exemplo de 4 estagios): + Para ele funcionar as instrugées deviam ser do mesmo tamanho o que impossibilitou os processadores CISC aderir a essa estratégia a solucdo foi colocar um decodificador de instrug6es que tomava as complexas instrucgdes e transformava para um conjunto resumido de instrugées: Intruction Fetch, Instruction Decode, Execute, Memory access, register Write Back. N Cargade aan wo 4 Ganho de Desempenho com Pipeline eg eso 2 ie 3 esto esto 6 ins 7 eso inset esto 10 — Tempo O conceito de paralelismo atualmente é muito difundido, principalmente, pelo aumento de nucleos dos processadores. * Esses nuicleos so utilizados em paralelo para a execucdo de diversas tarefas do computador. * Porém, a tecnologia de se colocar varios nucleos em um Processador foi desenvolvida apds terem se esgotado as possibilidades de otimizagéo em apenas um nucleo. * Esta otimizagdéo ocorreu por muito tempo considerando o aumento no clock do processador e no ntimero de instrugdes que se conseguia executar em um mesmo ciclo de clock. * As limitagées encontradas no desenvolvimento foram fisicas. Caminho de dados com representacao da diviséo Contador programa O bloco 1 representa a fase de busca, identificavel pela presenca do contador de programa (PC), 0 bloco 2 seria a decodificacdo pois além de receber informacées do bloco 1 esta antes da unidade ldgica aritmé (em inglés, ALU — arithmetic logic unit), o bloco 3 por conter a ALU é 0 bloco de execucao e, por fim, o bloco 4 é 0 responsavel pela configuracao da gravacao em memaria. v Um software pode ser compilado, interpretado e traduzido ou pode utilizar uma técnica hibrida para que as instrugdes sejam executadas. Y Nesse processo, 0 cédigo escrito em uma linguagem de programagio de alto nivel, como Java, C++, C#, seré convertido em um cédigo intermedidrio e, no caso dos programas compilados, convertido novamente para gerar os comandos que o processador é capaz de executar. v Esse cédigo intermedidrio ¢ chamado de linguagem de montagem ou assembly. v Essa linguagem foi criada com objetivo de facilitar o trabalho para os programadores, que anteriormente deveriam saber os codigos binarios de cada instrugdo para poder programar. Compiladores O compilador é um programa que possui como entrada um arquivo de determinada linguagem de programac3o e retorna um programa executdvel de uma determinada linguagem, para uma determinada arquitetura. Existem dois grandes grupos de operagées que sao executadas: as operacées de analise, que englobam operacées especificas do compilador, e as operacées de sintese, que sio voltadas para a geracdo do cdédigo em si em uma arquitetura- alvo e englobam a geracdo de um cédigo intermediario, a otimizacdo desse cddigo e a geragao de um cédigo-objeto, que sera executado pelo processador. Programacdo em linguagem de maquina O conjunto de instrugdes de um processador é a base para a construcao de sua arquitetura, como visto anteriormente. Nao € possivel adicionar uma instrugéo ao conjunto de instrugdes sem que exista o caminho de dados necessario para sua execucao. Caso seja uma instrucao basica necessaria para o correto funcionamento dos programas, é necessario modificar o hardware. A vantagem de se definir tipos de instrucdo, como fizemos anteriormente, é que qualquer instrucdo que utilize um hardware existente e possa ser expressa em um dos formatos basicos pode ser adicionada ao conjunto sem problemas. Para acessar um registrador, utilizamos, em uma instrug&o, 0 cifrao $ seguido do nome do registrador. No caso de um valor armazenado na meméria, é necessdrio carrega-lo para um registrador, utilizando a instrugdo lw. O resultado de uma operacio, que deve ser gravado na mem6ria, tem que inicialmente ser salvo em um registrador e, em seguida, carregado para a memoria com a instrugado sw. Agora, vamos explicar os tipos de instrugdes, iniciando com as instrucées do tipo R, que possuem o formato: nome da instrugao, registrador de destino, registrador de origem 1, registrador de origem 2. Os campos de deslocamento (shamt) e de fungdo, sdo preenchidos automaticamente quando o cddigo bindrio é gerado a partir da linguagem de maquina. Exemplos T)addsou seh So ocnico drIcomearmaaemnk_| » Fama dint Rp ese camps 2) ads 902 Somtocotide dev com 2 ve cea ana dre err oto ¢ mm 3) wasdgn | Stav oct der da coco rma Sams oveadn on, +] aetanse lin pea dato ete ore amnnetarsnttetaecacer wade =] anda n.g2 | mein cpraio de act orbs arm « Sr $1.92 ‘Seo contendo der for menor que o condo de ‘amma | ts coi sara 7] abet shat Armen en oss ret amannados mr, dvocaos paras eager na quae | press por sat (um tet). Considerando que o hardware esta pronto, € possivel criar uma tabela com possiveis instrugdes e com os ajustes a serem feitos na arquitetura, que serdo realizados pelos outros idealizadores do projeto. Lembre-se de que buscamos uma arquitetura otimizada. Y add $r1. 2 RI recebe a soma entre o que éarmazenado. emrler2 2 mult Sri Ril recebe a multiplicacao entre o que é armazenado em rl ¢ 12. 3 ‘or Srl, Sr2 RI recebe 0 “ou” logico entre os bits que ‘cata armazenadem om tle £2. 4 and $11, $2 RI recebe 0 7€" logica entre os bits que lestao armazenados em Tl ¢ F2. S inv Se Fi recebe o inverse de valor que ort arma zenado em r1.ou seja,-r1. 6 bar $risr2.sr3 Seo conteado de ri for igual ao conteudo de 12. desvia.se 9 contador de programa para a posicao de memoria de programa, indicada em 13, 7 bar $r1,SF2, $3 ‘Se conteudo de r1 for diferente do contea- do de 12, desvia-se 0 contador de programa Para a posisao de memoria de programa indicada em £3. * eset ‘© contador de programa é levado diret mente ao endereso armazenado em rl. 9 jisri ‘© contador de programa é levado direta- ‘mente ao endereco armazenado em re Salva seu estado atual no registrado $ra, 10 Be Sed $3, Sri ‘© enderero armazenado om +3 wiilizado para deslocar o endereco armazenado em FI c encontrar o local exato (na meméria de dados) de um dado que é salvoem rd

Você também pode gostar