Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Processor speed

Author: Eugene Nalimov

Date: 21:22:09 03/10/00

Go up one level in this thread


On March 10, 2000 at 22:01:18, Christophe Theron wrote:

>On March 10, 2000 at 02:54:42, Eugene Nalimov wrote:
>
>>On March 10, 2000 at 02:39:39, Eugene Nalimov wrote:
>>
>>>On March 10, 2000 at 02:00:32, Christophe Theron wrote:
>>>
>>>>On March 09, 2000 at 19:23:01, John Coffey wrote:
>>>>
>>>>>
>>>>>>So by your definition, a PC with SDRAM is 64-bit, whereas a new Pentium III with
>>>>>>Rambus memory is 16-bit. Or maybe 256-bit, due to the interface to the L2 cache?
>>>>>>Gets confusing quickly...
>>>>>>
>>>>>
>>>>>
>>>>>I am not going to make any claims to modern processors that I don't program.
>>>>>The 68000 fetched data and instructions from memory 16 bits at a time.  I don't
>>>>>see anything wrong with my definition.
>>>>>
>>>>>John
>>>>
>>>>
>>>>I have heard that some 64Kb limitations (for code or data) apply to the 68000. I
>>>>don't understand why, as it has 32 bits registers. The 16 bits address bus is
>>>>very similar to the 386sx 16 address bus (the 386sx had 32 bits registers).
>>>>
>>>>What's the problem with the 68000? Are there really such limitations?
>>>>
>>>>
>>>>    Christophe
>>>
>>>First 32k of address space (and of course last 32k) can directly addressed used
>>>2 bytes address included in the instruction, not 4 bytes address, so typical
>>>instruction occupies 4 bytes instead of 6. So if you'll manage to allocate all
>>>your globals there, your program would be noticeable shorter. Important
>>>consideration for the systems with limited ROM/RAM.
>>>
>>>Eugene
>>
>>Addition: 68000 has address mode "reg32+offset16", but does not have
>>"reg32+offset32". So, to index the array that is located in first/last 32k, you
>>can use address mode directly, i.e.
>>    mov.l 0x1234(a5), d0
>>(1 instruction, 4 bytes)
>>
>>If array is located out of this space, you have to use something like
>>    mov.l a5, a3
>>    add.l #0x12345678, a3
>>    mov.l (a3), d0
>>(3 instructions, 10 bytes, one extra register used)
>>
>>Eugene
>
>
>OK! I understand better now what the problem is. Adressing an array bigger than
>64K is not elegant. Reminds me a lot about these horrible segmented addressing
>system of the x86 family and the near/far pointers.
>
>Does the same problem apply to code addressing (jumps or calls limited to 16
>bits offsets from current IP or something similar)?
>
>Thanks for the info.
>
>
>    Christophe

Sorry, it looks that my explanation was not good: array size is not relevant.
What is important is that *address* of the first array element was in first 32k
of address space. And of course not any OS allows it - but for standalone video
games you can arrange it.

With branches/jumps everything is more or less Ok; PC-relative offset for
conditional branches is 1 byte (-126..+128 bytes), but unconditional jumps are
"far".

Eugene



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.