Click here to send us your inquires or call (852) 36130518

Une Opinion sur la Conception du Gamma 60    

 

Je nai pas connu chez Bull la priode de conception du Gamma 60 et si je lai aperu dans les salles dordinateur de Gambetta et de la SNCF, si je lui ai soumis quelques calculs par lintermdiaire de programmeurs, je ne suis pas un tmoin de cette  aventure . Ayant t ml la fin des annes 60 une autre[1]  aventure  de conception de systmes, jai eu la curiosit dessayer de comprendre ce qui se passait dans la tte des concepteurs de Bull en 1955 et un peu aprs.

Jean Bellec 11 aot 2003

 

Introduction

 

Le Gamma 60 a t conu au milieu des annes 1950, un moment o les installations mcanographiques des gros clients commenaient tre dotes de nombreuses machines (tabulatrices, calculatrices, trieuses ) dont l'exploitation (manipulation de cartes, montage et dmontage des tableaux de connections) commenaient reprsenter des causes derreurs et un cot important.

En parallle, de nouvelles technologies avaient fait leurs preuves aux tats-Unis. Ce furent essentiellement le stockage des donnes sur bandes magntiques et l'arrive de technologies plus fiables et plus performantes avec les mmoires tores et les circuits transistoriss.

La gense du Gamma 60 a t longue puisque le premier systme devint oprationnel en 1961, si bien que d'autres facteurs postrieurs aux premires tudes (et leur annonce quelque peu prmature) furent plus ou moins habilement pris en compte.

 

En 1955, Bull tait incontestablement le second constructeur dquipements mcanographiques en Europe et peut-tre au monde (bien que lexistence daccords avec Remington Rand rende difficile lanalyse de la place relative de Bull sur le march mondial).

Le constructeur de matriel mcanographique faisait essentiellement un matriel dont la technologie relevait tantt de la machine-outil tantt de lhorlogerie lourde. La technologie tait dabord de la mcanique de prcision, agrmente dune part de plus en plus importante dlectromcanique (la technologie relais et les totalisateurs).

Le rseau commercial avait un rle primordial, dabord parce que la majorit des systmes tait place en location et ensuite parce que les clients avaient besoin dassistance technique pour tirer partie des machines. Les techniciens de Bull ralisaient la plus grande partie de la  programmation  des ensembles mcanographiques en piquant les tableaux de connections.

Au dbut des annes 1950, Bull avait complt sa gamme doutils mcanographiques avec une calculatrice lectronique le Gamma 3, qui saffranchissait des limitations apportes par la calculatrice lectromcanique sur le dbit des ensembles mcanographiques.

 

La mcanographie  classique  souffrait cependant de plusieurs inconvnients :

Beaucoup de travaux se trouvaient concentrs en fin de mois et danne ce qui impliquait gnralement un dimensionnement de lquipement pour les priodes de pointe. La vitesse de lecture des cartes et dimpression tant limite 150 cartes ou lignes par minute, la seule solution tait de faire coexister plusieurs quipements sur un site, ce qui posait des problmes dexploitation difficiles pour synchroniser les changes de fichiers entre quipements.

Certaines applications chez les clients (spcialement les banques et assurances car les impts  et les abonns des services publics ntaient pas encore totalement mcaniss) ncessitaient de gros fichiers dpassant les capacits des trieuses et autres interclasseuses.

Ces problmes recevaient potentiellement une solution en mettant les fichiers permanents sur bandes magntiques, solution dj en service aux tats-Unis depuis le dbut des annes 1950 avec les machines UNIVAC. Bien entendu lactionnaire de rfrence de Bull (les Papeteries Aussedat) ne pouvait pas ne pas hsiter devant une solution qui pouvait tarir une source importante de ses profits. Seule une solution combinant matriel cartes et bandes magntiques lui tait acceptable, dautant plus que les convertisseurs utiliss par Univac posaient bien des problmes pour les petits fichiers. La solution mixte (cartes et bandes) fut aussi retenue par IBM dans ses systmes 702 et 705 qui commenaient apparatre lpoque de conception du Gamma 60.

La technologie tubes vide de la calculatrice Gamma 3, mme miniaturiss, ntait pas sans poser des problmes de cot et de fiabilit. La technologie transistors commenait en 1955 apparatre avec des avantages dencombrement, de fiabilit et de dissipation calorifique, sinon de prix lpoque. Bull, ntant en rien li aux fabricants de tubes (tels CSF ou Philips), pouvait facilement faire le choix du transistor quelle avait effleur dans son utilisation des diodes semi-conducteurs dans le Gamma 3. Ce choix du transistor tait quand mme un pari car la SEA franaise et des constructeurs japonais croyaient lpoque davantage aux technologies magntiques (plus fiableset plus encombrantes, mais on ne parlait pas lpoque dintgration des circuits)

Au milieu des annes 1950, les constructeurs amricains avaient commenc abandonner diverses solutions de technologies mmoires pour se concentrer sur les tores magntiques. Les tores, bien que posant des problmes de cot de main duvre pour leur tissage, permettaient une grande fiabilit et un temps daccs bien plus rduit que les technologies alternatives (lignes retard, tube de Williams). Les mmoires tores saccommodaient bien dune logique parallle (telle quinitialement suggre par Von Neumann). Elles permettaient en particulier de saffranchir de la  programmation  (type Harvard) des tableaux de connexions et de nourrir toutes les spculations nes dans les annes 1950 sur les machines auto-modifiables et intelligentes.

 

Jusque l, lapproche de Bull ntait gure diffrente de celle de IBM-Poughkeepsie ou de RCA. Cependant, Bull ntait pas un leader dans ces technologies (bandes magntiques et mmoires tores avaient t conues aux USA) et pensait devoir consolider sa position par des innovations conceptuelles. Parmi celles-ci, ne de lexprience de la mcanographie, lide simposa dune planification centralise de lexploitation de latelier mcanographique alors compos dun ensemble de plusieurs machines oprant en parallle et difficiles synchroniser. Une mmoire commune stockant la fois les programmes locaux et la synchronisation de lexploitation de ceux-ci semblait rsoudre le problme de la planification des travaux, des tableaux de connexions amovibles et des paquets de cartes rpartir entre machines.

Les machines synchroniser taient les unislecteurs de bandes magntiques (ou de tambours), les lecteurs et perforateurs de cartes, les imprimantes et les calculatrices. Lanalyse des besoins les plus complexes des tableaux de connexions de tabulatrices-imprimantes conduisit la conception dun vritable processeur spcialis : le Traducteur.

On voit se dessiner larchitecture du Gamma 60 qui ne doit peu prs rien aux machines IBM comme le 704, conu autour de la rsolution de problmes scientifiques aux calculs longs et squentiels, ni mme au Gamma ET dont la diffusion et lutilisation en scientifique est peu prs contemporaine de la conception du Gamma 60. Bien entendu, qui peut le plus peut le moins, le Gamma 60 fut dot dune unit arithmtique dcimale comme le Gamma ET et se porta candidat aux mmes applications.

  

Design logique.

 

Les objectifs initiaux conduisaient interconnecter les diffrentes machines mcanographiques (y compris les nouveaux drouleurs de bande magntique) entre elles et en assurer une administration centralise. Les performances des nouvelles technologies (et en particulier de la mmoire tores) semblaient autoriser une conomie de cot grce au partage de matriel entre les diffrents lments.
Outre les appareils (bandes, cartes, imprimantes) dont le fonctionnement tait naturellement asynchrone, l'ide de conserver un fonctionnement asynchrone pour le calculateur arithmtique et ce qui deviendra le traducteur tait naturelle.

 

L'tude de l'architecture du systme conduisit faire du contrleur de mmoire (distributeur de quantits) et de son protocole d'accs le centre du systme. Toutes les fonctions du systme furent construites sur cette base.

Les temps de traitement des oprations d'informatique de gestion taient, malgr la transistorisation, relativement lents par rapport au cycle de mmoire centrale en particulier les fonctions portant sur des structures longues d'information et sur les oprandes numriques de grande prcision.  C'est ainsi que le traducteur, le calculateur arithmtique, le comparateur furent construits comme des "lments" indpendants et asynchrones au mme titre que les contrleurs de priphriques.

 

L'organisation des traitements d'informatique de gestion se faisait dj en UT units de traitement (que l'on appellera plus tard job steps) dont le droulement soit tait ncessairement squentiel soit tait susceptible d'tre excut de manire asynchrone. L'ide qui vint aux concepteurs du Gamma 60 tait d'exploiter les possibilits de fonctionnement autonome des "lments" pour pouvoir excuter les UT potentiellement asynchrones en "simultanit".

La gestion de toutes les phases asynchrones des machines au profit d'UT asynchrones tait confie un "lment" spcialis : le distributeur de programmes implant dans l'unit centrale mais oprant de manire identique aux autres lments.

 

Le distributeur de programmes interprte les instructions centrales ou canoniques qu'il lit en mmoire centrale et qui sont essentiellement des instructions de "mise au travail" d'un autre lment et de branchement (inconditionnels ou conditionnels sur les catnes qualitatifs - statut des oprations des autres lments). Outre la mmoire centrale, le distributeur peut accder aux registres des autres lments.

La mise au travail (ou l'arrt) des "lments" se fait l'aide d'une instruction de "coupure" qui prfixe un bloc de commandes comprenant des commandes (directives) spcifiques de l' "lment". Au pralable, des adresses en mmoire centrale avaient t charges dans des registres RAQ du distributeur de quantit (spcifiques de l' "lment"). Cette instruction de coupure a en fait pour effet de mettre en queue la requte dans une chane de reprise dont un maillon se trouve dans chaque bloc de commandes. Le distributeur de programmes passe ensuite sur d'autres fonctions asynchrones faisant l'objet d'autres DTI. Ce sont le plus souvent des notifications de fin d'opration asynchrone.

De faon permettre les traitements asynchrones l'initiative du programmeur - et non pas simplement l'initiative de l'oprateur du pupitre - une instruction de "simu" reprsente l'quivalent de la coupure mais le programme se poursuit dans le distributeur de programmes qui peut mettre au travail d'autres "lments".

L'adresse de retour en fin de directive est range dans un registre RAP de l'lment.

Le distributeur de programmes est lui-mme un "lment" et accde la mmoire centrale banalise via le distributeur de quantits.

Plus tard, certains programmes utiliseront la "coupure sur lment virtuel" des fins de synchronisation des processus logiciels, voire des traitements de listes.

 

Les lments centraux sont tous de types diffrents. Aucun Gamma 60 ne fut construit avec par exemple deux calculateurs arithmtiques bien que rien ne l'interdise dans l'architecture. C'est un abus de langage que d'attribuer au Gamma 60 le rle de premier multiprocesseur de l'histoire. Les types d'lments centraux sont le calculateur arithmtique, le comparateur gnral, le comparateur logique et le traducteur. Faute d'analyse pralable des besoins (la mtrologie du logiciel qui a amen la conception des architectures postrieures 1975) la spcialisation des fonctions et les caractristiques des lments centraux n'ont pas t dfinies de manire tout fait rationnelle.

Le Gamma 60 n'tait pas destin aux applications scientifiques (militaires ou civiles) et une impasse a t faite sur le calcul binaire grande prcision, l'poque le calcul matriciel. Un calculateur arithmtique binaire avait t promis un grand utilisateur mais n'a pas t construit. Le calcul de fonctions trigonomtriques ne semble pas non plus avoir t envisag.

 

Le calculateur arithmtique oprant sur des oprandes en dcimal flottant est l'hritier du Gamma 3. Le dcimal flottant avait surtout pour lui d'tre directement compatible avec les appareils d'entres-sorties (les nombres sur carte perfore n'affaiblissaient pas la rsistance physique de la carte et l'on conomisait le temps de conversion binaire dcimal qui aurait encore alourdi la fonction du traducteur). Le calculateur arithmtique possdait un oprateur parallle sur 80 bits et traitait des oprandes sur 48 bits.

 

L'indpendance du calculateur logique semble avoir t due l'importance donne cette poque l'algbre de Boole et ce dont beaucoup rvaient, celle de l'intelligence artificielle. Il faut noter cependant que l'organisation des donnes en structure de listes (telle que le sous-entend McCarthy dans LISP) est seulement contemporaine du Gamma 60 et n'tait pas connue des designers, mme si ceux-ci en laborrent un mcanisme spcialis dans la gestion des tches (cf. chanes de reprise).

 

Le comparateur gnral a, outre les instructions de comparaison, la fonction d'effectuer des MOVE de mmoire mmoire, ce qui justifiait probablement son fonctionnement asynchrone. Il tait fond sur un oprateur srie.

 

Le traducteur tait essentiellement l'hritier de la logique distribue des quipements mcanographiques en allgeant la fonction des lments cartes imprimantes, en admettant le support des cartes IBM (pardon, des cartes Hollerith). Le traducteur tait en fait un processeur distribu avec ses propres programmes (clichs) et des traitements complexes de caractres pour la mise en page des tats d'imprimantes.

 

Les contrleurs de priphriques semblent plutt allgs quand on les compare aux systmes plus rcents (post-1964) et furent essentiellement consacrs l'optimisation des dbits de donnes et aux fonctions temps rel imposes par la mcanique. La solution retenue par le Gamma 60 de ne pas rendre les conversions unit-record bandes magntiques des phases obligatoires (comme le faisaient l'Univac I qui recourait des convertisseurs off-line, et l'IBM 702 qui ne disposait pas des canaux simultans seulement invents sur le 705) tait considre juste titre comme un atout.

 

Un des problmes les plus pineux du design du Gamma 60 fut la rduction des risques de fiabilit introduits par les technologies nouvelles : transistor, mmoire tores, bande magntique. Le dveloppement par Bull de toute la partie lectronique des ensembles utilisant ces technologies reprsenta un challenge impressionnant quand on considre que, part un peu chez SEA, la Compagnie des Machines Bull ne pouvait gure recruter des ingnieurs ayant dvelopp ces technologies et devait redcouvrir caractristiques physiques et solutions aux problmes rencontrs. L o IBM bnficiait du projet SAGE et du support de contrats de la NSA, Bull ne disposait pas et ne recherchait gure de contrats publics sur ces technologies.

En dehors des mcanismes strictement lis la technologie, de nombreuses stratgies de redondance durent tre incorpores la logique et contriburent l'instabilit du design. Elles contriburent une augmentation considrable du volume de la machine et, indirectement, en augmentrent la probabilit de pannes.

Les 24 plans de la mmoire tores furent complts par 3 plans de correction d'erreurs, portant la largeur du contrleur de mmoire 27 bits. Le calculateur arithmtique fut dot de circuits de calcul de preuve. La totalit de la machine et non pas seulement les "lments" fut synchronise par un distributeur de rythmes qui devait porter sur des longueurs trs grandes et des circuits de rgnration des signaux horloge dans chaque cabinet. L'hypothse d'un "worst case design" o tous les transistors taient supposs dvier dans le mme sens des performances nominales fut prise, ce qui compliqua encore la distribution des signaux d'horloge. La technologie de base fut ralentie peu prs de moiti pour tenir compte de ce design, conduisant une baisse de performances quivalente. Il est vrai que des rgles de design moins contraignantes auraient entran davantage de corrections sur les  chanes longues  et vraisemblablement des mises au point en clientle encore plus nombreuses. Il faut noter la prsence sur le Gamma 60 dun nombre important de points de mesure et de potentiomtres de marge qui certainement en augmentrent les cots et impliquaient la prsence quasi permanente dingnieurs de maintenance sur le site.

 

Les ingnieurs des tudes Bull ignoraient en 1955 ce quon appela plus tard la  computer science  ou plutt en taient rests au rapport Von Neumann sur EDVAC. Ce nest quen 1961 que le software fut enseign Bull par le professeur Perlis, mais ctait dj prs de  la fin de laventure. La plupart de ces ingnieurs ne parlaient pas anglais et taient plutt fiers de lignorer. Et surtout, la reproduction des documents par photocopie ne se rpandit qu la fin des annes 1960 et la possession dun document technique amricain ne servait qu augmenter le pouvoir de son dtenteur, privant ses collgues dune comparaison avec le projet en cours. Les services technico-commerciaux furent, eux, plus sensibles aux demandes des clients et cest en leur sein que furent dvelopps ou conus la plupart des dveloppements de logiciel de base, en particulier au CNCE (centre national de calcul lectronique). Cest ainsi que furent dvelopps un moniteur squentiel, un compilateur Algol, que fut pens lAP3 Malheureusement, ces dveloppements ne commencrent que trs tardivement et furent plutt mal coordonns avec les architectes des tudes.

Le logiciel, on disait encore software, sous la forme qu'il revtait la fin des annes 1950, c'est dire un superviseur d'entres-sorties et un moniteur d'enchanement des travaux, ne fut entrepris qu'aprs la ralisation du matriel et les commandes des clients. Seuls taient drivs du Gamma 3 le concept de sous-programmes standard (ouverts ou ferms) pour le tri ou des fonctions scientifiques. Le problme classique du passage des paramtres ou du rangement de l'adresse retour dans les procdures ne fut aussi abord qu'aprs la ralisation des prototypes. La solution des lments virtuels pour appeler une procdure tait tout le moins lourde. Pourtant ce problme tait connu et rsolu en Grande Bretagne avec Maurice Wilkes. Les "sous-programmes ouverts" reprsentaient l'insertion "en ligne" de code et taient souvent prsents comme des solutions prfrables aux "procdures", probablement en hritage des programmes par cartes. On comprend bien que le Gamma 60 est arriv trop tt pour un compilateur COBOL, mais le retard dcouvert avec limportation du RCA 301 et encore plus tard avec le GE-400 contraste avec la confiance que Bull la fin des annes 1950 avait dans la prennit du Gamma 60.

 

 

Le Gamma 60 inaugure en un certain sens l'architecture des processeurs superscalaires[2] des annes 1990 o le rle de la mmoire centrale est remplac par celui du (ou des) cache. Il se rapproche aussi des architectures EPIC[3] par le fait que la simultanit dexcution et la cohrence des accs mmoires est place sous la responsabilit du programmeur. Cependant cette prmonition tait certainement inconsciente car l'existence mme d'un systme logiciel (systme d'exploitation, langages standard indpendants de l'architecture machine) ne semblait pas tre souponne au moment de la conception.

Par contre, la conception de la simultanit des entres sorties par une gestion asynchrone devance un peu l'adoption gnralise par IBM de la solution inaugure sur la 709. On peut cependant regretter que le concept d'un IOC grant sparment du processeur central et regroupant les registres des lments priphriques[4] n'ait pas t invent sur le Gamma 60.

Par ailleurs, s'il tait assez raisonnable de lancer un programme multi-threads sans aucune protection entre ces tches (aprs tout, les systmes actuels sous UNIX et Windows XP en font autant), il tait pour le moins imprudent d'annoncer que ces programmes pouvaient tre indpendants. Le Gamma 60 n'avait pas de systme de protection de mmoire et les chanes de reprises, outils essentiels du dispatching des programmes, taient exposes tout programme malveillant ou simplement erron. De mme, l'absence d'un mode matre (superviseur) autorisait l'accs aux "lments priphriques" sans aucun contrle.

Le Gamma 60 tait limit en taille mmoire une capacit de 32K mots de 24 bits -il faut le dire dune taille comparable celle de la concurrence-. Il n'envisagea pas de recourir au concept de mmoire virtuelle introduit dans le Ferranti Atlas pourtant contemporain. Ses tambours n'taient destins qu'au stockage de programmes ou au stockage de petits fichiers squentiels. La longueur des mots, infrieure ses comptiteurs scientifiques IBM et Univac[5], aurait probablement d tre tendue pour faire bnficier le systme de ce concept.

 

Les concepteurs du Gamma 60 inventrent cependant bien des concepts de lan 2000 sans tre conscients de leur porte.

 

En pratique, il ntait pas possible de tirer parti de toutes ces inventions darchitecture avant les annes 1980. La mmoire centrale du Gamma 60, 32K catnes, tait de la taille dun cache L2 daujourdhui (et 10 000 fois plus lente). La mmoire paraissait rapide devant la lenteur des calculs. Les trois dcennies suivantes renversrent la vitesse relative de la mmoire et du processeur avant de retrouver un rapport voisin sur la base du cache.

La capacit thorique du Gamma 60 recevoir plusieurs processeurs de mme type ne fut jamais exploite, pas plus que ne fut dvelopp un calculateur flottant binaire ncessit par les traitements SIMD  (traitements matriciels sur tableaux de donnes) graphiques ou autres.

Le concept de multiprogrammation qui consistait dans les annes 1960 effectuer simultanment des programmes disjoints rentra au chausse-pied dans le Gamma 60 qui navait pas t conu pour le fonctionnement de programmes indpendants en cours de debugging. Le manque de dispositif de protection de mmoire tait pour cela un obstacle plus quimportant. Seuls en pratique les programmes  cooprants  pouvaient y accder en simultanit. Les premiers programmes multi-threads apparurent dans les programmes transactionnels de 1975.

La compilation dun code source pour une architecture EPIC permettant un fonctionnement automatique de la simultanit na vu le jour qu la fin des annes 1990 aprs un dveloppement qui excde la dure de vie du Gamma 60. Inutile de reprocher aux concepteurs de 1955 qui ignoraient souvent mme jusquau concept de compilateur, de ne pas lavoir dvelopp.

 

Quil soit permis de stonner que ce systme ait finalement fini par tre construit et mme mis en service la satisfaction dune grande poigne de clients alors quil aurait pu accompagner certaines machines exprimentales de Univac (LARC), Burroughs (Illiac), IBM (SSEC, NORC), SEA (Dorothe, 1500) dans le respect des archologues de lhistoire de linformatique.

Probablement, le Gamma 60 aurait pu mieux fconder les quipes de dveloppement de Bull, comme la fait le Stretch IBM, si la dbcle financire de la Compagnie nen avait entran le dmembrement. Par contre, cest davantage le choix stratgique de ne pas avoir vu que linformatique avait cess de ntre quune automatisation de la gestion taylorienne des entreprises et la fuite en avant dans une gestion aventureuse du parc (obsolescence programme du matriel  classique ) qui ont t lorigine de la chute de 1963 plus que les cots de R&D du Gamma 60.



[1] La ligne GCOS 64 / GCOS 7

[2] des microprocesseurs RISC et du Pentium et de ses successeurs.

[3] du microprocesseur Itanium de Intel

[4] plutt que de les distribuer dans les lments centraux.

[5] La srie 700 scientifique de IBM et lUnivac 1100 taient dots de mots de 36 bits.

Bibliographie:

Zeblaze| XT175| xiaomi m365| xiaomi Roborock S50| Roborock S50| Wltoys| VISUO XS812| Viltrox EF-M2| Vernee T3 Pro| Ulefone Power 5| Tronxy X5S| SONOFF| SJCAM SJ8 PRO| Rowin WS-20| MXQ PRO| MJX Bugs 5W| lixada| LEMFO LEM8| lemfo lem4 pro| LEMFO| koogeek| kkmoon| JJPRO X5| hubsan h501s x4| hubsan h501s| Hubsan| hohem isteady pro| goolrc| Feiyu| Feiyu Tech G6| Ender 3| Creality Ender 3| Bugs 5W| anet a8 3d printer review| Anet| Anet A4| Anet A6| Anet A8| andoer| ammoon| amazfit bip|

按揭計算機| 買樓| 上車盤| 搵樓| 屋苑| 樓盤| 地產| 租樓| 租盤| 二手樓| 新盤| 一手樓| 豪宅| 校網| 放盤| 樓價| 成交| 居屋| 貝沙灣| 美孚新邨| 嘉湖山莊| 太古城| 日出康城| 九龍站 | 沙田第一城| 樓市走勢| 青衣| 西半山| 西貢| 荃灣|

雪茄网购| 雪茄| 哈瓦那雪茄| 雪茄价格| 雪茄烟网购| 雪茄专卖店| 雪茄怎么抽| 雪茄烟| 雪茄吧| 陈年雪茄| 大卫杜夫雪茄| 保利华雪茄| 古巴雪茄品牌| 古巴雪茄| 古巴雪茄多少钱一只| 古巴雪茄专卖网| 烟斗烟丝| 烟丝| 小雪茄| 金特罗雪茄| 帕特加斯d4 | 蒙特雪茄| 罗密欧朱丽叶雪茄| 网上哪里可以买雪茄| 限量版雪茄| 雪茄专卖| 雪茄专卖网| 雪茄哪里买| 买雪茄去哪个网站| 推荐一个卖雪茄的网站| 雪茄烟| 古巴雪茄价格| 雪茄海淘| 雪茄网| 帕拉森雪茄|

噴畫| banner| banner 價錢| Backdrop| Backdrop 價錢| 易拉架| 易拉架 價錢| 橫額| 印刷| 橫額印刷| 印刷 報價| 貼紙| 貼紙印刷| 宣傳單張| 宣傳單張印刷| 展覽攤位| 書刊 印刷| Bannershop| Ebanner| Eprint| 印刷公司| 海報| 攤位| pvc板| 易拉架設計| 海報印刷| 展板| 禮封| 易拉架尺寸| foamboard| hk print| hong kong printing| Printing| 喜帖| 過膠| 信封| backdrop| print100| 咭片皇| 印館|

邮件营销| Email Marketing 電郵推廣| edm营销| edm| 营销软件| 推广软件| 邮件群发软件| 邮件群发| Mailchimp| Hubspot| Sendinblue| ActiveCampaign| Aweber| 邮件主题怎么写| 邮件主题| 邮件模板| Maichimp| benchmark| SMS|

wms| vending machine| barcode scanner| QR code scanner| SME IT| it solution| rfid tag| rfid| rfid reader| it outsourcing| POS label| IRLS| IT Support| system integration| software development| inventory management system| label printing| digital labelling| barcode label| Self Service Kiosk| Kiosk| Voice Picking| POS scanner| POS printer| System Integrator| printing labels| Denso| barcode| handheld| inventory management| warehouse management| stock taking| POS| Point of sale| Business service| Web Development| vending| app development| mobile app development| handheld device| terminal handheld| inventory management software| pos system| pos software| pos hardware| pos terminal| printer hong kong| receipt printer| thermal printer| thermal label printer| qr code scanner app| qr scanner app| online qr code scanner| qr code scanner online mobile| qr code scanner download| mdm| mobile solutions| mdm solutions| mobile device management|

Tomtop| Online Einkaufen| online shop| Autozubehör| Bekleidung| Kopfhörer| badausstattung| Badmöbel| smartwatch günstig| Luftbefeuchter| lichtbox| Kosmetiktaschen| Make-Up Pinsel| Smartphones günstig| tablet günstig| Wanderstock| fahrrad maske| spielekonsole| spielkonsole| Geldbeutel| Gaming Kopfhörer|

electric bike| best electric bike| electric bikes for adults| e bike| pedal assist bike| electric bikes for sale| electric bike shop| electric tricycle| folding electric bike| mid drive electric bike| electric trike| electric mountain bike| electric bicycle| electric bike review| electric fat bike| fat tire electric bike| women's electric bike |

office| 地產代理| 辦公室| Property Agent| Hong Kong Office Rental| hong kong office| 物業投資| office building| Commercial Building| Grade A Office| 寫字樓| 商業大廈| 甲級寫字樓| 頂手| 租寫字樓| leasing| Rent Office| 地產新聞| office for sale|

太古廣場| 海富中心| 中港城| 統一中心| 瑞安中心| 力寶中心| 信德中心| 新港中心| 中環中心| 合和中心| 康宏廣場| 星光行| 鷹君中心| 遠東金融中心| 港晶中心| 無限極廣場| 光大中心| 中遠大廈| 海港中心| 新世界大廈| 永安中心| 南洋中心| 永安集團大廈| 華潤大廈| 永安廣場| 朗豪坊| 時代廣場| 新世紀廣場| 太古城中心| 希慎廣場| 交易廣場| 創紀之城| 港威大廈| 企業廣場| 新文華中心| 置地廣場| 怡和大廈| 世貿中心| 太子大廈| 中信大廈| 禮頓中心| 中銀大廈| 銅鑼灣廣場| 環球大廈| 海濱廣場| 新鴻基中心| 萬宜大廈| Tower 535| 高銀金融國際中心| 海濱匯| 皇后大道中9號| 國際金融中心| 半島中心| 利園三期| 天文臺道8號| 信和廣場| 娛樂行| 南豐大廈| 帝國中心| 中環廣場| 美國銀行中心| 尖沙咀中心| 新東海商業中心| Chater House| Nexxus Building| One Island East| 中匯大廈| Fairmont House| 華懋廣場| 中建大廈| 北京道1號| 胡忠大廈| Central Plaza| The Centrium| LHT Tower| China Building| AIA Central| Crawford House| Exchange Tower| AIA Tower| World Wide House| One Kowloon| The Gateway | One Island South| Jardine House| Millennium City | Exchange Square| Times Square | Pacific Place| Admiralty Centre| United Centre| Lippo Centre| Shun Tak Centre| Silvercord| The Center| Mira Place| Ocean Centre| Cosco Tower| Harcourt House| Cheung Kong Center|

school| international school of hong kong| international school| school in Hong Kong| primary school| elementary school| private school| UK school| british school| extracurricular activity| Hong Kong education| primary education| top schools in Hong Kong| Preparatory| best international schools hong kong| best primary schools in hong kong| primary school hong kong| private school hong kong| british international school| extra-curricular| school calendars| boarding school| school day| Bursary| British international school Hong Kong| British school Hong Kong| English primary school Hong Kong| English school Hong Kong| International school Hong Kong| School Hong Kong| boarding school Hong Kong| best school in Hong Kong| School fees|

electric bike| Best smartwatch| Best Wilreless earphones|