Home Blog Page 22987

Grunderna i C-Programmering

0

Tips: Att Förstå Minnesadresser

Variabeln f förbrukar fyra byte av RAM-minne. Som plats har en specifik adress, i det här fallet 248,440.

© 2011 HowStuffWorks.com

Den tidigare diskussionen blir lite tydligare om du förstår hur minnet adresser arbete i en dators hårdvara. Om du inte har läst det redan, nu vore en bra tidpunkt att läsa Hur Bits och Bytes Arbete för att fullt ut förstå bitar, bytes och ord.

Alla datorer har minne, även känd som RAM-minne (random access memory). Till exempel kan din dator har 16 eller 32 eller 64 megabyte RAM-minne installerat just nu. RAM har de program som datorn för närvarande tillsammans med de uppgifter som de är för närvarande manipulera (deras variabler och data-strukturer). Minnet kan bara ses som en array av bytes. I denna array, varje minnesplats har sin egen adress — adressen till den första byten är 0, följt av 1, 2, 3, och så vidare. Minnesadresser agera precis som index i en vanlig array. Datorn kan få tillgång till en adress i minnet som helst (därav namnet “random access memory”). Det kan också gruppera byte tillsammans som den behöver för att bilda större variabler, matriser och strukturer. Till exempel, en flytande komma variabel förbrukar 4 sammanhängande byte i minnet. Du kan göra följande globala förklaring i ett program:

Nästa

  • Hur fungerar JavaScript för att fungera och hur kan jag bygga en enkel miniräknare med det?
  • Hur C-Programmering Fungerar
  • Hur HTML5 Fungerar
  • Vad är fördelarna med att lära sig C-programmering?
  • Är data mining och data warehousing?

float f;

Detta uttalande säger, “Deklarera en plats som heter f som kan hålla en flytande punkt värde.” När programmet körs, datorn reserver utrymme för variabeln f någonstans i minnet. Som plats har en fast adress i minne, så här:

Medan du tänker på variabeln f, datorn tänker på en viss adress i minnet (till exempel 248,440). Därför, när du skapar ett uttalande som detta:

f = 3.14;

Kompilatorn kan översätta det till “Ladda värdet 3.14 i minnet läge 248,440.” Datorn är alltid tänker på minne i form av adresser och värden på dessa adresser.

Det är, förresten, flera intressanta biverkningar på sätt som din dator behandlar minne. Till exempel, säga att du inkluderar följande kod i ett program:

int i, s[4], t[4], u=0;

for (i=0; i<=4; i++)
{
s = i;
t =i;
}
printf(“s:tn”);
for (i=0; i<=4; i++)
printf(“%d:%dn” -, s, t);
printf(“u = %dn”, u);

Produktionen som du ser av programmet kommer förmodligen att se ut så här:

s:t
1:5
2:2
3:3
4:4
5:5
u = 5

Varför är t[0] och u felaktig? Om du tittar noga på koden, kan man se att för slingor är att skriva ett element förbi i slutet av varje rad. I minnet, matriser placeras i anslutning till varandra, som visas här:

Matriser placeras i anslutning till varandra

Därför, när du försöker skriva till s[4], som inte finns, skriver in t[0] istället eftersom t[0] där s[4] borde vara. När du skriver in t[4], du är verkligen skriver in i u. Så långt som datorn är berörda, s[4] är helt enkelt en adress, och det kan skriva i det. Som ni kan se men även om datorn kör programmet, är det inte korrekt eller giltig. Programmet korrumperar matrisen t i processen. Om du utföra följande uttalande, mer allvarliga konsekvenser:

s[1000000] = 5;

Placeringen s[1000000] är mer än sannolikt utanför programmets minne. Med andra ord, du skriver i minnet att ditt program inte äger. På ett system med skyddade minne utrymmen (UNIX, Windows 98/NT), denna typ av uttalande som kommer att orsaka att systemet för att avsluta exekveringen av programmet. På andra system (Windows 3.1, Mac), men systemet är inte medveten om vad du gör. Du hamnar skadliga koden eller variabler i en annan applikation. Effekten av kränkning kan vara allt från ingenting alls till fullständig systemkrasch. I minne, i, s, t och u är alla placerade bredvid varandra på en specifik adress. Därför, om du skriver tidigare gränserna för en variabel, datorn kommer att göra vad ni säger, men det kommer att sluta upp att skada en annan plats i minnet.

Eftersom C och C++ inte utföra någon form av utbud kontrollera när du kommer åt ett element i en array, är det viktigt att du, som en programmerare, ägna stor uppmärksamhet åt utbud varierar dig själv och hålla sig inom de olika lämpliga gränser. Oavsiktligt läsa eller skriva utanför arrayen gränser alltid leder till felaktiga program beteende.

Som ett annat exempel, kan du prova följande:

#include <stdio.h>

int main()
{
int i,j;
int *p; /* pekare till integer */
printf(“%d %dn”, s, &jag);
p = &i;
printf(“%d %dn”, s, &jag);
return 0;
}

Denna kod som talar om för kompilatorn att skriva ut adressen som hölls i s, tillsammans med adressen jag. Variabeln p börjar med några galna värde eller 0. Den adress jag är i allmänhet ett stort värde. Till exempel, när jag sprang här koden, fick jag följande resultat:

0 2147478276
2147478276 2147478276

vilket innebär att adressen jag är 2147478276. När uttalandet p = &i; har verkställts, p innehåller den adress jag. Prova detta:

#include <stdio.h>

void main()
{
int *p; /* pekare till integer */

printf(“%dn”,*p);
}

Denna kod som talar om för kompilatorn att skriva ut värdet som p pekar på. Men p har inte initierats ännu; det innehåller adressen 0 eller någon random adress. I de flesta fall, en segmentation fault (eller några andra run-time error) resultat, vilket innebär att du har använt en pekare som pekar på en ogiltig område för minnet. Nästan alltid, en oinitierad pekare eller en dålig pekaren adress orsakar segmenteringsfel.

Efter att ha sagt allt detta, kan vi nu titta på pekare i ett helt nytt ljus. Ta detta program, till exempel:

#include <stdio.h>

int main()
{
int i;
int *p; /* pekare till integer */
p = &i;
*p=5;
printf(“%d %dn”, i, *p);
return 0;
}

Här är vad som händer:

Den rörliga jag förbrukar 4 byte minne. Pekaren p förbrukar även 4 byte (på de flesta maskiner som är i bruk idag, en pekare som förbrukar 4 byte minne. Adresser är 32-bitar lång på de flesta Processorer idag, även om det är en ökande trend mot 64-bitars adressering). Placeringen av att jag har en specifik adress, i det här fallet 248,440. Pekaren p håller på att adressen när du säger p = &i;. De variabler *p och jag är därför motsvarande.

Pekaren p bokstavligen innehar den adress jag. När du säger något så här i programmet:

printf(“%d”, s);

det som kommer ut är den verkliga adressen för den rörliga jag.

Grunderna i C-Programmering

0

Pekaren Grunderna

I denna ritning tre variabler jag, j och p har förklarats, men ingen av de tre har initierats.

För att förstå tips, hjälper det att jämföra dem med normala variabler.

En “normal variabel” är en plats i minnet som kan innehålla ett värde. Till exempel, när du deklarerar en variabel jag som ett heltal, fyra bytes i minnet är avsatt för det. I ditt program, du hänvisar till den plats i minnet genom att de namn jag. På maskinnivå att platsen har en minnesadress. De fyra bytes på den adress som är känd för dig, programmerare, som jag, och de fyra bytes som kan innehålla ett heltal.

Nästa

  • Hur fungerar JavaScript för att fungera och hur kan jag bygga en enkel miniräknare med det?
  • Hur C-Programmering Fungerar
  • Hur HTML5 Fungerar
  • Vad är fördelarna med att lära sig C-programmering?
  • Är data mining och data warehousing?

En pekare är olika. En pekare är en variabel som pekar till en annan variabel. Detta innebär att en pekare håller minnesadressen för en variabel. Uttryckt på ett annat sätt, pekaren inte har ett värde i traditionell mening, utan det har adressen för en annan variabel. En pekare som “pekar” som andra variabel genom att hålla en kopia av sin postadress.

Eftersom en pekare innehar en adress i stället för ett värde, den har två delar. Pekaren själv har adressen. Som adressen pekar på ett värde. Det är pekaren och värdet pekade på. Detta faktum kan vara lite förvirrande tills du får bekväm med det, men när du gör det bekvämt för sig att det blir mycket kraftfulla.

Följande exempelkod visar en typisk pekare:

#include <stdio.h>

int main()
{
int i,j;
int *p; /* pekare till integer */
p = &i;
*p=5;
j=jag,
printf(“%d %d %dn”, i, j, *p);
return 0;
}

Den första förklaringen i det här programmet förklarar två vanliga heltal variabler heter jag och j. Linjen int *p deklarerar en pekare som heter p. Denna linje frågar kompilatorn att deklarera en variabel s som är en pekare till ett heltal. Den * indikerar att en pekare deklareras istället för en vanlig variabel. Du kan skapa en pekare till vad som helst: ett flöte, en struktur, en char, och så vidare. Bara använda en * för att ange att du vill ha en pekare istället för en vanlig variabel.

Den linje p = &jag; kommer definitivt att vara nya för dig. I C & kallas adress operatör. Uttrycket &jag betyder “minnet adress rörliga jag.” Alltså, uttrycket s = &i; :, “Tilldela p den adress jag.” När du kör detta uttalande, p “pekar” jag. Innan du gör det, p innehåller en slumpmässig, okänd adress, och dess användning kommer troligen att orsaka ett segmenteringsfel eller liknande program att krascha.

Ett bra sätt att visualisera vad det är som händer är att rita en bild. Efter att jag, j och p har förklarat att världen ser ut som på bilden ovan.

I denna ritning tre variabler jag, j och p har förklarats, men ingen av de tre har initierats. De två integer-variabler är därför dras som lådor som innehåller frågetecken — de kan innehålla något värde vid denna punkt i programmet för utförandet. Pekaren ritas som en cirkel för att skilja den från en vanlig variabel som har ett värde, och de slumpmässiga pilar indikerar att det kan vara att peka var som helst på detta nu.

Efter den linje p = &I;, p initieras och det pekar på att jag, så här:

När p pekar att jag, minnesplats jag har två namn. Det är fortfarande känd som jag, men nu är det känt som *p också. Detta är hur C talar om två delar av en pekare variabel: p är det läge att hålla adressen, medan *s är platsen pekad till av den adressen. Därför *p=5 innebär att den plats som pekas ut av p bör vara satt till 5, så här:

Eftersom läge *p är också jag, jag tar också på värdet 5. Följaktligen, j=i, ställer j 5, och printf uttalande producerar 5 5 5.

Den viktigaste funktionen av en pekare är de två-en del av naturen. Pekaren själv har en adress. Pekaren pekar också på värdet av en viss typ – värdet på den adress som den punkt håller. Pekaren sig själv, i detta fall, är p. Värdet pekade på att det är *p.

Grunderna i C-Programmering

0

Tips: Varför?

Tänk dig att du skulle vilja skapa en textredigerare – ett program som låter dig redigera normala ASCII-textfiler, som “vi” om UNIX eller “Anteckningar” i Windows. En texteditor är en ganska vanlig sak för någon att skapa, för om man tänker efter, en textredigerare är förmodligen en programmerare mest använda mjukvara. Textredigeraren är en programmerare är nära koppling till dator, det är där du anger alla dina tankar och sedan manipulera dem. Självklart, med något du använder ofta och arbetet med att noga, du vill att det ska vara precis rätt. Därför är många programmerare skapa sina egna redaktörer och anpassa dem så att de passar deras individuella arbetssätt och preferenser.

Så en dag kommer du sitta ner för att börja arbeta på din editor. Efter att ha funderat på vilka funktioner du vill ha, du börjar tänka på “data struktur” för din editor. Det är, som du börjar tänka på hur du ska lagra dokument du redigerar i minnet så att du kan manipulera det i ditt program. Vad du behöver är ett sätt att lagra den information du är på väg in i en form som kan hanteras snabbt och enkelt. Du tror att ett sätt att göra det är att organisera data på grundval av linjer tecken. Med tanke på vad vi har diskuterat hittills, det enda du har till ditt förfogande på denna punkt är en array. Du tänker, “Ja, en typisk linjen är 80 tecken lång, och en typisk fil är inte mer än 1000 rader lång.” Du således förklara en två-dimensionell array, så här:

Nästa

  • Hur fungerar JavaScript för att fungera och hur kan jag bygga en enkel miniräknare med det?
  • Hur C-Programmering Fungerar
  • Hur HTML5 Fungerar
  • Vad är fördelarna med att lära sig C-programmering?
  • Är data mining och data warehousing?

röding doc[1000][80];

Denna förklaring kräver en mängd av 1 000 80 tecken linjer. Denna matris har en total storlek av 80 000 tecken.

Som du tror om din editor och dess data strukturen lite mer, men du kanske inser att tre saker:

  • Vissa dokument är långa listor. Varje linje är kort, men det är tusentals rader.
  • Vissa speciella ändamål för text filer som har mycket långa rader. Till exempel, en viss datafil kanske har rader som innehåller 542 tecken, där varje tecken representerar aminosyra par i DNA-segment.
  • I de flesta moderna redaktörer, du kan öppna flera filer på en gång.

Låt oss säga att du anger ett högsta av 10 öppna filer på en gång, en maximal kabellängd på 1 000 tecken och en maximal filstorlek på 50 000 rader. Din förklaring ser nu ut så här:

röding doc[50000][1000][10];

Det verkar inte som en orimlig sak, tills du drar ut din miniräknare, multiplicera med 50 000 med 1 000, 10 och inse att matrisen innehåller 500 miljoner tecken! De flesta datorer idag kommer att ha ett problem med en array som storlek. De helt enkelt inte har det RAM-minne, eller ens virtuella minne, för att stödja en array som stora. Om en användare skulle försöka att köra tre eller fyra exemplar av detta program samtidigt på även den största multi-user system, det skulle innebära en svår påfrestning på faciliteter.

Även om datorn skulle godta en ansökan om en så stor mängd, kan man se att det är en extravagant slöseri med utrymme. Det verkar konstigt att förklara en 500 miljoner tecken när, som i de allra flesta fall, du kommer att köra denna editor för att titta på linje 100 filer som konsumerar mest på 4 000 eller 5 000 byte. Problemet med en array är det faktum att du måste förklara det för att få maximal storlek i varje aspekt, från början. De största storleken är ofta multiplicera ihop till mycket stora tal. Dessutom, om du råkar behöva för att kunna redigera en udda fil med en 2 000 tecken linje i det, du är av lycka. Det finns verkligen inget sätt för dig att förutsäga och hantera den maximala radlängden av en textfil, grund, tekniskt, att antalet är oändlig.

Pekare är utformade för att lösa detta problem. Med pekare, kan du skapa dynamiska datastrukturer. Istället för att deklarera ditt värsta minne konsumtion up-front i en matris, du istället allokera minne från heapen medan programmet är igång. På det sättet kan du använda den exakta mängden minne som ett dokument behov, utan slöseri. Dessutom, när du stänger ett dokument kan du återställa minnet till högen så att andra delar av program som kan använda det. Med pekare, minne kan återvinnas medan programmet är igång.

Förresten, om du läser tidigare diskussion och en av de stora frågor du har är “Vad ÄR ett byte, egentligen?,” då artikeln Hur Bits och Bytes Arbete hjälper dig att förstå de begrepp och saker som “mega” och “giga” och “tera.” Gå ta en titt och sedan komma tillbaka.

Grunderna i C-Programmering

0

Tips

Pekare används överallt i C, så om du vill använda C-språk fullt ut måste du ha en mycket god förståelse av pekare. De måste bli bekväm för dig. Målet med detta avsnitt och nästa flera som följer är att hjälpa dig att bygga en fullständig förståelse av pekare och hur C använder dem. För de flesta tar det lite tid och lite övning för att bli helt bekväm med pekare, men när du behärskar dem att du är en fullfjädrad C-programmerare.

C använder pekare på tre olika sätt:

Nästa

  • Hur fungerar JavaScript för att fungera och hur kan jag bygga en enkel miniräknare med det?
  • Hur C-Programmering Fungerar
  • Hur HTML5 Fungerar
  • Vad är fördelarna med att lära sig C-programmering?
  • Är data mining och data warehousing?
  • C använder pekare för att skapa dynamiska datastrukturer — data strukturer som byggts upp från block minne som allokeras från högen vid run-time.
  • C använder pekare för att hantera variabla parametrar överförs till funktioner.
  • Pekare i C erbjuder ett alternativt sätt att få tillgång till information som lagras i arrayer. Pekaren tekniker är särskilt värdefullt när du arbetar med strängar. Det finns en intim koppling mellan arrayer och pekare i C.

I vissa fall, C-programmerare också använda pekare för att de gör koden något mer effektiv. Vad du hittar är att, när du är helt bekväm med pekare, du tenderar att använda dem hela tiden.

Vi kommer att börja diskussionen med en grundläggande introduktion till pekare och begrepp kring pekare, och sedan gå vidare till de tre metoder som beskrivs ovan. Inte minst i denna artikel, kommer du vill läsa saker två gånger. Den första tiden genom att du kan lära dig alla de begrepp. Andra gången genom att du kan arbeta på bindande begreppen samman till en integrerad helhet i ditt sinne. När du gör din väg genom materialet en gång till, det kommer att göra en hel del känsla.

How Modems Work

0

Point-to-Point Protocol

­Today, no one uses dumb terminals or terminal emulators to connect to an individual computer. Instead, we use our modems to connect to an Internet service provider (ISP), and the ISP connects us into the Internet. The Internet lets us connect to any machine in the world (see How Web Servers and the Internet Work for details). Because of the relationship between your computer, the ISP and the Internet, it is no longer appropriate to send individual characters. Instead, your modem is routing TCP/IP packets between you and your ISP.

The standard technique for routing these packets through your modem is called the Point-to-Point Protocol (PPP). The basic idea is simple — your computer’s TCP/IP stack forms its TCP/IP datagrams normally, but then the datagrams are handed to the modem for transmission. The ISP receives each datagram and routes it appropriately onto the Internet. The same process occurs to get data from the ISP to your computer. See this page for additional information on PPP.

Up Next

  • How Google Loon Works
  • How the Internet of Things Works
  • How Google Fiber Works
  • 10 Nightmare Scenarios From the Internet of Things
  • How to Set up Wi-Fi on your Laptop

If you want to know more about modems, protocols, and especially if you wish to delve into things like PSK and QAM in more detail, check out the links on the next page!

How Modems Work

0

Modem Technology

Here’s a look inside a typical 56K modem.

In order to create faster modems, modem designers had to use techniques far more sophisticated than frequency-shift keying. First they moved to phase-shift keying (PSK), and then quadrature amplitude modulation (QAM). These techniques allow an incredible amount of information to be crammed into the 3,000 hertz of bandwidth available on a normal voice-grade phone line. 56K modems, which actually connect at something like 48 Kbps on anything but absolutely perfect lines, are about the limit of these techniques (see the links at the end of this article for more information).

All of these high-speed modems incorporate a concept of gradual degradation, meaning they can test the phone line and fall back to slower speeds if the line cannot handle the modem’s fastest speed.

Up Next

  • How Google Loon Works
  • How the Internet of Things Works
  • How Google Fiber Works
  • 10 Nightmare Scenarios From the Internet of Things
  • How to Set up Wi-Fi on your Laptop

The next step in the evolution of the modem was asymmetric digital subscriber line (ADSL) modems. The word asymmetric is used because these modems send data faster in one direction than they do in another. An ADSL modem takes advantage of the fact that any normal home, apartment or office has a dedicated copper wire running between it and phone company’s nearest mux or central office. This dedicated copper wire can carry far more data than the 3,000-hertz signal needed for your phone’s voice channel. If both the phone company’s central office and your house are equipped with an ADSL modem on your line, then the section of copper wire between your house and the phone company can act as a purely digital high-speed transmission channel. The capacity is something like 1 million bits per second (Mbps) between the home and the phone company (upstream) and 8 Mbps between the phone company and the home (downstream) under ideal conditions. The same line can transmit both a phone conversation and the digital data.

The approach an ADSL modem takes is very simple in principle. The phone line’s bandwidth between 24,000 hertz and 1,100,000 hertz is divided into 4,000-hertz bands, and a virtual modem is assigned to each band. Each of these 249 virtual modems tests its band and does the best it can with the slice of bandwidth it is allocated. The aggregate of the 249 virtual modems is the total speed of the pipe.

(For information on the latest DSL technology, see How DSL Works.)

How Modems Work

0

300-bps Modems

We’ll use 300-bps modems as a starting point because they are extremely easy to understand. A 300-bps modem is a device that uses frequency shift keying (FSK) to transmit digital information over a telephone line. In frequency shift keying, a different tone (frequency) is used for the different bits (see How Guitars Work for a discussion of tones and frequencies).

When a terminal’s modem dials a computer’s modem, the terminal’s modem is called the originate modem. It transmits a 1,070-hertz tone for a 0 and a 1,270-hertz tone for a 1. The computer’s modem is called the answer modem, and it transmits a 2,025-hertz tone for a 0 and a 2,225-hertz tone for a 1. Because the originate and answer modems transmit different tones, they can use the line simultaneously. This is known as full-duplex operation. Modems that can transmit in only one direction at a time are known as half-duplex modems, and they are rare.

Up Next

  • How Google Loon Works
  • How the Internet of Things Works
  • How Google Fiber Works
  • 10 Nightmare Scenarios From the Internet of Things
  • How to Set up Wi-Fi on your Laptop

Let’s say that two 300-bps modems are connected, and the user at the terminal types the letter "a." The ASCII code for this letter is 97 decimal or 01100001 binary (see How Bits and Bytes Work for details on binary). A device inside the terminal called a UART (universal asynchronous receiver/transmitter) converts the byte into its bits and sends them out one at a time through the terminal’s RS-232 port (also known as a serial port). The terminal’s modem is connected to the RS-232 port, so it receives the bits one at a time and its job is to send them over the phone line.

How Modems Work

0

The Origin of Modems

The word "modem" is a contraction of the words modulator-demodulator. A modem is typically used to send digital data over a phone line.

The sending modem modulates the data into a signal that is compatible with the phone line, and the receiving modem demodulates the signal back into digital data. Wireless modems convert digital data into radio signals and back.

Up Next

  • How Google Loon Works
  • How the Internet of Things Works
  • How Google Fiber Works
  • 10 Nightmare Scenarios From the Internet of Things
  • How to Set up Wi-Fi on your Laptop

Modems came into existence in the 1960s as a way to allow terminals to connect to computers over the phone lines. A typical arrangement is shown below:

In a configuration like this, a dumb terminal at an off-site office or store could "dial in" to a large, central computer. The 1960s were the age of time-shared computers, so a business would often buy computer time from a time-share facility and connect to it via a 300-bit-per-second (bps) modem.

A dumb terminal is simply a keyboard and a screen. A very common dumb terminal at the time was called the DEC VT-100, and it became a standard of the day (now memorialized in terminal emulators worldwide). The VT-100 could display 25 lines of 80 characters each. When the user typed a character on the terminal, the modem sent the ASCII code for the character to the computer. The computer then sent the character back to the computer so it would appear on the screen.

When personal computers started appearing in the late 1970s, bulletin board systems (BBS) became the rage. A person would set up a computer with a modem or two and some BBS software, and other people would dial in to connect to the bulletin board. The users would run terminal emulators on their computers to emulate a dumb terminal.

People got along at 300 bps for quite a while. The reason this speed was tolerable was because 300 bps represents about 30 characters per second, which is a lot more characters per second than a person can type or read. Once people started transferring large programs and images to and from bulletin board systems, however, 300 bps became intolerable. Modem speeds went through a series of steps at approximately two-year intervals:

  • 300 bps – 1960s through 1983 or so
  • 1200 bps – Gained popularity in 1984 and 1985
  • 2400 bps
  • 9600 bps – First appeared in late 1990 and early 1991
  • 19.2 kilobits per second (Kbps)
  • 28.8 Kbps
  • 33.6 Kbps
  • 56 Kbps – Became the standard in 1998
  • ADSL, with theoretical maximum of up to 8 megabits per second (Mbps) – Gained popularity in 1999

(Check out How DSL Works and How Cable Modems Work for more information on the progression of modem technology and current speeds.)

How Modems Work

0

If you are reading this article on your computer at home, it probably arrived via modem.

In this edition of HowStuffWorks, we’ll show you how a modem brings you Web pages. We’ll start with the original 300-baud modems and progress all the way through to the ADSL configurations!

Up Next

  • How Google Loon Works
  • How the Internet of Things Works
  • How Google Fiber Works
  • 10 Nightmare Scenarios From the Internet of Things
  • How to Set up Wi-Fi on your Laptop

(Note: If you are unfamiliar with bits, bytes and the ASCII character codes, reading How Bits and Bytes Work will help make this article much clearer.)

Let’s get started with a short recap of how the modem came to be.

How Microprocessors Work

0

64-bit Microprocessors

Photo courtesy AMD

Sixty-four-bit processors have been with us since 1992, and in the 21st century they have started to become mainstream. Both Intel and AMD have introduced 64-bit chips, and the Mac G5 sports a 64-bit processor. Sixty-four-bit processors have 64-bit ALUs, 64-bit registers, 64-bit buses and so on.

One reason why the world needs 64-bit processors is because of their enlarged address spaces. Thirty-two-bit chips are often constrained to a maximum of 2 GB or 4 GB of RAM access. That sounds like a lot, given that most home computers currently use only 256 MB to 512 MB of RAM. However, a 4-GB limit can be a severe problem for server machines and machines running large databases. And even home machines will start bumping up against the 2 GB or 4 GB limit pretty soon if current trends continue. A 64-bit chip has none of these constraints because a 64-bit RAM address space is essentially infinite for the foreseeable future — 2^64 bytes of RAM is something on the order of a billion gigabytes of RAM.

Up Next

  • Is Moore’s Law outdated?
  • How Sandy Bridge Works
  • What is computing power?
  • How Moore’s Law Works
  • How the Nehalem Microprocessor Microarchitecture Works

With a 64-bit address bus and wide, high-speed data buses on the motherboard, 64-bit machines also offer faster I/O (input/output) speeds to things like hard disk drives and video cards. These features can greatly increase system performance.

Servers can definitely benefit from 64 bits, but what about normal users? Beyond the RAM solution, it is not clear that a 64-bit chip offers "normal users" any real, tangible benefits at the moment. They can process data (very complex data features lots of real numbers) faster. People doing video editing and people doing photographic editing on very large images benefit from this kind of computing power. High-end games will also benefit, once they are re-coded to take advantage of 64-bit features. But the average user who is reading e-mail, browsing the Web and editing Word documents is not really using the processor in that way.

For more information on microprocessors and related topics, check out the links on the next page.