- Completar o conjunto de conhecimento para conectar OCD às disciplinas que usam esse conhecimento como base: ARQ, SO, compiladores. Pipeline é um aspecto da construção do processador (capítulo 12, sec. 4, p. 364 - os conceitos apresentados nas seções anteriores do cap 12 já foram apresentadas - espera-se que não haja dificuldade na leitura das seções 1,2,3). Entender a utilidade e o funcionamento do pipeline é assunto de OCD. Entender a influência que esse funcionamento tem sobre a construção e funcionamento de programas é assunto de disciplinas como arquitetura, compiladores, sistemas operacionais. O fluxo de operação do pipeline, figura 12.12, p.368 é uma evolução do diagrama da figura 12.5, p.363, que é uma evolução do diagrama 3.6, p. 59, que é relacionado ao fluxograma parcial do IAS, na figura 2.4, p.17) RAID(seção 6.2 p. 157) é um aspecto da organização e operação do armazenamento em disco. Discos são dispositivos de E/S. Por outro lado, discos são também dispositivos de memória e poderiam ser considerados como tal. Mecanismos como memória virtual, swap de memória, ... são implementados no Sistema Operacional (para isso o SO precisa do "suporte" do processador). O suporte aos modos de RAID também é implementado no sistema operacional, com suporte da controladora de discos e com consequência na BIOS. Memória e hierarquia de memória é um aspecto da construção do processador e do computador. Instruções (opCodes) e conjuntos de instruções, neste ponto, refere-se aos valores carregados em memória e executados pelo processador - podemos chamá-lo "programa em linguagem de máquina". Sobre os valores armazenados em memória, sabemos, pelo estudado até agora, como estes valores representam instruções, endereços, valores numéricos, codificam caracteres, ... a interface entre hardware e software. O conjunto de instruções de um processador faz parte da especificação do que pode ser feito com o processador. Executando as instruções em sequências bem definidas, informação é transformada (processada), com alguma finalidade. (Cap. 10, Cap. 13.5 para relação entre pipeline e conjunto de instruções, Cap. 13.6 para Conjunto de instruções (assembly) MIPS - provavelmente será usado em ARQ. Figura 13.9 (p.416) para formato da instrução em linguagem de máquina). Cada aspecto da construção do processador influencia seu desempenho. A organização da hierarquia de memória faz existir tamanhos de blocos ideais pra maximizar desempenho, a organização do pipeline faz existir ordens ideais em sequencias de instruções. Montador é um programa que recebe como entrada um programa em linguagem de montagem (assembly language) e geram em sua saída um programa em linguagem de máquina. Linguagem de montagem é a linguagem de nomes de instruções e mnemônicos, geralmente definida pelo projetista do processador. Montadores e linguagens de montagem têm recursos (recursos de linguagem, como rótulos, símbolos, ... ) que facilitam usar variáveis, referências e modos de endereçamento. De resto, a operação do programa é bastante direta - traduzindo mnemônicos para opCodes. Compilador é um programa que recebe como entrada um programa em linguagem "de alto nível", se preferir, uma linguagem com sintaxe e semântica, em algum sentido, mais distantes da linguagem de máquina, e geram em sua saída um programa em linguagem de máquina (há compiladores que geram programas em linguagem de montagem e estes são passados por um montador). Aproveitando da distância entre uma linguagem "de alto nível" e a linguagem de máquina, compiladores podem gerar código que procura maximizar desempenho pelo uso de aspectos de construção da máquina. Por exemplo organizando as instruções de forma a maximizar a carga do pipeline, ou organizando variáveis e instruções em blocos de tamanho que aproveita a organização do subsistema de memória. O sistema operacional é... um programa. Ele gerencia a execução de programas e os recursos da máquina para... executar os programas rapidamente, manter o sistema robusto a erros de programas de usuários e otimizar o uso dos recursos. O capítulo 8 apresenta uma visão geral do funcionamento do SO. Na disciplina SO, os detalhes serão apresentados e as dependências entre SO e organização serão esmiuçados. Por exemplo, o que acontece quando vários programas estão sendo executados (multitarefa) (sempre há ao menos dois - um programa de usuário e o SO), ocorre uma interrupção que provoca a troca de tarefa, e esta troca - ela deve implicar no esvaziamento do pipeline? ou, durante um intervalo, haverá no pipeline instruções de dois programas distintos? Isto é um risco para a integridade do sistema? Ou pode derrubar o sistema? Ou permite que um terceiro programa tome o controle ou roube dados?