0% found this document useful (0 votes)
83 views14 pages

Computer Organization Paper Project

The document discusses several key topics in computer organization and architecture: 1) Contemporary computer system organization facilitates faster and more efficient data processing and has enabled technologies like AI. 2) The x86 architecture has significantly shaped computer organization and remains widely used today. 3) Data representation, memory hierarchy, interrupt processing, and I/O mechanisms are important concepts that enable fast and responsive computing. 4) Software-hardware interfaces allow communication between software and hardware and are crucial to modern systems. 5) The instruction set architecture specifies the processor's capabilities and how instructions are encoded.

Uploaded by

api-690889230
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views14 pages

Computer Organization Paper Project

The document discusses several key topics in computer organization and architecture: 1) Contemporary computer system organization facilitates faster and more efficient data processing and has enabled technologies like AI. 2) The x86 architecture has significantly shaped computer organization and remains widely used today. 3) Data representation, memory hierarchy, interrupt processing, and I/O mechanisms are important concepts that enable fast and responsive computing. 4) Software-hardware interfaces allow communication between software and hardware and are crucial to modern systems. 5) The instruction set architecture specifies the processor's capabilities and how instructions are encoded.

Uploaded by

api-690889230
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Isaac Bernal

COSC 2425
Professor Lara
4/30/2023
Computer Organization Paper & Project

The organization of contemporary computer systems is of extreme importance in the

modern digital age. With the rapid advancement of technology and the increasing reliance on

computer systems for a wide range of applications, the need for efficient and effective computer

organization has become more important than ever before.

One of the most significant benefits of contemporary computer system organization is its

ability to facilitate faster and more efficient data processing. With the ever-increasing volume of

data that needs to be processed and analyzed, contemporary computer systems have been

designed to maximize the use of available hardware resources such as CPUs, memory, and

storage devices. This has led to the development of very smart computer architectures that are

capable of executing complex algorithms and processing large datasets in a fraction of the time it

would have taken just a few years ago.

Contemporary computer system organization has played a crucial role in enabling the

development of new technologies such as artificial intelligence, machine learning, and

blockchain. These technologies require powerful and efficient computer systems capable of

handling massive amounts of data and processing it in real-time. The ability of contemporary

computer systems to support these technologies has revolutionized industries such as healthcare,

finance, and manufacturing, among others.


The x8086 architecture is an example of a computer architecture that has played a

significant role in shaping contemporary computer system organization. The x8086 architecture

was the basis for the development of the x86 family of processors, which are still widely used in

modern computer systems. The x86 architecture has been continuously improved and optimized

to keep up with the demands of modern computing, and it remains one of the most important

computer architectures in use today.

Contemporary computer system organization is crucial to the efficient and effective

operation of modern computer systems. Its ability to facilitate faster and more efficient data

processing, support new technologies, and its roots in architectures such as the x8086 highlight

its significance. As technology continues to evolve, it is likely that computer system organization

will continue to play an important role in shaping the future of computing.

Data representation is a crucial concept in digital computing, as it involves the translation

of analog data into digital signals that can be processed by a computer. According to Tucker and

Noonan, data representation is “any convention for the arrangement of things in the physical

world in such a way as to enable information to be encoded and later decoded by suitable

automatic systems” (Renear).

According to Renear, modern day computer data representations “fundamental property

is they represent information indirectly… to represent sequences of binary digits" (Renear). In

digital computing, data is represented using two digits, 1 and 0. These digits are used to represent

the presence or absence of an electrical charge, respectively, and are organized into groups of

eight bits, known as bytes.


Data can be further represented using various coding schemes, such as ASCII and

Unicode, which assign numerical values to each character in a set of characters. For example, in

ASCII, the letter "A" is represented by the binary value 0100 0001b, while the letter "a" is

represented by 0110 0001b.

The concept of data representation also includes the concept of data compression, which

involves reducing the amount of storage space required to store data. Compression algorithms,

such as ZIP and JPEG, use mathematical techniques to eliminate redundant data, resulting in a

smaller file size without loss of information.

Data representation is “any convention for the arrangement of things in the physical

world in such a way as to enable information to be encoded and later decoded by suitable

automatic systems” (Renear). It involves the use of binary digits to represent data, as well as

various coding schemes and compression algorithms. Understanding data representation is

important to effective data management and manipulation in digital computing.

Memory hierarchy, interrupt processing, and input/output (I/O) mechanisms are

important concepts in computer architecture that enable fast processing and data transfer in

modern computing systems. Memory hierarchy “is about arranging different kinds of storage

devices in a computer based on their size, cost and access speed, and the roles they play in

application processing” (Awati, 2022). Interrupts “in computer architecture is a signal that

requests the processor to suspend its current execution and service the occurred interrupt” (T,

2021). Input/Output in computers “computer provides an efficient mode of communication

between the central system and the outside environment” (StudyTonight).


Memory hierarchy involves different levels of memory, each with varying speeds and

capacities, arranged in a hierarchical order to optimize the performance of the system. The cache

memory, for instance, is a small and fast memory that stores frequently accessed data, while the

main memory is a larger memory that holds running programs and data. The hierarchy is

designed in such a way that it “allows data to be spread among different memory types to

maintain its security, reduce access times and ensure its availability” (T, 2021).

Interrupt processing is another important concept in computer architecture. Interrupts are

basically signals sent by external devices, such as keyboards and network cards, to request the

processor's attention. When an interrupt occurs, the processor suspends its current task, saves its

context, and jumps to an interrupt handler routine to handle the request. Once the routine

completes its task, the processor resumes the task from where it left off.

I/O mechanisms, on the other hand, facilitate the transfer of data between the computer

and its peripherals, such as keyboards, mice, printers, and disks. The mechanisms involve several

components, including I/O ports, controllers, and device drivers. I/O ports are physical

connectors on the computer's motherboard that provide communication channels between the

processor and peripherals. Peripherals are “designed to read information into or out of the

memory unit upon command from the CPU and are considered to be the part of computer

system” (StudyTonight). Controllers, on the other hand, are hardware components that manage

the transfer of data between the processor and peripherals. Finally, device drivers are software

programs that allow the operating system to communicate with the peripherals.

The concepts of memory hierarchy, interrupt processing, and input/output mechanisms

are fundamental to computer architecture. The memory hierarchy optimizes the performance of

the system by organizing the memory in a hierarchical order, while interrupt processing enables
the processor to respond to external events in real-time and I/O mechanisms facilitate data

transfer between the computer and its peripherals, enabling quick interaction between the user

and the system. As computer systems continue to evolve, these concepts will remain at their core

in ensuring efficient and responsive performance.

The interfaces between software and hardware components play a crucial role in enabling

communication and interaction between the two entities. These interfaces serve as the bridge that

allows software to interact with hardware, and vice versa. They provide a standardized set of

protocols, commands, and instructions that facilitate data exchange and control between software

and hardware components.

One example of a software-hardware interface is the Universal Serial Bus (USB)

standard, which allows various hardware devices such as printers, keyboards, and external

storage devices to connect and communicate with software applications running on a computer.

USB “is a common interface that enables communication between devices and a host controller

such as a personal computer (PC) or smartphone” ("Universal Serial Bus").

Another example is the Application Programming Interface (API) provided by operating

systems, which allows software applications to interact with hardware resources such as

memory, storage, and peripherals. APIs “allows us to automatically derive a hardware structure

based on access patterns in software” ("Hardware APIs").

These interfaces are very important for enabling seamless communication and interaction

between software and hardware components, allowing them to work together effectively. They

ensure that software applications can control and access hardware resources in a standardized

and efficient manner and enable hardware components to respond to software commands and
requests. So, these interfaces form the backbone of the software-hardware interaction in modern

computing systems.

The Instruction Set Architecture (ISA) is a very important component of a computer's

hardware and software design. ISA “acts as an interface between the hardware and the software,

specifying both what the processor is capable of doing as well as how it gets done” (Arm). The

design of the ISA determines the types of instructions that a computer can execute and the format

in which those instructions are encoded.

The design of an ISA involves several key decisions, including the instruction format, the

number and types of registers, and the addressing modes. The instruction format determines the

layout of each instruction and the types of operands it can accept. The x8086 architecture, a

“processor traces its heritage at least as far back as the 8-bit Intel 8080 processor” (Microsoft,

2022), uses a variable-length instruction format, with instructions ranging from one to six bytes

in length. This allows for a wide range of instructions to be supported, from simple arithmetic

operations to more complex control flow instructions.

The number and types of registers are also an important consideration in ISA design.

Registers are high-speed storage locations within the CPU that can be accessed much more

quickly than main memory. The x8086 architecture includes eight general-purpose registers, “a

modest number of special-purpose registers instead of large quantities of general-purpose

registers” (Microsoft, 2022).

Another key aspect of ISA design is the addressing modes that are supported. Addressing

modes determine how operands are specified in an instruction. The x8086 architecture supports a

wide range of addressing modes, including direct addressing, indirect addressing, and indexed
addressing. This allows for more flexible and efficient memory access, as operands can be

retrieved from different memory locations depending on the needs of the instruction.

The design of an ISA is a complex process that involves many important decisions about

the instruction format, registers, and addressing modes. According to Arm, “understanding what

the instruction set can do and how the compiler makes use of those instructions can help

developers write more efficient code”. The x8086 architecture is a classic example of an ISA that

has stood the test of time, with its variable-length instruction format, eight general-purpose

registers, and extensive support for addressing modes. As computers continue to evolve and new

technologies come out, the design of ISA’s will continue to play an important role in shaping the

capabilities and performance of computing systems.

According to Alexander Gillis, virtual memory “uses both hardware and software to

enable a computer to compensate for physical memory shortages” (2021). Virtual memory is a

technique used by computer systems to increase the amount of usable memory available to

software applications. It involves using a combination of hardware and software components to

create an illusion of a larger memory space than is physically available.

The concept of virtual memory is based on the principle of paging, “a memory

management technique used to control sharing of memory resources belonging to a computer or

virtual machine” (Gillis, 2021). When a program requests data that is not currently in physical

memory, the operating system retrieves it from secondary storage, such as a hard drive, and

stores it in a portion of physical memory known as a page. This process allows the program to

access the requested data as if it were in physical memory.


Virtual memory provides several benefits, including the ability to run larger applications

that require more memory than is physically available, as well as the ability to run multiple

applications at the same time without running out of memory, “the RAM space is needed for

something more urgent, data can be swapped out of RAM and into virtual memory” (Gillis,

2021). However, it also introduces performance overhead due to the need for data transfers

between physical memory and secondary storage.

Virtual memory is a crucial component of modern computer systems that allows software

applications to access a larger memory space than is physically available. Its implementation

involves a combination of hardware and software components, and it provides numerous benefits

to users.

According to Priya, Virtual Machines is “is a virtual environment which functions as a

virtual computer system with its own CPU, memory, network interface, and storage, created on a

physical hardware system”. Virtual machines are software-based representations of computer

systems that allow multiple operating systems to run on a single physical machine

simultaneously. Virtual machines are used for a variety of purposes, including software

development, testing, and deployment, as well as server consolidation and cloud computing. It is

commonly used in cloud computing environments, where multiple customers share the same

physical infrastructure but require different operating systems and software environments.

Virtual Machines are created by a process called virtualization, which involves using

software to create a virtual representation of a physical machine. To achieve the virtualization in

the operating system “with the help of a specialized software called a hypervisor, … , enabling

virtual machines to share resources” (Priya, 2021). The virtual machine software, known as a

hypervisor, ”which emulates the PC client or server CPU, memory, hard disk, network and other
hardware resources completely,” sits between the physical hardware and the guest operating

systems and provides a layer of abstraction that allows multiple operating systems to run on the

same hardware simultaneously (Priya, 2021).

Operating system virtualization is a type of virtualization that focuses specifically on

virtualizing operating systems. It involves creating multiple virtual machines, each of which

contains a complete operating system and associated software applications. Each virtual machine

is completely isolated from the others, with its own virtual hardware, operating system, and

applications. This allows multiple operating systems to run on a single physical machine, each

with its own set of resources and applications.

Virtual machines and operating system virtualization are powerful tools that allow

multiple operating systems to run on a single physical machine simultaneously. Operating

system virtualization provides numerous benefits, including the ability to maximize hardware

utilization, increase system flexibility and scalability, and improve system security by isolating

applications and data. They are used for a variety of purposes, including software development,

testing, and deployment, as well as server consolidation and cloud computing. Their

implementation involves a combination of software and hardware components, and they provide

numerous benefits to users.

Work Cited:

Arm. “Instruction Set Architecture”. Arm. https://www.arm.com/glossary/isa#:~:text=An


%20Instruction%20Set%20Architecture%20(ISA,as%20how%20it%20gets%20done.
Awati, Rahul. “hierarchy”. Whatis. TechTarget. August 2022.
https://www.techtarget.com/whatis/definition/hierarchy#:~:text=Memory%20hierarchy
%20is%20about%20arranging,time%20while%20speeding%20up%20operations.
Gillis, Alexander. Peterson, Stacy. Lelii Sonia. “virtual memory”. TechTarget. Storage
Architecture & Strategy. July 2021.
https://www.techtarget.com/searchstorage/definition/virtual-memory#:~:text=Virtual
%20memory%20is%20a%20common,(RAM)%20to%20disk%20storage.

Meier, M., Breddemann, M., Spinczyk, O. (2014). “Hardware APIs: A Software-Centric


Approach for Automated Derivation of MPSoC Hardware Structures Based on Static
Code Analysis”. In: Maehle, E., Römer, K., Karl, W., Tovar, E. (eds) Architecture of
Computing Systems – ARCS 2014. ARCS 2014. Lecture Notes in Computer Science, vol
8350. Springer, Cham. https://doi.org/10.1007/978-3-319-04891-8_10

Microsoft. “x86 Architecture”. Microsoft. October 2022.


https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/x86-architecture
Priya, Bhanu. “What are Virtual Machines in Operating System?”. Tutorials Point. 26 Nov 2021.
https://www.tutorialspoint.com/what-are-virtual-machines-in-operating-
system#:~:text=A%20virtual%20machine%20(VM)%20is,of%20hardware%2C%20like
%20a%20server.
Renear, Allen, “Text Encoding”, DH Curation Guide: a community resource guide to data

curation in the digital humanities,


https://archive.mith.umd.edu/dhcuration-guide/guide.dhcuration.org/index.html
%3Fp=63.html

Rouse, Margaret. "Universal Serial Bus." August 6, 2020.


https://www.techopedia.com/definition/2320/universal-serial-bus-usb#:~:text=A
%20Universal%20Serial%20Bus%20(USB)%20is%20a%20common%20interface
%20that,hard%20drives%20and%20flash%20drives..
StudyTonight. “Computer Architecture: Input/Output Organisation”. StudyTonight.
https://www.studytonight.com/computer-architecture/input-output-organisation
T, Neha.. “Interrupts in Computer Architecture”. BinaryTerms. March 2021.
https://binaryterms.com/interrupts-in-computer-architecture.html
Code:
; Isaac Bernal
; 4/29/23
; Professor Lara
; Computer Organization
; Description: This program is a simple calculator written in x8086 Assembly

INCLUDE Irvine32.inc

; Data segment
.data
num1 SDWORD ?
num2 SDWORD ?
result SDWORD ?
operator BYTE ? ;user choice
yesOrNo BYTE 'Y' ;to compare to
ansYN BYTE ? ;answer choice
prompt BYTE "Welcome to the calculator", 0
promptAddition BYTE "Addition(+)", 0
promptSubtraction BYTE "Subtraction(-)", 0
promptMultiplication BYTE "Multiplication(*)", 0
promptDivision BYTE "Division(/)", 0
promptNum1 BYTE "Enter Number 1: ", 0
promptNum2 BYTE "Enter Number 2: ", 0
promptOp BYTE "Enter One of These (+, -, *, /): ", 0
promptInvalidOp BYTE "Invalid operator. Please try again.", 0
promptContinue BYTE "Want to continue?(Y/N)", 0

; Code segment
.code
main PROC
mov edx, OFFSET prompt
call WriteString
call Crlf
mov edx, OFFSET promptAddition
call WriteString
mov edx, OFFSET promptSubtraction
call WriteString
mov edx, OFFSET promptMultiplication
call WriteString
mov edx, OFFSET promptDivision
call WriteString

L1:
; Get user input
call Crlf
mov edx, OFFSET promptNum1
call WriteString ;user puts number
call ReadInt
mov num1, eax

mov edx, OFFSET promptNum2


call WriteString ;user puts second number
call ReadInt
mov num2, eax
mov edx, OFFSET promptOp
call WriteString ;user puts choice of math
call ReadChar
mov operator, al

; Calculate result based on operator using compares


cmp operator, '+'
je addition

cmp operator, '-'


je subtraction

cmp operator, '*'


je multiplication

cmp operator, '/'


je division

; Invalid operator
mov edx, OFFSET promptInvalidOp
call WriteString
jmp L1

addition:
mov eax, num1
add eax, num2
mov result, eax
jmp L2

subtraction:
mov eax, num1
sub eax, num2
mov result, eax
jmp L2

multiplication:
mov eax, num1
imul num2
mov result, eax
jmp L2

division:
mov eax, num1
cdq
idiv num2
mov result, eax
jmp L2

L2:
; Display result
mov eax, result
call WriteInt

; Ask if user wants to continue


call Crlf
mov edx, OFFSET promptContinue
call WriteString
call ReadChar
cmp yesOrNo, al
je L1 ;jump if yes

invoke ExitProcess,0
main endp
end main

Screen Captures

You might also like