Okay. Então, agora, vamos mudar temas e começar a falar sobre o nosso primeiro técnico tema deste curso. E, como uma introduусo ao computador arquitetura, nós vamos estar falando sobre o que é a arquitetura contra microarquitetura. E, eu quero apenas dizer que brevemente, como você tomar esta classe, os três primeiros palestras ou assim deveria ser revisto. Então, se você está sentado na classe e você está dizendo, oh, eu já vi tudo isso antes. Nсo se levante. Esperar até a palestra quarto ou quinto, e então o conteúdo se torne de novo. E isso é porque eu quero ensinar tudo, desde os primeiros princьpios e obter todos atж a velocidade. Mas, ж que, nos primeiros trЖs palestras estсo a ir muito rрpido. Entсo, se vocЖ estр perdido nos trЖs primeiros palestras, que deve ser crьtica, entсo que provavelmente ж um mau, indicador. Entсo, vamos comeуar falando sobre arquitetura contra micro-arquitetura. E eu queria dizer brevemente o que eu quero dizer com arquitetura. E eu, que tenho, neste slide aqui, um muito Um grande para o que eu vou Яs vezes chamam, grande A arquitetura. Assim, seu, Patterson Hennessy chama isso, arquitetura do conjunto de instruушes, e quando eu Compare isso com micro-arquitetura, ou Patterson Hennessy chama organizaусo. Assim, a arquitetura Um grande ж uma abstraусo fornecida a camada de software, ou instruушes definir arquiteturas ou camada de abstraусo fornecida para software que ж projetado para nсo mudar muito. E, ele nсo diz, ele, ele diz como um teзrica fundamental, tipo de mрquina, executa programas. Ele nсo diz exatamente o tamanho da estruturas diferentes, o quсo rрpido os as coisas iriam correr, a implementaусo exata questшes, que cai em organizaусo. E, uma das coisas que eu queria enfatizar ж que a arquitetura de computador ж tudo sobre trade-offs. Entсo, quando eu digo que ж tudo sobre vantagens e desvantagens, vocЖ pode tomar decisшes diferentes do projeto se aqui na arquitetura Uma grande ou a arquitetura do conjunto de instruушes, e que vai influenciar a aplicaусo ou influenciar o microarquitetura, mas tambжm vocЖ pode fazer diferentes decisшes de design aqui e fazer um monte de vantagens e desvantagens diferentes sobre como ir sobre a implementaусo de um determinado arquitetura do conjunto de instruушes. E, principalmente, quando vocЖ vai olhar para arquitetura de computador e de computador arquitetura de implementaусo, o projeto espaуo ж relativamente plana. Hр uma espжcie de um ponto зtimo onde vocЖ, vocЖ quer ser, mas os outros pontos em torno dele muitas vezes nсo horrivelmente, terrivelmente ruim. Embora haja, vocЖ sabe, no, no extremos design, provavelmente terrivelmente ruim decisшes. Mas, vocЖ sabe, um monte de design diferente pontos sсo, sсo igualmente boas ou, ou perto a ideal. E, o trabalho de um arquiteto de computadores ж tomar as decisшes de design muito sutis em torno de como vocЖ se move em torno deste ponto para tornр-lo mais fрcil de programar, vive durante muitos anos, ж de baixa potЖncia, e esta espжcie de outro, um pouco de estжtica caracterьsticas misturados com apenas fazer o processador do computador ir mais rрpido, vamos dizer. E esses compromissos, eu, eu re, vontade Reiteramos esta e outra vez neste classe que, porque existe mЩltipla mжtricas diferentes. Assim, por exemplo, a velocidade, a energia, o custo, e eles tradeoff uns contra os outros, muitos vezes, nсo hр qualquer necessidade зptima ponto. Depende, vocЖ sabe, vocЖ ж mais custo driven, energia ou conduzido, ou a velocidade conduzido. E, dentro desse ponto, hр uma espжcie de algumas vezes Pareto curvas зpticas onde todos dos pontos sсo, sсo igualmente bom se vocЖ estр tentando negociar fora esses diferentes coisas para modelos de custos diferentes. Okay. Entсo, vamos, vamos falar sobre o que ж um arquitetura do conjunto de instruушes, eo que ж uma microarquitetura. Assim, uma arquitetura de conjunto de instruушes, ou grande A arquitectura ж tentar proporcionar a programador de algum modelo de mрquina abstrata. E muitas vezes o que ж, o que realmente resume a ж que ж tudo o programador estado visьvel. Assim, por exemplo, como, faz a mрquina tem memзria? Serр que ela tem registros? Entсo esse ж o, que ж o programador estado visьvel. Abrange tambжm a fundamental operaушes que o computador possa executar, de forma estes sсo chamados de instruушes. E, ele define as instruушes e como operam. Assim, por exemplo, adicionar. Adicione pode ser uma instruусo fundamental ou operaусo fundamental em seu compu, arquitetura do conjunto de instruусo. E, diz, a semРntica exata sobre como para tomar uma palavra em um registro e adicionр-lo a outra palavra em um registrador, e onde acaba, acaba. Entсo, nсo hр mais complicada execuусo semРntica. Entсo, o que queremos dizer com a execuусo semРntica? Bem, se vocЖ acabou de dizer acrescenta tomar dois nЩmeros e somр-los e colocр-los em outro registro, que muitas vezes faz nсo abranger todo o conjunto de instruушes arquitetura. VocЖ vai ter outras coisas acontecendo, para instРncia, IO interrupушes, e vocЖ tem que definir, em seu conjunto de instruушes arquitetura, ou o seu computador Um grande arquitetura que ж a semРntica exata de um interruptor, uma instruусo, ou um pedaуo de dados que entram em um IO. Como ж que interagem com o resto do o processador? Assim, muitas vezes a execuусo de instruушes semРntica ж apenas metade do que eu, e nзs temos se preocupar ж o, o resto do execuусo semРntica da mрquina. A arquitetura de grande tem de definir como o entradas e saьdas de trabalho. E, finalmente, tem de definir os dados tipos e os tamanhos da fundamental, o, as palavras de dados fundamentais que vocЖ operar. Assim, por exemplo, se operar em um byte em um momento, quatro bytes de cada vez, dois bytes de cada vez. Qual ж o tamanho de um byte se vocЖ realmente tem bytes? Assim, este sз fica em tamanhos. E entсo, os tipos de dados aqui pode significar que vocЖ tem outros tipos de dados fundamentais. Assim, por exemplo, o mais bрsico ж vocЖ tem apenas alguns pedaуos sentado, em, em um, em um registro em seu processador. Mas, pode ser muito mais complexo que vocЖ pode ter, por exemplo, algo como nЩmeros de ponto flutuante. Onde nсo ж apenas um monte de bits, ж pedaуos formatado de uma maneira particular, e tem um significado muito especьfico. Esse ж um nЩmero de ponto flutuante que pode faixa sobre, digamos, a maioria dos, a nЩmeros reais. Okay. Assim, na aula de hoje, vamos, passar por todos esses diferentes caracterьsticas e os requisitos de a construусo de uma arquitetura de conjunto de instruушes. Eu queria, vou falar sobre como ж diferente microarquitetura ou organizaусo. Entсo, vamos dar-se alguns exemplos de microarquitetura e organizaусo. Entсo, o que microarquitetura e organizaусo estр realmente pensando aqui ж as vantagens e desvantagens, como vocЖ estр indo para implementar um conjunto de instruушes fixas arquitetura. Assim, por exemplo, algo como Intel x86 ж uma arquitetura de conjunto de instruушes. E hр muitos diferentes implementaушes microarquitetura. Hр as versшes dos chips da AMD, e depois hр as versшes Intel do fichas, e atж mesmo dentro de, vamos dizer, a Intel versшes dos chips. Elas tЖm a sua versсo de alta performance para o laptop que parece uma maneira, ou, ou versсo de alto desempenho para, vamos dizer, um servidor ou um laptop de ponta que parece um caminho. E depois, hр um outro chip para comprimidos. Intel estр tentando chips para tablets estas dia e eles tЖm seus processadores Atom. E, internamente, eles parecem muito diferentes porque eles tЖm uma velocidade muito diferente, energia, custo, vantagens e desvantagens. Mas, eles vсo executar o mesmo cзdigo, e todos eles implementam a mesma instruусo definir arquitetura. Entсo, vamos olhar para alguns exemplos de coisas que vocЖ pode em um tradeoff microarquitetura. Assim, vocЖ pode ter gasoduto diferente profundidade, nЩmeros de dutos. Assim, vocЖ pode ter um pipeline do processador, ou vocЖ pode ter seis, como algo como o Core i7 hoje, tamanhos de cache, como o chip ж grande, a рrea de silicone, como, qual ж a sua potЖncia de pico. Execuусo de encomenda. Bem, ж que o cзdigo executado em ordem, ou pode executar o cзdigo fora de ordem? Isso mesmo. ╔ possьvel fazer um sequencial programa, e realmente executar mais tarde partes do programa antes anteriormente partes do programa. Esse ж um tipo de incompreensьvel, mas ж um maneira de ir sobre a obtenусo de paralelismo. E se vocЖ manter sua ordenaусo correta, coisas, coisas, trabalhar fora. Larguras de Зnibus, larguras de Alu, se vocЖ, se vocЖ ter, digamos, 64-bit mрquina, vocЖ pode realmente ir e implementar isso como um bando de 1-bit adder, por exemplo, e as pessoas ter feito coisas como essa no micro arquitetura. E, o que lhe permite construir mais versшes mais caros ou mais baratos de o mesmo processador. Entсo, vamos falar sobre a histзria de por que veio com essas duas diferenciaушes entre arquitetura e microarquitetura. E, isso aconteceu, porque o software ж tipo, empurrou-o em nзs e acabou sendo uma camada de abstraусo agradрvel. Entсo, de volta no inьcio dos anos 50, final dos anos 40, vocЖ tinha software que as pessoas principalmente programado ou em linguagem assembly, ou mрquina linguagem de cзdigo. Entсo, vocЖ tinha que escrever zeros e uns, ou vocЖ tinha que escrever cзdigo de montagem. E, em algum momento no, os anos 50 meados nзs comecei a ver showoffs biblioteca. Portanto, estes sсo uma espжcie de, ponto flutuante operaушes foram feitas mais fрcil, tivemos transcendentais como seno, cosseno bibliotecas, vocЖ teve algum matriz e solucionadores de equaусo. E, vocЖ comeуou a ver algumas bibliotecas que as pessoas podem chamar, mas as pessoas eram nсo necessariamente escrever o cзdigo por si ou escrever grandes massas de cзdigo em programaусo de montagem, pois ж, foi muito doloroso. E entсo, em algum momento, houve a invenусo de linguagens de alto nьvel. Entсo, um bom exemplo disso foi Fortran que saiu em 1956, e um monte de coisas veio junto com isso. Tivemos montadores, carregadores, linkers, compiladores, cacho de outro software para acompanhar como o seu software estр sendo usado mesmo. E, porque nзs comeуamos a ver estes linguagens de alto nьvel, este comeуou a dar alguma portabilidade para a programaусo. Nсo ж que vocЖ tinha que escrever o seu programa e tЖ-lo apenas mapeado para uma prog, um processador de sempre. E, de volta ao, os, anos 50, anos 60 atж perьodo de tempo aqui, as mрquinas necessрrias operadores experientes que poderia escrever o programas. E, vocЖ sabe, vocЖ, vocЖ tem essas mрquinas e eles tiveram que ser vendidas com um monte de software junto com eles para que vocЖ teve, basicamente, executar todo o software que foi dado porque ele era, vocЖ tinha que ser um, um programador de mestre ou alguжm que trabalhou para a empresa, mesmo, que construiu o mрquinas atж mesmo ser capaz de programar essas mрquinas de volta, no dia. E, a idжia de conjunto de instruушes arquiteturas, e estes a quebra microarquitetura da arquitetura realmente nсo existia naquela жpoca. E, de volta ao inьcio dos anos 60, a IBM tinha quatro diferentes linhas de produtos. E, todos eles sсo incompatьveis. Entсo, vocЖ nсo pode executar o cзdigo que vocЖ executou em uma sobre a outra. Assim, para dar um exemplo aqui, o, o IBM 701 era para a computaусo cientьfica. O, o 1401 foi principalmente para negзcios computaусo. Eu acho que eles ainda tinham uma segunda que tipo foi de para o negзcio, mas diferente tipos de computaусo empresarial. E, tipo de pessoas, comprado em uma linha. E entсo, como vocЖ, como a linha amadureceu e desenvolvido, eles tiveram que reescrever seu cзdigo, ou eles tiveram que ficar em uma linha. Mas, a IBM tinha algum, tinha algumas idжias malucas aqui ж que, eles nсo querem ter que, quando eles foram para a prзxima geraусo de processador, eles queriam uma para propagar estas quatro linhas. Eles queriam tentar unificar os quatro linhas. Mas, um dos problemas foi, estes linhas diferentes tiveram muito diferente implementaушes e transversais diferente pontos. Entсo, a Щnica coisa que estava construindo para computaусo cientьfica nсo era necessariamente a coisa que vocЖ quer construir para o negзcio computaусo. E, o que vocЖ construiu para negзcios computaусo, vamos dizer, nсo, vocЖ queria para nсo ter que tЖm flutuante muito bom apontar desempenho. Entсo, como fazer, como ж que eles vсo sobre como resolver isso? E a soluусo foi eles vieram para cima algo chamado de IBM 360. E, o IBM 360 ж provavelmente o primeiro arquitetura do conjunto de instruушes que era verdadeiro implementada para conjunto de instruушes arquitetura. E, a ideia aqui foi que eles queriam unificar todas essas linhas de produtos em um plataforma, mas, entсo, implementar diferentes versшes que foram especializados para o matriz de mercado diferente. Assim, eles podem construir, eles poderiam unificar muito de seu sistema de software, unificar um monte de o que eles construьram, mas ainda construir diferente versшes. Entсo, vamos, vamos dar uma olhada na IBM 360 Arquitetura do conjunto de instruушes, e depois falar sobre micro arquitetura diferentes que foram construьdas do IBM 360. Entсo, o IBM 360 ж um propзsito geral registrar mрquina, e nзs vamos falar mais sobre isso mais tarde nesta palestra. Mas, para se ter uma idжia, isso ж o que o programador viu, ou o que o software sistema via. Este nсo ж o que foi construьdo na hardware, porque isso seria um restriусo microarquitetura. Mas, o estado do processador tinha 16 uso geral de 32 bits registos. Ele tinha quatro registros de ponto flutuante. Ele tinha o controle, bandeiras, se vocЖ vai, teve um, uma cзdigos de condiусo e bandeiras de controle. E, era uma mрquina de endereуo de 24 bits, e no momento em que foi enorme. Entсo, dois para o 24 foi um nЩmero muito grande. Hoje em dia, nсo ж tсo grande e eles tЖm desde entсo se expandiu em que o IBM 360 sucessores. Mas, eles acharam que era bom para muitos, muitos anos, e isso foi bom para muitos, muitos anos. E definem um monte de dados diferentes formatos. Assim, nсo hр bytes de 8 bits, 16 bits meia palavras, palavras de 32 bits, 64 bits palavras duplas. E estes foram os tipos de dados fundamentais que vocЖ pode trabalhar, e vocЖ pode nomear esses diferentes tipos de dados fundamentais. E, na verdade foi o IBM 360 que veio com essa idжia que os bytes devem ser , 8-bits de comprimento, e que estр a viver, para para hoje, Porque antes disso, tivemos vрrias escolhas diferentes. Havia sistemas binрrios decimais de cзdigo onde a, ж, na verdade, que codificam uma nЩmero entre zero e nove anos e entсo vocЖ tЖm os dьgitos, cada um e ж Яs vezes, boa para, uma espжcie de planilha, cрlculos, ou cрlculos de negзcios, ou se vocЖ quiser ser muito preciso em seu arredondamento para o Щltimo centavo. E, Яs vezes, pouco baseados em coisas que nсo fazer realmente volta adequadamente ou o, fazer uma, ou vocЖ vai perder alguns centavos fora da final. E, assim que vocЖ tem estes decimal cзdigo binрrio sistemas e, tambжm, em IBM 360, eles, eles unificou tudo e disse, bem, nсo, nзs somos vai jogar fora certas coisas e fazer escolhas. Agora, eles, claro, porque ж a IBM 360 e que tinha negзcios aplicaушes, eles ainda apoiado binрrio cзdigo e decimal em um, de uma certa maneira. E, vamos olhar para a microarquitetura implementaушes desta primeira instruусo definir arquitetura. Entсo, a, e isto ж, em simultРneo quadro, da mesma geraусo aqui. Havia o modelo 30 e o modelo 70 e este foi muito, muito diferente caracterьsticas de desempenho. Entсo, se nзs, olhamos para a mрquina, vamos comeуar por olhar para o armazenamento. A, o modelo de gama baixa aqui tinham entre oito e 64 kilobytes, e no final elevado modelo tinha entre 256 e 512 kilobytes. Entсo tamanhos, muito, muito diferentes. E, ж isso que eu estou tentando passar aqui ж que pode microarquitetura realmente mudar um pouco, embora a arquitetura suporta 64-bit acrescenta adiушes, vocЖ pode realmente implementar caminhos de dados de tamanho diferente. Assim, na mрquina de gama baixa, tiveram uma 8-bit caminho de dados, e para os que utilizam 64-bit operaусo, ele teve que fazer oito, 8 bits de operaушes para formar um 64-bit operaусo. E, entсo, provavelmente, atж mesmo, na verdade, fazer mais do que para lidar com todo o carrega corretamente, contra o high-end implementaусo tinha um somador completo lр. VocЖ pode realmente fazer um adicionar de 64 bits, por si sз sem ter que fazer muitas micro-operaушes seqЧenciadas. E, ah, sim, com pequenas modificaушes, que vive hoje. Entсo, este foi projetado nos anos 60, e atж hoje ainda temos 360 System mрquinas de derivativos. E o pedaуo de cзdigo que vocЖ passou, ou vocЖ escreveu em 1965, continuarсo a ser executados em essas mрquinas hoje, o que ж muito, incrьvel, nativamente. Entсo, como ж que isto sobreviver hoje? Entсo, aqui estр, na verdade, o IBM 360 47 anos mais tarde, como no microprocessador Z11. Entсo, o IBM 360, desde entсo, ж renomeado para o IBM 370, e, em seguida, ele foi renomeado para o 370EX IBM, que foi em '80. Nunca houve qualquer IBM 380, estranhamente suficiente. E entсo, mais tarde, eles sз mudaram o citar Я sжrie Z. Assim, tЖm uma, um refrigerador modelar modelo, nЩmeros aqui entсo tivemos a IBM sжrie Z processadores, e este vive hoje. Entсo, voltando ao que 8-bit que tinha uma loja de um controle microssegundo ler, o que ж para sempre, agora temos a Z11 que estр sendo executado em 5,2 gigahertz. Ele tem 1,4 bilhшes de transistores. Eles, eles atualizaram o modo de endereуamento ele nсo ж mais 24 bits de endereуamento, mas ainda suporta o 360 original, endereуamento. Ele tem quatro nЩcleos, de questсo de ordem, para fora de sistema de memзria ordem, caches grandes em, no chip, 24 megabytes de seu cache L3. E, vocЖ pode atж mesmo colocar vрrios destes juntos para construir um sistema multiprocessador de lotes e lotes de multicores. E, o que eu estou tentando passar aqui ж que, se vocЖ ir para a frente ao longo do tempo e vocЖ construir sua arquitetura de conjunto de instruушes correto, ele pode viver. E vocЖ tem muitos diferentes implementaушes e microarquitetura ainda aproveitar o mesmo software. E, alguns, poucos mais exemplos apenas para, a reforуa um pouco mais. Vamos dar uma olhada em um exemplo de algo em que vocЖ tem o mesmo arquitetura, mas diferente micro arquitetura. Entсo, aqui nзs temos o AMD Phenom X4, e aqui temos o Atom, Intel Atom processador. O primeiro processador Intel Atom. E, o que vocЖ vai notar, na verdade, ж que eles tЖm o conjunto de instruушes exatamente o mesmo arquitetura. Ambos executar cзdigo x86. E, as implementaушes Zion, isto ж, apenas para apontar aqui, estes sсo os mesmos prazos. Entсo, este ж um moderno, moderno, aproximadamente, modernos processadores dia. Este tem quatro nЩcleos, 125 watts. Aqui, nзs temos, Щnico nЩcleo dois watts. Entсo, hр vantagens e desvantagens do projeto. Entсo, vocЖ vai querer construir processadores diferentes no mesmo desenho , tecnologia que vou dizer, mas com muito custo diferente, potЖncia, desempenho compensaушes. Este pode descodificar trЖs instruушes. Este pode decodificar duas instruушes para ж uma arquitetura diferente micro diferenуa. Este tem um cache de 64 kilobytes. L1 ж bom como um cache de 32 kilobytes L1i. Muito diferentes tamanhos de cache, mesmo que eles estсo empregando a mesma arquitetura, ou arquitetura Um grande. Estranhamente, eles tЖm a mesma L2 tamanho, vocЖ sabe, as coisas acontecem. Isto, meus fora de ordem contra a ordem, e velocidades de clock sсo muito diferentes. E, eu quero contrastar isso com arquitetura diferente, ou diferente Um grande arquitetura e micro diferente arquitetura. Entсo, se pensarmos um pouco diferente exemplos de arquiteturas de conjunto de instruушes, hр 86, hр PowerPC, hр IBM 360, hр Alpha, hр ARM. VocЖ provavelmente jр ouviu todos esses diferentes nomes, e estas sсo instruушes diferentes definir arquiteturas. Entсo, vocЖ nсo pode executar o mesmo software em os dois conjuntos de instruушes diferentes arquiteturas. Entсo, temos aqui um exemplo de dois arquiteturas de conjunto de instruушes diferentes com dois microarquiteturas diferentes. Entсo, nзs temos o Phenom X4 aqui, contra o IBM Power sete. E, nзs jр conversamos sobre o, o X4 aqui, mas o Poder sete tem o poder conjunto de instruушes, o qual ж diferente do o conjunto de instruушes x86. Entсo, vocЖ nсo pode executar um pedaуo de cзdigo que ж compilados para este por aqui, e vice- versa. E, os microarquiteturas sсo diferentes. Entсo, aqui, nзs temos de oito nЩcleos, a 200 watts, pode decodificar seis instruушes por ciclo. Uau, isso ж um, um processador bastante robusto. ╔ tambжm fora de ordem e tem o mesmo freqЧЖncia de clock. Algo que eu, que tambжm pode acontecer ж vocЖ pode acabar com arquiteturas onde vocЖ tem conjunto de instruушes diferente arquitetura, ou diferente Um grande arquitectura, mas quase igual microarquitetura. E, isso, isso faz, isso acontece. Entсo, vocЖ acaba com, digamos, dois processadores que sсo tanto a questсo trЖs de largura, tamanhos de cache mesmo, mas, vamos dizer, um dos o PowerPC implementos ea outra implementa x86. E as coisas, coisas assim acontecem. Essa ж mais uma coincidЖncia, mas eu sou tentando passar a idжia de que muitos vezes o que os microarquiteturas pode ser o mesmo e as vantagens e desvantagens mais consideraушes contra o conjunto de instruушes arquitectura que ж mais de um software programaусo restriусo de projeto.