Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante   Click to listen highlighted text! Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante

Aula 01 – Arquitetura de Computadores

O que é a Arquitetura de um Computador?

O termo arquitetura é principalmente utilizado na construção e decoração de edificações. Ele diz respeito à forma e a estrutura de uma construção. O termo refere-se à arte ou a técnica de projetar e edificar o ambiente habitado pelo ser humano. Na computação o termo foi adaptado para denominar a técnica (talvez até a arte também) de projetar e construir computadores. Nessas aulas você não vai aprender a construir seu próprio computador. Para isso eu recomendo outros autores, John L. Hennessy, David A. Patterson e Andrew S. Tanenbaum. Esses autores produzem livros para engenheiros de computadores e acompanhá-los antes de se tornar um pode ser uma tarefa bastante árdua. Aqui você vai conhecer o computador por dentro e saber como ele funciona. Você não será capaz de construir um computador, mas saberá o suficiente para entender como os programas funcionam e até porque o computador para de funcionar as vezes, ou funciona lentamente, e que nessas situações, pressionar teclas do teclado rapidamente, ao mesmo tempo que move o mouse aleatoriamente, não faz o computador voltar a trabalhar novamente.

Por que estudar Arquitetura de Computadores?

É essencial que todos profissionais da Computação tenham pelo menos conhecimentos básicos de Arquitetura de Computadores. Saber como o computador funciona nos permitirá entender sua capacidade (e incapacidade) de resolver problemas, sobre como programá-los da melhor forma possível, como deixar o computador e os dados contidos neles mais seguros, como ganhar desempenho e o que faz ele ficar tão lento às vezes a ponto de querermos destrui-lo. Então, estudar Arquitetura de Computadores é tão importante para um profissional de Computação, como estudar Anatomia é importante para um médico. Antes de iniciar qualquer estudo na Medicina, um médico precisa saber em detalhes o funcionamento do corpo humano. Quais são seus órgãos, como eles trabalham individualmente e como se relacionam para formar um sistema (digestivo, respiratório, motor etc.). Com a Arquitetura de Computadores é semelhante. Vamos aprender quais são os componentes de um computador, como eles funcionam e como eles trabalham em conjunto formando um sistema. Sem dúvidas o ser humano é a máquina mais perfeita já criada, mas vamos ver que o Computador é uma das máquinas mais incríveis que o homem já criou.

Computador
Um computador é uma máquina composta de partes eletrônicas e eletromecânicas (hardware) capaz de coletar, manipular e fornecer os resultados de informações para um ou mais objetivos.
Para ser considerado um computador ele precisa ter processador, memória e dispositivos de entrada e/ou saída, que podem ser utilizados de modo eficiente na solução dos tipos de problemas os quais possuem uma grande complexidade ou um grande volume de dados.
A arquitetura de computadores se refere ao comportamento de um sistema computacional visível para o programador, ou seja, aos aspectos relacionados com a execução lógica de um programa. A organização de computadores se refere às unidades estruturais e seus relacionamentos lógicos e eletrônicos (STALLINGS, 2010).
Os computadores eletrônicos digitais recebem essa denominação porque são desenvolvidos a partir de circuitos eletrônicos e são capazes de realizar cálculos, operações lógicas e movimentação de dados entre o processador, seus dispositivos de armazenamento e de entrada e saída.
Os sistemas digitais, em seu nível mais baixo, representam as informações somente através de dígitos. Num nível mais alto, estes dígitos codificados formam diferentes combinações capazes de representar qualquer tipo de informação.
As informações normalmente são representadas internamente por sinais elétricos binários que podem ser somente os valores 0 ou 1, correspondendo a estar ligado ou desligado, ter energia ou não num circuito, onde 5 volts representam o dígito 1 e 0 volt representa o dígito 0.

Desta forma, o computador digital é um sistema digital binário, pois a informação é representada nele somente através dos dígitos binários 0 e 1. Um computador é capaz de realizar basicamente quatro operações (STALLINGS, 2010):

a) Processamento de dados.

b) Armazenamento de dados.

c) Movimentação de dados.

d) Controle.

Computadores analógicos x digitais

Os computadores podem ser classificados em dois tipos principais: analógicos e digitais.

Os computadores analógicos não trabalham com números nem com símbolos que representam os números; eles procuram fazer analogia entre quantidades (ex. pesos, quantidade de elementos, níveis de tensão, pressões hidráulicas). Alguns exemplos desse tipo de computador são o Ábaco – que se utilizava de pequenos carretéis embutidos em um pequeno filete de metal para realizar cálculos – ou a régua de cálculo – que utiliza comprimentos de escalas especialmente calibradas para facilitar a multiplicação, a divisão e outras funções.

Pode-se dizer que o computador analógico é uma categoria de computado-res que se utiliza de eventos elétricos, mecânicos ou hidráulicos para resolver problemas do homem. Ou seja, tais computadores representam o comporta-mento de um sistema real utilizando-se para isso de grandezas físicas.

Computadores analógicos são normalmente criados para uma finalidade específica, assim como ocorre com a construção de circuitos eletrônicos que implementam sistemas de controle (ex.: sistemas de segurança, sistemas de controle de nível). Nesses sistemas, os resultados da computação analógica são utilizados dentro do próprio sistema. Assim, uma pessoa era responsável pela programação e funcionamento desses computadores analógicos, realizando a programação diretamente no hardware (ex.: engrenagens, roldanas). No início do século XX as primeiras calculadoras mecânicas, caixas registradoras e máquinas de cálculo em geral foram redesenhadas para utilizar motores elétricos, com a posição das engrenagens representando o estado de uma variável. Exemplos de variáveis utilizadas em computadores analógicos são: a intensidade de uma corrente elétrica em um resistor, o ângulo de giro de uma engrenagem, o nível de água em um recipiente.

Diferentemente dos computadores analógicos, que representam números por meio da analogia direta entre quantidades, os computadores digitais resolvem problemas realizando operações diretamente com números, enquanto os analógicos medem. Os computadores digitais resolvem os problemas realizando cálculos e tratando cada número, dígito por dígito. De acordo com Monteiro (2007), um computador digital é uma máquina projetada para armazenar e manipular informações representadas apenas por algarismos ou dígitos, que só podem assumir dois valores distintos, 0 e 1, razão pela qual é denominado de computador digital.

Outra grande diferença dessa categoria de computadores é que eles podem resolver problemas por meio de uma sequência programada de instruções com o mínimo de intervenção humana.

Assim, podemos dizer que o computador digital surgiu como uma solução rápida e com um nível de automação bem mais elevado de realizar grandes computações numéricas. Muitas são as necessidades do homem em termos de computação, especialmente nas áreas de engenharia, além de demonstrações e aplicações teóricas (ex.: cálculo de um fatorial, progressões aritméticas). Sem o uso da tecnologia, muitos cálculos manuais se tornavam inviáveis, tanto pelo custo em termos de esforço quanto pelo risco de gerar resultados incorretos.

Dessa forma, os computadores digitais foram um passo determinante para o progresso que é possível perceber atualmente em termos de computação. O sonho do homem em realizar cálculos de forma automática, fazendo do computador um dispositivo semelhante ao cérebro humano, mas com capacidades infinitamente maiores do que o ser humano poderia suportar, virou realidade e permite hoje automatizar grande parte das tarefas do ser humano, facilitando sua vida pessoal e profissional.

 

A História dos Computadores

A Primeira Geração

J.P. Eckert e John Mauchly, da Universidade da Pensilvânia, inauguraram o novo computador em 14 de fevereiro de 1946.
O ENIAC era mil vezes mais rápido do que qualquer máquina anterior, resolvendo 5 mil adições e subtrações, 350 multiplicações ou 50 divisões por segundo. E tinha o dobro do tamanho do Mark I: encheu 40 gabinetes com 100 mil componentes, incluindo cerca de 17 mil válvulas eletrônicas. Pesava 27 toneladas e media 5,50 x 24,40 m e consumia 150 kW.
Apesar de seus inúmeros ventiladores, a temperatura ambiente chegava às vezes aos 67 graus centígrados. Executava 300 multiplicações por segundo, mas, como foi projetado para resolver um conjunto particular de problemas, sua reprogramação era muito lenta. Tinha cerca de 19.000 válvulas substituídas por ano.
Em 1943, antes da entrada em operação do ENIAC a Inglaterra já possuía o Colossus, máquina criada por Turing para decifrar os códigos secretos alemães. Possuía 2.000 válvulas, coincidentemente o mesmo número proposto por Zuse alguns anos antes.

Resultado de imagem para eniac
Eniac

Em 1945 Von Neumann sugeriu que o sistema binário fosse adotado em todos os computadores, e que as instruções e dados fossem compilados e armazenados internamente no computador, na seqüência correta de utilização.
Estas sugestões tornaram-se a base filosófica para projetos de computadores. (Atualmente pesquisam-se computadores “não Von Neumann”, que funcionam com fuzzy logic, lógica confusa).
A partir dessas idéias, e da lógica matemática ou álgebra de Boole, introduzida por Boole no início do século XIX, é que Mauchly e Eckert projetaram e construíram o EDVAC, Electronic Discrete Variable Automatic Computer, completado em 1952, que foi a primeira máquina comercial eletrônica de processamento de dados do mundo.
Eles haviam tentado isso com o BINAC, computador automático binário, de 1949, que era compacto (1,40 x 1,60 x 0,30 m) o suficiente para ser levado a bordo de um avião, mas que nunca funcionou a contento.
O EDVAC utilizava memórias baseadas em linhas de retardo de mercúrio, bem mais caras e lentas que os CRTs, mas também com maior capacidade de armazenamento.
Wilkes construiu o EDSAC, Electronic Delay Storage Automatic Calculator em 1949, que funcionava segundo a técnica de programas armazenados.

Resultado de imagem para edvac
EDVAC e John Von Neumann

O primeiro computador comercial de grande escala foi o UNIVAC, UNIVersal Automatic Computer, americano, de 1951, que era programado ajustando-se cerca de 6.000 chaves e conectando-se cabos a um painel.
A entrada e saída de informações era realizada por uma fita metálica de 1/2 polegada de largura e 400 m de comprimento. Ao todo, venderam-se 46 unidades do UNIVAC Modelo I, que eram normalmente acompanhados de um dispositivo impressor chamado UNIPRINTER, que, sozinho, consumia 14.000 W.
Outro foi o IBM 701, de 1952, que utilizava fita plástica, mais rápida que a metálica do UNIVAC, e o IBM 704, com a capacidade fenomenal de armazenar 8.192 palavras de 36 bits, ambos da IBM.
Na Inglaterra surgem o MADAM, Manchester Automatic Digital Machine, o SEC, Simple Electronic Computer, e o APEC, All-Purpose Electronic Computer.
Entre 1945 e 1951, o WHIRLWIND, do MIT, foi o primeiro computador a processar informações em tempo real, com entrada de dados a partir de fitas perfuradas e saída em CRT (monitor de vídeo), ou na flexowriter, uma espécie de máquina de escrever (Whirlwind quer dizer redemoinho).
Em 1947 Bardeen, Schockley e Brattain inventam o transístor, e, em 1953 Jay Forrester constrói uma memória magnética.

Manchester Mark 1

A Segunda Geração

Os computadores a transistores surgem nos anos 50, pesando 150 kg, com consumo inferior a 1.500 W e maior capacidade que seus antecessores valvulados.

Era a segunda geração. Exemplos desta época são o IBM 1401 e o BURROUGHS B200. Em 1954 a IBM comercializa o 650, de tamanho médio.
O primeiro computador totalmente transistorizado foi o TRADIC, do Bell Laboratories.
O IBM TX-0, de 1958, tinha um monitor de vídeo de primeira qualidade, era rápido e relativamente pequeno, possuía dispositivo de saída sonora e até uma caneta óptica.
O PDP-1, processador de dados programável, construído por Olsen, virou sensação no MIT: os alunos jogavam Spacewar! e Rato-no-labirinto, através de um joystick e uma caneta óptica.
Em 1957 o matemático Von Neumann colaborou para a construção de um computador avançado, o qual, por brincadeira, recebeu o nome de MANIAC, Mathematical Analyser Numerator Integrator and Computer.
Em janeiro de 1959 a Texas Instruments anuncia ao mundo uma criação de Jack Kilby: o circuito integrado. Enquanto uma pessoa de nível médio levaria cerca de cinco minutos para multiplicar dois números de dez dígitos, o MARK I o fazia em cincosegundos, o ENIAC em dois milésimos de segundo, um computador transistorizado em cerca de quatro bilionésimos de segundo, e, uma máquina de terceira geração em menos tempo ainda.

A Terceira Geração

A terceira geração de computadores é da década de 60, com a introdução dos circuitos integrados.
O Burroughs B-2500 foi um dos primeiros. Enquanto o ENIAC podia armazenar vinte números de dez dígitos, estes podem armazenar milhões de números. Surgem conceitos como memória virtual, multiprogramação e sistemas operacionais complexos.
Exemplos desta época são o IBM 360 e o BURROUGHS B-3500.

Jack Kilby e o primeiro circuito integrado
Jack Kilby e o primeiro transistor

Em 1960 existiam cerca de 5.000 computadores nos EUA. É desta época o termo software. Em 1964, a CSC, Computer Sciences Corporation, criada em 1959 com um capital de 100 dólares, tornou-se a primeira companhia de software com ações negociadas em bolsa.
O primeiro minicomputador comercial surgiu em 1965, o PDP-5, lançado pela americana DEC, Digital Equipament Corporation.

Dependendo de sua configuração e acessórios ele podia ser adquirido pelo acessível preço de US $ 18,000.00. Seguiu-se o PDP-8, de preço ainda mais competitivo.
Seguindo seu caminho outras companhias lançaram seus modelos, fazendo com que no final da década já existissem cerca de 100.000 computadores espalhados pelo mundo.
Em 1970 a INTEL Corporation introduziu no mercado um tipo novo de circuito integrado: o microprocessador.
O primeiro foi o 4004, de quatro bits.
Foi seguido pelo 8008, em 1972, o bastante difundido 8080, o 8085, etc. A partir daí surgem os microcomputadores. Para muitos, a quarta geração surge com os chips VLSI, de integração em muito larga escala. As coisas começam a acontecer com maior rapidez e freqüência. Em 1972 Bushnell lança o vídeo game Atari. Kildall lança o CP/M em 1974.
O primeiro kit de microcomputador, o ALTAIR 8800 em 1974/5. Em 1975 Paul Allen e Bill Gates criam a Microsoft e o primeiro software para microcomputador: uma adaptação BASIC para o ALTAIR.
Em 1976 Kildall estabelece a Digital Research Incorporation, para vender o sistema operacional CP/M. Em 1977 Jobs e Wozniak criam o microcomputador Apple, a Radio Shack o TRS-80 e a Commodore o PET.
A planilha Visicalc (calculador visível) de 1978/9, primeiro programa comercial, da Software Arts. Em 1979 Rubinstein começa a comercializar um software escrito por Barnaby: o Wordstar, e Paul Lutus produz o Apple Writer. O programa de um engenheiro da NASA, Waine Ratliff, o dBASE II, de 1981. Também de 1981 o IBM-PC e o Lotus 1-2-3, de Kapor, que alcançou a lista dos mais vendidos em 1982.

Resultado de imagem para 4004 microprocessor
Microchip Intel 4004

Os Sinclair’s. eram computadores minúsculos concebidos por John Sinclair, professor na Universidade de Cambrige no U.K..

Resultado de imagem para sinclair microcomputer
Sinclair ZX81

Inicialmente concebido para utilização pelos estudantes da Universidade de Cambrige começou a ser comercializado, em Portugal, circa 1980 com um preço aproximado de 12.500$00. Existia uma versão em kit para montagem que era comprada aproximadamente por 9.000$00 A CPU compreendia um processador Zilog Z80A de 8 bit a 3,25 MHZ, uma memória que compreendia uma ROM e uma RAM e uma ULA. A
ROM, com 8K de capacidade, armazenava de modo permanente os programas, tabelas etc. necessários ao funcionamento do sistema e um interpretador para a linguagem de programação BASIC.
A RAM compreendia uma área de trabalho disponível para o utilizador de 1K mas, era extensível até 16K. Na caixa de plástico alojava-se ainda um subsistema de comunicações para ligação em série a periféricos denominado SCL (Sinclair Computer Logic), uma unidade para entrada e saída de som, um codificador de imagens para TV.
Num rasgo aberto na parte traseira da caixa de plástico existia um conector onde se podia ligar uma impressora minúscula que usava um rolo de papel especial. O computador era fornecido com um cabo para ligação ao televisor e outro para ligação a um gravador de “cassettes” musical (norma Philips).
O transformador de corrente elétrica alterna para contínua era adquirido em separado. Os programas e dados eram gravados em fita K7 magnética e eram também lidos a partir dela.
O teclado não dispunha de teclas.
Os caracteres ASCII eram impressos numa membrana. Esta tecnologia e a falta de ventilação da unidade de alimentação elétrica eram as causas principais de avarias que enviavam o ZX81 para o caixote do lixo. Foi um computador muito popular devido ao seu baixo preço de venda.

Resultado de imagem para osborne 1
Osborne 1

A CPU compreendia uma memória com 64KB, uma UAL e um Processador Zilog Z80A de 8 bit a 4 MHZ. A caixa, do tipo mala attaché com uma massa de 11 Kg, albergava ainda 2 unidades de disquette de 5″ 1/4 com 204 KB ou em opção com 408 KB de capacidade, um écran de 5″ (24 linhas por 54 colunas) a preto e branco e um teclado basculante (servia de tampa à mala) com dois blocos de teclas, um alfanumérico com
os caracteres ASCII e outro numérico.

Dispunha ainda de conectores para um écran externo, ports série RS-232C e paralelo IEEE-488 ou Centronics. O sistema era alimentado por uma bateria própria recarregável com uma autonomia de 5 horas, por uma bateria externa de automóvel ou por um transformador de corrente elétrica alterna para contínua. O sistema operativo era o CP/M desenvolvido pela Digital Corporation.
O software fornecido incluía um Interpretador M BASIC desenvolvido pela MICROSOFT, um Compilador BASIC desenvolvido pela Compyler Systems, uma folha de cálculo SUPERCALC (derivada do Visicalc) e um processador de texto denominado WORDSTAR.
Podia ser programado em BASIC, FORTRAN, COBOL, PASCAL, PL 1, ALGOL, C, FORTH, ADA, ASSEMBLER e CROSS-ASSEMBLER.

IBM/PC

O CPU compreendia uma memória ROM de 40KB e uma memória RAM de 64KB extensível até 640KB, uma ULA e um processador Intel 8088 de 16 bit com uma freqüência de clock de 4,77 MHZ.
Era construído com três módulos separados: Gabinete, Monitor e teclado.
O Monitor era preto e branco com 25 linhas e 80 colunas podendo ser substituído por um com até 16 cores.
O Gabinete para além do CPU continha uma unidade de disquete de 5″ 1/4 com uma capacidade de 360KB podendo alojar ainda uma outra unidade de disquete idêntica ou um disco com 10MB de capacidade, que era parte integrada na versão PC-XT.
O teclado com 83 teclas, 10 das quais correspondentes a funções pré programadas, dispunha de caracteres acentuados (português). Possuía ainda saída para impressora e o PC-XT dispunha de um interface para comunicações assíncronas.
O sistema operacional era o PC/MS-DOS o qual era um MS-DOS desenvolvido pela Microsoft para a IBM.
A linguagem de programação utilizada era o BASIC.

A Quarta Geração (1981-1990)

Surgiram em decorrência do uso da técnica dos circuitos LSI (Large Scale Integration) e VLSI (Very Large Scale Integration).
Nesse período surgiu também o processamento distribuído, o disco ótico e houve então uma grande difusão do microcomputador, que passou a ser utilizado para processamento de texto, cálculos auxiliados, etc.

1982 – Surge o 286 Usando memória de 30 pinos e slots ISA de 16 bits, já vinha equipado com memória cache, para auxiliar o processador em suas funções. Utilizava ainda monitores CGA em alguns raros modelos estes monitores eram coloridos mas a grande maioria era verde, laranja ou cinza.
1985 – O 386 Ainda usava memória de 30 pinos, porém devido ás sua velocidade de processamento já era possível rodar softwares gráficos mais avançados como era o caso do Windows 3.1, seu antecessor podia rodar apenas a versão 3.0 devido à baixa qualidade dos monitores CGA, o 386 já contava com placas VGA que podiam atingir até 256 cores desde que o monitor também suportasse essa configuração.
1989 – O 486 DX A partir deste momento o coprocessador matemático já vinha embutido no próprio processador, houve também uma melhora sensível na velocidade devido o advento da memória de 72 pinos, muito mais rápida que sua antepassada de 30 pinos e das placas PCI de 32 bits duas vezes mais velozes que as placas ISA

Resultado de imagem para processadores intel encapsulamentos antigos
Processador Intel 486 com encapsulamento de epoxi

Os equipamentos já tinham capacidade para as placas SVGA que poderiam atingir até 16 milhões de cores, porém este artifício seria usado comercialmente mais para frente com o advento do Windows 95.
Neste momento iniciava uma grande debandada para as pequenas redes como, a Novel e a Lantastic que rodariam perfeitamente nestes equipamentos, substituindo os “micrões” que rodavam em sua grande maioria os sistema UNIX (Exemplo o HP-UX da Hewlett Packard e o AIX da IBM).
Esta substituição era extremamente viável devido à diferença brutal de preço entre estas máquinas.

A Quinta Geração (1991-até hoje)

As aplicações exigem cada vez mais uma maior capacidade de processamento e armazenamento de dados. Sistemas especialistas, sistemas multimídia (combinação de textos, gráficos, imagens e sons), banco de dados distribuídos e redes neurais, são apenas alguns exemplos dessas necessidades.
Uma das principais características dessa geração é a simplificação e miniaturização do computador, além de melhor desempenho e maior capacidade de armazenamento.

Tudo isso, com os preços cada vez mais acessíveis. A tecnologia VLSI está sendo substituída pela ULSI (Ultra Large Scale Integration).
O conceito de processamento está partindo para os processadores paralelos, ou seja, a execução de muitas operações simultaneamente pelas máquinas.
A redução dos custos de produção e do volume dos componentes permitiram a aplicação destes computadores nos chamados sistemas embutidos, que controlam aeronaves, embarcações, automóveis e computadores de pequeno porte. São exemplos desta geração de computadores, os micros que utilizam a linha de processadores Pentium, da INTEL.

Processador Cyrix 686

1993 – Surge o Pentium As grandes mudanças neste periodo ficariam por conta das memórias DIMM de 108 pinos, do aparecimento das placas de video AGP e de um aprimoramento da slot PCI melhorando ainda mais seu desempenho.
1997 – O Pentium II.
1999- O Pentium III.
2001- o Pentium 4 Não houveram grandes novidades após 1997, sendo que as mudanças ficaram por conta dos cada vez mais velozes processadores.

O Futuro – O Computador Quântico

A IBM anunciou ontem a construção do mais avançado computador quântico do mundo. A novidade representa um grande passo em relação ao atual processo de fabricação de chips com silício que, de acordo com especialistas, deve atingir o máximo de sua limitação física de processamento entre 10 e 20 anos.
O computador quântico usa, em lugar dos tradicionais microprocessadores de chips de silício, um dispositivo baseado em propriedades físicas dos átomos, como o sentido de giro deles, para contar números um e zero (qubits), em vez de cargas elétricas como nos computadores atuais. Outra característica é que os átomos também podem se sobrepor, o que permite ao equipamento processar equações muito mais rápido.
“Na verdade, os elementos básicos dos computadores quânticos são os átomos e as moléculas”, diz Isaac Chuang, pesquisador que liderou a equipe formada por cientistas da IBM, Universidade de Staford e Universidade de Calgary. Cada vez menores Segundo os pesquisadores da IBM, os processadores quânticos começam onde os de silício acabam.
“A computação quântica começa onde a lei de Moore termina, por volta de 2020, quando os itens dos circuitos terão o tamanho de átomos e moléculas”, afirma Chuang. A lei de Moore, conceito criado em 65 pelo co-fundador da fabricante de processadores Intel, Gordon Moore, diz que o número de transistores colocados em um chip dobra a cada 18 meses. Quanto maior a quantidade de transistores nos chips, maior a  velocidade de processamento. Essa teoria vem se confirmando desde a sua formulação.
Pesquisa O computador quântico da IBM é um instrumento de pesquisa e não estará disponível nos próximos anos. As possíveis aplicações para o equipamento incluem a resolução de problemas matemáticos, buscas avançadas e criptografia, o que já despertou o interesse do Departamento de Defesa dos Estados Unidos.

Resultado de imagem para computador quantico
Computador Quântico
Click to listen highlighted text!