un alignement peut être requis pour lire un mot - c'est assez courant sur les petits procs
Des petits procs, comme les IBM système z, les anciens Crays, tous les Sparcs... En fait, les seules architectures que moi, j'ai vues, où on n'avait pas besoin de respecter l'alignement, c'est l'architecture Intel (probablement parce qu'au départ, il n'avait que 8 bits).
je pensais en effet à des procs Intel - imposant l'alignement - comme les PXAnnn. pardon d'avoir oublié les "0.001% of us" qui utilisent un Cray.
Je vois plus souvent des Sparcs que les PXAnnn (dont j'entends le nom pour le premier fois), et des Sparcs exigent bien l'alignement. Mais j'ai cité des mainframes simplemnet parce que tu as dit petits. En fait, je crois le fait de ne pas exiger l'alignement est plutôt l'exception -- ça l'était dans la passée, au moins (IBM RS6000, HP PA, Siemens BS2000, PDP-11, Interdata 8/32 -- à vrai dire, il ne me viens pas à l'esprit de l'essayer, puisque quand j'apprenais l'informatique, c'était la règle).
En embarqué, les MIPS sont connus pour permettre les accès non-alignés (ils ont même un brevet là dessus, avec une instruction dédiée) et je crois que maintenant ARM le propose en option.
Michael
On Mar 11, 10:37 pm, Sylvain <noS...@mail.net> wrote:
James Kanze wrote on 11/03/2008 10:51:
un alignement peut être requis pour lire un mot - c'est assez
courant sur les petits procs
Des petits procs, comme les IBM système z, les anciens Crays,
tous les Sparcs... En fait, les seules architectures que moi,
j'ai vues, où on n'avait pas besoin de respecter l'alignement,
c'est l'architecture Intel (probablement parce qu'au départ, il
n'avait que 8 bits).
je pensais en effet à des procs Intel - imposant l'alignement -
comme les PXAnnn.
pardon d'avoir oublié les "0.001% of us" qui utilisent un Cray.
Je vois plus souvent des Sparcs que les PXAnnn (dont j'entends
le nom pour le premier fois), et des Sparcs exigent bien
l'alignement. Mais j'ai cité des mainframes simplemnet parce que
tu as dit petits. En fait, je crois le fait de ne pas exiger
l'alignement est plutôt l'exception -- ça l'était dans la
passée, au moins (IBM RS6000, HP PA, Siemens BS2000, PDP-11,
Interdata 8/32 -- à vrai dire, il ne me viens pas à l'esprit de
l'essayer, puisque quand j'apprenais l'informatique, c'était la
règle).
En embarqué, les MIPS sont connus pour permettre les accès non-alignés
(ils ont même un brevet là dessus, avec une instruction dédiée) et je
crois que maintenant ARM le propose en option.
un alignement peut être requis pour lire un mot - c'est assez courant sur les petits procs
Des petits procs, comme les IBM système z, les anciens Crays, tous les Sparcs... En fait, les seules architectures que moi, j'ai vues, où on n'avait pas besoin de respecter l'alignement, c'est l'architecture Intel (probablement parce qu'au départ, il n'avait que 8 bits).
je pensais en effet à des procs Intel - imposant l'alignement - comme les PXAnnn. pardon d'avoir oublié les "0.001% of us" qui utilisent un Cray.
Je vois plus souvent des Sparcs que les PXAnnn (dont j'entends le nom pour le premier fois), et des Sparcs exigent bien l'alignement. Mais j'ai cité des mainframes simplemnet parce que tu as dit petits. En fait, je crois le fait de ne pas exiger l'alignement est plutôt l'exception -- ça l'était dans la passée, au moins (IBM RS6000, HP PA, Siemens BS2000, PDP-11, Interdata 8/32 -- à vrai dire, il ne me viens pas à l'esprit de l'essayer, puisque quand j'apprenais l'informatique, c'était la règle).
En embarqué, les MIPS sont connus pour permettre les accès non-alignés (ils ont même un brevet là dessus, avec une instruction dédiée) et je crois que maintenant ARM le propose en option.
Michael
Jean-Marc Bourguet
Michael DOUBEZ writes:
En embarqué, les MIPS sont connus pour permettre les accès non-alignés (ils ont même un brevet là dessus, avec une instruction dédiée)
Si c'est ce à quoi je pense, il faut deux lectures puis combiner les résultats. Donc une génération de code particulière et plus lente aussi dans le cas normal. Ce n'est pas le processeur qui détecte et fait ce qu'il faut.
et je crois que maintenant ARM le propose en option.
ARM doit proposer tout ce qu'on veut en option :-) Note que ce doit être aussi le cas pour les IP de MIPS.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Michael DOUBEZ <michael.doubez@free.fr> writes:
En embarqué, les MIPS sont connus pour permettre les accès non-alignés
(ils ont même un brevet là dessus, avec une instruction dédiée)
Si c'est ce à quoi je pense, il faut deux lectures puis combiner les
résultats. Donc une génération de code particulière et plus lente aussi
dans le cas normal. Ce n'est pas le processeur qui détecte et fait ce
qu'il faut.
et je crois que maintenant ARM le propose en option.
ARM doit proposer tout ce qu'on veut en option :-) Note que ce doit être
aussi le cas pour les IP de MIPS.
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
En embarqué, les MIPS sont connus pour permettre les accès non-alignés (ils ont même un brevet là dessus, avec une instruction dédiée)
Si c'est ce à quoi je pense, il faut deux lectures puis combiner les résultats. Donc une génération de code particulière et plus lente aussi dans le cas normal. Ce n'est pas le processeur qui détecte et fait ce qu'il faut.
et je crois que maintenant ARM le propose en option.
ARM doit proposer tout ce qu'on veut en option :-) Note que ce doit être aussi le cas pour les IP de MIPS.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Jean-Marc Bourguet
James Kanze writes:
On 11 mar, 11:10, Jean-Marc Bourguet wrote:
James Kanze writes:
[...]
Des petits procs, comme les IBM système z, les anciens Crays, tous les Sparcs... En fait, les seules architectures que moi, j'ai vues, où on n'avait pas besoin de respecter l'alignement, c'est l'architecture Intel (probablement parce qu'au départ, il n'avait que 8 bits).
Il me semblait que les machines IBM (que ce soit les descendant des 360 ou les divers POWER) permettent l'adressage non aligne a (relativement) faible cout. La raison que j'avais vu donnee etait que le COBOL en generait pas mal. Mais je n'ai pas regarde precisement les manuels.
J'avoue que mon expérence avec ce genre de processeur, c'est plutôt chez les compatibles. Mais le Siemens BS2000 exigeait bien un alignement de 4 (et peut-être même 8 pour les doubles), et il se disait 100% compatibles.
J'ai maintenant un autre souvenir pour les POWER: accès non aligné si restant dans une ligne de cache mais générant une exception si il traverse une frontière entre deux lignes de cache. Il faudrait repartir dans les specs pour vérifier.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
James Kanze <james.kanze@gmail.com> writes:
On 11 mar, 11:10, Jean-Marc Bourguet <j...@bourguet.org> wrote:
James Kanze <james.ka...@gmail.com> writes:
[...]
Des petits procs, comme les IBM système z, les anciens Crays,
tous les Sparcs... En fait, les seules architectures que moi,
j'ai vues, où on n'avait pas besoin de respecter l'alignement,
c'est l'architecture Intel (probablement parce qu'au départ, il
n'avait que 8 bits).
Il me semblait que les machines IBM (que ce soit les
descendant des 360 ou les divers POWER) permettent l'adressage
non aligne a (relativement) faible cout. La raison que
j'avais vu donnee etait que le COBOL en generait pas mal.
Mais je n'ai pas regarde precisement les manuels.
J'avoue que mon expérence avec ce genre de processeur, c'est
plutôt chez les compatibles. Mais le Siemens BS2000 exigeait
bien un alignement de 4 (et peut-être même 8 pour les doubles),
et il se disait 100% compatibles.
J'ai maintenant un autre souvenir pour les POWER: accès non aligné si
restant dans une ligne de cache mais générant une exception si il traverse
une frontière entre deux lignes de cache. Il faudrait repartir dans les
specs pour vérifier.
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Des petits procs, comme les IBM système z, les anciens Crays, tous les Sparcs... En fait, les seules architectures que moi, j'ai vues, où on n'avait pas besoin de respecter l'alignement, c'est l'architecture Intel (probablement parce qu'au départ, il n'avait que 8 bits).
Il me semblait que les machines IBM (que ce soit les descendant des 360 ou les divers POWER) permettent l'adressage non aligne a (relativement) faible cout. La raison que j'avais vu donnee etait que le COBOL en generait pas mal. Mais je n'ai pas regarde precisement les manuels.
J'avoue que mon expérence avec ce genre de processeur, c'est plutôt chez les compatibles. Mais le Siemens BS2000 exigeait bien un alignement de 4 (et peut-être même 8 pour les doubles), et il se disait 100% compatibles.
J'ai maintenant un autre souvenir pour les POWER: accès non aligné si restant dans une ligne de cache mais générant une exception si il traverse une frontière entre deux lignes de cache. Il faudrait repartir dans les specs pour vérifier.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Michael DOUBEZ
Michael DOUBEZ writes:
En embarqué, les MIPS sont connus pour permettre les accès non-alignés (ils ont même un brevet là dessus, avec une instruction dédiée)
Si c'est ce à quoi je pense, il faut deux lectures puis combiner les résultats. Donc une génération de code particulière et plus lente aussi dans le cas normal. Ce n'est pas le processeur qui détecte et fait ce qu'il faut.
Oui, c'est le format single-instruction, multiple-data (SIMD) qui est déposé. Je ne sais pas si c'est le processeur qui fait cela mais c'est dans le hard; dans le cas de ARM, c'est la MMU.
et je crois que maintenant ARM le propose en option.
ARM doit proposer tout ce qu'on veut en option :-)
C'est comme les voitures; tu achètes une carrosserie qui roule et les sièges c'est en option :) Heureusement qu'il n'y a pas de prix d'entrée pour les voitures.
Note que ce doit être aussi le cas pour les IP de MIPS.
Oui, enfin, l'accès aux données non-alignée est un argument de vente parfois et mips jouait là dessus il y a quelques années encore. Maintenant, ce n'est pas important pour tout le monde, surtout si le code n'a pas de comportement indéfinit comme un reinterpret_cast<>.
Michael
Michael DOUBEZ <michael.doubez@free.fr> writes:
En embarqué, les MIPS sont connus pour permettre les accès non-alignés
(ils ont même un brevet là dessus, avec une instruction dédiée)
Si c'est ce à quoi je pense, il faut deux lectures puis combiner les
résultats. Donc une génération de code particulière et plus lente aussi
dans le cas normal. Ce n'est pas le processeur qui détecte et fait ce
qu'il faut.
Oui, c'est le format single-instruction, multiple-data (SIMD) qui est
déposé. Je ne sais pas si c'est le processeur qui fait cela mais c'est
dans le hard; dans le cas de ARM, c'est la MMU.
et je crois que maintenant ARM le propose en option.
ARM doit proposer tout ce qu'on veut en option :-)
C'est comme les voitures; tu achètes une carrosserie qui roule et les
sièges c'est en option :)
Heureusement qu'il n'y a pas de prix d'entrée pour les voitures.
Note que ce doit être
aussi le cas pour les IP de MIPS.
Oui, enfin, l'accès aux données non-alignée est un argument de vente
parfois et mips jouait là dessus il y a quelques années encore.
Maintenant, ce n'est pas important pour tout le monde, surtout si le
code n'a pas de comportement indéfinit comme un reinterpret_cast<>.
En embarqué, les MIPS sont connus pour permettre les accès non-alignés (ils ont même un brevet là dessus, avec une instruction dédiée)
Si c'est ce à quoi je pense, il faut deux lectures puis combiner les résultats. Donc une génération de code particulière et plus lente aussi dans le cas normal. Ce n'est pas le processeur qui détecte et fait ce qu'il faut.
Oui, c'est le format single-instruction, multiple-data (SIMD) qui est déposé. Je ne sais pas si c'est le processeur qui fait cela mais c'est dans le hard; dans le cas de ARM, c'est la MMU.
et je crois que maintenant ARM le propose en option.
ARM doit proposer tout ce qu'on veut en option :-)
C'est comme les voitures; tu achètes une carrosserie qui roule et les sièges c'est en option :) Heureusement qu'il n'y a pas de prix d'entrée pour les voitures.
Note que ce doit être aussi le cas pour les IP de MIPS.
Oui, enfin, l'accès aux données non-alignée est un argument de vente parfois et mips jouait là dessus il y a quelques années encore. Maintenant, ce n'est pas important pour tout le monde, surtout si le code n'a pas de comportement indéfinit comme un reinterpret_cast<>.
Michael
James Kanze
Jean-Marc Bourguet wrote:
James Kanze writes:
On 11 mar, 11:10, Jean-Marc Bourguet wrote:
James Kanze writes:
[...]
Des petits procs, comme les IBM système z, les anciens Crays, tous les Sparcs... En fait, les seules architectures que moi, j'ai vues, où on n'avait pas besoin de respecter l'alignement, c'est l'architecture Intel (probablement parce qu'au départ, il n'avait que 8 bits).
Il me semblait que les machines IBM (que ce soit les descendant des 360 ou les divers POWER) permettent l'adressage non aligne a (relativement) faible cout. La raison que j'avais vu donnee etait que le COBOL en generait pas mal. Mais je n'ai pas regarde precisement les manuels.
J'avoue que mon expérence avec ce genre de processeur, c'est plutôt chez les compatibles. Mais le Siemens BS2000 exigeait bien un alignement de 4 (et peut-être même 8 pour les doubles), et il se disait 100% compatibles.
J'ai maintenant un autre souvenir pour les POWER: accès non aligné si restant dans une ligne de cache mais générant une exception si il traverse une frontière entre deux lignes de cache. Il faudrait repartir dans les specs pour vérifier.
Et que ça pourrait varier d'un modèle à l'autre, peut-être. Je sais que j'ai vu des signaux (bus error) suite à des accès non-alignés, mais ça date (1997 ou 1998, peut-être -- quand je travaillais chez IBM en Allemagne).
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Jean-Marc Bourguet wrote:
James Kanze <james.kanze@gmail.com> writes:
On 11 mar, 11:10, Jean-Marc Bourguet <j...@bourguet.org> wrote:
James Kanze <james.ka...@gmail.com> writes:
[...]
Des petits procs, comme les IBM système z, les anciens Crays,
tous les Sparcs... En fait, les seules architectures que moi,
j'ai vues, où on n'avait pas besoin de respecter l'alignement,
c'est l'architecture Intel (probablement parce qu'au départ, il
n'avait que 8 bits).
Il me semblait que les machines IBM (que ce soit les
descendant des 360 ou les divers POWER) permettent l'adressage
non aligne a (relativement) faible cout. La raison que
j'avais vu donnee etait que le COBOL en generait pas mal.
Mais je n'ai pas regarde precisement les manuels.
J'avoue que mon expérence avec ce genre de processeur, c'est
plutôt chez les compatibles. Mais le Siemens BS2000 exigeait
bien un alignement de 4 (et peut-être même 8 pour les doubles),
et il se disait 100% compatibles.
J'ai maintenant un autre souvenir pour les POWER: accès non
aligné si restant dans une ligne de cache mais générant une
exception si il traverse une frontière entre deux lignes de
cache. Il faudrait repartir dans les specs pour vérifier.
Et que ça pourrait varier d'un modèle à l'autre, peut-être. Je
sais que j'ai vu des signaux (bus error) suite à des accès
non-alignés, mais ça date (1997 ou 1998, peut-être -- quand
je travaillais chez IBM en Allemagne).
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Des petits procs, comme les IBM système z, les anciens Crays, tous les Sparcs... En fait, les seules architectures que moi, j'ai vues, où on n'avait pas besoin de respecter l'alignement, c'est l'architecture Intel (probablement parce qu'au départ, il n'avait que 8 bits).
Il me semblait que les machines IBM (que ce soit les descendant des 360 ou les divers POWER) permettent l'adressage non aligne a (relativement) faible cout. La raison que j'avais vu donnee etait que le COBOL en generait pas mal. Mais je n'ai pas regarde precisement les manuels.
J'avoue que mon expérence avec ce genre de processeur, c'est plutôt chez les compatibles. Mais le Siemens BS2000 exigeait bien un alignement de 4 (et peut-être même 8 pour les doubles), et il se disait 100% compatibles.
J'ai maintenant un autre souvenir pour les POWER: accès non aligné si restant dans une ligne de cache mais générant une exception si il traverse une frontière entre deux lignes de cache. Il faudrait repartir dans les specs pour vérifier.
Et que ça pourrait varier d'un modèle à l'autre, peut-être. Je sais que j'ai vu des signaux (bus error) suite à des accès non-alignés, mais ça date (1997 ou 1998, peut-être -- quand je travaillais chez IBM en Allemagne).
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34