Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Processor speed

Author: Christophe Theron

Date: 01:13:11 03/11/00

Go up one level in this thread


On March 11, 2000 at 00:22:09, Eugene Nalimov wrote:

>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:


No, your explanation was good. It's me, I didn't read it correctly.



> 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".


OK, thanks.



    Christophe



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.