משתמש:יונהה/ארגז חול

מתוך ויקיפדיה, האנציקלופדיה החופשית
חריצים לכרטיסים בעלי אפיקי PCI EXPRESS (מלמעלה למטה : x4, x16, x1 ו- x16) , בהשוואה לחריץ כרטיסים בעל אפיק PCI של 32 סיביות (בתחתית)

בתחום של ארכיטקטורת מחשבים מוגדר אפיק (באנגלית: bus) כמערכת במחשב שתפקידה להעביר נתונים בין רכיבי המחשב השונים או בין מחשבים שונים. כל אפיק מגדיר אוסף של חיבורים שמאפשרים לחבר אל האפיק, באופן ידני, התקנים, כרטיסים וכבלים.

אפיקי המחשב הראשונים היו אפיקים חשמליים מקבילי בעלי מספר חיבורים. כיום המושג משמש להגדיר תצורות שמאפשרות את אותה פונקציונאליות לוגית כמו זו של האפיק החשמלי. אפיקי מחשב מודרניים יכולים לעשות שימוש גם בחיבורים מקביליים וגם בחיבורים סיריאליים. ניתן לחווט את האפיקים בטופולוגיות שונות כגון multidrop, שרשרת חינניות, או USB.

היסטוריה[עריכת קוד מקור | עריכה]

דור ראשון[עריכת קוד מקור | עריכה]

אפיקי המחשב הראשונים היו פקעות של חיווט אשר חיבר התקנים וזיכרון. לרוב היה אפיק אחד לזיכרון אחר להתקנים והם היו נגישים באמצעות פקודות נפרדות אשר עשו שימוש בפרוטוקולים ובתזמונים יחודיים לכל אפיק.

אחד הקשיים הראשונים היה השימוש בפסיקות. המחשבים הראשונים ביצעו פעולות קלט ופלט באמצעות Busy waiting להתקן שיהיה מוכן. הדבר היה צוואר בקבוק לתוכניות שהיו צריכות לבצע מטלות אחרות בזמן ההמתנה. במצב שכזה, אם התוכנית תנסה לבצע מטלות אחרות, יתכן שיקח זמן רב עבורה לבדוק שוב האם התקן היעד מוכן וכך מידע יאבד. הפתרון היה שההתקנים יבצעו פסיקות לפעולת המעבד. הפסיקות היו מתועדפות משום שהמעבד יכול לבצע קוד רק עבור התקן אחד כל פעם וישנם התקנים שחשיבות הזמן עבורם גדולה מלאחרים.

השיטה הקלאסית והפשוטה לתעדף פסיקות או גישה לבס היתה שימוש בשרשרת חינניות.

One of the first complications was the use of interrupts. Early computers performed I/O by waiting in a loop for the peripheral to become ready. This was a waste of time for programs that had other tasks to do. Also, if the program attempted to perform those other tasks, it might take too long for the program to check again, resulting in loss of data. Engineers thus arranged for the peripherals to interrupt the CPU. The interrupts had to be prioritized, because the CPU can only execute code for one peripheral at a time, and some devices are more time-critical than others.

Some time after this, some computers began to share memory among several CPUs. On these computers, access to the bus had to be prioritized, as well.

The classic, simple way to prioritize interrupts or bus access was with a daisy chain.

DEC noted that having two buses seemed wasteful and expensive for mass-produced minicomputers, and mapped peripherals into the memory bus, so that the devices appeared to be memory locations.

Early microcomputer bus systems were essentially a passive backplane connected directly or through buffer amplifiers to the pins of the CPU. Memory and other devices would be added to the bus using the same address and data pins as the CPU itself used, connected in parallel. Communication was controlled by the CPU, which had read and written data from the devices as if they are blocks of memory, using the same instructions, all timed by a central clock controlling the speed of the CPU. Still, devices interrupted the CPU by signaling on separate CPU pins. For instance, a disk drive controller would signal the CPU that new data was ready to be read, at which point the CPU would move the data by reading the "memory location" that corresponded to the disk drive. Almost all early microcomputers were built in this fashion, starting with the S-100 bus in the Altair.

In some instances, most notably in the IBM PC, although similar physical architecture is employed, instructions to access peripherals (in and out) and memory (mov and others) have not been made uniform at all, and still generate distinct CPU signals, that could be used to implement a separate I/O bus.

These simple bus systems had a serious drawback when used for general-purpose computers. All the equipment on the bus has to talk at the same speed, as it shares a single clock.

Increasing the speed of the CPU becomes harder, because the speed of all the devices must increase as well. When it is not practical or economical to have all devices as fast as the CPU, the CPU must either enter a wait state, or work at a slower clock frequency temporarily[1], to talk to other devices in the computer. While acceptable in embedded systems, this problem was not tolerated for long in general-purpose, user-expandable computers.

Such bus systems are also difficult to configure when constructed from common off-the-shelf equipment. Typically each added expansion card requires many jumpers in order to set memory addresses, I/O addresses, interrupt priorities, and interrupt numbers.

דור שני[עריכת קוד מקור | עריכה]

"Second generation" bus systems like NuBus addressed some of these problems. They typically separated the computer into two "worlds", the CPU and memory on one side, and the various devices on the other, with a bus controller in between. This allowed the CPU to increase in speed without affecting the bus. This also moved much of the burden for moving the data out of the CPU and into the cards and controller, so devices on the bus could talk to each other with no CPU intervention. This led to much better "real world" performance, but also required the cards to be much more complex. These buses also often addressed speed issues by being "bigger" in terms of the size of the data path, moving from 8-bit parallel buses in the first generation, to 16 or 32-bit in the second, as well as adding software setup (now standardised as Plug-n-play) to supplant or replace the jumpers.

However these newer systems shared one quality with their earlier cousins, in that everyone on the bus had to talk at the same speed. While the CPU was now isolated and could increase speed without fear, CPUs and memory continued to increase in speed much faster than the buses they talked to. The result was that the bus speeds were now very much slower than what a modern system needed, and the machines were left starved for data. A particularly common example of this problem was that video cards quickly outran even the newer bus systems like PCI, and computers began to include AGP just to drive the video card. By 2004 AGP was outgrown again by high-end video cards and is being replaced with the new PCI Express bus.

An increasing number of external devices started employing their own bus systems as well. When disk drives were first introduced, they would be added to the machine with a card plugged into the bus, which is why computers have so many slots on the bus. But through the 1980s and 1990s, new systems like SCSI and IDE were introduced to serve this need, leaving most slots in modern systems empty. Today there are likely to be about five different buses in the typical machine, supporting various devices.

דור שלישי[עריכת קוד מקור | עריכה]

"Third generation" buses have been emerging into the market since about 2001, including HyperTransport and InfiniBand. They also tend to be very flexible in terms of their physical connections, allowing them to be used both as internal buses, as well as connecting different machines together. This can lead to complex problems when trying to service different requests, so much of the work on these systems concerns software design, as opposed to the hardware itself. In general, these third generation buses tend to look more like a network than the original concept of a bus, with a higher protocol overhead needed than early systems, while also allowing multiple devices to use the bus at once.

Buses such as Wishbone have been developed by the open source hardware movement in an attempt to further remove legal/patenting constraints from computer design.

תיאור האפיק[עריכת קוד מקור | עריכה]

At one time, "bus" meant an electrically parallel system, with electrical conductors similar or identical to the pins on the CPU. This is no longer the case, and modern systems are blurring the lines between buses and networks.

Buses can be parallel buses, which carry data words in parallel on multiple wires, or serial buses, which carry data in bit-serial form. The addition of extra power and control connections, differential drivers, and data connections in each direction usually means that most serial buses have more conductors than the minimum of one used in the 1-Wire serial bus. As data rates increase, the problems of timing skew, power consumption, electromagnetic interference and crosstalk across parallel buses become more and more difficult to circumvent. One partial solution to this problem has been to double pump the bus. Often, a serial bus can actually be operated at higher overall data rates than a parallel bus, despite having fewer electrical connections, because a serial bus inherently has no timing skew or crosstalk. USB, FireWire, and Serial ATA are examples of this. Multidrop connections do not work well for fast serial buses, so most modern serial buses use daisy-chain or hub designs.

Most computers have both internal and external buses. An internal bus connects all the internal components of a computer to the motherboard (and thus, the CPU and internal memory). These types of buses are also referred to as a local bus, because they are intended to connect to local devices, not to those in other machines or external to the computer. An external bus connects external peripherals to the motherboard.

Network connections such as Ethernet are not generally regarded as buses, although the difference is largely conceptual rather than practical. The arrival of technologies such as InfiniBand and HyperTransport is further blurring the boundaries between networks and buses. Even the lines between internal and external are sometimes fuzzy, I²C can be used as both an internal bus, or an external bus (where it is known as ACCESS.bus), and InfiniBand is intended to replace both internal buses like PCI as well as external ones like Fibre Channel. In the typical desktop application, USB serves as a peripheral bus, but it also sees some use as a networking utility and for connectivity between different computers, again blurring the conceptual distinction.

טופולגית אפיק[עריכת קוד מקור | עריכה]

In a network, the master scheduler controls the data traffic. If data is to be transferred, the requesting computer sends a message to the scheduler, which puts the request into a queue. The message contains an identification code which is broadcast to all nodes of the network. The scheduler works out priorities and notifies the receiver as soon as the bus is available.

The identified node takes the message and performs the data transfer between the two computers. Having completed the data transfer the bus becomes free for the next request in the scheduler's queue.

Bus benefit: any computer can be accessed directly and messages can be sent in a relatively simple and fast way. Disadvantage: needs a scheduler to assign frequencies and priorities to organize the traffic.

See also: Bus network.

דוגמאות לאפיקי מחשב פנימיים[עריכת קוד מקור | עריכה]

Parallel[עריכת קוד מקור | עריכה]

Serial[עריכת קוד מקור | עריכה]

Self Repairable[עריכת קוד מקור | עריכה]

Self repairable elastic interface buses have recently been invented by IBM. IBM has filed a patent application on these buses which is undergoing peer review on Peer to Patent. The public commentary period closed on July 24, 2008.[2] The IBM invention provides a spare net which the system switches to in the event that an alternate net doesn't function.

Examples of external computer buses[עריכת קוד מקור | עריכה]

Parallel[עריכת קוד מקור | עריכה]

  • Advanced Technology Attachment or ATA (aka PATA, IDE, EIDE, ATAPI, etc.) disk/tape peripheral attachment bus
    (the original ATA is parallel, but see also the recent serial ATA)
  • HIPPI HIgh Performance Parallel Interface
  • IEEE-488 (aka GPIB, General-Purpose Instrumentation Bus, and HPIB, Hewlett-Packard Instrumentation Bus)
  • PC card, previously known as PCMCIA, much used in laptop computers and other portables, but fading with the introduction of USB and built-in network and modem connections
  • SCSI Small Computer System Interface, disk/tape peripheral attachment bus

Serial[עריכת קוד מקור | עריכה]

Examples of internal/external computer buses[עריכת קוד מקור | עריכה]

References[עריכת קוד מקור | עריכה]

  1. ^ Bray, Andrew C.; Dickens, Adrian C.; Holmes, Mark A. (1983). "28. The One Megahertz bus". The Advanced User Guide for the BBC Microcomputer (zipped PDF). Cambridge, UK: Cambridge Microcomputer Centre. pp. 442–443. ISBN 0946827001. נבדק ב-2008-03-28.
  2. ^ Peer to Patent review page for "System and Method to Support Use of Bus Spare Wires in Connection Modules"

See also[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

קטגוריה:אלקטרוניקה קטגוריה:חומרה קטגוריה:אפיקי מחשב קטגוריה:מחשבים