Re: PART 3. Why it seems difficult to make an OOO VAX competitive (really long)



On Tue, 9 Aug 2005, Nick Maclaren wrote:

That's an implementation misdesign.  There is no reason that
they should be any slower than page-based virtual memory.

Segments on the IA-32 may not behave the way you expect. The base gets added to the logical address (formed by a displacement or an immediate or a register or ...) which in turn gets you the virtual address. Only then (or rather, in parallel with the cache lookup) are the TLBs consulted.


The TLBs would have to know which segment register was used with the logical address -- or rather which selector (the contents of the segment register) -- was used to form the virtual address. Actually, that's not quite true, either. It depends on the base/limit fields of the segment descriptor, which gets loaded from either the local or the global descriptor table, depending on a bit in the selector.

And it is perfectly possible, valid, and normal to use several segment registers and selectors to access the same virtual address.

To sum up: I don't see how the TLBs should be designed to handle the base/limit stuff.

(Limit checking could presumable happen in parallel with the cache access -- I don't see why it should add extra cycles. Nor why it should involve the TLBs ;) .)

-Peter
.



Relevant Pages

  • Re: [tip:x86/asm] x86/i386: Make sure stack-protector segment base is cache aligned
    ... developers to allow different segment register and offset in newer gcc ... get to keep the separate segment register from the userland. ... sane thing and having a symbol for an offset is probably worse. ...
    (Linux-Kernel)
  • Re: How does this make you feel?
    ... >> specific memory location. ... > Some architectures have implemented this idea. ... > The "register" data structure is called a descriptor. ... > A segment register on the ix86 is a base and the length is contained in the ...
    (comp.arch)
  • Re: NASM 0.98.39 vs. NASM 2.03.01 disassembly
    ... of a segment register to memory only accesses 16 bit ... but the interesting part is the store to a memory location. ... But with the 32 bit form of the store segment register instruction ...
    (alt.lang.asm)
  • Re: i8086 architectural fix
    ... via the offset register. ... 0xFFFF to 0x0000 and adjust the segment register to suit; ... register was used to address the heap object and the offset register ...
    (comp.lang.asm.x86)
  • Re: PART 3. Why it seems difficult to make an OOO VAX competitive (really long)
    ... are the TLBs consulted. ... |> The TLBs would have to know which segment register was used with the ... |> logical address -- or rather which selector (the contents of the segment ... depending on a bit in the selector. ...
    (comp.arch)