TRENDING NEWS

POPULAR NEWS

Why Does The Motorola 68000 Processor Work Internally In 32 Bits And Communicate Externally In 16

Microprocessor 68000 Motorola question LINK instruction(description given)?

LINK.- This instruction is used to allocate stack space and implement linked-lists. An example of this instruction might be LINK A3, #$20. The operation of LINK is as follows: The specified address register is pushed onto the stack. Next, the stack pointer is copied into the specified address register. Then the signed 16 bit displacement is added to the stack pointer. No conditions affected

LINK A2, #-8


What are the contents of A2 and A7 after execution of the LINK instruction?

A2
A7

if:


A2 11223344
A7 00FF8000

I got:

A7=FF7FF4
A2=don't know

any suggestions?

The 8086 processors were 16 bit but had 20 bit address buses to allow for accessing more memory (up to 1MB or 2^20).How? Using a memory system that was known as segment and offset.What we used to have to do when working with memory back before 32 and 64 bit memory modes was use a segment and an offset to access memory.The segment would be 16 bits or 2^16 = 65536 bytes large. The offset would also be 16 bits. The segment was shifted left 4 bits to load the 20 bit memory address and then the 16 bit offset was added to it. This allowed programmers to access up to 1048576 bytes of memory (2^20) using 16 bits numbers (the cpu internally shifted the segment left 4 bits.With the start of the 286 and 386 Intel CPU’s there was actually a 21st bit: the A20 line. You have to remember binary systems are zero based. So a 20 bit address bus is bits A0 through A19. The A20 line is actually the 21st bit.What this allowed is a special memory area known as the HMA (High Memory Area). It was the first 65536 byte segment just after 1,048,576. Back in the days of DOS it would frequently be used to load device drivers, or programs called TSR’s back then (Terminate and Stay Resident), as well as the “COMMAND.COM” executable for DOS. This freed up valuable parts of the conventional memory block (the lower 640K of RAM). Expanded memory managers like QEMM could also use parts of the 384K above the 640K conventional memory area.Anyway the point is 16 bit processors used to use a segment of 16 bits shifted left 4 bits (to load the upper bits of the 20 bit address) and a 16 bit offset added to the segment to determine where in the total 1,048,576 bytes you are accessing.Also, remember, after the 8086 with introduction of the 286, there was actually a 21st bit with the “A20” line, which meant you could actually access (16 bit << 4) bits segment + 16 bit offset - 16 bits = 1,114,096 total bytes. This new feature also avoided memory wrap around issues.

Toby Thain gave me an excellent Christmas present, with his comment here: https://www.quora.com/What-is-th...In that comment, Toby linked to a scan of a 106 page Intel FAE newsletter that drills down into the various differences between the 80286 and 68000.The short short version: Because the 80286 has a more generous memory access cycle, it’s able to run without memory wait states, and that gives it a substantial advantage over 68000 systems that do require wait states.OK, ok, ok, that’s not the only thing Intel harped on. They actually cover a lot of ground in those 106 pages. But, memory system wait states has a front-row seat.It’s possible to build 68000 systems without wait states, but noticeably more expensive. For the record, UNIX workstations built around 68000 fall into that zero-wait-state bucket. Sun had a custom 68K MMU for just that purpose.Much of Intel’s analysis points to this memory system efficiency cudgel. If you allow zero-wait-state 68000 systems, Intel’s analysis gets a bit cloudier. Both processors are within a stone’s throw of each other, though, and Intel has an advantage. I’d hope so, given the 80286 came out a couple years after the 68000.

There are multiple criteria for claiming the “bit-ness” of a microprocessor:Data Bus Width. If you’re a hardware guy, this is what you see. If the data bus is 8-bits wide, it’s an 8-bit processor; if 32-bits wide, it’s a 32-bit processor.Address Bus Width. Ok, this is pretty much never used as any sort of indicator. Almost every 8-bit processor had a 16-bit address bus, there are plenty of 16-bit processors with >16-bit wide address buses, and 64-bit processors rarely bring out 64-bits worth of address.CPU Register Width. If you’re programming the thing, you’re looking at the width of general purpose registers.ALU Width. If you’re designing a microprocessor, you’re of course looking at both of these factors, but also the width of the math unit and other elements that describe how much work the CPU can actually do in a cycle.The 8085 has an 8-bit data bus, a 16-bit address bus, seven 8-bit general purpose registers, two 16-bit address registers (SP and PC), and an 8-bit ALU. It also supports some instuctions that do 16-bit operations on three possible paired registers, but those operations actually take place 8-bits at a time, thanks to the 8-bit ALU.Certainly other processors have been true hybrids. The original Motorola 68000, for example, had a 16-bit data bus, 24-bit address bus, 32-bit registers, but only 16-bit ALUs (three of them). So the hardware engineer saw a 16-bit processor, the software engineer saw a 32-bit processor (albeit with slower 32-bit operations), and the chip designer saw elements of both.

How 16-bit processor able to access 1MB address locations of memory?

16 bit refers to the width of the processor data bus, it is the width of the processor address bus that determines the amount of memory that can be accessed by the CPU.

The width of the data bus determines how much data can be read from memory in one clock cycle, in the case of a 16 bit processor this is 2 bytes.

Both the Intel 80286 and Motorola 68000 had 24 bit address buses which meant that they could access 16MB of memory (2^24 memory locations). However the data buses on both these processors were 16-bit.

To access 1MB of memory the address bus on the processor must be at least 20 bits wide (2^20 memory locations).

What's the difference between a 16bit, 32bit, and 64bit processor?

The main difference between a 64-bit processor and a 32-bit part is the width of the processor's internal registers which is (obviously) 64-bits instead of just 32-bits.

This means a 64-bit processor is capable of doing more work than a 32-bit part during the same period of time as it can handle bigger numbers or 'chunks of data' at the same time.
Of course the application(s) you're running must be optimized, i.e. they must be able to make use of those 'big' numbers in order to gain any kind of advantage from a 64-bit processor.

An additional advantage of a 64-bit processor would be the capability to natively handle a much bigger amount of system memory than a 32-bit part (4GB max).

Current AMD64 processors have a 40-bits memory address space as that is already sufficient to allow a single processor to handle 1 Terabyte (=1000GB) of memory.

Now, as far as the processor's external connection is concerned, i.e. the connection between the processor and the rest of the system, it is completely irrelevant in terms of raw processing power.

The external connection does, of course, have a significant effect on your system's overall performance, as the fastest processor is useless if you can't feed it with enough data from the outside.

As for your postulate that a 64-bit processor is 'fast' because it must also have a 64-bit external connection (or 'bus'), that assumption is completely incorrect.

A 64-bits-wide external connection was first introduced (in the PC world) with the 5th-generation of processors (Pentium I / AMD K5).

If you look at the width of an Athlon 64's external connection (its Hypertransport-Link), you will note that it has a total width of only 32-bits (16-bits each for the up- and downstream parts of the HT-link) and still, a modern Athlon 64 processor's HT-link can transfer about 15 times as much data per second as an AMD K5 or intel Petium I processor's 64-bits-wide FrontSide Bus (533MB/s vs. 8000MB/s).

And that's without adding the bandwidth of the connection between the processor and memory which is dedicated here (integrated memory controller) and not shared with the main external connection (= what is referred to as 'FSB' on older platforms)...that'd be another 6400MB/s.

New software will still run with the old processor. But older software with lower bit support might not run well with 64bit processor.

How much memory can a 16-bit processor address , I believe 2^16 bits?

i think what you have done for the first part is correct.. however, i don't think you need to change the bits to bytes.... the 16 bit can map up to 64k memory location.

the memory addressing is base on bits. there are 64k combination for 16 bits.. from what i know 8086 is using 2byte*10h for their addressing, accessing the code with CS:IP, which mean an effective of 1M..i think my explanation is a bit distorted and may be wrong, pls give feed back if possible..thanks

i'm actually not clear of the 32bits memory mapping. for xp, it's using 32bits, so it could possibly, by what i know, map up to 4G or memory address. however, in reality, why does it only able to map until 3.5G of ram?

What is 16 bit, 32 bit operating system ? I want to know why these terms "32 bit","16 bit" are in use.

It referres to the number of "Address lines" in the CPU.

A 16 bit CPU can access 640K (roughly) of memory, a 32 bit CPU can access 4GB of memory, and a 64 bit CPU can access an un-godly amount of memory... I don't remember off-hand... but it's something like 16 BILLION gigabytes... Of course, the operating system has to also be a 64 bit OS to access these numbers.

32 bit windows, because of the design of the drivers in "real space" in the kernel is limited to accessing approximately 3 to 3.4 GB of memory... So if you have a system with 4 or more GB of RAM, it will only be able to access 3 to 3.4 GB (It depends on your specific hardware) of that RAM. 32 bit Linux, Unix, BSD etc, can access the full 4GB.

64 bit windows, or any other 64 bit OS can also access the full 4, 8, 16 or what-ever GB of ram that is supported by "current" motherboards.

It also referrs to registers (temporary memory locations) in the CPU where calculations occur. A 64 bit register can handle a larger number "directly" than a 32 bit register, or a 16 bit register or a 1 bit register (also called a boolean, think True/False)

A 64 bit CPU can contain 128 bit registers, 64 bit, 32 bit, 8 bit, single bit registers etc... but would be referred to as a 64 bit CPU because the "data path" into and out of the CPU is 64 bits wide, hence the general memory limitations I cited above.

All CPU's produced today for "consumer laptops and desktops" are 64 bit CPUs, which will run 32 bit operating systems just fine.

There are still some 32, 16, even 8 bit CPU's being produced for "appliances" like cell phones, control panels etc... where the larger data is not needed, reducing the size of the CPU core, the number of transistors needed, and hence the power used.

TRENDING NEWS