กลับไปหน้าบทความ

อ่าน 14 นาที

Computer architecture

In computer science and computer engineering , a computer architecture is the conceptual design and operational structure of a computer system that define how component parts are...

Computer architecture

Block diagram of a basic computer with uniprocessor CPU. Black lines indicate the flow of control signals, whereas red lines indicate the flow of processor instructions and data. Arrows indicate the direction of flow.

In computer science and computer engineering, a computer architecture is the conceptual design and operational structure of a computer system that define how component parts are organized and interact to execute programs efficiently.[1] It is often a general description that ignores precise implementation details.[2] It covers the instruction set architecture, CPU microarchitecture, memory, and input/output systems.

Computer architecture also considers tradeoffs such as performance, cost, power, reliability, and security.

History

The first documented computer architecture was in the correspondence between Charles Babbage and Ada Lovelace, describing the analytical engine. While building the computer Z1 in 1936, Konrad Zuse described in two patent applications for his future projects that machine instructions could be stored in the same storage used for data, i.e., the stored-program concept.[3][4] Two other early and important examples are:

The term "architecture" in computer literature can be traced to the work of Lyle R. Johnson and Frederick P. Brooks, Jr., members of the Machine Organization department in IBM's main research center in 1959. Johnson had the opportunity to write a proprietary research communication about the Stretch, an IBM-developed supercomputer for Los Alamos National Laboratory (at the time known as Los Alamos Scientific Laboratory). To describe the level of detail for discussing the luxuriously embellished computer, he noted that his description of formats, instruction types, hardware parameters, and speed enhancements were at the level of "system architecture", a term that seemed more useful than "machine organization".[7]

Subsequently, Brooks, a Stretch designer, opened Chapter 2 of a book called Planning a Computer System: Project Stretch by stating, "Computer architecture, like other architecture, is the art of determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints."[8]

Brooks went on to help develop the IBM System/360 line of computers, in which "architecture" became a noun defining "what the user needs to know".[9] The System/360 line was succeeded by several compatible lines of computers, including the current IBM Z line. Later, computer users came to use the term in many less explicit ways.[10]

The earliest computer architectures were designed on paper and then directly built into the final hardware form.[11] Later, computer architecture prototypes were physically built in the form of a transistor–transistor logic (TTL) computer—such as the prototypes of the 6800 and the PA-RISC—tested, and tweaked, before committing to the final hardware form. As of the 1990s, new computer architectures are typically "built", tested, and tweaked—inside some other computer architecture in a computer architecture simulator; or inside a FPGA as a soft microprocessor; or both—before committing to the final hardware form.[12]

Subcategories

The discipline of computer architecture has three main subcategories:[13]

มีเทคโนโลยีอื่นๆ ในสถาปัตยกรรมคอมพิวเตอร์ เทคโนโลยีต่อไปนี้ถูกใช้ในบริษัทขนาดใหญ่ เช่น Intel และมีการประมาณการในปี พ.ศ. 2545 [ 13 ]ว่าคิดเป็น 1% ของสถาปัตยกรรมคอมพิวเตอร์ทั้งหมด:

  • สถาปัตยกรรมระดับมหภาค : ชั้นทางสถาปัตยกรรมที่เป็นนามธรรมมากกว่าสถาปัตยกรรมระดับจุลภาค
  • สถาปัตยกรรมชุดคำสั่งแอสเซมบลี : ตัวประกอบแอสเซมบลีอัจฉริยะอาจแปลงภาษาแอสเซมบลี แบบนามธรรม ที่ใช้ร่วมกันในกลุ่มเครื่องจักรให้เป็นภาษาเครื่อง ที่แตกต่างกันเล็กน้อย สำหรับการใช้งานที่แตก ต่างกัน
  • สถาปัตยกรรมระดับมหภาคที่โปรแกรมเมอร์มองเห็นได้ : เครื่องมือภาษาโปรแกรมระดับสูง เช่นคอมไพเลอร์อาจกำหนดอินเทอร์เฟซหรือข้อตกลงที่สอดคล้องกันสำหรับโปรแกรมเมอร์ที่ใช้งาน โดยแยกความแตกต่างระหว่างชุดคำสั่งพื้นฐาน (ISA) และสถาปัตยกรรมระดับจุลภาคตัวอย่างเช่น มาตรฐานของภาษา C , C++หรือJavaกำหนดสถาปัตยกรรมระดับมหภาคที่โปรแกรมเมอร์มองเห็นได้แตกต่างกัน
  • ไมโครโค้ด : ไมโครโค้ดคือซอฟต์แวร์ที่แปลงคำสั่งให้ทำงานบนชิป มันทำหน้าที่เหมือนตัวห่อหุ้มฮาร์ดแวร์ โดยนำเสนอชุดคำสั่งที่เหมาะสมที่สุดสำหรับฮาร์ดแวร์นั้น ความสามารถในการแปลงคำสั่งนี้ช่วยให้นักออกแบบชิปมีตัวเลือกที่ยืดหยุ่นมากขึ้น: ตัวอย่างเช่น 1. ชิปรุ่นใหม่ที่ได้รับการปรับปรุงสามารถใช้ไมโครโค้ดเพื่อนำเสนอชุดคำสั่งเดียวกันกับชิปรุ่นเก่า ดังนั้นซอฟต์แวร์ทั้งหมดที่ใช้ชุดคำสั่งนั้นจะสามารถทำงานบนชิปใหม่ได้โดยไม่ต้องเปลี่ยนแปลงใดๆ ตัวอย่างเช่น 2. ไมโครโค้ดสามารถนำเสนอชุดคำสั่งที่หลากหลายสำหรับชิปพื้นฐานเดียวกัน ทำให้สามารถใช้งานซอฟต์แวร์ได้หลากหลายมากขึ้น
  • Pin architecture: the hardware functions that a microprocessor should provide to a hardware platform, e.g., the x86 pins A20M, FERR/IGNNE or FLUSH. Also, messages that the processor should emit so that external caches can be invalidated (emptied). Pin architecture functions are more flexible than ISA functions because external hardware can adapt to new encodings, or change from a pin to a message. The term "architecture" fits, because the functions must be provided for compatible systems, even if the detailed method changes.

Roles

Definition

Computer architecture is concerned with balancing the performance, efficiency, cost, and reliability of a computer system. The case of instruction set architecture can be used to illustrate the balance of these competing factors. More complex instruction sets enable programmers to write more space efficient programs, since a single instruction can encode some higher-level abstraction (such as the x86 Loop instruction).[15] However, longer and more complex instructions take longer for the processor to decode and can be more costly to implement effectively. The increased complexity from a large instruction set also creates more room for unreliability when instructions interact in unexpected ways.

The implementation involves integrated circuit design, packaging, power, and cooling. Optimization of the design requires familiarity with topics from compilers and operating systems to logic design and packaging.[16]

Instruction set architecture

An instruction set architecture (ISA) is the interface between the computer's software and hardware and also can be viewed as the programmer's view of the machine. Computers do not understand high-level programming languages such as Java, C++, or most programming languages used. A processor only understands instructions encoded in some numerical fashion, usually as binary numbers. Software tools, such as compilers, translate those high level languages into instructions that the processor can understand.[17][18]

Besides instructions, the ISA defines items in the computer that are available to a program—e.g., data types, registers, addressing modes, and memory. Instructions locate these available items with register indexes (or names) and memory addressing modes.[19][20]

The ISA of a computer is usually described in a small instruction manual, which describes how the instructions are encoded. Also, it may define short (vaguely) mnemonic names for the instructions. The names can be recognized by a software development tool called an assembler. An assembler is a computer program that translates a human-readable form of the ISA into a computer-readable form. Disassemblers are also widely available, usually in debuggers and software programs to isolate and correct malfunctions in binary computer programs.[21]

ISAs vary in quality and completeness. A good ISA compromises between programmer convenience (how easy the code is to understand), size of the code (how much code is required to do a specific action), cost of the computer to interpret the instructions (more complexity means more hardware needed to decode and execute the instructions), and speed of the computer (with more complex decoding hardware comes longer decode time). Memory organization defines how instructions interact with the memory, and how memory interacts with itself.

During design emulation, emulators can run programs written in a proposed instruction set. Modern emulators can measure size, cost, and speed to determine whether a particular ISA is meeting its goals.

Computer organization

Computer organization helps optimize performance-based products. For example, software engineers need to know the processing power of processors. They may need to optimize software in order to gain the most performance for the lowest price. This can require quite a detailed analysis of the computer's organization. For example, in an SD card, the designers might need to arrange the card so that the most data can be processed in the fastest possible way.

การจัดระเบียบคอมพิวเตอร์ยังช่วยในการวางแผนการเลือกโปรเซสเซอร์สำหรับโครงการเฉพาะเจาะจง โครงการ มัลติมีเดียอาจต้องการการเข้าถึงข้อมูลที่รวดเร็วมาก ในขณะที่เครื่องเสมือนอาจต้องการการขัดจังหวะที่รวดเร็ว บางครั้งงานบางอย่างก็ต้องการส่วนประกอบเพิ่มเติมด้วย ตัวอย่างเช่น คอมพิวเตอร์ที่สามารถเรียกใช้เครื่องเสมือนได้นั้นต้องการ ฮาร์ดแวร์ หน่วยความจำเสมือนเพื่อให้สามารถแยกหน่วยความจำของคอมพิวเตอร์เสมือนต่างๆ ออกจากกันได้ การจัดระเบียบและคุณสมบัติของคอมพิวเตอร์ยังส่งผลต่อการใช้พลังงานและต้นทุนของโปรเซสเซอร์ด้วย

การดำเนินการ

เมื่อ ออกแบบ ชุดคำสั่งและสถาปัตยกรรมไมโครเสร็จแล้ว จะต้องพัฒนาเครื่องจักรที่ใช้งานได้จริง กระบวนการออกแบบนี้เรียกว่าการนำไปใช้งานจริง (Implementation ) โดยปกติแล้ว การนำไปใช้งานจริงจะไม่ถือว่าเป็นงานออกแบบสถาปัตยกรรม แต่เป็น งานวิศวกรรมการออกแบบฮาร์ดแวร์การนำไปใช้งานจริงสามารถแบ่งย่อยออกเป็นหลายขั้นตอนได้ดังนี้:

  • การออกแบบ การนำไปใช้เชิงตรรกะคือการออกแบบวงจรที่จำเป็นในระดับเกตตรรกะ
  • การออกแบบวงจรนั้นเกี่ยวข้องกับ การออกแบบระดับ ทรานซิสเตอร์ขององค์ประกอบพื้นฐาน (เช่น เกต มัลติเพล็กเซอร์แลตช์ ) รวมถึงบล็อกขนาดใหญ่บางส่วน ( ALUแคช ฯลฯ) ซึ่งอาจได้รับการออกแบบในระดับเกตตรรกะ หรือแม้แต่ในระดับทางกายภาพหากการออกแบบนั้นต้องการ
  • การนำไปใช้ในเชิงกายภาพนั้นเกี่ยวข้องกับการออกแบบวงจรทางกายภาพ โดยนำส่วนประกอบต่างๆ ของวงจรมาวางไว้บนแผนผัง ของชิป หรือบนแผงวงจร แล้วสร้างสายไฟเชื่อมต่อส่วนประกอบเหล่านั้นเข้าด้วยกัน
  • การทดสอบการตรวจสอบความถูกต้องของการออกแบบจะทดสอบคอมพิวเตอร์โดยรวมเพื่อดูว่าสามารถทำงานได้ในทุกสถานการณ์และทุกช่วงเวลาหรือไม่ เมื่อกระบวนการตรวจสอบความถูกต้องของการออกแบบเริ่มต้นขึ้น การออกแบบในระดับตรรกะจะถูกทดสอบโดยใช้โปรแกรมจำลองตรรกะ อย่างไรก็ตาม วิธีนี้มักจะช้าเกินไปที่จะทำการทดสอบที่สมจริง ดังนั้น หลังจากทำการแก้ไขตามผลการทดสอบครั้งแรกแล้ว จึงสร้างต้นแบบโดยใช้ Field-Programmable Gate-Arrays ( FPGAs ) โครงงานอดิเรกส่วนใหญ่จะหยุดอยู่ที่ขั้นตอนนี้ ขั้นตอนสุดท้ายคือการทดสอบวงจรรวมต้นแบบ ซึ่งอาจต้องมีการออกแบบใหม่หลายครั้ง

สำหรับซีพียูกระบวนการพัฒนาทั้งหมดจะถูกจัดระเบียบแตกต่างออกไป และมักเรียกกันว่า การ ออกแบบ ซีพียู

เป้าหมายการออกแบบ

รูปแบบที่แน่นอนของระบบคอมพิวเตอร์นั้นขึ้นอยู่กับข้อจำกัดและเป้าหมาย สถาปัตยกรรมคอมพิวเตอร์มักจะแลกเปลี่ยนระหว่างมาตรฐานพลังงานเทียบกับประสิทธิภาพต้นทุน ความจุหน่วยความจำความหน่วง (ความหน่วงคือระยะเวลาที่ข้อมูลจากโหนดหนึ่งเดินทางไปยังแหล่งที่มา) และปริมาณงาน บางครั้งอาจมีปัจจัยอื่นๆ ที่ต้องพิจารณาด้วย เช่น คุณสมบัติ ขนาด น้ำหนัก ความน่าเชื่อถือ และความสามารถในการขยาย

The most common scheme does an in-depth power analysis and figures out how to keep power consumption low while maintaining adequate performance.

Performance

Modern computer performance is often described in instructions per cycle (IPC), which measures the efficiency of the architecture at any clock frequency; a higher IPC means the computer can do more work per unit of time. Older computers had IPC counts as low as 0.1 while modern processors easily reach nearly 1. Superscalar processors may reach three to five IPC by executing several instructions per clock cycle.

Counting machine-language instructions would be misleading because they can do varying amounts of work in different ISAs. The "instruction" in the standard measurements is not a count of the ISA's machine-language instructions, but a unit of measurement, usually based on the speed of the VAX computer architecture.

Many people used to measure a computer's speed by the clock rate (usually in MHz or GHz). This refers to the cycles per second of the main clock of the CPU. However, this metric is somewhat misleading, as a machine with a higher clock rate may not necessarily have greater performance. As a result, manufacturers have moved away from clock speed as a measure of performance.

Other factors influence speed, such as the mix of functional units, bus speeds, available memory, and the type and order of instructions in the programs.

There are two main types of speed: latency and throughput. Latency is the time between the start of a process and its completion. Throughput is the amount of work done per unit time. Interrupt latency is the guaranteed maximum response time of the system to an electronic event (like when the disk drive finishes moving some data).

Performance is affected by a very wide range of design choices — for example, pipelining a processor usually makes latency worse, but makes throughput better. Computers that control machinery usually need low interrupt latencies. These computers operate in a real-time environment and fail if an operation is not completed in a specified amount of time. For example, computer-controlled anti-lock brakes must begin braking within a predictable and limited time period after the brake pedal is sensed or else failure of the brake will occur.

การทดสอบประสิทธิภาพ (Benchmarking)พิจารณาปัจจัยทั้งหมดเหล่านี้โดยการวัดเวลาที่คอมพิวเตอร์ใช้ในการรันโปรแกรมทดสอบต่างๆ แม้ว่าการทดสอบประสิทธิภาพจะแสดงจุดแข็ง แต่ก็ไม่ควรเป็นวิธีหลักในการเลือกคอมพิวเตอร์ บ่อยครั้งที่เครื่องที่นำมาวัดผลมีความแตกต่างกันในด้านต่างๆ ตัวอย่างเช่น ระบบหนึ่งอาจประมวลผลแอปพลิเคชันทางวิทยาศาสตร์ได้อย่างรวดเร็ว ในขณะที่อีกระบบหนึ่งอาจแสดงผลวิดีโอเกมได้อย่างราบรื่นกว่า นอกจากนี้ นักออกแบบอาจกำหนดเป้าหมายและเพิ่มคุณสมบัติพิเศษให้กับผลิตภัณฑ์ของตน ทั้งทางฮาร์ดแวร์หรือซอฟต์แวร์ ซึ่งช่วยให้การทดสอบประสิทธิภาพเฉพาะด้านหนึ่งๆ ทำงานได้รวดเร็ว แต่ไม่ให้ข้อได้เปรียบที่คล้ายกันสำหรับงานทั่วไป

ประสิทธิภาพการใช้พลังงาน

ประสิทธิภาพการใช้พลังงานเป็นอีกหนึ่งตัวชี้วัดที่สำคัญในคอมพิวเตอร์สมัยใหม่ ประสิทธิภาพการใช้พลังงานที่สูงขึ้นมักแลกมาด้วยความเร็วที่ต่ำลงหรือต้นทุนที่สูงขึ้น ในอดีต การวัดการใช้พลังงานในสถาปัตยกรรมคอมพิวเตอร์โดยทั่วไปใช้หน่วย MIPS/W (ล้านคำสั่งต่อวินาทีต่อวัตต์) แต่การออกแบบสมัยใหม่ใช้การวัดที่ซับซ้อนกว่า เช่น เกณฑ์มาตรฐาน ประสิทธิภาพต่อวัตต์และพลังงานต่อคำสั่ง

วงจรรวมสมัยใหม่ใช้พลังงานโดยรวมมากขึ้น แม้ว่าจะมีการปรับปรุงประสิทธิภาพการใช้พลังงานต่อทรานซิสเตอร์ผ่านการลดขนาดกระบวนการแล้ว ก็ตาม [ 22 ]การเพิ่มขึ้นนี้เกิดจากการเติบโตอย่างรวดเร็วของจำนวนทรานซิสเตอร์ต่อชิปซึ่งต้องการเครือข่ายการจ่ายพลังงานที่ซับซ้อนมากขึ้น[ 23 ]นอกจากนี้ ความหนาแน่นของพลังงาน (วัตต์ต่อหน่วยพื้นที่) เพิ่มขึ้นเมื่อขนาดของฟีเจอร์ (เช่น ขนาดของทรานซิสเตอร์) เล็กลง ทำให้การจัดการความร้อนเป็นเรื่องที่ท้าทายมากขึ้น[ 24 ]อุณหภูมิการทำงานที่สูงขึ้นยิ่งทำให้ความท้าทายด้านความร้อนเหล่านี้ซับซ้อนขึ้นโดยการเพิ่มความต้านทาน ของการเชื่อมต่อ ทำให้เกิดวงจรป้อนกลับเชิงบวกระหว่างการใช้พลังงานและการสร้างความร้อน

เนื่องจากการลดขนาดของทรานซิสเตอร์ชะลอตัวลงและข้อจำกัดด้านพลังงานกลายเป็นปัจจัยจำกัด ประสิทธิภาพการใช้พลังงานจึงเริ่มมีความสำคัญมากขึ้น หรืออาจสำคัญกว่าการใส่ทรานซิสเตอร์จำนวนมากขึ้นลงในชิปเดียว การออกแบบโปรเซสเซอร์ล่าสุดแสดงให้เห็นถึงความสำคัญนี้ โดยเน้นที่ประสิทธิภาพการใช้พลังงานมากกว่าการอัดทรานซิสเตอร์ลงในชิปเดียวให้ได้มากที่สุด[ 25 ]ในโลกของคอมพิวเตอร์ฝังตัวประสิทธิภาพการใช้พลังงานถือเป็นเป้าหมายสำคัญควบคู่ไปกับปริมาณงานและความหน่วงมานานแล้ว

การเปลี่ยนแปลงในความต้องการของตลาด

Increases in clock frequency have grown more slowly over the past few years, compared to power reduction improvements. This has been driven by the end of Moore's Law and demand for longer battery life and reductions in size for mobile technology. This change in focus from higher clock rates to power consumption and miniaturization can be shown by the significant reductions in power consumption, as much as 50%, that were reported by Intel in their release of the Haswell microarchitecture; where they dropped their power consumption benchmark from 30–40 watts down to 10–20 watts.[26] Comparing this to the processing speed increase of 3 GHz to 4 GHz (2002 to 2006), it can be seen that the focus in research and development is shifting away from clock frequency and moving towards consuming less power and taking up less space.[27]

See also

Sources

  • John L. Hennessy and David Patterson (2006). Computer Architecture: A Quantitative Approach (Fourth ed.). Morgan Kaufmann. ISBN 978-0-12-370490-0.
  • Barton, Robert S. (1961). "Functional Design of Computers". Communications of the ACM. 4 (9): 405. doi:10.1145/366696.366774.
  • Barton, Robert S. (May 1961). "A New Approach to the Functional Design of a Digital Computer". Proceedings of the Western Joint Computer Conference. pp. 393–396. doi:10.1145/1460690.1460736. About the design of the Burroughs B5000 computer.
  • Bell, C. Gordon; Newell, Allen (1971). Computer Structures: Readings and Examples. McGraw-Hill.
  • Blaauw, GA ; Brooks, FP, Jr. (1964). "โครงสร้างของ System/360 ตอนที่ 1 - โครงร่างของโครงสร้างเชิงตรรกะ". IBM Systems Journal . 3 (2): 119– 135. doi : 10.1147/sj.32.0118 .{{cite journal}}: CS1 maint: multiple names: authors list ( link )
  • Tanenbaum, Andrew S. (1979). โครงสร้างองค์กรคอมพิวเตอร์ . Englewood Cliffs, New Jersey : Prentice-Hall. ISBN 0-13-148521-0.
  • การบรรยายด้านสถาปัตยกรรมคอมพิวเตอร์ของมหาวิทยาลัยคาร์เนกีเมลลอน
  • ISCA: เอกสารประกอบการประชุมสัมมนาวิชาการนานาชาติว่าด้วยสถาปัตยกรรมคอมพิวเตอร์
  • ไมโคร: การประชุมวิชาการนานาชาติ IEEE/ACM ว่าด้วยสถาปัตยกรรมไมโคร
  • HPCA: การประชุมวิชาการนานาชาติว่าด้วยสถาปัตยกรรมคอมพิวเตอร์ประสิทธิภาพสูง
  • ASPLOS: การประชุมนานาชาติว่าด้วยการสนับสนุนด้านสถาปัตยกรรมสำหรับภาษาโปรแกรมและระบบปฏิบัติการ
  • ธุรกรรม ACM ว่าด้วยสถาปัตยกรรมและการเพิ่มประสิทธิภาพโค้ด
  • วารสาร IEEE Transactions on Computers
  • สถาปัตยกรรมระบบคอมพิวเตอร์ของฟอน นอยมันน์ที่Wayback Machine (เก็บถาวรเมื่อ 31 ตุลาคม 2017)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Computer_architecture&oldid=1357823078 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ Computer architecture

In computer science and computer engineering , a computer architecture is the conceptual design and operational structure of a computer system that define how component parts are...

History

The first documented computer architecture was in the correspondence between Charles Babbage and Ada Lovelace , describing the analytical engine .

Subcategories

The discipline of computer architecture has three main subcategories: [ 13 ]

Definition

Computer architecture is concerned with balancing the performance, efficiency, cost, and reliability of a computer system. The case of instruction set architecture can be used to illustrate the balance of these competing factors.