Home | Forum | DAQ Fundamentals | DAQ Hardware | DAQ Software Input Devices | Data Loggers + Recorders | Books | Links + Resources |
AMAZON multi-meters discounts AMAZON oscilloscope discounts 1. The Importance Of Architecture Computers are everywhere. Smart phones, video games, household appliances, and vehicles ... all contain programmable processors. Each of these systems depends on software, which brings us to an important question: why should someone interested in building software study computer architecture? The answer is that understanding the hardware makes it possible to write smaller, faster code that is less prone to errors. A basic knowledge of architecture also helps programmers appreciate the relative cost of operations (e.g., the time required for an I/O operation compared to the time required for an arithmetic operation) and the effects of programming choices. Finally, under standing how hardware works helps programmers debug -- someone who is aware of the hardware has more clues to help spot the source of bugs. In short, the more a programmer understands about the underlying hardware, the better he or she will be at creating software. 2. Learning the Essentials As any hardware engineer will tell you, digital hardware used to build computer systems is incredibly complex. In addition to myriad technologies and intricate sets of electronic components that constitute each technology, engineers must master design rules that dictate how the components can be constructed and how they can be interconnected to form systems. Furthermore, the technologies continue to evolve, and newer, smaller, faster components appear continuously. Fortunately, as this text demonstrates, it is possible to understand architectural components without knowing low-level technical details. The text focuses on essentials, and explains computer architecture in broad, conceptual terms -- it describes each of the major components and examines their role in the overall system. Thus, readers do not need a background in electronics or electrical engineering to understand the subject. 3. Organization Of The Guide What are the major topics we will cover? The text is organized into five parts. Basics. The first section covers two topics that are essential to the rest of the guide: digital logic and data representation. We will see that in each case, the issue is the same: the use of electronic mechanisms to represent and manipulate digital information. Processors. One of the three key areas of architecture, processing concerns both computation (e.g., arithmetic) and control (e.g., executing a sequence of steps). We will learn about the basic building blocks, and see how the blocks are used in a modern Central Processing Unit (CPU). Memory. The second key area of architecture, memory systems, focuses on the storage and access of digital information. We will examine both physical and virtual memory systems, and understand one of the most important concepts in computing: caching. I/O. The third key area of architecture, input and output, focuses on the interconnection of computers and devices such as microphones, key boards, mice, displays, disks, and networks. We will learn about bus technology, see how a processor uses a bus to communicate with a device, and understand the role of device driver software. Advanced Topics. The final section focuses on two important topics that arise in many forms: parallelism and pipelining. We will see how either parallel or pipelined hardware can be used to improve overall performance. 4. What We Will Omit Paring a topic down to essentials means choosing items to omit. In the case of this text, we have chosen breadth rather than depth -- when a choice is required, we have chosen to focus on concepts instead of details. Thus, the text covers the major topics in architecture, but omits lesser-known variants and low-level engineering details. For example, our discussion of how a basic nand gate operates gives a simplistic description without discussing the exact internal structure or describing precisely how a gate dissipates the electrical current that flows into it. Similarly, our discussion of processors and memory systems avoids the quantitative analysis of performance that an engineer needs. Instead, we take a high-level view aimed at helping the reader understand the overall design and the consequences for programmers rather than preparing the reader to build hardware. 5. Terminology: Architecture and Design Throughout the text, we will use the term architecture to refer to the overall organization of a computer system. A computer architecture is analogous to a blueprint -- the architecture specifies the interconnection among major components and the overall functionality of each component without giving many details. Before a digital system can be built that implements a given architecture, engineers must translate the overall architecture into a practical design that accounts for details that the architectural specification omits. For example, the design must specify how components are grouped onto chips, how chips are grouped onto circuit boards, and how power is distributed to each board. Eventually, a design must be implemented, which entails choosing specific hardware from which the system will be constructed. A design represents one possible way to realize a given architecture, and an implementation represents one possible way to realize a given design. The point is that architectural descriptions are abstractions, and we must remember that many designs can be used to satisfy a given architecture and many implementations can be used to realize a given design. 6. Summary This text covers the essentials of computer architecture: digital logic, processors, memories, I/O, and advanced topics. The guide does not require a background in electrical engineering or electronics. Instead, topics are explained by focusing on concepts, avoiding low-level details, and concentrating on items that are important to programmers. Related Articles -- Top of Page -- Home |
Updated: Sunday, March 26, 2017 18:29 PST