نقض حق اختراع نرم‌­افزار؛بررسی یک پرونده

 دعوی شرکت NAZOMI علیه شرکت­‌های WESTERN DIGITAL وSLING MEDIA

 

یکی از اجزای سخت‌­افزاری هر وسیله  کامپیوتری، پردازشگرها هستند. دستورالعمل­‌های مندرج در یک برنامه رایانه­‌ای توسط واحد پردازش مرکزی یا همان سی­‌پی­‌یو خوانده و اجرا می­‌شوند. برای اجرای یک نرم افزار توسط سی­‌پی­‌یو، ابتدا باید برنامه از یک زبان برنامه‌­نویسی سطح بالا که برای انسان قابل درک است(یعنی کد منبع) به یک زبان سطح پایین­‌تر که برای ماشین قابل خواندن باشد، ترجمه شود. برنامه­‌ای که این‌کار را انجام می­‌دهد کامپایلر نام دارد. کد ماشین برای پردازشگر ویژه و منحصر به فرد است. در نتیجه یک کامپایلر خاص تنها می­‌تواند برنامه­‌ها را برای نوع خاصی از پردازشگرها ترجمه کند. بنابراین برای اجرای یک کدمنبع یا نرم‌افزار بر روی سیستم­های مختلف برنامه باید برای سیستم جدید مجددا کامپایل شود.

در جاوا(Java) که یک زبان برنامه‌­نویسی سطح بالاست این مشکل حل شده یعنی لازم نیست برای هر سیستم جدید برنامه مجددا کامپایل شود. در عوض زبان برنامه­‌نویسی جاوا از یک کامپایلر استفاده می­‌کند که زبان جاوا را به «بایت کد» تبدیل می­‌کند. این بایت کدها توسط برنامه­‌ای به نام (JVM) به کد ماشین مخصوص هر پردازشگر ترجمه می­‌شوند. در نتیجه برنامه‌­های نوشته شده به زبان جاوا می­‌توانند بر روی هر سیستم عاملی به راحتی اجرا شوند. دستگاه­‌های کامپیوتری در نحوه ذخیره‌­سازی اطلاعات در حافظه نیز متفاوت عمل می­‌کنند. برخی پردازشگرها اطلاعات را به صورت پشته‌­ای[1] یعنی به ترتیب ورود ذخیره می‌­کنند( در واقع در این سیستم آخرین داده وارد شده اول از همه مورد استفاده و بازیابی قرار می­‌گیرد)؛ در مقابل حافظه مبتنی بر ثبت[2]، اطلاعات را برمبنای محل دقیق هر آیتم ذخیره و بازیابی می­‌کند. در نتیجه، پردازشگرهایی که از سیستم­های ذخیره اطلاعات متفاوتی استفاده می­کنند به انواع مختلفی از کدهای ماشین نیاز دارند. با وجود آنکه پردازشگرهای مدرن اغلب از مدل مبتنی بر ثبت استفاده می­کنند، بایت­‌کد جاوا منطبق بر دستورالعمل مدل پشته­‌ای است. بنابراین هر وسیله‌­ای که دارای پردازشگر مبتنی بر ثبت باشد برای اجرای برنامه­ به زبان جاوا باید از برنامه JVM برای ترجمه بایت­کدهای پشته­‌ای جاوا استفاده کند. ایراد این روش آن است که اجرای بایتکدهای جاوا با استفاده از یک برنامه نرم­‌افزاری(JVM) نسبت به برنامه­‌هایی که مستقیما و بدون نیاز به ترجمه برروی سخت­‌افزار اجرا می­شوند، کندتر است و فرآیند اجرای برنامه بیشتر طول می­‌کشد. یک راه­‌حل برای این مشکل می‌­تواند پردازش بایت­کدهای جاوا در سخت­‌افزار به کمک یک نرم­‌افزار مناسب که سرعت اجرای برنامه را بالا ببرد، باشد اما اعمال این راه‌­حل سخت­‌افزاری برای برنامه‌های کاربردی که تحت زبان جاوا طراحی نشده­‌اند با دشواری‌­هایی روبه روست.

موضوع پرونده حاضر دو اختراع شرکت نازومی(Nazomi) است که در پی حل مشکل مذکور بوده‌­اند. ادعا شماره 48 و 74 ورقه اختراع شماره 362 و ادعاهای 1و5 ورقه اختراع شماره 436 سیستمی را توصیف می­‌کنند که قادر است دستورالعمل­‌های حافظه پشته‌­ای را پردازش کرده و برنامه‌­های کاربردی را نیز بدون استفاده از JVM اجرا کند. مطابق ادعانامه شماره 48: این اختراع شامل یک واحد پردازش مرکزی است که توانایی اجرای مجموعه دستورالعمل‌­های متعدد را دارد و شامل موارد ذیل است:

یک قسمت اجرایی و فایل­‌های ریجستر[3] مربوط به آن، مکانیسمی برای حفظ و نگهداری برخی از اطلاعات برای مجموعه دستورالعمل­‌های چندگانه در فایل­‌های ریجستر، مکانیسمی برای کنترل بسته­‌بندی اطلاعات و مکانیسمی برای استثنا کردن برخی دستورالعمل­‌های پشته­‌ای. بقیه ادعاها نیز دارای عناصر مشابه با این ادعاست.

دو تن از خواندگان یعنی شرکت وسترن(Western) و اسلینگ(Sling) تولیدکننده محصولات نهایی هستند که پردازشگرهای مختلف در آن­ها مورد استفاده قرار می­‌گیرد. خوانده دیگر یعنی شرکت ای­‌آر­ ام(ARM) شرکت طراح پردازشگرهای مختلف است و طی قرارداد لیسانس، اجازه استفاده از این طرح‌­ها را به شرکت­‌های تولیدکننده تراشه­‌های کامپیوتری اعطا می­‌کند. در واقع شرکت ای­‌آرام سازنده یا فروشنده پردازشگر نیست اما طرح‌­های ساخت پردازشگر این شرکت در بسیاری از وسایل کامپیوتری به کار رفته­‌است. شرکت وسترن و اسلینگ نیز از جمله شرکت­‌هایی بودند که از این طرح­‌ها در ساخت پردازشگرهای محصولات خود استفاده کرده بودند. در ابتدا پردازشگرهای شرکت ای‌ ­آر ام تنها قادر به اجرای دو نوع از کدهای ماشین مبتنی بر دستورالعمل ثبتی بودند. علاوه بر این پردازشگرهای این شرکت می‌توانستند دستورالعمل­‌های پشته­‌ای زبان برنامه­‌نویسی جاوا را نیز با استفاده از روش شناخته شده شرکت نازومی(یعنی استفاده از برنامه نرم­افزاری JVM که بایت­کدهای جاوا را به زبان ماشین مبتنی برثبت شرکت ای­ آر ام ترجمه می­ کند) اجرا کنند. در سال 2000 شرکت ای ­آر ام تراشه‌­ای را طراحی کرد که سرعت پردازش بایت­کدهای جاوا را افزایش می‌داد. قسمت سخت­‌افزاری این طرح Jazelle نامیده شد. این طرح نیز مانند سایر طرح­‌های ای­ آر ام طی قرارداد لیسانس به شرکت‌های متعدد تولیدکننده تراشه واگذار شد و به دلیل انعطاف­‌پذیری آن مورد استقبال قرار گرفت.

از آنجا که طرح شرکت ای­ آر ام و تراشه­‌هایی که با استفاده از این طرح ساخته می­‌شدند، قابلیت استفاده در طیف وسیعی از محصولات را داشتند معمولا دارای کارکردهای اختیاری­ بودند که لزوما همه­‌ی تولیدکنندگان از آن­ها استفاده نمی­‌کردند. سخت افزار Jazelle یکی از قابلیت­‌های اختیاری این طرح بود. هر دو محصول شرکت­های وسترن و اسلینگ که به نقض حق اختراع شرکت نازومی متهم شدند، دارای سی­پی­یوهایی بودند که سخت افزار Jazella در آن­ها به کار رفته بود. البته این سخت­‌افزار بدون وجود نرم­‌افزاری به نام (Jazella Technology Enabling Kit(JTEK قابلیت اجرای عملکردهای ادعایی اختراع شرکت نازومی را ندارد. تولیدکنندگان محصولات نهایی می­‌توانند مجوز بهره‌­بردای از نرم­‌افزار(JTEK) را در مقابل پرداخت مبلغی از شرکت ای ­آر ام دریافت کنند.اما خواندگان یعنی شرکت­‌های وسترن و اسلینگ چنین مجوزی از شرکت ای ­آر ام دریافت نکرده و این نرم‌­افزار را برای فعال­سازی سخت­‌افزار Jazella بر روی محصولات خود نصب نکرده بودند.

در فوریه 2010 شرکت نازومی به اتهام نقض ورقه اختراع شماره 362 و 436 علیه چندین شرکت از جمله وسترن و اسلینگ در دادگاه بخش کالیفرنیای شمالی اقامه دعوا نمود. در جولای 2012 این دو شرکت از دادگاه تقاضای رسیدگی اختصاری نمودند با این استدلال که اثبات اینکه محصولات این شرکت­‌ها به خودی خود قادر به اجرای کارکرد ادعایی است، نیازمند تفسیر ادعاهاست. به علاوه محصولات متهم به نقض، ادعاهای اختراع شرکت نازومی را نقض نکرده‌­اند زیرا این محصولات مشتمل بر نرم‌­افزار مورد نیاز برای اجرای سخت‌افزار Jazelle نبوده‌­اند. در مقابل نازومی این­‌طور استدلال کرد که ادعاهای 48و74 ورقه اختراع 362 و ادعاهای 1و5 ورقه اختراع 436 شامل هرنوع سخت‌­افزاری است که بتواند دستورالعمل­‌های پشته­‌ای را پردازش کند، صرف­نظر از اینکه آیا واقعا در دستگاه چنین پردازشی صورت گرفته یا خیر. به عبارت دیگر نازومی مدعی بود که عبارات ادعاها تنها اجزای سخت­‌افزاری لازم برای عملکرد ادعایی را توصیف کرده‌­اند و محصولات شرکت­های وسترن و اسلینگ تنها به دلیل داشتن سخت­‌افزار Jazella و حتی بدون فعالسازی توسط نرم‌­افزار JTEK ، ناقض حقوق اختراع نازومی هستند.

در نهایت دادگاه بخش با تقاضای رسیدگی اختصاری خواندگان موافقت کرد زیرا نظر قاضی مبنی بر این بود که دستگاه ادعایی نازومی باید به خودی خود قادر به اجرای کارکرد ادعایی باشد درحالیکه بدون فعالسازی نرم‌­افزار JTEK، سخت افزار Jazella نمی­‌تواند دستورالعمل­‌های پشته‌­ای را پردازش کند و محصولات خواندگان فاقد نرم‌­افزار لازم جهت اجرای عملکرد است. در نتیجه دادگاه محصولات دو شرکت خوانده را غیرناقض تشخیص داد. نازومی از رای دادگاه بدوی در دادگاه فدرال تقاضای تجدیدنظرخواهی نمود.

در دادگاه فدرال نخستین گام تحلیل نقض، تفسیر ادعاست. دادگاه بخش ، دعوا را چنین تفسیر کرده بود که دستگاه ادعایی مشتمل بر سخت افزار و نرم افزار بوده که قادر به ایفای عملکرد مورد بحث می­‌باشد. دادگاه  تفسیر دعوای نازومی را که صرفا مستلزم سخت افزاری بود که به قادر به ایفای عملکردهای مورد ادعا بود رد می­‌نمود. دادگاه فدرال نیز با این نظر موافقت کرد.

ادعاهای طرح شده در مورد سی.پی.یو هایی سخن می­‌گویند که عملکردهای خاص دارد، برای مثال می­‌توانند هم دستورالعمل­‌های حافظه‌­ی مبتنی بر ثبت و هم دستورالعمل حافظه‌­ی پشته­‌ای را تجزیه و تحلیل نماید. از آن­جایی که سخت افزار بدون نرم افزار پشتیبان نمی­تواند چنین عملکردی داشته باشد، تفسیر ادعاها به این شرح که ماشین، مشتمل بر سخت افزار و نرم افزار بوده  صحیح بوده و  حیطه‌­ی ادعا را رعایت می­‌نماید. برای مثال ادعای شماره 48 از مکانیسم‌­های عمومی[4] صحبت نکرده اما مستلزم ادعاهای خاصی مانند موارد زیر است:1. محافظت از عمل­گرهای پشته­‌ای [5]برای اجرای دستورالعمل­‌های حافظه­‌ی پشته­ای، و 2. تامین استثنائاتی برای دستورالعمل­‌های خاص پشته­‌ای.

با این وجود دادگاه معتقد است که حدود سی پی یو ادعایی تنها ناظر بر دستورالعمل­‌های حافظه­ی پشته‌­ایست.

به علاوه، نیاز به عملکرد خاص در مشخصات ورقه‌­ی اختراع شماره 362 ، در آن­جا که مقرر ساخته “تسریع‌­گر سخت افزار جاوا می­‌تواند بایت کدهای پشته­ای جاوا را به دستورالعمل­های بومی حافظه­‌ی ثبتی تبدیل کند”، درج شده است. هم­‌چنین در این ورقه مشخصات، ذکر شده که تسریع‌­گر سخت افزار جاوا می­‌تواند “برخی از امور زیر یا تمامی آن­ها را انجام دهد” از جمله “مدیریت پشته‌­ی جاوا بر فایل ثبت شده و ایجاد استثنائات دستورالعمل­‌ها بر روی بایت کدهای از پیش تعیین شده” . این دو، حدود ادعانامه‌­های 48 و 74 را باز می‌­نمایاند.

گام دوم در تحلیل نقض تعیین این است که آیا وسیله­‌ی خاصی که بر اساس تفسیر ادعا متهم به نقض شده‌، به واقع مرتکب نقض حق شده است یا خیر؟ در این­جا تردیدی نیست که سخت افزار Jazelle به صورت فیزیکی در هر دو وسیله‌­ی متهم به نقض(مای بوک و اسلینگ باکس) وجود دارد و نیز این سخت افزار بدون نرم افزار JTEK کارامدی ندارد.به نظر می­رسد این مساله، موضوع نقض حق را حل و فصل نماید.

با این وجود نازومی اشاره می­‌کند که دادگاه پیش از این در قضیه‌­ی سیلیکون گرافیکس عنوان نموده است که اگر طراحی محصول به شکلی باشد که کاربر بتواند بدون تغییر محصول از عملکرد خاص آن استفاده کند، چنین محصولی ناقض حق است. نازومی مدعی است که نصب برنامه‌­ی JTEK اصلاح و تغییری نیست که مانع از وقوع نقض باشد. دادگاه با این استدلال مخالف است چراکه خرید و نصب این نرم افزار دقیقا تغییر و اصلاحی در محصول مورد بحث می­‌باشد.

استدلال دوم نازومی این است که دادگاه بخش به صورت غلط سوءنیت و قصد خواندگان را برای احراز نقض لازم دانسته ­است. نظر دادگاه فدرال بر این است که عمل دادگاه بخش به هیچ وجه چنین معنایی نداشته است، بلکه این مرجع عنوان کرده است که اگر دستگاهی به صورتی طراحی شده که پیش از استفاده و راه‌­اندازی، قابل تغییر یا مونتاژ باشد، می­توان تولید کننده را در صورتی که دستگاه تغییریافته یا مونتاژ شده، ناقض ورقه اختراع معتبری باشد، مسئول تلقی نمود. از این رای چنین برداشت نمی­‌شود که محصولات متهم به نقض برای استفاده به همراه نرم افزار JTEK طراحی شده­ بودند. تحت چنین اوضاع و احوالی، دادگاه فدرال بر این باور نیست که طراحی دستگاه که به شیوه­ی ناقض حقی مورد استفاده قرار گرفته است، خود مستقیما نقض حق تلقی شود بلکه ممکن است معاونت در نقض محسوب گردد. بنابراین دادگاه فدرال رای دادگاه بدوی مبتنی بر عدم نقض را تایید نمود.



[1] Stack-based memory

[2] Register-based memory

[3]  Register یا «ثبات» ناحیه کوچکی از حافظه است که برای نگهداری تکه هایی از داده‌­ها یا اطلاعات مربوط به فعالیت‌­های شکل گرفته در سیستم مورد استفاده قرار می­‌گیرد. به عنوان مثال، یک ثبات ممکن است برای نگهداری نتایج عملیات جمع یا آدرس یک محل خاص در حافظه کامپیوتر، استفاده گردد.

[4] Generic

[5] operand stack