Re: Code density and performance?




In article <uiyDe.8940$ng.4987@xxxxxxxxxxxxxxxx>,
"FredK" <fred.nospam@xxxxxxxxxxxxxx> writes:
|>
|> Hmmm. Maybe I write OS code and IO drivers for an Alpha based O/S?

Ah. The trivial cases. That might explain a lot.

Please note that the only real problem with incoherent I/O is when
the I/O buffer is provided by an entity that you do not control.
If you can ensure that the entity is stopped while you do I/O, or
you can allocate it so there are no overlaps, there is no problem.

|> My world doesn't revolve around C in a POSIX environment. Nor is
|> it likely that I would have been using a Tru64 C compiler.

However, C and Unix support were a sine qua non for the Alpha,
and the aspects I am referring to have not changed since the 1970s
for C and Unix.

|> Hmm. I am *sure* I still have access to the architecture notesfile where
|> these changes were discussed. I don't recall ever seeing this as a driving
|> issue (I don't even remember it frankly as *an* issue).

It's not a driver issue. Drivers are trivial in this respect,
until such time as you want to support RDMA into user space with
POSIX asynchronous I/O semantics. DEC's original asynchronous
I/O model (at least the one under Unix) used preallocated, aligned
buffers, where the problem is avoided by placing extra constraints
on the programs.

|> Is there some oddball issue with some POSIX standard for C? Maybe.

Technically, they may be oddball. Commercially, I can assure you
that they were clearly very important, even then.

|> However, I think that you are discussing issues of MP/threaded programming
|> in a POSIX environment - which isn't equivalent to "SMP doesn't work" -
|> as opposed to "some MP programs in this environment don't work when
|> using C and depending on specific POSIX requirements".

It is equivalent to saying that the Alpha as originally designed
could not support the POSIX standard or almost any non-trivial C
signal handling, without major changes to the languages, compilers
and linkers. That is "support" in the sense of either "conform"
or "allow a programmer to write correct code". Yes, I said "ALLOW".

|> What I do recall quite well is that IO space access was causing a huge
|> source level problem, and the platform solution to partial word IO was
|> not transparent, and more than a little painful.

Well, if you HAD been using C, you could have used memcpy, and all
would have been transparent. The internals of memcpy would be a
mess, but it could have been written once and used by everyone.

I can assure you, from personal experience of both, that fixing
the source to call a common function is TRIVIAL compared to
bypassing the issues that I am referring to.


Regards,
Nick Maclaren.
.



Relevant Pages

  • Re: Code density and performance?
    ... Maybe I write OS code and IO drivers for an Alpha based O/S? ... > the I/O buffer is provided by an entity that you do not control. ... > POSIX asynchronous I/O semantics. ...
    (comp.arch)
  • Re: out-of-date [WAS: RE: 2 VMS books?]
    ... The first drivers were written in MACRO-32 ... other cards are required (because of 3.3V PCI) ... PCI bus address based on whether it's an Alpha or an Itanium. ... registers to memory space instead of I/O space. ...
    (comp.os.vms)
  • [7/15] orinoco merge preliminaries - comment/whitespace/spelling updates
    ... * try newer firmware in the card. ... and one that's 0x40 long mapped to the PCMCIA slot I/O ... read the COR register back and make sure ... except for crashing drivers not written to expect it. ...
    (Linux-Kernel)
  • Oops 2.6.23.1 in ext3+jbd at journal_put_journal_head
    ... A one-time event thus far, happened under very heavy I/O, ... : BUG: unable to handle kernel paging request at virtual address 430a7261 ... # Firmware Drivers ... # PCCARD support ...
    (Linux-Kernel)
  • Re: [RFC] New timeofday proposal (v.A1)
    ... What I would to see also included here is to provide a clean posix ... interface to these drivers. ... We have modified the posix interface to allow clock drivers to ...
    (Linux-Kernel)